Dependabot の PR を Claude Code Action のマルチエージェントにレビューさせる
この記事は GENDA Advent Calendar 2025 - シリーズ 1 - 8日目の記事です。
TL;DR
- anthropics/claude-code-action のデフォルトの claude-code-review.yml による PR レビューは Dependabot の PR に対しては機能しない
- GitHub App によるコメント投稿を介して自動でレビューを開始させるようにした
- 複数の観点をサブエージェントにレビューさせるスラッシュコマンドを作成した
はじめに
私が開発するプロダクトでは、セキュリティやパフォーマンス維持のために Dependabot を使っています。
依存関係の更新に Dependabot などの自動化ツールはとても役に立ちますが、日々送られてくる大量の PR を一つ一つ確認し、Changelog を読み、影響範囲を調査するのは非常に骨の折れる作業です。
Anthropic 社が提供する claude-code-action は、AI によるコードレビューを自動化する強力なツールですが、デフォルトの設定ではDependabot が作成した PR に対してはレビューが実行されません。これは GitHub Actions の仕様上、GITHUB_TOKEN の権限やトリガーの無限ループ防止が関係しています。
本記事では、この制約を GitHub App を活用して回避し、さらに3つの専門エージェントを組み合わせることで、レビュー負荷を軽減した事例を紹介します。
アーキテクチャの全体像
今回構築したシステムの全体像は以下のとおりです。
Dependabot の PR を検知して直接 Claude を起動するのではなく、一度 GitHub App 経由でコメントを投稿し、そのコメントをトリガーにして Claude Code Action を起動させるようになっています。
実装ステップ
1. GitHub App 作成
人間の代わりにコメント投稿を行うための GitHub App を下記のドキュメントに沿って作成します。
コメント投稿の目的だけでなので、 Permissions は最小限に Pull Requests (Access: Read & write) だけで構いません。

GitHub App Permissions 設定は最小限に
作成した GitHub App は Dependabot を動作させるリポジトリにインストールし、GitHub App の App ID, Private Key もリポジトリに登録しておきます。
- App ID:
GH_APP_IDとして Repository variables に登録します - Private Key:
GH_APP_PRIVATE_KEYとして Dependabot secrets に登録します
2. GitHub App によるコメント投稿ワークフロー
Dependabot の PR 作成時にレビューのワークフローをトリガーするために、.github/workflows/dependabot-review-comment.yml を作成しました。
# Dependabot が作成した PR に対してレビュー依頼コメントを投稿するワークフロー
name: Dependabot Review Comment
on:
pull_request:
types: [opened, ready_for_review, reopened]
jobs:
post-review-comment:
if: github.actor == 'dependabot[bot]' # Dependabotのみ対象
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
# 1. GitHub App トークンの生成
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
with:
# 前のステップで作成した GitHub App の App ID
app-id: ${{ vars.GH_APP_ID }}
# 前のステップで作成した GitHub App の Private Key
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
# 2. コメントの投稿
- name: Post review request comment
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
gh pr comment ${{ github.event.pull_request.number }} \
--repo ${{ github.repository }} \
--body "@claude /review-dependabot-pr"
ここで重要なのが actions/create-github-app-token です。Dependabot を含む Bot による pull_request イベントのワークフローでは secrets.GITHUB_TOKEN が参照できず、コメントを投稿できません。GitHub App トークンを生成し、GitHub App であればコメント投稿が可能になり、そのコメント投稿をきっかけに Claude Code Action を確実に起動させています。

