Dependabotバージョンアップデートのデフォルトのcooldown期間が3日間になりました

Dependabotバージョンアップデートのデフォルトのcooldown期間が3日間になりました

Dependabotのバージョンアップデートにデフォルト3日のcooldownが導入。セキュリティアップデートは即時のまま
2026.07.25

Dependabotは、パッケージの依存関係を解析し、脆弱性の修正やバージョンのアップデートを行うプルリクエストを作成するGitHubサービスです。

昨今のソフトウェアサプライチェーンを取り巻く状況を踏まえ、侵害を受けたパッケージをインストールしないよう、公開から一定期間を経ていないパッケージはインストールできないようにする検疫期間の仕組みがパッケージ管理のエコシステムで導入されつつあり、実際、GitHubも2025年7月に同機能(cooldown)をリリースしています。

2026年7月14日からは、このcooldownのデフォルト期間が3日になりました。

https://github.blog/changelog/2026-07-14-dependabot-version-updates-introduce-default-package-cooldown/

一方、脆弱性を修正するセキュリティアップデートは従来どおり即時に作成されます。

つまり、Dependabotの設定者が特別に意識しなくても、適切に動作します。

この記事では、@aws-sdk/client-s3を対象に、cooldown設定の有無でDependabotの更新先バージョンがどう変わるかを検証します。

2026年7月のアップデートでバージョンアップのデフォルトcooldown期間の変更

cooldown機能が追加されたのは今回ではありません。
GitHubは2025年7月1日のChangelogで、Dependabot version updatesのcooldown機能がGeneral Availabilityになったと案内しています。
当時は.github/dependabot.ymlcooldownを追加し、パッケージの最低経過日数を利用者が明示的に設定する機能でした。

2026年7月のアップデートで変更されたのは、.github/dependabot.ymlcooldownで待機日数を記述しなかった場合の動作です。

項目 変更前 変更後
cooldown設定 利用可能 利用可能
cooldown updateのデフォルトの候補バージョン 最新のバージョン 3日間以上経過している最新バージョン

つまり、

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"

のように記述すると、現時点は、次のようにdefault-days: 3を明示した場合と同じ挙動です。

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    cooldown:
      default-days: 3

やってみた

週に何度もアップデートされる @aws-sdk/client-s3 を対象に、1週間程度経過した 3.1090.0package.jsonに記述し、Dependabotを実行すると、どのバージョンへ更新されるかを検証します。

{
  "name": "dependabot-cooldown-aws-sdk-sample",
  "version": "1.0.0",
  "private": true,
  "dependencies": {
    "@aws-sdk/client-s3": "3.1090.0"
  }
}

同じpackage.jsonを使い、Dependabotの設定(.github/dependabot.yml)のcooldown設定だけを変えて比較します。

ケース cooldown設定 期待する更新先
ケース1 cooldownセクションを省略 公開から3日以上経過したバージョンのうち最新
ケース2 default-days: 0 実行時点で公開済みの最新バージョン

直近のリリース状況

@aws-sdk/client-s3 の直近のリリース状況は以下のとおりです。

$ npm view @aws-sdk/client-s3 time --json | tail -n 6
...
  "3.1090.0": "2026-07-17T18:52:52.080Z",
  "3.1091.0": "2026-07-20T18:48:14.180Z",
  "3.1092.0": "2026-07-21T18:48:40.603Z",
  "3.1093.0": "2026-07-22T18:47:09.729Z",
  "3.1094.0": "2026-07-23T18:48:25.707Z"
}

ケース1: cooldownを省略する

今回のデフォルト動作を確認するケースです。dependabot.ymlにはcooldownセクションを記述しません。

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"

2026年7月24日夜に実行したところ、Dependabotは公開から3日以上経過したバージョンのうち、最新のもの、つまり、3.1090.0から3.1091.0へ更新するPRが作成されました。

$ gh pr diff 1 --repo quiver/dependabot-cooldown | grep '@aws-sdk/client-s3'
-    "@aws-sdk/client-s3": "3.1090.0"
+    "@aws-sdk/client-s3": "3.1091.0"

cooldown-case1-default-3days

ケース2: default-days: 0を指定する

比較のため、cooldownを無効にするケースです。

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    cooldown:
      default-days: 0

期待する結果は、公開からの経過日数に関係なく、実行時点で公開済みの最新バージョンがPRされることです。

設定変更後にDependabotを実行すると、3.1090.0から検証時点の最新版3.1094.0へ更新するPRが作成されました。

$ gh pr diff 2 --repo quiver/dependabot-cooldown | grep '@aws-sdk/client-s3'
-    "@aws-sdk/client-s3": "3.1090.0"
+    "@aws-sdk/client-s3": "3.1094.0"

cooldown-case2-0days

まとめ

ソフトウェアサプライチェーン対策に対する防御の一つとして、cooldown機能が広く採用され、Dependabotのようなサーバー側、npmuvのようなツール単位、Takumi Guardのようなプロキシなど、様々なアプローチがあります。

2026年7月のDependabotの変更により、セキュリティアップデートは即時に対応される一方で、バージョンアップデートはcooldownが0日から3日に変更され、デフォルトパラメーターのまま、公開後に短時間でテイクダウンされるような攻撃を軽減しやすくなりました。

GitHub公式ブログの「Defense in depth」にあるように、cooldown以外にも以下のような対策を検討し、多層で防御してください。

  • ロックファイルによる依存関係の固定
  • 可能な場合はCIでinstall scriptを無効化
  • ビルドパイプラインで使うトークンの権限を限定
  • 更新PRをマージ前にレビュー

参考リンク

この記事をシェアする

関連記事