
npm now freezes high-impact accounts after risky account changes
npm now puts high-impact accounts (packages with 1M+ weekly downloads or 500+ dependents) into a 72-hour read-only cooldown after sensitive changes like an email swap or 2FA-recovery-code use, blocking publishing, token management, and org changes while alerting the old email address. The piece explains the mechanism was prompted by the March axios account-takeover (a RAT delivered via a fake video-call update prompt let an attacker change the account email and publish two malicious axios versions to ~100M weekly downloads) and the more recent Mastra incident, and shows how the cooldown complements npm's trusted publishing (removes long-lived tokens via OIDC) and staged publishing (adds human 2FA approval before release) to close the account-takeover gap those two controls don't cover.
What it is
A registry-level control from npm: high-impact accounts (packages with >1M weekly downloads or 500+ dependents — npm hasn't restated the threshold but the post infers it from the existing 2FA-enforcement policy) are frozen read-only for 72 hours after a sensitive action, with an alert to the previous email. The freeze auto-lifts. This doc carries the maintainer/consumer action list and the design rationale the summary omits.
How it works
The freeze blocks registry- and security-affecting actions — publishing, token management, package visibility changes, org membership changes — while leaving installs and downloads working. The trigger events are things npm can actually observe: an email swap or use of a 2FA recovery code. The key insight the post makes: in a takeover like axios, almost the entire attack chain (Slack social engineering, a RAT installed via a fake "system out of date" prompt on a video call, a live hijacked npm session) is invisible to the registry. The email change is the single step npm has any view into — attackers change it to sever the owner's recovery path and redirect alerts. The cooldown turns that one visible step into a delay-and-alert.
Where it fits
The three controls each cut a different path; the cooldown covers the one the other two route around:
flowchart TD
A[Attacker goal: publish malicious version] --> B[Steal long-lived token]
A --> C[Push unreviewed CI release]
A --> D[Take over live account]
B -.blocked.-> TP[Trusted publishing: short-lived OIDC, no token to steal]
C -.blocked.-> SP[Staged publishing: human 2FA approval]
D -.delayed + alerted.-> CD[72h cooldown]
D --> E[Attacker can approve own staged package]Trusted publishing does "a whole lot of nothing" once an attacker holds a live session; staged publishing can be bypassed by approving your own staged package. The cooldown is what handles the takeover case.
What to do
If you maintain a popular package:
- Confirm the email on your npm account is one you control and actively monitor — you'll miss the alert otherwise.
- Move to FIDO2 where possible.
- Treat an unexpected email-change notice as a security incident, not spam; contact npm support.
- If publishing from CI, configure trusted publishing as stage-only and disable tokens, so every release needs human approval and no long-lived credential exists to steal.
If you only consume packages, you benefit automatically — but many packages still don't enable these settings. The post points to Safe Chain by Aikido (the author's own tool), a free OSS wrapper for npm/npx/yarn that scans packages for malware pre-install and enforces a waiting period on new versions.
Caveats
The threshold is inferred, not restated by npm. The cooldown doesn't cover the self-approval bypass of staged publishing, and the Safe Chain recommendation is vendor self-promotion.
Technologies named here
- axios
- npm cooldown
- mastra
- npm Staged Publishing
- npm trusted publishing
- npm registry
- npm postinstall script blocking
- npm 2FA-enforcement policy
- Safe Chain by Aikido
- npm
- OIDC
Techniques named here
- Social engineering via video call lure
- Remote access trojan deployment
- Account email change to sever recovery/alerts
- Direct malicious publish bypassing CI
Threat actors named here
- axios compromise attacker
- Mastra attack
Related in Supply Chain


