feat: claude-security-review reusable workflow — dedicated advisory security pass - #160
Conversation
…ecurity pass Sibling of claude-review.yml with its security model copied verbatim (pull_request-only + privileged-trigger tripwire, fork PRs skipped by design, one named secret, least-privilege permissions, display off, structured-SDK-fields-only failure reporting, SHA pins): a security-only review prompt over the PR's changed files — logic flaws, authz gaps, injection surfaces, token/secret handling, dangerous workflow patterns, permission-widening config, supply-chain pin loosening — posted with CRITICAL/IMPORTANT/SUGGESTION severity plus a confidence axis. Advisory with a recorded earned-flip promotion trigger. Path filtering is a documented caller obligation (most PRs in doc-heavy repos are prose); the dogfood self-caller filters to this repo's own security-sensitive surfaces. Lane-specific infra-status marker so the two AI-review lanes never fight over one comment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 3m 11s —— View job Security Review — PR #160
SummaryThis PR adds a well-constructed dedicated security-review lane that faithfully copies the security model from CLAUDE.md Ground Rule Compliance
FindingsSUGGESTION —
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0e2c0ca4ea
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… reusable workflow (#211) ## Summary Adds the reviewed runner-input contract entry for `melodic-software/ci-workflows/.github/workflows/claude-security-review.yml@0a5fd4c…` (merged in ci-workflows#160), mirroring the claude-review sibling's shape exactly: `routing: runner-input` with `runner`, `allowedInputs` runner + skip-actors, single named `CLAUDE_CODE_OAUTH_TOKEN`, caller permissions contents:read + pull-requests:write + id-token:write. Unblocks claude-code-plugins#722's Runner-policy gate (the new security-review caller currently fails `runner-target-contract: no reviewed runner-input contract`). Component tests: 224/224 pass. ## Related - melodic-software/ci-workflows#160 (the lane) - melodic-software/claude-code-plugins#722 (the blocked consumer caller) No linked issue in this repository. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
… ADR (#722) ## Summary Consumer wiring for the dedicated security-review lane plus the recorded decision, completing the two remaining default-on review items: - **`.github/workflows/claude-security-review.yml`** — thin caller of the ci-workflows reusable workflow (pinned at its merge SHA `0a5fd4c`), path-filtered to security-sensitive surfaces (workflows, `.claude/`, scripts, hooks, tools, shell/PS/mjs). Same secret + permission shape as the sibling claude-review caller; fork PRs skipped by design. - **ADR 0002** — the #696 decision recorded: both AI review lanes are default-on and ADVISORY; promotion to blocking is an earned flip on demonstrated precision (mirrors the WP5 verification-promotion discipline); revisit triggers recorded. Rationale draws on #618's advisory-noise evidence and the #697 mining. - ci.yml's workflow schema-check list gains the new caller. ## Related - melodic-software/ci-workflows#160 (the reusable lane, merged) - #618 (advisory-noise evidence the ADR cites) - ADR 0002 (added here) Closes #696 Refs #509 (advisory increment only — the enforcement/evidencing design stays with the operator-deferred #509 design session) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Adds the dedicated LLM security-review lane the autonomy pipeline lacks (melodic-software/claude-code-plugins#509; the security half of #696 — Boris's step-2 posture: "Automated code review and security review are on by default"):
claude-security-review.yml(reusable): security-only review of the PR's changed files — logic flaws, authorization gaps, injection surfaces, token/secret handling, dangerous workflow patterns (pull_request_target, github-context script injection), permission-widening config changes, supply-chain pin loosening — reported as a PR review with CRITICAL/IMPORTANT/SUGGESTION severity and a confidence axis. No style/quality commentary.pull_request-only + reject-privileged-triggers tripwire, fork PRs skipped by design, single namedCLAUDE_CODE_OAUTH_TOKEN,contents: read+pull-requests: write+id-token: write,display_reporthardcoded off, freshness/superseded-head guard, per-head concurrency, strip-persisted-credentials, identical SHA pins.check-jsonschemavendor.github-workflows, markdownlint — all green.Consumer wiring (claude-code-plugins caller + the default-on decision record) follows once this lands and a release SHA exists to pin.
Related
No linked issue in this repository.
🤖 Generated with Claude Code