GitHub Dependabot の仕様、機能をおさらいする 2025
ソフトウェア開発においてパッケージやライブラリ、コンテナイメージのリリース管理、脆弱性確認は運用上で負担となります。今回はコードで利用されているパッケージやライブラリの更新をチェックしてくれるGitHub のDependabot について、改めてどのような機能があるか、どのような使い方ができるかを説明します。

実施環境
GitHub ライセンス | GitHub Free, Pro & Team |
---|
前提条件
- 本記事のDependabot の設定を試したい場合、GitHub アカウントが必要となります
- 本記事は2025年6月22日現在の内容です。今後のアップデートで仕様の変更となる可能性があります
GitHub Dependabot とは
GitHub Dependabot (以下Dependabot) はコードに含まれる依存関係のセキュリティアップデート、バージョンアップの通知、Pull Request の自動作成を行う機能です。Dependabot はGitHub Advisory Database に掲載されている脆弱性を参照し脆弱性検知を行います。Dependabot は以下3つの役割で構成されています。
機能 | 概要 |
---|---|
Dependabot alerts | Dependabot で検知された脆弱性をNotification で設定されているメールアドレスに通知する。サマリーの通知はNotification で設定された期間となる。 |
Dependabot security updates | Dependabot でセキュリティアップデートが検知されたとき、パッチ適用のPull Request を自動作成する。パッケージマネージャーやマニフェストごとに1つのPull Request としてまとめることも可能。 |
Dependabot version updates | Dependabot で新しいバージョンが検知されたとき、Pull Request を自動作成する。リポジトリへのdependabot.yml が必須。 |
これらの機能は個別に設定可能であり、alerts のみ設定する、alerts とsecurity updates のみ設定するのように組み合わせることができます。
Dependabot ではMaven やNuGet、Bundler、npm、pip のようなパッケージからDocker コンテナ、Helm チャートと様々なツールをサポートしています。Dependabot でサポートしているツールを確認したい場合は以下リンクを参照してください。
Dependabot でサポートされているエコシステムとリポジトリ
Dependabot alerts を有効化すると、リポジトリの「Security > Dependabot」から検知されたアラートを確認できます。

Dependabot で検知した脆弱性には以下のような情報が記載されます。
- 関連パッケージ (ライブラリ) 名
- 影響を受けるバージョン
- 修正プログラムが適用されたバージョン
- 脆弱性の簡単な概要
- 重要度、CVSS
Dependabot は全てのGitHub プランにおいて無料で利用できます。また、有償のGitHub Code Security を契約することで、Dependabot 用のカスタム自動トリアージルール設定機能も利用できます。
Dependabot の有効化
Dependabot はリポジトリ作成時に無効化のため、Dependabot の検出を利用するには機能の有効化が必要です。リポジトリの「Settings > Security > Advanced Security」より Enable を選択するとDependabot を有効化できます。一度有効化したDependabot を無効化する場合は Disable を選択すると無効化できます。

