I cleaned the infected packages. I deleted node_modules. I ran npm ci --ignore-scripts. Clean install, no lifecycle scripts. Done, right?

Then I opened the project in VS Code.

The hook fired.

This is the part of the Shai-Hulud npm supply chain attack that most incident response guides miss. The worm doesn't only live in npm lifecycle scripts -- it plants persistence mechanisms directly into your IDE configuration. And those fire completely independently of npm.

What happened on August 4, 2026