The TanStack supply chain compromise reveals a category error in npm's trusted publisher model that every JavaScript maintainer and downstream consumer needs to understand.

The attack succeeded not because TanStack misconfigured their workflow — they didn't. Their workflow was correct. The attacker compromised the execution environment (GitHub Actions runner) rather than the workflow definition itself, then used extracted OIDC tokens to publish 84 malicious packages bearing TanStack's trusted identity. This left no workflow diff, no modified YAML, no credentials to rotate. The forensic trail was effectively invisible.

The core problem: npm's trusted publisher badge confirms 'this package was published from a workflow running in the TanStack organization' — but it cannot and does not confirm 'this package contains code reviewed by TanStack.' That's not a bug in the implementation; it's a gap in what the security model was designed to answer versus what downstream consumers assume it guarantees.

Three things you should do right now:

First, audit your organization's npm packages for trusted publisher bindings. The enumeration capability exists — attackers can discover which packages carry the badge. Assume adversaries already know which of your packages are trusted and target accordingly.

Second, add runtime detection for identity misuse. npm provides no webhook or alert when your trusted publisher identity is used outside your workflow. You need to monitor the npm registry for unexpected publishes under your organization name. The TanStack team had no idea 84 packages were published under their identity until external researchers told them.

Third, treat OIDC tokens as bearer credentials with broader scope than the runner environment implies. The extracted token question matters: if tokens can be used out-of-band with meaningful lifetime, patching the runner extraction vector doesn't fully close the attack surface.

For downstream consumers: the 'verified publisher' badge is a provenance signal, not a content integrity guarantee. It confirms workflow identity, not code approval. Demand SLSA-style attestations that bind identity to content, not just identity to workflow origin. The ecosystem has not been built to provide this, which is exactly why this attack works.