GitHub Actions で Claude Code を動かす:claude-code-action の導入と使い方
公式の claude-code-action を使って、GitHub の Issue や PR で @claude にメンションするだけでコード修正やレビューを行う仕組みを作る手順を解説します。API キーの設定、ワークフローの書き方、権限の絞り方、自動レビューの構成を紹介します。
Issue に「@claude この不具合を直して」とコメントすると、Claude Code が修正を実装して PR を作る。PR が開かれると自動でレビューコメントが付く。こうした仕組みは、公式の claude-code-action を使うと 1 つのワークフローファイルで実現できます。
この記事では、セットアップから、メンション応答と自動レビューの 2 つの構成、権限とコストを絞る方法までを扱います。
KEY POINT
この記事で分かること
/install-github-appによるセットアップと API キーの登録@claudeメンションに応答するワークフロー- PR 作成時に自動レビューするワークフローと、権限・コストの制御
セットアップの流れ
- ローカルの Claude Code で
/install-github-appを実行します。ブラウザが開き、GitHub App のインストールとリポジトリの選択、ワークフローファイルの追加が案内されます。 - リポジトリの Settings → Secrets and variables → Actions で、
ANTHROPIC_API_KEYに Anthropic Console の API キーを登録します。 - 追加されたワークフローファイル(
.github/workflows/claude.ymlなど)を確認し、コミットします。
手動で構成する場合は、GitHub App のインストールと Secrets の登録を自分で行い、次のワークフローを追加します。
用語解説
GitHub App と GITHUB_TOKEN: claude-code-action は、Claude のコメントや PR 作成に GitHub App の認証を使います。App を入れずに GITHUB_TOKEN だけで動かすこともできますが、その場合 Claude のコミットが別のワークフローをトリガーしないなどの制約があります。
構成 1:@claude メンションに応答する
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
jobs:
claude:
if: |
contains(github.event.comment.body, '@claude') ||
contains(github.event.issue.body, '@claude')
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Issue や PR のコメントに @claude を含めると、その文脈(Issue 本文、PR 差分、コメントのスレッド)を読んで応答します。修正を伴う場合はブランチを切ってコミットし、PR を作成します。
指示の例:
- Issue で「@claude 再現手順を確認して修正案を PR にして」
- PR のレビューコメントで「@claude この関数のエラーハンドリングを追加して」
- PR で「@claude この変更で影響を受けるテストを追加して」
構成 2:PR 作成時に自動レビューする
メンションなしで、PR が開かれたときに自動でレビューします。prompt で指示を固定します。
name: Claude review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
この PR の差分をレビューしてください。観点は次の 4 つです。
1. バグの可能性 2. セキュリティ 3. テストの有無 4. CLAUDE.md の規約違反
指摘は重大度順に、ファイル名と行番号を添えてコメントしてください。
問題がなければ「問題なし」とだけコメントしてください。
claude_args: "--max-turns 5 --model claude-sonnet-5"
claude_args には CLI と同じオプションを渡せます。レビューは読み取り中心なので、--max-turns を小さくし、モデルを Sonnet 系にすると費用を抑えられます。
権限とコストを絞る
| 目的 | 方法 |
|---|---|
| 外部ユーザーのコメントで実行させない | if: に github.event.comment.author_association が OWNER / MEMBER / COLLABORATOR の条件を追加する |
| 書き込みを最小限にする | レビュー用ワークフローは contents: read にする |
| 使えるツールを限定する | claude_args に --allowedTools を渡す |
| 実行回数の上限 | --max-turns を渡す |
| リポジトリのルールを守らせる | リポジトリの CLAUDE.md は Action でも読み込まれるので、ここに書く |
if: |
contains(github.event.comment.body, '@claude') &&
contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association)
Secrets とフォークからの PR
フォークからの PR では、既定で Secrets が渡されません。そのため外部からの PR には自動レビューが走りません。意図的に有効にする場合は、pull_request_target の危険性(フォークのコードが Secrets 付きで実行される)を理解したうえで構成してください。
CLAUDE.md との関係
Action 内の Claude も、リポジトリの CLAUDE.md と .claude/settings.json を読み込みます。ローカルで使っている規約がそのまま CI でも効くので、レビュー基準や禁止事項はワークフローの prompt ではなく CLAUDE.md に書いておくと、二重管理になりません(CLAUDE.md の書き方)。
公式 Action を使わず、claude -p を直接呼び出す軽量な構成は 非対話モードの使い方 で解説しています。Codex を同じ用途で使う場合の比較は Codex クラウド版で GitHub のタスクを任せる を参照してください。
まとめ
/install-github-appで GitHub App とワークフローを導入し、ANTHROPIC_API_KEYを Secrets に登録する@claudeメンション応答と、PR 自動レビューの 2 構成が基本if:でコメント投稿者を制限し、--max-turnsと Sonnet 系モデルで費用を抑える- レビュー基準や禁止事項はワークフローではなく CLAUDE.md に書く
よくある質問
- claude-code-action は無料で使えますか?
- Action 自体は無料ですが、Anthropic API の利用料(従量課金)と GitHub Actions の実行時間が発生します。パブリックリポジトリなら Actions の実行時間は無料です。
- @claude と書けば誰でも実行できてしまいますか?
- 既定ではリポジトリへの書き込み権限を持つユーザーのコメントに反応します。外部からのコメントで実行されないよう、ワークフローの条件で制限してください。
- Claude が作った変更はどこに反映されますか?
- 新しいブランチにコミットされ、PR が作成されます(または既存の PR ブランチにコミットされます)。直接 main には書き込みません。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。