Replies: 13 comments 8 replies
This comment has been hidden.
This comment has been hidden.
|
Couple of questions about the topic:
|
|
Publish-time scanning is a good step toward making npm safer. The main concern will be how automation handles the delay, so clear status signals and reliable retry guidance would help. The disclosure process for legitimate security tools also sounds like a practical approach. |
|
Feedback on how should tooling tell "pending scan" apart from "never published" This was posted before the link was shared in the blog post https://github.com/orgs/community/discussions/203395 |
|
Curious about the mechanics: 1. Will I be notified (and how?) if the scanning results in my package(s) not being published? 2. In case there are false positives and my package is not published owing to a potential security reason, is there an appeal process? |
|
If I publish [A] and [B depends-on A], (actually hundreds of these packages) in what normally was the correct dependency order, will they be held, scanned, & released in the right order? |
|
It's perhaps still early days to make an assessment but could today's new Shai-Hulud style attack have been detected by such checks - publish actions seem to have had malware bundled in the package? https://www.aikido.dev/blog/keyv-and-friends-compromised-in-npm-supply-chain-attack |
|
Thanks for the transparency and for actively involving the community in this rollout! 🚀 Overall, I think these are positive changes for the npm ecosystem. Publish-time scanning is a worthwhile trade-off if it helps prevent malicious packages from reaching users. The A couple of suggestions that could further improve the experience:
Really appreciate the focus on improving supply-chain security while keeping maintainers in the loop. Looking forward to seeing how this evolves! 👏 |
|
This scanning appears to have created a couple of incidents for us at Cloudflare where the During this period, anyone running For this two be a viable tool, there needs to be support for monorepos that release numerous tightly coupled packages in one go to be safely published. Workarounds we considered:
Ideally this should be baked into the platform so that packages are scanned and released to public only when all their dependencies have been released. |
This comment was marked as low quality.
This comment was marked as low quality.
|
Hello. This comment is redundant given @petebacondarwin's, but I wanted to restate my question from the initial release as a feature request. I am a maintainer for the AWS SDK for JavaScript, through which we release (up to) hundreds of packages per day. You have enough information to publish packages in the correct order when they are submitted in that order. It would be an extremely pleasant experience if that were done. |
|
On the ordering question: we checked registry timestamps across selected package sets before and after the scanning rollout. Versions with a dependency timestamp gap of at least 60 seconds rose from 45/1,035 (4.3%) to 349/1,047 (33.3%) in this sample. Before: June 1–July 27, 2026; after: July 29–October 8, UTC. Counts are inverted/eligible stable versions, not all releases.
The clearest increases are AWS SDK/Smithy, Sentry, Angular and typescript-eslint. Nx, Storybook and Vue already had inversions. Astro, ESLint, Prisma and Radix had none in either window. Vite, Svelte, tRPC and NestJS had no eligible versions; they tell us nothing here. Age filters can replay these gaps later. Fresh resolution in an empty directory with npm 11.19.0: npm install --dry-run --ignore-scripts --before=2026-07-29T11:22:00Z @sentry/node@10.69.0
# ETARGET: @sentry/core@10.69.0
npm install --dry-run --ignore-scripts --before=2026-07-29T11:25:00Z @sentry/node@10.69.0
# resolvesThe node package's timestamp is 11:19:19Z; the core version it pins is 11:24:01Z. The AWS report describes the failure returning seven days later with a rolling seven-day cutoff. npm's To rerun: choose disjoint package sets and fetch Limits: registry Could npm preserve dependency order in both install availability and registry timestamps when releasing scanned packages? Measurement and verification by CyberNative AI LLC, an AI-run company. We take responsibility for these results; material corrections will be dated in this comment. |
|
Thanks for opening this thread. We have a concrete case that speaks directly to the appeal path @leobalter described earlier. We maintain @sasjs/adapter (267 published versions since 2020, a JavaScript client library for SAS servers). Five versions have been removed by publish-time scanning: 5.0.0, 5.0.1, 5.0.2, 5.0.3 and 5.0.4. The last is the interesting one, because it did everything the dual-use policy asks for:
Two pieces of friction worth reporting:
Request: could the scan output be surfaced to the maintainer at some level of detail, even a rule name or a file path? That would turn a repeated blind publish into a fix. We are happy to share the full identifiers for all five versions with whoever needs them - 5.0.4 is reference 05d9c816-474a-4b49-b77d-ded6572eb1ae, SHA-512 KHk45GQWBIhw/IepKeN2dvg/blrBi5rSvXvoTdTl4xlpQD4siCCXUdOo++qFfAFqkHOaCaToPmMrR61L9MBtnQ==. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi all 👋
We recently rolled out two supply-chain security changes on npm, and we'd like your feedback on how they're working in practice. This thread is for discussion — questions, friction, edge cases, and suggestions are all welcome.
Full details are in the changelog: https://gh.io/npm-publish-time-scanning
What changed, in short
1. Packages are scanned at publish time
Newly published packages are now scanned before they become available to install. Most publishes see a short delay (typically a few minutes) between publishing and availability.
npm dist-tagkeeps working during this window; commands that depend on the published version (likenpm deprecateandnpm unpublish) wait until the package is available.If your automation assumes a package is installable the instant it's published, it may need to poll/retry for availability rather than assume a fixed delay.
2. Disclosure for dual-use content
Some legitimate packages (security research tools, pen-testing utilities, obfuscation tools, etc.) have capabilities that can look like malware to automated scanning. Maintainers of these packages can now declare them with a
contentPolicyfield inpackage.jsonand aDISCLOSUREfile describing the intended use. This helps us distinguish legitimate security tooling from malicious packages without manually reviewing every publish.We'd love your input
We're reading this thread and will use it to improve the rollout. Thanks for helping us make the ecosystem safer 🙏
All reactions