Replies: 10 comments 2 replies
-
Still unacceptable and meaningless security theater. You are wasting people's time, not improving security. Edit: If not, I'd like to hear why. In what scenario do you believe a 90 a day lifetime window actually helps? If the token leaks from a secure CI flow, it's going to be used within 90 days anyway - most likely. What it does is create an avenue where you can cock up the renewal and leak the rotated token that way, since it's going to be a manual process involving a (potentially) compromised machine. It's never going to just randomly leak from a secure store and then not be used immediately. The only situation I see where it could potentially have an impact is if a package has not been updated in more than 90 days, and that package author somehow has their CI flow compromised (irrelevant how in this example), then yes, that loss of control would not cause a rogue CI flow to deploy a new version. Is that the idea here? If so, it seems like a bit of an overreaction with regard to risk vs. manual intervention required during normal operations. And usually, this should be solved at the CI level, with things like MFA. I know that that of course is outside npm's control, but if people are being reckless, they can easily be reckless within 90 days too. |
Beta Was this translation helpful? Give feedback.
-
|
My understanding is that "local" means Does this still only mean "via a token from Or does this imply something about publishing via a token (classic/granular/etc)? (I ask because there are situations where any sort of proof-of-presense is infeasible, like DefinitelyTyped, nightly builds, etc, so requring that will be a major break and/or make these projects impossible.) |
Beta Was this translation helpful? Give feedback.
-
|
I am very worried about the 90-day limit. The more often we have to log in, the higher the likelihood that tokens are leaked somewhere else. I think it would be better to enforce 2FA and allow extensions to token lifetimes. I hope this policy is withdrawn as soon as possible. From a security perspective, if a GitHub token or other credentials are leaked and a workflow runs and publishes, there is no effective defense. Rather than blocking everything and making things inconvenient, it’s important to make the policy flexible in a way that buys time to respond. |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for the update! |
Beta Was this translation helpful? Give feedback.
-
I don't believe this is an appropriate response to the community feedback in https://github.com/orgs/community/discussions/174505. Please reconsider. Besides of the main issue, what behavior do you think this incentivizes for maintainers relying on an existing TOTP-based publishing flow? They'll be likely to hold on to it as long as they can. Preventing them from rotating their TOTP secrets is just baffling from a security perspective. It also (as can be seen in the linked feedback thread) disincentivizes some maintainers from publishing at all. This only hurts the community and will likely increase the amount of security issues and forking/migration churn stemming from neglected/abandoned packages a la |
Beta Was this translation helpful? Give feedback.
-
|
Can you stop doing damage mitigation for a climbdown from a frankly embarrassing stance? Your original plans were not well thought out or grounded in reality.
Show me a single piece of evidence based research that suggests passkeys are better than TOTP for reducing/mitigating attack surface. Until then these changes are smoke and mirrors. It's at times like these I'm glad I don't work for a large org where politics take priority over technical fundamentals. |
Beta Was this translation helpful? Give feedback.
-
Clown behavior from micro$oft. Maybe listen to your plethora of users with a vast & varied OSS (including from a security, privacy and freedom - the point of OSS) background who don't want vendor lock in and commercialization of authorization into a website. Can't wait for the when users are invariably locked out because their proprietary, big-tech controlled passkey app or whatever doesnt work (broken device or lost account etc.) and now they are unable to log in, because the passkeys are stored in the proprietary locked in vault (locked in meaning anti-consumer here; not security), and can't do anything because there's no number to contact github. |
Beta Was this translation helpful? Give feedback.
-
I would like to confirm that this line item is does not require an integration to GHA, but can be done entirely with the web flow in the CLI just like it works for local publish. Print the webauthn url and wait for the user to take the proper MFA actions. @reggi and I discussed in person at JS Conf, and I believe they are fully able to represent my ask for this in the technical design discussion. Happy to be pulled in on it, but @saquibkhan asked that I post here with this detail. |
Beta Was this translation helpful? Give feedback.
-
|
I'm still unclear on what the migration path is for custom/self-hosted CI/CD. For example, if I want to publish an NPM package from my self-hosted Jenkins cluster, how do I get the necessary credentials? It isn't feasible to manually rotate the secret every 90 days, much less every 7 days.
That is still only for Github customers. What about NPM users that use other CI/CD systems. Or even Github customers who use a CI/CD system other than Github actions? |
Beta Was this translation helpful? Give feedback.
-
|
One clarifying question: Are calls to deprecate packages included in the "Support for dist-tag and features beyond just publishing" item? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello npm community! 👋
Thank you for your patience and valuable feedback on our security changes. We've been listening carefully to your concerns, and I'm excited to share that we've adjusted our timeline to better support your workflows while maintaining our security improvements.
What We've Heard From You
Your feedback has been invaluable in helping us understand the real-world impact of these changes. Based on your input, we're making the rollout more gradual and providing better migration paths before implementing breaking changes.
Updated Timeline
📅 November 5, 2025
📅 November 19, 2025
What's Coming Next (Before Additional Breaking Changes)
We're committed to providing robust alternatives before making further breaking changes. Here's what we're working on:
Near-term improvements:
npm tokencommand support for granular tokens (list, add, delete)Looking ahead:
We're evolving from "trusted publishing" to "Established Trust" - a broader initiative that should include:
dist-tagand features beyond just publishingImportant: We will NOT proceed with removing existing TOTP configurations or further shortening token lifetimes until these enablement features are in place.
What Hasn't Changed
The security improvements from October 13 remain in effect:
We're Here to Help
Your feedback has directly shaped these changes, and we'll continue to iterate based on your needs. If you're attending GitHub Universe, I'll be there in person and would love to discuss these changes or answer any questions you might have.
For those who can't make it to Universe, please continue sharing your thoughts here. Every piece of feedback helps us build a more secure npm that works for everyone.
Other resources
Thank you for being part of this journey. Together, we're making npm more secure while ensuring it remains the tool you rely on every day.
- The npm Team
Beta Was this translation helpful? Give feedback.
All reactions