服务对象与地域限制
PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。
代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。
本文要点
- 48小时从未验证配置的创建时刻算起;通过它首次成功发布后,配置获得验证并豁免过期。
- 过期连接仍可见,但不能再使用或编辑。删除目标连接再创建,才会开启新的48小时窗口。
- 当前最低要求为 npm CLI 11.5.1、Node 22.14.0;支持指定云托管 runner,自托管 runner 尚不支持。
- GitHub Actions 的 issue_comment 和 pull_request_target 不能用于这类发布 token;允许的事件仍需满足身份、权限与原有发布审批。
48小时不是所有 npm token 的统一期限
GitHub 2026年10月2日公告明确:尚未验证的 npm trusted publishing 配置,在创建48小时后失效。通过该配置首次成功发布后,它会获得验证并豁免过期;其他有效配置不受影响。
Trusted publishing 用发布工作流的短期身份凭据授权发包,避免为这一步保留长期写入 token。这里过期的是尚未验证的信任配置,不是所有 npm 账号、软件包或 token。官方说明,这项调整用于降低仓库或项目名称换主后的旧信任风险。
例如,假设周一上午创建连接,周四才准备第一次发布,而此前没有成功发布记录,就应先核对是否过期。这个例子说明创建时间的意义;普通编辑和重新保存不会重启截止时间。
先确认过期,别把 runner 排队当认证失败
先记录目标包、仓库、连接创建时间,以及是否曾通过它成功发布。检查原 workflow run:发布步骤已经执行并报认证错误,与 job 尚未获得 runner,是两条排查路径。仅凭排队时间,不应删除连接。
过期配置仍出现在 trusted publisher 设置中,但不再授权发布,也不占用每包配置额度。npm 文档进一步说明:过期配置不能继续使用或编辑,需要删除再创建。保存连接时不会验证字段是否正确,因此“设置保存成功”还不能证明身份校验通过。
步骤一:在目标包 Settings 找到准确连接
由具备该包设置权限的维护者进入 npmjs.com 的 Packages,选择目标包,再打开 Settings → Trusted publishing。用创建时间、所连仓库和真实发布历史确认目标;保留其他有效连接,不批量重置整个包。
GitHub Actions 的必填字段包括 Organization or user、Repository 和 Workflow filename,可选 Environment name。工作流只填文件名,带 .yml 或 .yaml 后缀,并确实存在于仓库 .github/workflows 目录;大小写和身份必须准确匹配。
步骤二:删除重建,并确认运行环境受支持
确认目标已过期后,删除该连接,再通过 Add trusted publisher 选择提供方并创建新连接。新连接有新的48小时窗口;仓库或项目身份变更也需要新信任关系。已有连接的提供方和必填字段固定,不能靠原位修改延长有效期。
当前文档要求 npm CLI 11.5.1及以上、Node 22.14.0及以上。支持 GitHub Actions 的 GitHub-hosted runner、GitLab.com shared runner 和 CircleCI cloud;self-hosted runner 尚不支持,未来计划不等于当前可用。更换配置不能解决运行环境不受支持的问题。
同时按原发布策略核对 Allowed actions。允许 npm stage publish,不自动允许直接 npm publish 或管理 dist-tags;这些权限各自独立。别为了赶在窗口内完成一次发布而扩大连接权限。
步骤三:以首次成功发布确认验证
在原有发布制度内安排首次发布,保留测试、构建、审阅及必要审批。GitHub Actions 需有 id-token: write,package.json 的 repository.url 应准确对应实际 GitHub 仓库;配置的调用工作流和包名也要匹配。不要临时发布无意义版本来抢窗口。
随后查看实际发布步骤和目标包记录,确认包名、版本、所用连接及成功结果。首次成功发布会验证配置,并绑定仓库不可变身份。保存设置、job 启动或进入 staged queue,都不等于某个版本已经公开可安装;分阶段发布还需遵循其维护者审批流程。
issue_comment 触发的发布也需要调整
同一公告新增拒绝 GitHub Actions issue_comment 事件的 trusted publishing token;已有 pull_request_target 限制仍然适用。这是 npm 对这类 token 来源事件的限制,不代表 GitHub 全面禁用这两个事件。
受影响的维护者可评审迁移到允许的 push、release 或 workflow_dispatch 等事件,保留原审批和标签保护。允许事件不会自动解决身份或权限不匹配;使用可复用工作流时,当前文档要求核对调用方工作流名称,以及父子工作流的 id-token: write 权限。
重建后还失败,按实际发布步骤缩小范围
按官方 troubleshooting 检查准确工作流文件名、字段大小写、repository.url、OIDC 权限和云托管 runner。OIDC 是工作流向 npm 证明身份的机制;不要把多次触发 run、关闭发布门禁或增加长期写入 token 当默认解法。
保留连接创建时间、首次成功发布版本和 run 链接;对外求助只提供脱敏状态。公告没有承诺统一错误码、精确上线时刻或恢复耗时,具体错误应按当前步骤日志核对。本文说明公开规则和操作边界,没有执行真实发包。
资料来源
常见问题
npm ci 安装私有依赖失败,重建 trusted publisher 能解决吗?
Trusted publishing 用于发布认证,不替代安装私有依赖的授权。npm 文档建议为安装使用只读 granular token,并把安装失败与发布认证失败分开排查;不要把写入凭据作为默认替代。
能用 npm whoami 确认 trusted publishing 权限吗?
不能把它当成这类权限的验证。当前文档明确 npm whoami 不是 trusted publishing 权限检查;应按拟执行的发布或标签操作核对具体授权与实际结果。
已有连接曾成功发布,是否要每两天重建?
首次成功发布后已验证的配置豁免这项过期规则,不需要按两天周期重建。后续若更换仓库或项目身份,应重新建立信任;字段不匹配、权限不足或运行环境不受支持仍需分别排查。