Claude Codeは、GitHub Actionsから呼び出して、Issueやプルリクエストに応答させられます。
公式のGitHub Action(anthropics/claude-code-action)の設定を、公式ドキュメントから整理しました。
- Claude Code内で /install-github-app を実行すると、導入を案内してくれる
- この記事ではAPIキーとOAuthトークンを扱う。公式にはID連携やクラウドプロバイダーを使う方法もある
- promptを書かないと対話モード、書くと自動化モードになる
- CLIの引数は claude_args でまとめて渡す
GitHub Actionsでの動作の実機での再現は含まず、公式ページの記載(2026年10月23日に再照合)に基づきます。
仕様や数値は変わることがあるので、最新は公式ページで確かめてください。
導入の方法
いちばん簡単なのは、Claude Codeの中で /install-github-app を実行する方法です。
公式によると、github.comのリポジトリが対象で、ghコマンドとログイン、リポジトリの管理者権限が要ります。
対象リポジトリでコマンドを実行して案内に従い、最後にブラウザーで開くワークフロー用のPRを作成してマージします。
手動で入れる場合は、次の3つを行います。
- Claude GitHub Appをリポジトリに入れる
- 認証用のシークレットを追加する
- 公式のexamples/claude.ymlを .github/workflows/ に置く
認証と課金
| シークレット | 入力名 | 課金の扱い |
|---|---|---|
| ANTHROPIC_API_KEY | anthropic_api_key | APIのトークン課金 |
| CLAUDE_CODE_OAUTH_TOKEN | claude_code_oauth_token | Claudeのサブスクリプション枠を使う |
OAuthトークンは、Pro・Max・Team・Enterpriseで使え、claude setup-token で作ります。
公式は、組織で共有するシークレットにはAPIキーを勧めています。
OAuthトークンは、発行した本人のサブスクリプションに結びつくためです。
どちらの場合も、GitHub Actionsの実行時間の分は別に消費します。
公式はGitHub ActionsでサブスクリプションのOAuthトークンを使う方法を案内しています。利用枠・組織の運用方針・契約条件は別途確認してください。
利用条件は、契約している規約で確かめてください。
最小のワークフロー
@claude と書かれたコメントに応答する、公式の最小構成は次の形です。
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}上の例はAPIキー用です。
OAuthトークンを使う場合は、anthropic_api_keyの行をclaude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}へ置き換え、対応するActionsシークレットを登録します。
設定後は書込み権限のある利用者がIssueまたはPRのコメントで@claudeを呼び出し、Actionsの実行ログとコメントへの応答を確認します。
id-token: write は、既定のGitHub App認証に必要です。
actions: read は、CIの結果を読むために要ります。
2つのモード
| モード | 条件 | 動き |
|---|---|---|
| 対話モード | promptを書かない | @claude と書かれたコメントに反応する |
| 自動化モード | promptを書く | イベントが起きたらすぐ実行し、結果は既定でワークフローのログに出る |
反応の合図(trigger_phrase)の既定は @claude です。
Issue・PRイベントでは原則として実行者に書込み権限が必要です。例外を許可するにはallowed_non_write_usersと独自のgithub_tokenを設定します。scheduleなど人が投稿するイベントでない場合、この書込み権限チェックは省かれます。
botからの実行は、allowed_botsに載せない限り拒否されます。
claude_args で引数を渡す
claude_args には、CLIの引数を文字列で書けます。
claude_args: "--max-turns 5 --model claude-sonnet-5 --mcp-config /path/to/config.json"--max-turns:エージェントのターン数を制限する。上限到達時はエラー終了する--model:使うモデルを決める--allowedTools:確認なしで許可するツールを指定する。ツールの存在自体を限定する指定ではない--mcp-config:MCPの設定ファイルを渡す
プレーンテキストのpromptでシェルやGitHub APIを使わせたいときは、必要なツールをclaude_argsの--allowedTools、またはsettings入力のpermissions.allowで許可します。
定期実行
公式にはcronの例があります。この記事のcron例はタイムゾーン未指定なのでUTCの毎日9時、日本時間の18時です。上のコメント用ジョブへscheduleだけを足しても、コメント本文を要求するif条件では動きません。定期実行用のジョブ条件とpromptを用意してください。
on:
schedule:
- cron: "0 9 * * *"- 定期実行は、デフォルトブランチでだけ動く
- 公開リポジトリの定期ワークフローは、60日間活動がないと無効になる。混雑時には遅延・実行省略もあり、時刻厳守は保証されない
費用を抑える方法
公式が挙げているのは、次の方法です。
--max-turnsで反復を制限する- ワークフローにタイムアウトを付ける
- concurrencyで同時実行を制御する
- CLAUDE.mdを簡潔に保つ
つまずきやすい点
Claudeが作ったコミットでCIが動かないときは、github_tokenに GITHUB_TOKEN を渡していないか確かめます。
そのトークンによるコミットでは通常の後続CIが起動しません。GitHub App認証または独自Appトークンを使い、CI側のpush・pull_requestなどのトリガー条件も確認します。
beta版から移るときは、@beta を @v1 にし、mode を消します。
direct_prompt は prompt に、max_turns などは claude_args にまとめます。
2026年10月23日に公式examples/claude.ymlの全文を確認しました。上の最小例より広く、Issueの作成・割当てやPRレビュー提出のイベントも含まれます。本文の最小例はコメント2種類に対象を絞っています。
関連記事:Claude Codeのclaude -pの使い方
よくある質問:Claude CodeをGitHub Actionsで使うとき
GitHub ActionsからClaude Codeを使うには、どう導入しますか?
いちばん簡単なのは、Claude Codeの中で /install-github-app を実行する方法です。
公式によると、github.comのリポジトリが対象で、ghコマンドとログイン、リポジトリの管理者権限が要ります。
対象リポジトリでコマンドを実行して案内に従い、最後にブラウザーで開くワークフロー用のPRを作成してマージします。
手動で入れる場合は、Claude GitHub Appをリポジトリに入れ、認証用のシークレットを追加し、公式のexamples/claude.ymlを .github/workflows/ に置きます。
APIキーとOAuthトークンは、どちらを使えばよいですか?
ANTHROPIC_API_KEY はAPIのトークン課金、CLAUDE_CODE_OAUTH_TOKEN はClaudeのサブスクリプション枠を使います。
OAuthトークンは、Pro・Max・Team・Enterpriseで使え、claude setup-token で作ります。
公式は、組織で共有するシークレットにはAPIキーを勧めています。
OAuthトークンは、発行した本人のサブスクリプションに結びつくためです。
どちらの場合も、GitHub Actionsの実行時間の分は別に消費します。
サブスクリプションをCIで使ってよいのですか?
公式にサブスクリプションのOAuthトークンを使う導入方法があります。無制限に使えるという意味ではなく、利用枠・組織の方針・契約条件に従います。
利用条件は、契約している規約で確かめてください。
対話モードと自動化モードは、何が違いますか?
promptを書かないと対話モードになり、@claude と書かれたコメントに反応します。
promptを書くと自動化モードになり、イベントが起きたらすぐ実行して、結果は既定でワークフローのログに出ます。
反応の合図(trigger_phrase)の既定は @claude で、Issue・PRイベントでは原則として実行者に書込み権限が必要です。例外を許可するにはallowed_non_write_usersと独自のgithub_tokenを設定します。scheduleなど人が投稿するイベントでない場合、この書込み権限チェックは省かれます。
botからの実行は、allowed_botsに載せない限り拒否されます。
claude_args では、何を渡せますか?
CLIの引数を文字列で書けます。
--max-turns(エージェントのターン数の上限)、--model(使うモデル)、--allowedTools(確認なしで許可するツール)、--mcp-config(MCPの設定ファイル)などです。
プレーンテキストのpromptでシェルやGitHub APIを使わせたいときは、必要なツールをclaude_argsの--allowedTools、またはsettings入力のpermissions.allowで許可します。
決まった時間に自動で動かせますか?
公式にはcronの例があります。この記事のcron例はタイムゾーン未指定なのでUTCの毎日9時、日本時間の18時です。上のコメント用ジョブへscheduleだけを足しても、コメント本文を要求するif条件では動きません。定期実行用のジョブ条件とpromptを用意してください。
ただし、定期実行はデフォルトブランチでだけ動き、公開リポジトリは60日間活動がないと無効になります。
費用を抑えるには?
公式が挙げているのは、--max-turns で反復を制限する、ワークフローにタイムアウトを付ける、concurrencyで同時実行を制御する、CLAUDE.mdを簡潔に保つ、の4つです。
Claudeが作ったコミットでCIが動かないときは? beta版からの移行は?
github_token に GITHUB_TOKEN を渡していないか確かめます。
そのトークンによるコミットでは通常の後続CIが起動しません。GitHub App認証または独自Appトークンを使い、CI側のpush・pull_requestなどのトリガー条件も確認します。
beta版から移るときは、@beta を @v1 にし、mode を消します。
direct_prompt は prompt に、max_turns などは claude_args にまとめます。
現行の公式examples/claude.ymlは2026年10月23日に全文を照合しました。実際のActions実行、コメント投稿、認証別利用枠の消費は未検証です。
参照:Claude Code GitHub Actions公式ガイド、GitHubのschedule仕様。今回は本文と公式資料の照合で、画面・実動作の確認はしていません。
