
一句话看懂:npm v12 正式发布,默认关闭了依赖安装时的自动脚本执行、Git 和远程 URL 依赖解析,同时开始逐步废弃能绕过 2FA 的细粒度访问令牌(GAT),从账户操作到发布环节全面收紧安全策略。
事件核心:发生了什么
根据 GitHub Changelog 发布的消息,npm v12 已正式标记为 latest。此次重大版本更新主要包含两类变化。第一,安装时安全默认值正式生效:allowScripts 默认关闭,依赖生命周期脚本(如 preinstall、postinstall)和隐式 node-gyp 构建不再自动运行;--allow-git 和 --allow-remote 默认值设为 none,Git 依赖和远程 URL 来源的依赖均需显式允许。开发者可通过 npm approve-scripts 命令生成受信任的白名单。第二,针对 2FA-bypass 的细粒度访问令牌(GAT)分两步弃用:第一步,预计 2026 年 8 月初生效,GAT 将不能绕过 2FA 执行敏感操作,如创建令牌、修改密码/邮箱/2FA 配置、更改包访问权限、管理组织成员等;第二步,预计 2027 年 1 月生效,2FA-bypass 令牌将失去直接发布能力,仅能读取私有包或暂存发布。GitHub 计划在未来数月内推出迁移指南,帮助开发者转向可信发布(OIDC)或暂存发布模式。
为什么重要
npm 是 JavaScript 生态的核心包管理器,其安全策略直接影响全球数百万开发者的供应侧安全。此次更新将过去依赖社区自觉的安全实践(如检查脚本、限制远程源)变为默认强制行为,减少了因误信恶意包或配置疏漏导致的供应链攻击风险。同时,逐步弃用 2FA-bypass 令牌解决了长久以来的安全悖论——高权限令牌反而可以绕过最重要的账户保护机制。对于采用自动化 CI/CD 流水线的团队,这意味着必须重新审视 token 使用方式,推动更现代的无密钥认证(如 OIDC)落地。整体来看,npm 正在从“默认开放”转向“默认拒止”,这是一次重要的安全范式转变。
对用户/开发者/创作者的影响
对普通开发者而言,npm install 后发现某些包安装失败或脚本未运行是正常的新行为,需主动通过 npm approve-scripts 管理和提交白名单。对 CI/CD 管理员或 DevOps 工程师来说,2026 年 8 月起使用 2FA-bypass GAT 的自动化操作(如密文轮换、成员管理)将直接报错,建议立即排查并替换为交互式任务或升级到 OIDC 认证。对维护开源项目的作者,若使用自动化发布令牌,需在 2027 年 1 月前迁移至可信发布或暂存发布流程,否则将无法直接发布新版本。当前 npm 11.16.0+ 已带有相关警告,可作为测试过渡的准备环境。
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
值得关注的后续
第一,npm 官方承诺的迁移指南尚未发布,具体技术细节和工具支持(如自动化白名单生成与 CI 集成)是开发者能否平稳过渡的关键。第二,其他包管理器(如 Yarn、pnpm)是否会跟进类似的安装时安全默认值,这关系到整个前端供应链安全标准的提升。第三,暂存发布机制在实际大规模发布场景下的工作流代价——每次发布都需要人工 2FA 批准,对于高频发布的团队可能成为瓶颈,需要观察是否有更灵活的策略出台。
![[Bug]: OpenAPI MCP `extra_headers` are not forwarded from client requests](https://www.chat-gpts.plus/wp-content/uploads/2026/07/26794-1f631a72-768x403.jpg)

