Cline's AI issue-triage agent is injectable; a stolen npm token later ships cline@2.3.0
A researcher showed Cline's GitHub issue-triage agent could be prompt-injected to run attacker code; eight days after disclosure an attacker used a still-valid npm token to publish cline@2.3.0, which installed OpenClaw, but no source confirms the token was taken through the agent.
Cline added a triage workflow on 21 December 2025 in which Claude could run shell commands on any new issue. Researcher Adnan Khan reported it on 1 January 2026 and disclosed it publicly on 9 February; in a mirror of the repository he showed the agent running an injected npm install. Cline fixed the workflow within about 30 minutes and rotated credentials, but deleted the wrong npm token. On 17 February an unauthorised party published cline@2.3.0 with a postinstall script that installs OpenClaw, live for about eight hours; StepSecurity reports about 4,000 downloads. Cline's post-mortem and Khan's write-up describe how the chain could work but do not say how the token was actually obtained.
- 50 days
- 11 days
- Someone else
- An outside report
What happened
Cline adds a triage workflow where Claude can run shell commands on any user's issue
The workflow used claude-code-action and let any GitHub user trigger it.
Adnan Khan reports the vulnerability privately
Follow-ups on 8 and 18 January and 7 February are reported by Khan as unanswered. Cline says the report was not addressed until public disclosure.
The handler finds out
Khan's private report. Cline says it was not addressed until the public disclosure; Khan says he got no substantive reply.
Khan publishes Clinejection; Cline removes the workflows within about 30 minutes and starts rotating credentials
Khan says in his own test, in a mirror repository, Claude executed the injected payload every time. The wrong npm token was deleted, leaving the exposed one active.
An unauthorised party publishes cline@2.3.0 using a still-valid npm token
It added a postinstall running npm install -g openclaw@latest; the CLI binary was identical to 2.2.3. Published 3:26 AM PT, live about eight hours. StepSecurity reports about 4,000 downloads, which counts downloads, not confirmed installs.
Reports differ
Cline publishes 2.4.0, deprecates 2.3.0 and revokes the token
Also removes AI triage and Actions cache use from publish workflows, rotates all publication credentials and moves npm to OIDC.
Agent failures
Prompt injection / context poisoning, Supply chain compromise
Prompt injection / context poisoning
Supply chain compromise
How it was found
Found first by someone else, from an outside report
- Someone else
- An outside report
- 39 days
The vulnerability was found by an outside researcher, Adnan Khan, who reported it on 1 January 2026 and went public on 9 February after follow-ups went unanswered. The unauthorised cline@2.3.0 was flagged by StepSecurity's monitoring about 14 minutes after publish and by SafeDep's tooling; Cline's post-mortem does not say how Cline learned of it.
What is publicly known
2 of 12 fully public
| Item | Public? | Detail | Sources |
|---|---|---|---|
| Partial | Described as Claude via Anthropic's claude-code-action; no model version stated in what we read. | ||
| Unknown | Nothing public. | ||
| Partial | Khan says Claude had Bash, Write and Edit tools and no inspection of the command it ran. | ||
| Unknown | The workflow prompt is described (issue title inserted directly) but not published verbatim in what we read. | ||
| Partial | Triage of new GitHub issues; the injected title is described, not reproduced here. | ||
| Known | claude-code-action in GitHub Actions, any user could trigger it, Bash, Write and Edit enabled. | ||
| Unknown | No egress policy described. | ||
| Unknown | No agent transcripts from the live repository published. | ||
| Partial | StepSecurity says it flagged the release about 14 minutes after publish; Khan points to suspicious nightly failures from 31 January to 3 February. | ||
| Partial | cline@2.3.0 live about eight hours; about 4,000 downloads per StepSecurity; payload described as benign; VS Code and JetBrains extensions unaffected. | ||
| Weak | Cline describes the chain but not how the token was taken. Khan: unclear if the triage workflow was the vector. | ||
| Known | AI triage removed, Actions cache removed from publish workflows, all credentials rotated, OIDC publishing, rotation verified against the real credential. |
Controls that apply
Govern
Identify
Protect
Detect
Respond
- All controls →
Coverage and commentary
2 statements, 3 articles
What the parties involved said
Adnan Khan
Says it is unclear whether the attacker's initial vector was the triage workflow, but it is the most obvious path; says a different actor found his proof of concept and used it.
Cline
Describes the attack chain as possible, does not state how the token was obtained, and removed AI triage and cache use from publish workflows.