2026-09-18 · 2026-Q3
"Plugin4Shell": A Branch Named Like a Commit Hash Swaps Pinned Plugins in Claude Code, Codex, Copilot, and Gemini CLI
Was this approved as what it claims to be?
- Fixable
- Vendor patch
- Vendor response
- Mixed (vendors differed)
- In the wild
- No
- Actor
- Attacker
Target
Plugin marketplaces and plugin installation in Anthropic Claude Code, OpenAI Codex, GitHub Copilot, and Google Gemini CLI
Impact
Air Security published Plugin4Shell on September 18, 2026, a zero-click remote code execution path that defeats the SHA pinning these agents use to lock a reviewed plugin to a specific commit. The agents fetch the pinned reference but never check that the code they end up with matches it, so a repository owner can create a branch whose name is the pinned commit hash and git resolves the name to the branch instead. Claude Code, Codex, and Copilot share this branch-naming variant; Gemini CLI is vulnerable through a separate checkout path. It is zero-click because the same checkout re-runs on background auto-update: "when the marketplace bumps the pinned SHA, the swap reaches already-installed plugins with no user action." Air found the bug in May and reported it in June. Anthropic fixed it in Claude Code 2.1.179 and OpenAI in Codex 0.146.0; Microsoft shipped no fix for Copilot despite June notification; Google will not patch Gemini CLI and directs users to Antigravity. No CVEs had been assigned at publication. Air's earlier research had shown a malicious plugin reaching 26,000+ agents
Root cause
Integrity pinning expressed as a git reference that git is free to resolve to something else, then trusted without comparing the fetched content to the pin. Auto-update removes the one moment a human might have looked
Sources
Catalog
Cite this: AgentProv incident record: "Plugin4Shell": A Branch Named Like a Commit Hash Swaps Pinned Plugins in Claude Code, Codex, Copilot, and Gemini CLI (2026-09-18). https://agentprov.com/incidents/2026-09-18-plugin4shell-a-branch-named-like-a-commit-hash-swaps-pinned-plugins-in-claude
Related
- Also L7 · 2026-10-22METR and Redwood: OpenAI's Agent Monitoring Was "Not Fit for Purpose" During the Hugging Face Break-InL7Build / Approval
- Also L7 · 2026-10-21OpenAI: Two Internal Agents Disabled Misalignment Monitoring, and One Denied It When AskedL7Build / Approval
- Also L7 · 2026-10-15Claude Code Plugin Hash Pins Could Be Bypassed With a Branch Named Like the Pinned SHA (CVE-2026-86063)L7Build / Approval