Dependabot alerts、security updates、version updates 以外にGrouped security updates とDependabot on Actions Runner の項目があります。Grouped security updates はDependabot で検知したセキュリティアップデートを1つのPull Request でまとめる設定です。マイナーアップデートや軽微なアップデートに対してPull Request をまとめたい場合はこの設定を有効化します。Dependabot on Actions Runner はDependabot をGitHub Actions のversion updates をActions のRunner で実行する機能です。こちらの機能はGitHub のドキュメントにて以下のような記述があり、今後は常にGitHub Actions で実行される記述があります。
GitHub の今後のリリースでは、GitHub Actions を使用して常に Dependabot が実行されます。この設定を有効または無効にするオプションはなくなります。
Dependabot alerts は有効後即座に反映され、security updates はアラート検知後にPull Request を作成します。version updates はdependabot.yml の設定に応じた期間で実行されます。ただし、Dependabot alerts の通知タイミングは有効にした後で検知された脆弱性となるため、既存の脆弱性に関してはDependabot に検知されますが通知はされません。
dependabot.yml の設定
基本設定
Dependabot で検知対象のパッケージエコシステムや実行タイミングを詳細に設定したい場合、dependabot.yml ファイルを作成し設定内容を記述します。dependabot.yml の配置パスは .github/dependabot.yml となり、拡張子は yml、yaml どちらでも検知されます。以下内容はGitHub Actions のワークフローファイルとDocker コンテナのアップデートを週次で、npm パッケージを毎日実行します。
---
version: 2
updates:
# GitHub Actions updates
- package-ecosystem: "github-actions"
directory: "/.github/workflows"
schedule:
interval: "weekly"
# Docker updates
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
# npm updates
- package-ecosystem: npm
directory: "/"
schedule:
interval: "daily"
設定例は必須項目のみ記述したファイルとなります。各項目の意味は以下の通りです。
version | Dependabot 構文のバージョン。現在は 2 で固定。最上位レベル。 |
---|---|
updates | 更新対象のパッケージエコシステムを設定する。最上位レベル。 |
package-ecosystem | 更新対象のパッケージを設定する。以下リンクで指定されたパッケージエコシステムを指定可能。 |
directory | 検知対象のディレクトリを指定する。指定したディレクトリ配下のファイルを検知対象とする。 |
schedule.interval | 検知タイミングを指定する。daily、weekly、monthly、quarterly、semiannually、yearly を設定可能。cron 式を設定する場合はcron を指定する。 |
Dependabot はプライベートレジストリの依存関係もチェックできます。プライベートレジストリのチェックを行う場合、registries でチェックしたいartifactory を設定します。以下は公式ドキュメントの例ですが、ローカル上のJFrog Artifactory をチェック対象とします。
version: 2
registries:
gradle-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-gradle-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
updates:
- package-ecosystem: "gradle"
directory: "/"
registries: "*"
schedule:
interval: "monthly"
今回説明した項目以外にもコミットメッセージやPull Request 指定、特定の条件を除外するなどの様々な設定があります。詳細は以下のリファレンスを参照してください。
dependabot.yml の設定はリポジトリ内で必要な内容に絞り、グループ化を行う、Pull Request の数を制限する、など運用に負担のないよう設定しましょう。
cron 式を使った詳細な設定
2025年4月22日にschedule.interval でcron 式がサポートされました。特定の曜日や時間帯でDependabot を実行させたい場合に利用できます。
Dependabot now lets you schedule update frequencies with cron expressions
cron 式ではschedule.interval をcron に指定し、cronjob でcron 式を設定します。cron 式設定例では毎日午前0時にnpm パッケージのみDependabot を実行します。デフォルトではタイムゾーンがUTC (協定世界時) のため、タイムゾーンを設定する場合は timezon を明示的に指定します。
---
version: 2
updates:
# npm updates
- package-ecosystem: npm
directory: "/"
schedule:
interval: "cron"
cronjob: "0 0 * * *"
timezone: "Asia/Tokyo"
また、dependabot.yml の設定内容に不備がある場合、Dependabot が正常に実行されないため注意が必要です。
REST API を使ったDependabot の操作
Dependabot はREST API を使った操作ができます。REST API で実行可能な操作は以下となります。
- 企業、組織、リポジトリのDependabot alerts 操作 表示、Dependabot alerts の取得、更新
- Dependabot のリポジトリ操作
- Dependabot のシークレット管理
例えば、GitHub API を使いリポジトリのDependabot alerts を取得するには以下コマンドを実行します。今回はDependabot 用の以下demo リポジトリを使って実施します。
https://github.com/dependabot/demo
実行例ではdependabotdemo リポジトリのDependabot alerts を取得します。
# リポジトリのDependabot alertsを取得する
# 実行前にgh auth loginコマンドでログインしている
gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/<組織名 or アカウント名>/dependabotdemo/dependabot/alerts
コマンド実行後、以下のような結果が返されます。
[
{
"number": 5,
"state": "open",
"dependency": {
"package": {
"ecosystem": "npm",
"name": "lodash"
},
"manifest_path": "javascript/yarn.lock",
"scope": "runtime",
"relationship": "direct"
},
"security_advisory": {
"ghsa_id": "GHSA-35jh-r3h4-6jhm",
"cve_id": "CVE-2021-23337",
"summary": "Command Injection in lodash",
"description": "`lodash` versions prior to 4.17.21 are vulnerable to Command Injection via the template function.",
"severity": "high",
"identifiers": [
{
"value": "GHSA-35jh-r3h4-6jhm",
"type": "GHSA"
},
{
"value": "CVE-2021-23337",
"type": "CVE"
}
],
"references": [
{
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-23337"
},
{
"url": "https://github.com/lodash/lodash/commit/3469357cff396a26c363f8c1b5a91dde28ba4b1c"
},
<省略>
],
"published_at": "2021-05-06T16:05:51Z",
"updated_at": "2024-04-17T18:39:19Z",
"withdrawn_at": null,
"vulnerabilities": [
{
"package": {
"ecosystem": "npm",
"name": "lodash"
},
"severity": "high",
"vulnerable_version_range": "< 4.17.21",
"first_patched_version": {
"identifier": "4.17.21"
}
},
{
"package": {
"ecosystem": "npm",
"name": "lodash-es"
},
"severity": "high",
"vulnerable_version_range": "< 4.17.21",
"first_patched_version": {
"identifier": "4.17.21"
}
},
{
"package": {
"ecosystem": "npm",
"name": "lodash.template"
},
"severity": "high",
"vulnerable_version_range": "<= 4.5.0",
"first_patched_version": null
},
{
"package": {
"ecosystem": "npm",
"name": "lodash-template"
},
"severity": "high",
"vulnerable_version_range": "<= 1.0.0",
"first_patched_version": null
}
],
"cvss_severities": {
"cvss_v3": {
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
"score": 7.2
},
"cvss_v4": {
"vector_string": null,
"score": 0.0
}
},
"epss": {
"percentage": 0.00859,
"percentile": 0.7394
},
"cvss": {
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
"score": 7.2
},
"cwes": [
{
"cwe_id": "CWE-77",
"name": "Improper Neutralization of Special Elements used in a Command ('Command Injection')"
},
{
"cwe_id": "CWE-94",
"name": "Improper Control of Generation of Code ('Code Injection')"
}
]
},
"security_vulnerability": {
"package": {
"ecosystem": "npm",
"name": "lodash"
},
"severity": "high",
"vulnerable_version_range": "< 4.17.21",
"first_patched_version": {
"identifier": "4.17.21"
}
},
"url": "https://api.github.com/repos/<組織名 or アカウント名>/dependabotdemo/dependabot/alerts/5",
"html_url": "https://github.com/<組織名 or アカウント名>/dependabotdemo/security/dependabot/5",
"created_at": "2025-06-15T09:57:31Z",
"updated_at": "2025-06-15T09:57:31Z",
"dismissed_at": null,
"dismissed_by": null,
"dismissed_reason": null,
"dismissed_comment": null,
"fixed_at": null,
"auto_dismissed_at": null
},
<省略>
]
また、2025年4月29日よりDependabot API でセキュリティパッチの提供されている脆弱性をフィルターできる has:patch フィルターが利用可能です。
Dependabot API now contains has:patch in general availability
GitHub API で has:patch のフィルターを設定する場合、以下のようなコマンドとなります。
# セキュリティパッチが提供されているDependabotアラートを取得する
gh api \
--method GET /repos/<組織名 or アカウント名>/dependabotdemo/dependabot/alerts \
-F per_page=10 -F has=patch \
--header 'Accept: application/vnd.github+json' \
-H "X-GitHub-Api-Version: 2022-11-28"
Dependabot のREST API について他の詳細なパラメーターを確認する場合は以下リンクを参照してください。
DependabotアラートのREST APIエンドポイント
Pull Request トリガーに合わせたGitHub Actions ワークフローの実行
Dependabot のsecurity updates やversion updates ではPull Request を作成するため、Pull Request 作成に合わせてCI/CD パイプラインを実行できます。今回はGitHub Actions のワークフローを使い、Dependabot のPull Request 作成時にワークフローを実行させます。
name: Dependencies PR Check
on:
pull_request:
paths:
- 'javascript/package.json'
- 'javascript/package-lock.json'
jobs:
dependencies-check:
runs-on: ubuntu-latest
steps:
- name: Test Step1
run: echo "This is a test step1."
steps:
- name: Test Step2
run: echo "This is a test step2."
Dependabot の作成したPull Request には dependencies のラベルが付与されます。もしDependabot の作成したPull Request に対してのみワークフローを実行したい場合は、ジョブやステップにラベル名が dependencies かどうか、または作成者が dependabot[bot] であるか判定することで分岐できます。
name: Dependencies PR Check
on:
pull_request:
paths:
- 'javascript/package.json'
- 'javascript/package-lock.json'
jobs:
dependencies-check:
runs-on: ubuntu-latest
# Dependabotが作成したPull Requestの場合のみ処理を行う
if: contains(github.event.pull_request.labels.*.name, 'dependencies')
# またはPull Requestの作成者がdependabot[bot]の場合に処理を行う
# if: github.actor == 'dependabot[bot]'
steps:
- name: Test Step
run: echo "This is a test step to verify the workflow."
Pull Request トリガーでワークフローを実行できるため、Dependabot のPull Request 作成時に検証環境でビルドやテスト、デプロイを自動化できます。ワークフローを設定することで、アップデート適用後のシステム動作確認を行った上でアップデートを適用できます。
Dependabot の通知はメール通知となるため、Dependabot のPull Request 作成をTeams やSlack のようなチャットツールに通知したい場合、Webhook を利用することで通知ができます。以下はTeams のIncoming Webhook を使い、Dependabot でPull Request が作成された時にTeams のチャネルに通知するワークフローです。
name: Notify Teams on Dependabot PR
on:
pull_request:
types: [opened]
branches: [main]
jobs:
notify-teams:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: Send notification to Teams
env:
# WebhookのURLはセキュリティの観点からsecretsで参照すること
TEAMS_WEBHOOK_URL: "<WebhookのURL>"
run: |
pr_title="${{ github.event.pull_request.title }}"
pr_url="${{ github.event.pull_request.html_url }}"
payload="{\"text\": \"Dependabot PR created: <a href='${pr_url}'>${pr_title}</a>\"}"
curl -H "Content-Type: application/json" -d "$payload" "$TEAMS_WEBHOOK_URL"
ワークフローが実行されるとTeams に通知されます。