GitHub App によるコメント投稿
3. Claude Code ワークフロー
GitHub App が投稿した @claude /review-dependabot コメントをフックするのは、Claude Code Action を最初にインストールしたときに生成される claude.yml です。
デフォルトの anthropics/claude-code-action は Bot が投稿したコメントではフックされないため、特定の Bot を許可するように allowed_bots: オプションを追加します。
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@6337623ebba10cf8c8214b507993f8062fd4ccfb # v1.0.22
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# コメントを投稿する Bot 名
# 任意の Bot を許可するときは "*"
allowed_bots: <ステップ1で作成したGitHub Appの名前>
additional_permissions: |
actions: read
4. 3つの専門エージェントによる分業
トリガーされた Claude Code Action は、スラッシュコマンド /review-dependabot-pr を実行します。
このコマンドは単一のプロンプトで処理するのではなく、役割の異なる3つのサブエージェントを並列に実行させ、その結果を統合するオーケストレーターとして機能します。
review-dependabot-pr.md の要約
---
allowed-tools: Bash(gh pr view:*),Bash(gh pr diff:*),WebFetch,WebSearch
description: Dependabot PRをバージョン差分・影響範囲・セキュリティの3観点からレビュー
---
# Dependabot PR レビュー
## レビューの流れ
### ステップ1: CLAUDE.md の読み込み
プロジェクトルールと設計方針を確認し、全サブエージェントに共有。
### ステップ2: PR情報の取得
`gh pr view --json number,title,body,author` で Dependabot PR であることを確認。
### ステップ3: 3つのサブエージェントによる並列レビュー
1. **dependabot-version-analyzer**: CHANGELOG/リリースノート調査、Breaking Changes特定
2. **dependabot-security-analyzer**: CVE/脆弱性の深刻度評価、緊急度判定
3. **dependabot-impact-analyzer**: コードベースへの影響分析、修正箇所特定
### ステップ4: 結果統合とコメント投稿
## 最終判断の4パターン
| 判断 | 条件 | アクション |
|------|------|------------|
| 🔒 緊急マージ推奨 | Critical/High セキュリティ修正 | 即座にマージ、24時間以内デプロイ |
| ✅ 即座にマージ可能 | Breaking Changes なし/影響なし | 承認してマージ |
| ⚠️ 修正後にマージ | Breaking Changes が影響あり | コード修正後にマージ |
| ⚠️ マージ可能だが要対応 | 非推奨API使用(動作はする) | マージ後に別PRで対応 |
## 注意事項
- **インラインコメント**: 依存関係ファイルのみの変更なので通常は不要
- **エラー時**: changelog未発見、影響判断困難な場合は人間のレビューを促す
主な省略箇所:
- 詳細なコメントテンプレート(60行以上あったMarkdown例)
- 各ケースの詳細な説明文
- レビューのポイント4項目の詳細説明
4-1. dependabot-version-analyzer
ライブラリの差分から「何が変わったのか?」を調査するエージェントです。
PR 本文に記載された情報だけでなく、Web 検索や GitHub API を駆使して CHANGELOG やリリースノートを探しに行きます。
また、"Breaking Change", "Migration", "Deprecation" といったキーワードを重点的に探し、メジャーバージョンアップ時の注意点を洗い出します。

dependabot-version-analyzer によるバージョン差分情報
dependabot-version-analyzer.md の要約
---
name: dependabot-version-analyzer
description: Dependabot PR のバージョン差分を調査し、CHANGELOG、リリースノート、Breaking Changes を分析する
tools: Glob, Grep, Read, WebFetch, TodoWrite, WebSearch, BashOutput, KillBash
---
# Dependabot バージョン差分アナライザー
依存関係更新におけるバージョン差分の調査を専門とするエージェントです。
## 役割
Dependabot が作成した PR のバージョン変更内容を詳細に調査し、以下の情報を収集します:
1. 更新対象のライブラリ名とバージョン範囲
2. CHANGELOG とリリースノートの内容
3. Breaking Changes の有無と詳細
4. 新機能や改善点、セキュリティ修正
## 調査手順
1. **PR 情報取得**: `gh pr view` でライブラリ名とバージョンを抽出
2. **リリース情報収集**: GitHub Releases、Web 検索、公式ドキュメントから情報を取得
3. **Breaking Changes 特定**: `BREAKING CHANGE`、`Migration Guide`、Major version bump などをキーワードに調査
4. **セキュリティ確認**: `CVE`、`Vulnerability`、`Security` などのキーワードで確認
## アウトプット形式
調査結果は以下の構造でまとめます:
- **ライブラリ情報**: 名前、変更前後のバージョン、変更タイプ
- **リリースノート・CHANGELOG**: 要約と参考リンク
- **主な変更内容**: 新機能、改善点、Bug 修正
- **⚠️ Breaking Changes**: 変更内容、影響範囲、移行ガイド
- **🔒 セキュリティ修正**: CVE 番号、深刻度、修正内容
4-2. dependabot-security-analyzer
セキュリティ観点で「急いでマージすべきか?」を判断するエージェントです。
- 脆弱性評価: CVE 番号や GitHub Security Advisories を確認し、CVSS スコア (深刻度) を評価します。
- 緊急度の判定: 「Critical/High なら24時間以内にマージ推奨」「Low なら定期更新でOK」といった具体的なアクションプランを提示します。

dependabot-security-analyzer によるセキュリティチェック
dependabot-security-analyzer.md の要約
---
name: dependabot-security-analyzer
description: セキュリティパッチや脆弱性修正を評価し、緊急度を判定する
tools: Glob, Grep, Read, WebFetch, TodoWrite, WebSearch, BashOutput, KillBash
---
# Dependabot セキュリティアナライザー
依存関係更新におけるセキュリティ影響を専門とするエージェントです。
## 役割
バージョン更新に含まれるセキュリティパッチや脆弱性修正を評価し、以下を判定します:
1. セキュリティ修正の有無
2. 脆弱性の深刻度 (CVSS スコア)
3. このプロジェクトへの影響
4. マージの緊急度
## 分析手順
1. **セキュリティアドバイザリの確認**: GitHub Security Advisories、CVE データベース、公式セキュリティアドバイザリを検索
2. **脆弱性の詳細調査**: CVE 情報、CVSS スコア、脆弱性タイプ、攻撃条件、影響範囲を確認
3. **プロジェクトへの影響評価**: 脆弱性の該当性と影響レベルを判定
4. **緊急度の評価**: CVSS スコア、該当性、公開エクスプロイト、攻撃容易性から総合判断
## 影響レベルの判定基準
- **Critical** (CVSS 9.0-10.0): 即座にマージ・デプロイ
- **High** (CVSS 7.0-8.9): 24時間以内にマージ
- **Medium** (CVSS 4.0-6.9): 1週間以内にマージ
- **Low** (CVSS 0.1-3.9): 通常のリリースサイクルで対応
## アウトプット形式
- **セキュリティ修正あり**: 脆弱性の詳細、プロジェクトへの影響、推奨アクション (緊急度に応じた具体的な対応)
- **セキュリティ修正なし**: 確認した内容と通常のレビュープロセス推奨
4-3. dependabot-impact-analyzer
アップデートするにあたって「自分のコードに影響があるか?」 を調査するエージェントです。
dependabot-version-analyzer が「API foo() が削除されました」と報告しても、プロダクトのコードで foo() を使っていなければ問題ありません。Impact Analyzer は gh search code を使用して、Breaking Changes が実際のコードベースで使用されているかを検証します。

