// answer

npm read-only hold after email change or 2FA recovery

Short answer

Yes, npm can place a temporary security hold after 2FA recovery. Email changes and bypass-2FA token actions require interactive 2FA, but they do not automatically create the same 72-hour hold.

If you want to ask a follow-up rather than read one: Join a community

Can npm add a read-only hold after an email change or 2FA recovery

Yes. npm places a temporary 72-hour security hold when you recover a 2FA-enabled account with a recovery code. During that hold, you can log in, browse, install, change your password, and add a new 2FA method, but you cannot publish, unpublish, change package settings, manage maintainers, or change account settings.

An email change is a different kind of account action. npm says that changing email or password is an account-identity action that requires an interactive 2FA challenge, and that bypass-2FA tokens cannot perform it. The docs do not say that an email change automatically creates the same 72-hour read-only hold that recovery does.

The part people get wrong is assuming every security-sensitive action produces the same lock. npm separates a recovery hold from normal authenticated account changes. Recovery with a code triggers the hold. A successful email change, when allowed, is still an account action, but the documented restriction is the 2FA challenge itself, not a blanket post-change publishing freeze.

The inconvenient part is that the recovery hold cannot be lifted early. npm says it expires automatically after 72 hours, and using another recovery code during that window does not extend it. If you need to publish during that time, you wait. If you were trying to fix access after losing a device, plan for the hold before you start recovery.

If you are trying to recover access, the practical sequence is simple. Use the recovery code only when you need to regain entry to the account, then check whether the hold is active before trying to publish or change settings. If the problem is only an email update, complete the 2FA challenge, then verify whether the change succeeded and whether any package action is still blocked by a different policy.

If you are debugging a release pipeline, treat these as separate failures. A recovery hold blocks package operations for 72 hours. An interactive 2FA requirement blocks account-identity actions unless a human completes the challenge. A token with bypass 2FA may still publish in some cases, but npm says it cannot be used for email or password changes, 2FA changes, token management, or other account-governance actions.

For teams, the safe way to reduce confusion is to document which action happened, when it happened, and what the account can do right after it. If a maintainer used a recovery code at 09:00 UTC, the 72-hour hold ends at 09:00 UTC three days later. If someone merely changed the email address after passing 2FA, the docs point to a challenge requirement, not a recovery hold.

If you need a broader view of how npm handles auth and account recovery, the official docs are the source to check first. For teams building around this kind of workflow, DevConnect keeps test coordination on your own terms and stays free to use, so you can keep that process separate from account recovery on npm. https://devconnectplatform.com

What to do next

If you just recovered with a code, wait out the hold before expecting publish access.

If you changed your email, confirm the 2FA challenge completed and then test the exact action that failed, because npm documents the restriction by action type, not as a universal post-change hold.

If your CI suddenly fails, check whether it is using a bypass-2FA token, because npm says those tokens no longer cover account-identity or account-governance actions. That distinction is often what explains why one command still works and another one fails.

Concrete example

A maintainer loses a 2FA device, signs in with a recovery code, and then tries to publish a patch release ten minutes later. npm blocks the publish until the hold expires. A different maintainer later changes the account email after completing interactive 2FA, then tries to rotate package settings from a token. npm blocks the settings action because it is an account-governance change, not because of the recovery hold.

What the docs do not say

The docs do not describe a special read-only hold that is triggered by email change alone. They do describe a 72-hour hold after recovery-code login, and they do describe interactive 2FA requirements for email, password, and other governance actions. That is the boundary to use when you are deciding what is blocked.

Frequently asked questions

How long does npm’s recovery hold last

The hold lasts 72 hours and expires automatically. npm says it cannot be lifted early, and another recovery code used during that time does not extend it.

Can I publish packages while the hold is active

No. npm says publishing and unpublishing are blocked during the 72-hour recovery hold. Creating access tokens, changing package settings, and changing account settings are blocked too.

Does changing my email trigger the same hold as recovery

npm documents email change as an account-identity action that requires interactive 2FA. The docs do not say that an email change alone creates the 72-hour recovery hold.

Can a bypass-2FA token handle account recovery or email changes

No. npm says bypass-2FA tokens cannot be used for account-identity or account-governance actions such as changing email, changing password, modifying 2FA, or managing tokens.

What should I do if I lost both my 2FA device and recovery codes

npm says to contact support through the account recovery flow and provide as much information as possible. If you still have access to your registered email, you can verify it during recovery.

Know someone stuck on this? Send them the answer.

Sources

Every link here was fetched and confirmed to resolve before this page went live.

More on this topic: Community

Related questions

Not the question you had?

Ask it. Every source gets fetched and checked before anything goes up, so it takes a day or two, and questions that cannot be answered honestly do not get a page at all.

No account, no email address needed.

Where developers talk about this

DevConnect has communities for the things this page covers. Smaller than the big forums, and nobody is farming engagement.