What happened
Poisoned VS Code extension harvested multi-platform developer credentials; stolen GitHub credentials used to exfiltrate ~3,800 internal repositories including Copilot and GitHub Actions source
2026-05-22
CriticalVendor postGitHub confirmed 3,800 internal repos — including Copilot and GitHub Actions source — were exfiltrated after a TeamPCP-poisoned Nx Console VS Code extension harvested AWS, GitHub, and Claude Code API keys.
What happened
Poisoned VS Code extension harvested multi-platform developer credentials; stolen GitHub credentials used to exfiltrate ~3,800 internal repositories including Copilot and GitHub Actions source
Why it matters
3,800 GitHub internal repos exfiltrated including Copilot internals and GitHub Actions workflow source; AWS, GitHub, Kubernetes, GCP/Docker, and Claude Code API keys compromised; stolen data listed for $50K on dark web forums
Missing authorization check
Action-level authorization receipts tied to the agent session identity, not just the API key — ensuring stolen credentials cannot authorize high-impact actions without a fresh human-in-the-loop confirmation through an independent channel
Would PP block it?
The primary enforcement point is the authorization receipt requirement: stolen API keys alone cannot produce a valid PP receipt because receipt issuance requires a live authority channel handshake independent of the stolen credential. This means attackers using harvested Claude Code or GitHub tokens in an agent context would fail authorization on any PP-gated action. However, PP has no visibility into VS Code extension installations, local credential stores, or native GitHub CLI operations — the theft vector itself is outside PP's enforcement boundary.
Incident analysis
2026-05-19
TeamPCP poisons Nx Console 18.95.0 as part of the Mini Shai-Hulud supply chain campaign; malicious version available on VS Code Marketplace for ~18 minutes, OpenVSX for ~36 minutes
2026-05-20
GitHub employee installs poisoned Nx Console extension; payload harvests credentials for GitHub (via gh CLI), AWS, Kubernetes, GCP/Docker, and Claude Code
2026-05-20
TeamPCP uses stolen GitHub credentials to exfiltrate ~3,800 internal GitHub repositories including Copilot internals and GitHub Actions workflow source
2026-05-21
GitHub detects compromise, isolates endpoint, removes malicious extension from VS Code Marketplace, begins rotating critical secrets; TeamPCP lists stolen repos on Breached forum for $50K minimum
2026-05-22
GitHub CISO Alexis Wales publishes blog post confirming Nx Console as the attack vector; GitHub links breach to TanStack npm supply-chain attack; Nx team confirms developer was compromised via stolen gh CLI credentials
Authorization boundary
This incident is categorized as Credential exposure. The relevant Permission Protocol gate is Credential Gate. The read is conditional: the block only applies where the real action boundary is routed through a gate.
PP's Credential Gate requires a signed authorization receipt at execution time, not just a valid API key. Even if TeamPCP harvested a Claude Code API key, any high-impact action attempted with that key would require a PP receipt signed through an independent authority channel that the attacker cannot replicate. PP does not prevent the initial credential theft via a malicious extension, nor does it govern GitHub CLI operations outside a PP-instrumented agent runtime.
Related incidents and controls
Mini Shai-Hulud supply chain worm compromises TanStack, Mistral AI, and 170+ npm/PyPI packages via GitHub Actions cache poisoning
OpenAI Codex Vulnerability Allowed Attackers to Steal GitHub Tokens
Claude Code OAuth tokens stolen via stealthy MCP man-in-the-middle hijacking
Braintrust AWS breach exposes org-level AI provider API keys for all customers — OpenAI, Anthropic, Google credentials at risk
Start small
This incident maps to Credential Gate. Start with the boundary that controls the actual action, then require a signed receipt before execution.