dependabot-impact-analyzer によって Breaking Changes はプロジェクトに影響ないことがわかった
dependabot-impact-analyzer.md の要約
---
name: dependabot-impact-analyzer
description: Breaking Changes がアプリケーションコードに与える影響を分析し、必要な修正箇所を特定する
tools: Glob, Grep, Read, WebFetch, TodoWrite, WebSearch, BashOutput, KillBash
---
# Dependabot 影響範囲アナライザー
依存関係更新における影響範囲の評価を専門とするエージェントです。
## 役割
バージョン差分アナライザーが特定した Breaking Changes や API 変更が、プロジェクトのコードベースにどのような影響を与えるかを分析します。
## 分析手順
1. **更新内容の理解**: Breaking Changes、削除された API、変更されたインターフェース、非推奨化された機能を確認
2. **コードベースの影響調査**: GitHub Code Search API でライブラリの使用箇所と変更された API の使用箇所を検索
3. **影響範囲のカテゴリ分類**: 直接的な影響、間接的な影響、非推奨化に分類
4. **修正の必要性評価**: 必須修正、推奨修正、修正不要に分類
5. **マイグレーション作業の評価**: 小規模 (1-2時間)、中規模 (半日-1日)、大規模 (数日) で見積もり
## アウトプット形式
調査結果は以下の構造でまとめます:
- **影響の有無**: Breaking Changes がプロジェクトに影響するか明確に記載
- **📍 影響箇所の特定**: 直接的な影響、間接的な影響、非推奨 API 使用箇所
- **🛠️ マイグレーション作業の見積もり**: 作業規模と推定工数
- **✅ マージ判断**: 即座にマージ可能 / 修正後にマージ / マージ可能だが要対応
## GitHub Actions 環境での制約
- ✅ 利用可能: GitHub Code Search API、PR 差分分析
- ❌ 利用不可: ローカルファイルシステムへの直接アクセス、型レベルの依存関係追跡
これらの分析により、以下の3つのケースを自動で切り分けられるようになりました。
- ✅ 影響なし: Breaking Change はあるが、自社コードでは使っていない → 即マージOK
- ⚠️ 修正が必要: 削除された API をガッツリ使っている → 修正必須
- ℹ️ 非推奨: まだ動くが、将来のために修正推奨 → Issue化して後で対応
採用しなかった方法
pull_request_target
コメント投稿をするのではなく、直接 Dependabot PR をレビューするワークフローを pull_request_target イベントで発火させて GITHUB_TOKEN を参照する方法。
それでも Claude Code Action 用の secrets.ANTHROPIC_API_KEY が参照できません。
Dependabot Secrets に ANTHROPIC_API_KEY を保存すれば参照できそうですが、Dependabot Secrets を ANTHROPIC_API_KEY に保存すことに抵抗があるため採用しませんでした。
GitHub PAT (Personal Access Token)
GitHub にコメントを投稿する方法として PAT を利用する方法が真っ先に思い浮かびました。
しかし、PAT は個人に紐づくため、人事異動や退職、PAT の有効期限によって Token のローテーションが必要になってしまいます。
持続可能な運用を見据えて GitHub App の利用を選択しました。
導入効果
この仕組みを導入したことで、Dependabot のレビュー体験は劇的に改善しました。
- トリアージの自動化: 「影響なし」と判定された PR は、人間が詳細を確認することなく自信を持ってマージボタンを押せるようになりました。
- 修正箇所のピンポイント指摘: 影響がある場合も、「どのファイルの何行目を直せばいいか」がレビューコメントに含まれているため、修正作業がスムーズになりました。
- セキュリティ対応の迅速化: 緊急性の高いパッチが明確に可視化されるため、対応漏れのリスクが減りました。
まとめ
Claude Code Action は単なるチャットボットではなく、GitHub CLI などのツールを持たせることで「自律的に調査するエージェント」として振る舞うことができます。
特に Dependabot のような定型的ながら調査コストが高いタスクにおいて、専門エージェントで分業というパターンは非常に有効です。
Discussion