Repository navigation
feat(pr-pipeline): run pr-verify on run-claude-cli - #8424
Conversation
… callers model is the profile's alias, empty for `default`, which the launcher cannot pass, so a launcher caller fails on it; effort is empty when the profile sets none. claude-args and settings-json are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns role pr-verify's judgment moves from claude-code-action to ci-workflows' run-claude-cli, so it spends AUTOMATIONS_CLAUDE_API_KEY credits first and the subscription token only after a credit stop. The data files move to pr-verify-data in the working directory, which --restricted confines the file tools to; the model gets Read alone, an allow rule on that directory, and deny rules for .base and every other tool. Managed settings are applied before isolation, report-lane-outcome records the run, write-verdict reads the last result message of the execution file and refuses Anthropic key or OAuth token shaped text, and a run with no verdict fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A denied call means the model reached past its data files, for example on an instruction in the diff. write-verdict now refuses the verdict and names the denied tools, never their inputs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Models section names the model, effort and max-turns outputs a run-claude-cli caller passes, and the Verifier verdict section says pr-verify runs on the launcher with Read on its data files alone and uploads nothing for key-shaped text or a permission denial. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pr-verify.yml no longer sets the subprocess scrub or allowed_bots, so the comments that cited it now cite pr-run-activity-read.yml and the App's role. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.52.0 makes run-claude-cli's effort optional, which the verify-pr profile needs: it sets no effort. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-claude-cli # Conflicts: # .github/actions/resolve-config/README.md # .github/actions/resolve-config/action.yml # .github/actions/resolve-config/models.test.mjs
The launcher's execution file is the last leg's alone, so a denial on the key leg before a credit stop never reached the check. write-verdict now also reads run-claude-cli's log and refuses when any leg recorded a denial, or when the log is missing. The prompt says that only the listed files can be read and a denied read voids the verdict; the fragment names the refusal; a test oracle that accepted any thrown error now names the message. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed No security findings in PR #8424 at head 7256b48. I read the full diff, including
|
|
claude-review reviewed Code review: PR #8424 (pr-verify on run-claude-cli)I found nothing to block or flag, so I posted no inline comments. I read the full diff, the PR context and the unchanged parts of What I checked:
Minor, below the reporting bar:
|
No related issue: moves the pr-verify lane onto ci-workflows' run-claude-cli launcher, the next lane of the lane-funding rollout after intake
Hold: a human merges this.
Summary
pr-verify's judgment now runs on
run-claude-cli(ci-workflows v0.52.0) as theautomationsrole instead of claude-code-action, so it spendsAUTOMATIONS_CLAUDE_API_KEYcredits first and falls back toAUTOMATIONS_CLAUDE_CODE_OAUTH_TOKENonly on a credit stop. Lane merges require this verdict (require-verifier-verdict: true), so the exact job was proven in the sandbox before this PR.Fix
pr-verify.yml: managed settings before runner isolation; the model's data moves topr-verify-datain the workspace, since--restrictedconfines file tools to the working directory, withRead(./pr-verify-data/**)allowed and.base, Glob, Grep and every other tool denied. Verifier preamble, leg 10 min inside a 22 min step inside the job's 30, background tasks off,report-lane-outcomeafter the judge, and a final step that fails the job when no verdict was written.write-verdict.mjsreadsstructured_outputfrom the launcher's execution file, and writes no verdict when the result carries a permission denial or key-shaped text.resolve-configgainsmodelandeffortoutputs (empty for adefaultmodel or an unset effort);claude-argsandsettings-jsonare unchanged for other callers.Revert plan: if the first run on main fails, revert the merge commit in a PR. After a fix, re-run pr-require-checks on lane PRs whose head was judged in the broken window, since a head with no verdict is not re-judged until pr-require-checks runs again.
Verification
AUTOMATIONS_CLAUDE_API_KEY, verdict written. Canary case: the model's Read of.basedenied, the canary absent from the output, and the verdict refused for the denial.node --test .github/scripts/pr-verify/*.test.mjs .github/actions/resolve-config/*.test.mjs: 388 pass, 0 fail.scripts/check-affected.sh --testspass.Related
🤖 Generated with Claude Code