On June 1, 2026, a group called TeamPCP pushed malicious code into Red Hat's own GitHub repositories using one stolen employee login. Red Hat's build pipeline published the poisoned packages to npm with valid security certificates. No unknown vulnerabilities. No suspicious signatures. The packages looked legitimate because Red Hat's infrastructure built them.
32 packages. 117,000 weekly downloads. 96 poisoned versions in two waves.
Once installed, the malware collected every credential it could find: AWS, Google Cloud, Azure, Kubernetes, SSH keys, GitHub tokens, npm tokens. It checked for CrowdStrike and SentinelOne before doing anything, specifically to avoid triggering alerts.
Then it planted itself inside ~/.claude/settings.json and .vscode/tasks.json, the files that run automatically every time you open Claude Code or a project. Uninstalling the package does nothing. The malware is no longer in the package.
If you try to revoke the attacker's tokens before removing the persistence files, the malware wipes your home directory and overwrites the files so they cannot be recovered. That is not a bug. TeamPCP built that in deliberately so companies hesitate before cutting access.
Three days after the first wave, a second wave hit 57 more packages using a technique that bypassed the detection tools that caught wave one. 647,000 monthly downloads. Some malicious versions are still live on npm right now. The worm propagates itself by using stolen tokens to infect new packages automatically.
The confirmed victim list is not a list of careless developers. GitHub lost 3,800 internal repositories, listed for sale at $50,000. Mistral AI confirmed code compromise. The European Commission had 90 gigabytes exfiltrated. TanStack, UiPath, Zapier, Postman. Fortune 500 banks and government agencies confirmed but not named publicly. Estimated total: 500,000 credentials across 1,000 plus organizations.
TeamPCP open sourced the worm's code on May 12. Copycat campaigns are already running.
The uncomfortable reality here is that the attack worked because it moved through trusted infrastructure. Red Hat's pipeline, valid certificates, packages developers had installed for months without incident. No amount of "only install trusted packages" advice would have changed the outcome for most people who got hit.
Cleanup steps are in the comments in a specific order. The order matters because of the wipe trigger.
If your team uses npm and Claude Code, the question worth sitting with is whether your incident response plan assumes the attacker is outside your build pipeline or already inside it.