v2.0.4 — P0 comment-and-control fix
P0 fix (CVSS 9.4, Anthropic bounty-acknowledged)
Closes the "comment and control" attack path that was still reachable in v2.0.3:
- External contributor opens PR with prompt-injection payload in body/diff
- Internal maintainer comments
@claudeto request review - v2.0.3's
author_associationcheck on the commenter passes (MEMBER) - Claude reads PR body/diff = external content → follows injected instructions
- Within allowed tools (
Bash(gh pr comment:*)), Claude exfiltrates secrets/env
Fixes
- P0-1:
pull_request_review_commentnow requires BOTH the commenter AND the PR author to be insiders.@claudeon external PR blocked at trigger. - P0-2: Explicit
track_progress: "false"— locks the action against #860 union-merge if upstream default ever flips. - Expanded --disallowedTools: +
Bash(git add|commit|push|rm:*). - --append-system-prompt defensive preamble: system-level instruction to treat PR content as untrusted, never read secrets/env, stop on injection attempts.
Caller pin line
uses: praetorian-inc/public-workflows/.github/workflows/claude-code.yml@1da9a5e29de06e850035b01e1ab5c0e19435ba30 # v2.0.4All prior v2.0.x callers should bump to v2.0.4 — see ENG-3113.