Secure Autonomous
FeedbackGet alertsCheck a deployment
Register › REG-0024 › evidence

Claude Code GitHub Action, in agent mode, trusted any GitHub App actor (a name ending in [bot]): a route from a public issue to repository write access, reported January 2026

The typed evidence object. This is the working store; the case page is the reader's form.

Layer / facetValueTypeSourcesConf.
Mandate: principalA repository maintainer running the action on issues and pull requestsassertionPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high
Actor: statusThe action, acting on a trigger from an actor it mis-trusted (a GitHub App the researcher created)assertionPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high
InputsA GitHub issue written to resemble an error message, filed through a GitHub App the attacker created (GitHub App actors carry names ending in [bot])assertionPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high
DecisionIn agent mode the permission check passed any GitHub App actor (a name ending in [bot]) regardless of its actual permissions; tag mode had a further check of the actor's type that agent mode lacked. The agent then followed the issue's instructions to read its own process environment. The researcher separately described a second route, needing no GitHub App at all, through a permissive triage-workflow setting (allowed_non_write_users: "*") that lets any user trigger the workflowassertionPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high
Envelope: authorityThe action's environment held credentials that could be exchanged for a write-capable tokenassertionPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high
ActionExtraction of environment variables and an identity token; replay for write access to code, issues, and workflowsassertionPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high
OutcomeState: averted by disclosure. Reported by GMO Flatt Security on 12 January 2026; the permission bypass was fixed four days later, on 16 January 2026, in v1.0.30 (commit 1bbc9e7); all reported issues were fixed as of v1.0.94 (13 April 2026), after several rounds of remediation and follow-up bypasses through spring 2026 (researcher's timeline). Anthropic rated the reported issues, as a set, 7.8 under CVSS version 4.0, a severity score, per the researcher; no public advisory or CVE exists. Separately, in February 2026 a researcher showed that a prompt-injected issue title against a Cline triage workflow built on the same action could expose publish credentials; an unrevoked package-publishing token was later used to push an unauthorized Cline release, presumably by someone reusing the technique.assertionanthropics/claude-code-action on GitHub: commit 1bbc9e7, 'fix: add checkHumanActor to agent mode (#826)', 15 January 2026; first released in tag v1.0.30 (16 January 2026); tag v1.0.94 dated 13 April 2026; Adnan Khan: Clinejection — Compromising Cline's Production Releases just by Prompting an Issue Triager; Poisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK); Claude Code GitHub Action Flaw Let One Malicious Issue Hijack Repositories (The Hacker News, Swati Khandelwal)medium
Evidence: eventResearcher disclosure with a dated timeline; fix in a released version; later press coverageassertionanthropics/claude-code-action on GitHub: commit 1bbc9e7, 'fix: add checkHumanActor to agent mode (#826)', 15 January 2026; first released in tag v1.0.30 (16 January 2026); tag v1.0.94 dated 13 April 2026; Poisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK); Claude Code GitHub Action Flaw Let One Malicious Issue Hijack Repositories (The Hacker News, Swati Khandelwal)high
Recovery: technicalFix on 16 January 2026 (v1.0.30): agent mode now checks the actor's type and rejects non-human actors unless listed in the action's existing allowed_bots allow-list. Later remediation, complete as of v1.0.94: the workflow run summary disabled by default, a wrapper that blocks exfiltration through the gh command, environment variables scrubbed from child processes, and issues or comments edited after a run is triggered ignored. The researcher recommends auditing workflows for allowed_non_write_users and restricting their permissions and secretsassertionanthropics/claude-code-action on GitHub: commit 1bbc9e7, 'fix: add checkHumanActor to agent mode (#826)', 15 January 2026; first released in tag v1.0.30 (16 January 2026); tag v1.0.94 dated 13 April 2026; Poisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high
Recovery: accountabilityCoordinated disclosureassertionPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)high

Controls

StatusControlCanonical
failedProcess-environment exposure to the agentC-E1 Least-privilege credential scoped to task
failedIn agent mode any GitHub App passed the write-permission check regardless of its actual permissions; the allowed_bots allow-list (in the action since August 2025) and the actor-type check were enforced in tag mode but not in agent mode until the 16 January 2026 fixC-A1 Actor identity verification
succeededCoordinated disclosure; Four-day patchC-O1 Coordinated disclosure program
absentIssue text resembling an error message treated as instructionC-I1 Retrieved content as data

Inference

inference Kia's dealer portal let anyone register as a dealer and then granted dealer authority; this action, in agent mode, let any GitHub App, which anyone can create, pass its write-permission check. In both, membership in a class anyone could join was treated as authorization, and nothing checked the actor's actual standing: a real dealership, or write permission on the repository.

Sources

IDRecordTypeLink
CLINEAdnan Khan: Clinejection — Compromising Cline's Production Releases just by Prompting an Issue Triagerresearcher
primary record
adnanthekhan.com ↗
checked 2026-10-13
FLATTPoisoning Claude Code: One GitHub Issue to Break the Supply Chain (GMO Flatt Security research blog, RyotaK)researcher
primary record
flatt.tech ↗
checked 2026-10-20
THNClaude Code GitHub Action Flaw Let One Malicious Issue Hijack Repositories (The Hacker News, Swati Khandelwal)press pointer
secondary: press report
thehackernews.com ↗
checked 2026-10-20
CCA_FIXanthropics/claude-code-action on GitHub: commit 1bbc9e7, 'fix: add checkHumanActor to agent mode (#826)', 15 January 2026; first released in tag v1.0.30 (16 January 2026); tag v1.0.94 dated 13 April 2026 (interest: vendor's own repository)company
primary record
github.com ↗
checked 2026-10-20

Help shape the Register

A person reads every answer; changes it leads to are logged in the methodology. To dispute a claim or reply for a named company, use Respond, dispute, or submit.

Did this page help with what you came to do?