Skip to content

fix(#1117): allow claude.exe binary in Vertex AI profile - #1118

Merged
rh-hemartin merged 1 commit into
mainfrom
agent/1117-allow-claude-exe-binary
Sep 2, 2026
Merged

fix(#1117): allow claude.exe binary in Vertex AI profile#1118
rh-hemartin merged 1 commit into
mainfrom
agent/1117-allow-claude-exe-binary

Conversation

@fullsend-ai-coder

Copy link
Copy Markdown
Contributor

Summary

  • Add **/claude.exe to the binaries allowlist in profiles/fullsend-vertex-ai.yaml
  • Claude Code 2.1+ ships as a Bun-compiled binary named claude.exe (even on Linux), but the existing **/claude glob does not match it — OPA blocks the binary from reaching sts.googleapis.com, preventing Vertex AI authentication entirely
  • A downstream fix was already merged for one affected repo (fix(fullsend): allow Claude Code Vertex authentication rhdh-parasol/rhdh-plugin-export-overlays#13); this updates the upstream profile to protect all repos using the default profile

Testing

  • Verified YAML validity of the modified file
  • Ran skillsaw --strict lint — all checks passed
  • Secret scan passed on staged content

Closes #1117

Post-script verification

  • Branch is not main/master (agent/1117-allow-claude-exe-binary)
  • Secret scan passed (gitleaks — c4e059f9f2b8c48e13b3845992b9b774d41b5de7..HEAD)
  • PR body secret scan passed (gitleaks — no-git)

Claude Code 2.1+ ships as a Bun-compiled binary named claude.exe
even on Linux. The existing **/claude glob does not match
claude.exe, so OPA blocks the binary from reaching
sts.googleapis.com, preventing Vertex AI authentication entirely.

Add **/claude.exe to the binaries allowlist in the
fullsend-vertex-ai profile alongside the existing **/claude
entry.

Closes #1117
@fullsend-ai-coder
fullsend-ai-coder Bot requested a review from a team as a code owner September 1, 2026 14:29
@fullsend-ai-coder fullsend-ai-coder Bot added the ready-for-review Triggers review agent dispatch label Sep 1, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 1, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 2:31 PM UTC · Completed 2:43 PM UTC

Commit: ba1d46f · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $2.59

@fullsend-ai-review fullsend-ai-review Bot added the risk/low PR risk: low label Sep 1, 2026
@fullsend-ai-review

Copy link
Copy Markdown

Risk Assessment: low (1/5)

Details

A single-line addition of a binary glob to a YAML allowlist by a trusted bot, with a well-triaged issue and exact scope match, presents minimal risk.

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

Medium

  • [protected-path] profiles/fullsend-vertex-ai.yaml — This PR modifies profiles/fullsend-vertex-ai.yaml, which is under the profiles/ protected path. The PR links to issue Review agent outage: opus alias resolves to policy-denied claude-opus-5 on Vertex AI #1117 and the description clearly explains the rationale (Claude Code 2.1+ ships as a Bun-compiled binary named claude.exe, but the existing **/claude glob does not match it, causing OPA to block Vertex AI authentication). Human approval is always required for protected-path changes, regardless of context.

Low

  • [wildcard-usage] profiles/fullsend-vertex-ai.yaml:30 — The **/claude.exe glob uses a recursive wildcard prefix (**), matching the binary at any filesystem path. This is consistent with all other entries in the binaries list (**/claude, **/pi, **/node) and introduces no additional risk beyond the established pattern.

@fullsend-ai-review fullsend-ai-review Bot added the requires-manual-review Review requires human judgment label Sep 1, 2026
@rh-hemartin
rh-hemartin added this pull request to the merge queue Sep 2, 2026
Merged via the queue into main with commit 9493828 Sep 2, 2026
105 of 114 checks passed
@rh-hemartin
rh-hemartin deleted the agent/1117-allow-claude-exe-binary branch September 2, 2026 07:24
@fullsend-ai-retro

fullsend-ai-retro Bot commented Sep 2, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 7:26 AM UTC · Completed 7:33 AM UTC

Commit: ba1d46f · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $1.60

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #1118 — allow claude.exe binary in Vertex AI profile

Workflow quality: good. After a human corrected the original retro agent's misdiagnosis, the triage → code → review pipeline executed cleanly. The code agent made a minimal 1-line fix, and the review agent produced accurate findings with no false positives. Total agent cost: $5.22 (triage $0.95, code $1.68, review $2.59). Human approved within 3 minutes of PR creation.

Timeline

  1. Aug 27–31 — Claude Code 2.1+ (Bun-compiled claude.exe) caused review agent failures on redhat-developer/rhdh-plugin-export-overlays. OPA blocked claude.exe from reaching sts.googleapis.com because the binary allowlist only had **/claude.
  2. Aug 31 — Retro agent filed #1117 with an incorrect root cause: claimed the opus alias resolved to claude-opus-5 which Vertex AI denied, with high stated confidence. The actual cause was the OPA binary allowlist.
  3. Sep 1 14:13rh-hemartin corrected the diagnosis with a detailed analysis of OPA denial logs showing the binary path claude.exe → sts.googleapis.com.
  4. Sep 1 14:17–14:29 — Triage (run 33518346639) incorporated the correction. Code agent (run 33519101251) created PR fix(#1117): allow claude.exe binary in Vertex AI profile #1118 with the 1-line fix.
  5. Sep 1 14:31–14:43 — Review agent (run 33519846209) correctly flagged profiles/ as a protected path, assessed risk as low (1/5).
  6. Sep 2 07:24 — Merged by rh-hemartin.

Key finding: retro agent misdiagnosed the root cause

The retro agent that filed #1117 attributed policy_denied errors to Vertex AI model authorization, but the errors came from OPA's binary sandbox. No traffic ever reached Vertex AI. The retro's proposed fix (enable claude-opus-5 on the Vertex project) would not have resolved the outage. A human had to provide the correct diagnosis before agents could proceed.

Existing issue evidence

Proposals filed

waynesun09 added a commit to fullsend-ai/fullsend that referenced this pull request Sep 3, 2026
Claude Code 2.1.2xx ships as a Bun-compiled binary named claude.exe
even on Linux, and since #6647 the CLAUDE_CODE_VERSION-pinned install
is the binary that runs in the sandbox. The scaffold Vertex profile
only allowlisted **/claude, so OpenShell's OPA denied claude.exe the
STS call and every Claude run on the 0.40.0 image failed on its first
request with "API Error: Error code policy_denied" (0 tokens). The
fleet copy in fullsend-ai/agents was fixed by fullsend-ai/agents#1118;
this repo's embedded copy, which functional-tests and local runs load
through --fullsend-dir, was not.

Add **/claude.exe and **/pi so the binaries list matches the agents
copy (**/pi is carried for parity with that copy; pi itself runs via
node), pin the whole list in a scaffold test so the two copies cannot
drift on this again, and update the bring-your-own-agent guide and the
runtime egress diagram that still showed the old list.

Refs #6971

Assisted-by: Claude (code, fix, review), Grok (review)
Signed-off-by: Wayne Sun <gsun@redhat.com>
waynesun09 added a commit to fullsend-ai/fullsend that referenced this pull request Sep 3, 2026
Claude Code 2.1.2xx installs its native binary at bin/claude.exe
even on Linux, and since #6647 the CLAUDE_CODE_VERSION-pinned install
is the binary that runs in the sandbox. The scaffold Vertex profile
only allowlisted **/claude, so OpenShell's OPA denied claude.exe the
STS call and every Claude run on the 0.40.0 image failed on its first
request with "API Error: Error code policy_denied" (0 tokens). The
fleet copy in fullsend-ai/agents was fixed by fullsend-ai/agents#1118;
this repo's embedded copy, which functional-tests and local runs load
through --fullsend-dir, was not.

Add **/claude.exe and **/pi so the binaries list matches the agents
copy (**/pi is carried for parity with that copy; pi itself runs via
node), pin the whole list in a scaffold test so the two copies cannot
drift on this again, and update the bring-your-own-agent guide and the
runtime egress diagram that still showed the old list.

Refs #6971

Assisted-by: Claude (code, fix, review), Grok (review)
Signed-off-by: Wayne Sun <gsun@redhat.com>
waynesun09 added a commit to fullsend-ai/fullsend that referenced this pull request Sep 3, 2026
Claude Code 2.1.2xx installs its native binary at bin/claude.exe
even on Linux, and since #6647 the CLAUDE_CODE_VERSION-pinned install
is the binary that runs in the sandbox. The scaffold Vertex profile
only allowlisted **/claude, so OpenShell's OPA denied claude.exe the
STS call and every Claude run on the 0.40.0 image failed on its first
request with "API Error: Error code policy_denied" (0 tokens). The
fleet copy in fullsend-ai/agents was fixed by fullsend-ai/agents#1118;
this repo's embedded copy, which functional-tests and local runs load
through --fullsend-dir, was not.

Add **/claude.exe and **/pi so the binaries list matches the agents
copy (**/pi is carried for parity with that copy; pi itself runs via
node), pin the whole list in a scaffold test so the two copies cannot
drift on this again, and update the bring-your-own-agent guide and the
runtime egress diagram that still showed the old list.

Refs #6971

Assisted-by: Claude (code, fix, review), Grok (review)
Signed-off-by: Wayne Sun <gsun@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test ready-for-review Triggers review agent dispatch requires-manual-review Review requires human judgment risk/low PR risk: low

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Review agent outage: opus alias resolves to policy-denied claude-opus-5 on Vertex AI

1 participant