Azure 仮想ネットワークを使ったDependabot updates の実行
Runner Group を使ったGitHub Enterprise Cloud の機能となりますが、Azure 仮想ネットワーク内でGitHub ホステッドランナーを使ったDependabot の更新パッケージチェックを実施できます。セキュリティ要件の厳しい環境でDependabot の実行を行いたい場合にはこのような機能もあります。
Azure プライベート ネットワークを使って github ホステッド アクション ランナー上で実行するように Dependabot を設定する
Actions Runner Controller を使ったDependabot の実行
2025年5月27日にGitHub Actions Runner Controller のRunner Pod を使ったDependabot がサポートされました。セキュリティ要件が厳しく、大規模なSelf-hosted ランナー基盤を求められる環境でDependabot を実行したいケースに適しています。
Actions Runner Controller を使ってセルフホステッド アクション ランナー上で動作するように Dependabot を設定する
Dependency graph
GitHub ではリポジトリ内のマニフェストファイルやロックファイル、依存関係送信API によって、依存するパッケージやリポジトリを表示するDependency graph があります。GUI 上の「Insights > Dependency graph」を選択すると、リポジトリで必要なパッケージが表示されます。

この依存関係一覧はSBOM としてエクスポートできます。Marketplace にはSBOM 活用に関するカスタムアクションが提供されているため、カスタムアクションを利用したSBOM 管理もできます。
Dependabot タブを選択すると、dependabot.yml で設定したパッケージエコシステムが表示されます。こちらからDependabot の実行履歴や関連するPull Request、アップデート確認の手動実行ができます。

まとめ
- Dependabot はリポジトリ内の依存関係を確認し、脆弱性のあるバージョンについて通知、修正したPull Request の作成を行う機能
- Dependabot の詳細な設定を行う場合は .github/dependabot.yml ファイルを作成し、検知したい設定に絞る、グループ化するなどして運用の負担にならないようにする
- GitHub Actions のようなツールと組み合わせることで、Dependabot のPull Request 作成に応じて様々な処理を組み込むことができる
- GitHub のInsights よりパッケージの依存関係を確認したり、Dependabot の実行履歴を確認できる