Disclosed vulnerability
Plugin4Shell: plugin SHA-pinning bypass gives zero-click RCE through background auto-update in Claude Code, Codex, GitHub Copilot and Gemini CLI
AIR-2026-0248 AIR record · 2026-09-air-security-plugin4shell
From the supporting source
It is a plugin SHA-pinning bypass: the agent checks out the exact commit the marketplace pinned but never verifies it landed there, so an attacker who controls the plugin's repo makes the checkout resolve to malicious code while the pin still looks honored.air.security
The record
Disclosed
2026-09-17
Vendor
Anthropic; OpenAI; Microsoft/GitHub; Google
Product
Claude Code; OpenAI Codex; GitHub Copilot; Gemini CLI
Risk domain
Tool misuse › Supply chain vulnerabilities
Also touches
Privilege escalation
System type
Generative model
Who acted
AI was the target — plugin auto-update plumbing is the flaw; no model decision is involved
Attack surface
Coding agent
Autonomy level
Assistant
Initial vector
Supply chain compromise plugin repository
Impact type
Remote code execution, Supply chain compromise
Confidence
High
Submitted by
EAI Internal
Crosswalk
- OWASP Agentic Top 10 (2026)
- ASI04 – Agentic Supply Chain Vulnerabilities
- MITRE ATLAS
- AML.T0040 – AI Supply Chain Compromise
- NIST AI RMF
- MAP 4.1
- EU AI Act
- Annex III §2
- ISO/IEC
- TR 24028; 42001; 23894
- AIUC-1
- B. Security
- Scope
- tool failure
- Mitigation
- Scan dependencies and container images for vulnerabilities; Use trusted sources.
- Taxonomy
- Enkrypt AI agent risk taxonomy · Black-Box Red Teaming of Agentic AI: A Taxonomy-Driven Framework for Automated Risk Discovery
Blast radius
every installation of the four agents that installed any marketplace plugin whose upstream repository an attacker controls or compromises; Copilot and Gemini CLI installs remain exposed
Capability abused
Defense & remediation
Recorded defense
marketplace SHA pinning of plugin commits (bypassed: the agent checks out the pinned SHA but never verifies the resulting working tree matches it)
Guardrail kinds
Unknown
Guardrail outcome
Silent
Fix shipped
partial: Claude Code 2.1.179 (Anthropic confirmed 2026-06-17); Codex 0.146.0 (OpenAI verified 2026-08-12); Google declined to patch Gemini CLI citing deprecation and recommends migrating to Antigravity (2026-08-04); Microsoft shipped no fix for Copilot as of publication
Taxonomy & references
Curator notes
Air Security (Or Nevo, Dor Granat, Niv Hoffman), published 2026-09-17; The Register 2026-09-17, Help Net Security 2026-09-18. Mechanism: for Claude Code, Codex and Copilot the install is git clone then git checkout <pinned-sha>; the attacker who controls the plugin's upstream repo creates a branch whose name is the exact 40-hex SHA and makes it the default, and git resolves the ref over the commit id. Gemini CLI variant: git fetch origin <ref> then git checkout FETCH_HEAD, defeated by a default branch literally named FETCH_HEAD. The changed pin triggers each agent's background auto-update, so the malicious plugin code runs with no prompt or click. Attacker need not control the marketplace, only the repository behind a plugin the marketplace already trusts. Discovered May 2026, disclosed to all four vendors June 2026. Air calls it the first supply-chain vulnerability of the AI agent ecosystem. No CVE mentioned on any cited page. The Register additionally states GitHub applied a partial mitigation via SHA restrictions while Microsoft Copilot remains unpatched. Distinct from AIR-2026-0002 (PromptArmor, injected marketplace plugins with hooks, Jan 2026), which concerned malicious plugin content rather than a pin-verification flaw. autonomy_level=assistant: the trigger is the agent's own auto-update routine, not a delegated task or model decision; ambiguity noted.
Supporting sources
Cite as
Enkrypt AI. "Plugin4Shell: plugin SHA-pinning bypass gives zero-click RCE through background auto-update in Claude Code, Codex, GitHub Copilot and Gemini CLI". AIR, AIR-2026-0248. https://agentincident.vercel.app/i/AIR-2026-0248/ (accessed 2026-10-19).