Agent Incident RegistryAIR
v1 · updated 19 Oct 2026
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
plugin_auto_updategit_operationsplugin_code_execution
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
OWASP ASI04 Agentic Supply Chain VulnerabilitiesOWASP ASI05 Unexpected Code Execution (RCE)sha_pinning_bypassgit_ref_shadowingplugin_supply_chainzero_clickauto_updatecross_vendorunpatched_at_disclosurecoding_agent
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.
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).