工程实践 · FIELD NOTE ENGINEERING-DEPENDABOT-COOLDOWN-20260717

Dependabot 默认三天冷静期:依赖更新不再追求第一时间

GitHub 为 Dependabot 版本更新默认加入三天等待窗口,同时保持安全更新即时创建。这个默认值把“最快升级”改成了“先给生态系统留下暴露异常的时间”。

明确结论

Dependabot 现在默认等待新版本在包注册表中存在至少三天,再创建常规版本更新 PR;安全更新不受影响,仍会立即创建。这是对软件供应链现实风险的默认策略调整,而不是停止及时修补漏洞。

三天窗口的价值在于让维护者、社区和自动化扫描有时间暴露损坏或被入侵的版本。它降低了“刚发布就自动合并”的风险,但不能替代锁文件审查、测试和来源验证。

核心技术要点

  • 默认冷静期只作用于 version updates,不延迟 security updates。
  • 该默认值覆盖 github.com 上 Dependabot 支持的全部生态系统,并计划随 GitHub Enterprise Server 3.23 提供。
  • 团队仍可在 .github/dependabot.yml 中通过 cooldown 选项修改等待窗口或明确退出。
  • 等待依据是版本在注册表中的可用时间,不是对包内容、维护者身份或漏洞状态的安全认证。

适用场景

  • 启用了 Dependabot 且存在自动合并流程的应用与基础设施仓库。
  • 依赖数量多、更新频繁,难以逐个进行人工供应链审查的团队。
  • 希望把常规升级速度与紧急安全修复分开治理的组织。

实践建议

  • 检查现有 dependabot.yml 是否已设置 cooldown,避免新默认值与团队原策略叠加后产生误判。
  • 保持安全更新的独立高优先级通道,并为常规版本更新保留锁文件差异、测试、许可证和发布者异常检查。
  • 对内部包、关键运行时和低风险开发依赖分别设定窗口;需要更快升级时,应记录退出冷静期的业务理由和回滚条件。

局限与风险

  • 冷静期只能增加观察时间,无法证明三天后的版本安全,也无法发现尚未公开的供应链攻击。
  • 常规缺陷修复会被同步延后;依赖上游快速修复生产故障的仓库可能需要缩短或关闭窗口。
  • 规则只约束 Dependabot 的版本更新,不会自动治理其他机器人、手工升级或自建制品源。

延伸阅读

原始资料来自 GitHub Changelog。建议结合官方文档的最新版本核对具体 API、限制和配置。

打开官方资料 ↗