Repository navigation
fix(pr-review-cli): scan review handoff and shadow report uploads for credentials - #945
Conversation
… upload Add .github/actions/scan-upload: it fetches claude-code-plugins' lib/publish-gate.mjs from that repository's default-branch tip through an anonymous clone, as the status job's publish gate does, and runs scanLeak over every file and file name an upload is about to send. A credential, a hidden assignment, a link, a compressed file, a glob or an unfetchable gate fails the step with no value printed. The three legs' review handoff uploads and the status job's shadow report upload now follow that scan, and each upload's if: requires its clean output, so a hit withholds it under always() and continue-on-error. Each leg and the status job gain one minute for the new step. Refs: melodic-software/claude-code-plugins#8295 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Run /usr/bin/git with no system or global config, hooks off and a minimal env (PATH, a fresh HOME), as claude-code-plugins' leak-scan does, so no git config, hook or credential helper left on the runner applies to the gate fetch. Refs: melodic-software/claude-code-plugins#8295 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-review reviewed Code review: PR #945 (scan review handoff and shadow report uploads)No findings. I posted no inline comments. What I read: the whole diff ( What I checked:
Not verified:
Residual note, not a finding: |
|
claude-security-review reviewed Security review: PR #945 (head f891780)No security findings. Change. The PR adds a What I checked
The scan cannot detect an encoded or split credential, and it stops short of a symlinked directory. Both are limits of a content scanner, not defects introduced here. |
Refs: melodic-software/claude-code-plugins#8295
Summary
The claude-review lane uploads each leg's review handoff and the status job's shadow report as artifacts, which are public on a public repository. This change scans each one with claude-code-plugins'
scanLeakand withholds the upload on a hit, so a token cannot leak through them. The claude-code-plugins pull request does the same for that repository's lane and eval uploads.Fix
.github/actions/scan-upload/(scan.cjs):lib/publish-gate.mjsfrom claude-code-plugins' default-branch tip with an anonymous--depth=1clone, using/usr/bin/git, an empty config and a minimal environment.node:builtins.pr-review-cli.yml:if:now also requires the scan'sclean == 'true'.Verification
pr-review-cli.test.cjspasses 45 of 45. It checks that each upload follows a scan over the same path under the same condition, and that a planted credential-shaped string is withheld without being printed. It also checks that an unloadable gate withholds the upload, a non-builtin import is refused, and the git environment holds no inherited settings.pr-review-cli-api-calls.test.cjspasses 10 of 10.biome ci(2.5.11) is clean.Related
@main, so no pin moves.timeout-minuteslines here also change in fix(pr-review-cli): review a diff over the read budget in chunks #944. Whichever merges second needs a trivial merge.🤖 Generated with Claude Code