Dependabot 三天冷卻期怎麼用?別把一般更新與安全修補混在一起
如果你今天看到 Dependabot 的一般版本更新比以前晚出現,不要先把它當成排程壞掉。GitHub 已將 version updates 的預設 package cooldown 設為至少三天:新版本發布後,Dependabot 會先等待,才建立更新 PR。這個預設不套用在已知漏洞的 security updates;安全修補仍會立即處理。
直接結論是:先分清楚你等的是「保持最新」還是「修補已公告漏洞」,再調整 dependabot.yml。 若兩種更新都當成同一種延遲問題,反而容易在不需要時縮短緩衝期。
為什麼一般版本更新要等三天
套件剛發布時,維護者與安全研究者還在觀察是否有撤版、惡意植入或明顯相容性問題。GitHub 說明,新預設只作用於 version updates,讓一般升版先避開這段初始窗口;它不是對套件安全性的保證,也不會取代 lockfile、PR review 或 CI 的權限控管。
這個行為適合用在「自動建立一般升版 PR」的情境。已知 CVE 或 GitHub Advisory 對應的修補,屬於 security update,不能因為一般更新有 cooldown,就預期它也會等三天。
| 你看到的 Dependabot 工作 | 是否有預設三天冷卻 | 應先確認的事 |
|---|---|---|
| 新版套件的一般升版 PR | 是 | dependabot.yml 是否覆寫 cooldown、更新 schedule 是否正常 |
| 漏洞修補 PR | 否 | alert、可修補版本與 CI 是否能通過 |
| 手動升級或其他 bot 建立的 PR | 不一定 | 該工具本身的設定與觸發條件 |
先檢查 repository 是否覆寫預設
在 repository 根目錄先找 Dependabot 設定檔與目前的更新規則:
test -f .github/dependabot.yml && sed -n '1,240p' .github/dependabot.ymlrg -n 'cooldown|package-ecosystem|open-pull-requests-limit' .github/dependabot.yml若設定檔沒有 cooldown,一般版本更新會使用 GitHub 的預設行為。需要不同等待時間時,再在對應的 updates 項目加入 cooldown。GitHub 的設定參考列出 default-days、semver-major-days、semver-minor-days 與 semver-patch-days 等欄位;欄位應放在要控制的生態系規則下,而不是隨意加在檔案最外層。
version: 2updates: - package-ecosystem: npm directory: / schedule: interval: weekly cooldown: default-days: 3 semver-major-days: 7 semver-minor-days: 3 semver-patch-days: 1這不是一組通用建議值。舉例來說,內部私有套件、頻繁釋出的小型服務,或有固定維護窗口的 monorepo,可能需要不同分級;設定前先確認 release 節奏、可接受的落後時間與手動緊急升版流程。
冷卻期不是把安全更新延後的理由
最容易誤判的是「Dependabot 有等待機制,所以安全 PR 也可以慢慢看」。GitHub 明確區分兩種更新:security update 對應已知漏洞,而 version update 是在沒有已知漏洞時保持相對新版本。前者仍要依風險與可用修補版本處理;後者才是 cooldown 要降低初期供應鏈風險的範圍。
我會把 PR 規則切成兩條:一般版本更新進入既有 review queue;安全更新則另有 triage 時限與測試流程。若 workflow 會在 PR 中安裝依賴或取得部署權限,也應延續 GitHub Actions 的 pull_request_target 安全邊界 的做法,避免高權限 job 執行未審核內容。
調整前後各做一次可驗證的檢查
- 確認
.github/dependabot.yml的每個updates區塊是否真的套用到目標資料夾與 package ecosystem。 - 在 PR 或 Dependabot log 中確認這次是 version update 還是 security update。
- 對一般更新,記錄發布時間、預期 cooldown 與實際建立 PR 的時間;不要只從「還沒看到 PR」推定故障。
- 對安全更新,確認 alert、修補版本、lockfile 更新與 CI 結果,而不是等待一般更新的排程。
- 保留 lockfile、最小化 CI token 與人工 review;cooldown 只處理剛發布、很快被發現有問題的其中一條風險路徑。
把冷卻期視為一般版本升級的緩衝,而不是萬用安全開關,才能同時維持修補速度與供應鏈檢查的節奏。
參考資料:
回報錯字、失效連結,或告訴我你想看的延伸主題。