Claude Code GitHub Action Prompt Injection Hijacks Any Downstream Repo #
GMO Flatt Security's RyotaK and Microsoft Threat Intelligence published parallel research disclosing prompt-injection bypasses in Anthropic's official claude-code-action GitHub Action. Flatt's writeup, posted June 2, traced the checkWritePermissions function unconditionally trusting any actor whose login ended in [bot], which let any GitHub App author crafted issues whose contents Claude then treated as authorized instructions. Microsoft's June 5 post documented a second path: the agent's Read tool sat outside the Bubblewrap sandbox that wrapped Bash, so /proc/self/environ was reachable from inside any triage run. Both chains exfiltrated the workflow's ANTHROPIC_API_KEY, OIDC token, and any other CI secrets via the GitHub MCP server's update_issue tool, WebFetch, or echoed log output. Anthropic rated the issues 7.8 under CVSS v4.0, shipped fixes across claude-code-action v1.0.94 and Claude Code 2.1.128, and paid a bounty. A variant of the same misconfiguration class was already exploited in February against Cline's triage workflow to steal an npm publish token and push an unauthorized [email protected].
Any repository running the action with a `[bot]`-authored triage workflow could be coaxed into leaking its `ANTHROPIC_API_KEY`, OIDC token, and other workflow secrets, then accepting attacker-authored commits. Because `anthropics/claude-code-action` itself ran the vulnerable workflow, a successful compromise of the action's own repo would have flowed to every downstream consumer.
actor.endsWith('[bot]')is roughly the part of an auth system you'd hope--insecure-skip-tls-verify=truewas, only less polite. TheBashtool got a Bubblewrap sandbox. TheReadtool got a permission check. Whoever signed off on that delta hadn't yet met an LLM willing to askReadfor/proc/self/environ.