What happened
Malicious PR title payload hijacked Claude Code Security Review, directing it to execute bash commands and exfiltrate environment variables and API keys, posted as a PR review comment
2026-04-15
HighPrimaryJohns Hopkins researchers used PR title prompt injection to exfiltrate API keys and GitHub tokens from Claude Code, Gemini CLI, and GitHub Copilot. All three vendors paid bug bounties without publishing CVEs or advisories.
What happened
Malicious PR title payload hijacked Claude Code Security Review, directing it to execute bash commands and exfiltrate environment variables and API keys, posted as a PR review comment
Why it matters
ANTHROPIC_API_KEY, GITHUB_TOKEN, cloud provider credentials, and any other repository secrets accessible to the Actions runner exposed. Silent patching left an unknown number of repositories on vulnerable versions without notification.
Missing authorization check
Runtime gate requiring explicit human approval before an AI agent executes tool calls (bash, env reads, secret access) triggered by untrusted PR author input
Would PP block it?
In a PP-governed deployment, the agent's tool invocations (bash execute, environment variable read) require signed receipts. The receipt request surfaces to the human operator: 'Claude Code Security Review is requesting bash execution triggered by PR #68 — approve?' The malicious PR title cannot generate a valid receipt — only a credentialed signer with MFA can. This is textbook Confused Deputy: the agent inherited credentials it didn't need and couldn't distinguish trusted operator instructions from attacker-injected payload. PP breaks this attack at the tool-call boundary before any credential is touched.
Incident analysis
2025-10
Aonan Guan (Johns Hopkins) submits initial prompt injection finding against Claude Code Security Review to Anthropic via HackerOne
2025-11
Anthropic pays $100 bug bounty, upgrades severity from CVSS 9.3 to 9.4; updates documentation with security warning; no CVE assigned, no public advisory
2026-Q1
Guan extends attack to Google Gemini CLI Action and Microsoft GitHub Copilot — both vulnerable, both pay bug bounties without advisories
2026-04-15
The Register publishes exclusive interview with Guan; research published at oddguan.com
2026-04-16
Secondary coverage by GBHackers, Winbuzzer confirms silent-patching pattern and ongoing exposure for pinned-version users
Authorization boundary
This incident is categorized as Credential exposure. The relevant Permission Protocol gate is Credential Gate. The read is conditional: the block only applies where the real action boundary is routed through a gate.
PP enforces at the tool-call layer — a receipt is required before the agent executes bash commands or reads environment secrets. An attacker-injected PR title cannot authorize its own receipt; only a credentialed human signer can. This is the Confused Deputy problem PP was designed to solve.
Related incidents and controls
Claude Code OAuth tokens stolen via stealthy MCP man-in-the-middle hijacking
OpenAI Codex Vulnerability Allowed Attackers to Steal GitHub Tokens
CamoLeak: GitHub Copilot Flaw Allowed Silent Data Theft
TrustFall Coding Agent Security Flaw Enables One-Click RCE
Start small
This incident maps to Credential Gate. Start with the boundary that controls the actual action, then require a signed receipt before execution.