npm puts a human back in front of the registry

npm now has staged publishing. A package version goes to a queue rather than straight to the registry, and a maintainer has to approve it with 2FA before anyone can install it. Five commands — stage publish, list, view, approve, reject — and crucially, CI can stage without 2FA while the human supplies it at approval.

GitHub's framing is that it closes an entire class of CI takeover publish attacks, and that looks right. If your pipeline is compromised, the attacker can now push a version into a queue, which is a great deal less interesting than pushing one to every machine that runs npm install.

What makes this worth noting here rather than filing under routine supply-chain news is the shape of it. Everything else in this space is racing to remove human steps. This deliberately adds one, at the exact point where the cost of being wrong is highest and the cost of the delay is lowest. That is the correct trade, and it is nearly the opposite of how agent tooling is being designed — where the pitch is precisely that you do not have to sit in the middle.

The scepticism in the responses is fair, though. Adnan Khan is right that people should turn it on immediately; the doubters are right that most won't. An opt-in control adopted by the maintainers who were already careful does not move the number that matters. And a human approving a staged release under time pressure is the same human from the approval-fatigue study — the mechanism only works while the queue is short enough that looking at it still feels like a decision.

Turn it on anyway. Needs npm CLI 11.15.0 and Node 22.14.0.