Skip to content

Leadership1 publisher2 min readPublished

Plugin4Shell turned a pinned commit into attacker code in four AI coding agents

Researchers at AIR found that four AI coding agents accepted a Git checkout they never verified, and because no marketplace can close the gap, the repair now travels through agent version numbers inside each enterprise.

The Board Room · Leadership desk

What happened

  • Researchers at the startup AIR disclosed Plugin4Shell, a flaw that let whoever controlled a plugin repository execute code inside Codex, Claude Code, Gemini CLI and GitHub Copilot with no developer action.
  • Anthropic fixed the issue in Claude Code version 2.1.179 and OpenAI fixed it in Codex version 0.146.0, according to the researchers.
  • Google said it has deprecated the Gemini CLI and will therefore not issue a fix, suggesting that users move to Antigravity instead.
  • GitHub had not released a fix for Copilot as of the researchers' post, which the AIR team published on Thursday.

Compiled by The Board RoomSomething wrong?How this is made

Why it matters

  • constraint No marketplace can apply this fix centrally, so the exposure window is set by how fast an enterprise can raise the agent version on every developer machine running one.
  • decision Gemini CLI users are choosing a replacement tool rather than installing an update. The migration lands in a quarter that was not planned around one.
  • contradiction GitHub's position is that SHA-like tag names are already blocked on its platform; AIR's is that plugins hosted elsewhere stay reachable, so whether a Copilot user can wait depends on where its plugin repositories sit.
  • exposure A plugin author, or anyone who takes over the repository behind a trusted plugin, is inside the agent's trust boundary. Plugin sourcing belongs on the security review list alongside dependencies.

Pinning a plugin to a reviewed commit is the careful option. A developer reads the code, takes the SHA of that commit, and tells the agent to run that exact copy [4]. The gap is in what happens next: the agents pass the SHA to Git and then run whatever Git hands back, without checking that the returned commit is the one they asked for [5]. An attacker who controls the plugin repository can publish a version containing malicious code and name it after the legitimate commit, so Git resolves the request to the attacker's copy [6]. Gemini CLI reaches the same failure by a different route, fetching the correct code and then checking it out under the name FETCH_HEAD, a name the attacker can also create [7].

The gap sits in the client. The fix travels by agent version number, so whoever controls which version sits on a developer's machine owns whatever exposure is left. AIR wrote that Plugin4Shell is "a flaw no marketplace can fix, so users must update their agent" [3].

Two of the four named agents can be remediated by updating them. The other two need a migration decision or a wait [16].

GitHub and AIR do not agree on how much is already closed. A GitHub representative told The Register that the company has applied restrictions on creating version or tag names that resemble commit SHAs, preventing the reported vulnerability from being exploited on GitHub or on plugins from its marketplace [12]. AIR researchers told the same publication that those naming restrictions might not be enough, because plugin marketplaces can also be hosted on other platforms, such as Bitbucket [13]. Pareekh Jain, principal analyst at Pareekh Consulting, said that gap, together with the likelihood that enterprises running affected agents have not yet patched, could leave development environments exposed through compromised plugins [14]. Jain said enterprises using AI coding agents with third-party plugins "are likely to be most exposed" [15].

No one has published an attack on this. AIR describes the flaw, the disclosure and the vendor fixes, and does not describe any instance of exploitation in the wild [18]. Then there are the dates. The flaw was found in May and reached the vendors in June [8]. That is at least a month of shipped agents carrying it before the vendors knew, and longer before any fix existed [17]. For this quarter, the practical test is whether a firm can say today which agent versions its developers are running and which hosts their plugins come from.

What to watch

  • Whether GitHub ships a Copilot fix, or holds to the position that its tag-name restrictions make one unnecessary.
  • Whether Antigravity, the tool Google points Gemini CLI users toward, verifies the commit Git actually returns.
  • Any report of a Plugin4Shell attack against a plugin repository hosted off GitHub, on Bitbucket or a self-hosted marketplace.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories