Claude Code GitHub Actionsの使い方|設定・権限・費用
この記事でわかること
- Claude Code GitHub Actionsで何ができるか、似た名前の機能との違い
- /install-github-appと手動での、導入の手順
- ワークフローファイル(claude.yml)の読み方と、権限・パラメーター
- @claudeへの依頼、自動レビュー、定期実行などの使い方の例
- 費用の考え方(GitHubの実行時間とAPIのトークン)と、抑え方
- 誰が動かせるか、安全に使う設定と、動かないときの確認点
目次
- Claude Code GitHub Actionsとは
- できること
- 似た名前の機能との違い
- 対話モードと自動モード
- 設定の手順
- 始める前に確認すること
- クイックセットアップの手順
- 手動セットアップの手順
- 認証情報の選び方
- 組織で導入するとき
- 設定を取り消すとき
- ワークフローファイルの読み方
- on:いつ動くか
- if:条件を絞る
- permissions:何を許可するか
- steps:実際の作業
- with:アクションに渡す設定
- claude_argsで渡せるもの
- 使い方の例
- @claudeで頼む
- プルリクエストを自動でレビューする
- 毎朝のレポートを作る
- Issueにラベルを付ける
- CIの失敗を自動で直させる
- スキルやプラグインを実行する
- 費用の考え方
- 2種類の費用
- GitHub Actionsの実行時間
- Claudeの利用料
- 費用を抑える方法
- クラウド経由で使う場合
- 権限と安全
- 誰が動かせるか
- GitHub Appの権限
- 使えるツールを絞る
- Claudeにできないこと
- 外部からの入力に注意する
- pull_request_targetとworkflow_runの注意
- 認証情報とログの扱い
- 導入前に決めておくこと
- 動かないとき
- @claudeに反応しない
- 認証のエラーが出る
- 「403 Resource not accessible by integration」と出る
- Claudeのコミットで、CIが動かない
- うまくいかない原因を調べるには
- よくある質問
- まとめ
「GitHubのコメントでClaudeを呼び出せると聞いたが、何を設定すればいいのか分からない」「導入したら、いくらかかるのか、勝手にコードを書き換えられないかが心配」と感じて調べている方も多いのではないでしょうか。
Claude Code GitHub Actionsは、GitHubの自動化の仕組み「GitHub Actions」の中でClaude Codeを動かす機能です。IssueやプルリクエストのコメントでClaudeを呼び出して作業を頼んだり、プルリクエストが作られたときに自動でレビューさせたり、毎朝決まった時間にレポートを作らせたりできます。パソコンを開いていなくても、GitHub上の出来事をきっかけにClaudeが動くのが、手元のClaude Codeとの大きな違いです。
この記事では、仕組みと導入の手順、設定ファイルの読み方、使い方の例、費用、権限と安全面、動かないときの確認点を順に解説します。内容は2026年10月時点の公式情報をもとにしています。画面の項目名や仕様は変わることがあるので、導入の前に公式ドキュメントもあわせて確認してください。
Claude Code GitHub Actionsとは

Claude Code GitHub Actionsは、Anthropicが公開している「claude-code-action」という部品(アクション)を、GitHubのワークフローに組み込んで使う機能です。ワークフローとは、「このような出来事があったら、この作業を実行する」という自動化の手順をまとめたファイルのことです。リポジトリの.github/workflows/フォルダに置きます。
Claudeは、GitHubが用意する実行環境(ランナー)の上で動きます。リポジトリのファイルを読み、必要ならコードを直してコミットし、結果をコメントで返します。手元のパソコンでClaude Codeを起動する必要はありません。
できること
公式ドキュメントでは、おもに次の使い方が紹介されています。
| 使い方 | きっかけ | Claudeがすること |
|---|---|---|
| コメントで頼む | IssueやPRのコメントに「@claude」と書く | 質問に答える、機能を実装する、バグを直す |
| Issueから実装する | Issueの本文やタイトルに「@claude」と書く | Issueの内容をもとにコードを書き、変更を提案する |
| PRを自動でレビューする | プルリクエストの作成・更新 | 変更を読み、指摘をコメントする |
| 定期的に作業する | 決まった時刻(スケジュール) | 前日のコミットの要約などのレポートを作る |
| Issueを整理する | Issueの作成 | 内容を読んでラベルを付ける |
最後の2つは、誰かが「@claude」と書かなくても動きます。「何をさせるか」を設定ファイルに書いておくことで、GitHub上の出来事をきっかけに自動で実行されます。
似た名前の機能との違い
ClaudeとGitHubをつなぐ機能は複数あり、名前も似ているため混同しやすいところです。公式ドキュメントでも、この機能とは別のものとして次の3つが挙げられています。
| 機能 | 動く場所 | 設定 | 使える人 |
|---|---|---|---|
| Claude Code GitHub Actions(この記事) | 自社のGitHub Actionsの実行環境 | ワークフローファイルを自分で用意する | APIキーなどの認証情報があれば誰でも |
| Code Review | Anthropicのインフラ | ワークフローは不要。組織の管理画面で設定する | TeamまたはEnterpriseプランの組織 |
手元の/code-review | 自分のClaude Codeのセッション | 不要 | どのプランでも |
| クラウドセッション(Claude Code on the web) | Anthropicのクラウド | GitHubとの接続を設定する | 対象プランの人 |
レビューだけが目的で、TeamまたはEnterpriseプランを使っているなら、ワークフローを書かなくて済むCode Reviewのほうが手軽です。一方で、レビューの観点や実行のタイミングを細かく決めたい場合や、レビュー以外の自動化もしたい場合は、GitHub Actionsが向いています。公式ドキュメントでも、プロンプト・モデル・きっかけを自分で管理したいときに使うものとして位置づけられています。
ClaudeとGitHubの連携の全体像はClaudeとGitHubの連携の記事で、手元のClaude Codeでgitやプルリクエストを扱う方法はClaude Code GitHub連携の記事で解説しています。この記事は、GitHub Actionsの設定と運用に絞って掘り下げます。
対話モードと自動モード
アクションは、ワークフローの書き方によって、動き方を自動で切り替えます。公式ドキュメントでは「対話モード」と「自動モード」の2つが説明されています。
| 対話モード | 自動モード | |
|---|---|---|
| 切り替え条件 | ワークフローにpromptの指定がない | ワークフローにpromptの指定がある |
| 動き出すきっかけ | コメントやIssueに「@claude」(トリガーフレーズ)がある | 設定したGitHubのイベント(PRの作成、スケジュールなど) |
| 結果の出る場所 | きっかけになったIssueやPRのコメント | 初期状態ではワークフローの実行ログ。コメントに投稿させる場合は、プロンプトで指示し、投稿用のツールも許可する |
| 向いている使い方 | 人が頼みたいときに頼む | 毎回同じ作業を、決まったきっかけで実行する |
対話モードの「@claude」は初期設定で、trigger_phraseという項目を変えれば、別の言葉にもできます。旧バージョン(ベータ版)で必要だったmodeという設定は、いまは書かなくても、アクションが判断してくれます。
「GitHub Actions」と「Claude Code GitHub Actions」
GitHub Actionsは、GitHubが提供する自動化の仕組みそのものの名前です。Claude Code GitHub Actionsは、その中でClaude Codeを動かすための、Anthropic製のアクションの総称として使われています。この記事では、後者を指して「アクション」と呼びます。
設定の手順

導入の方法は2通りあります。Claude Codeを手元で使っているなら、コマンド1つで進められるクイックセットアップが手軽です。会社の事情でコマンドが使えない場合や、ファイルの内容を細かく管理したい場合は、手動で設定します。どちらの場合も、対象のリポジトリの管理者(admin)権限が必要です。
始める前に確認すること
| 確認項目 | 内容 |
|---|---|
| リポジトリの権限 | 管理者権限があること。GitHub Appの導入とシークレットの登録に必要 |
| リポジトリの置き場所 | github.comのリポジトリであること。/install-github-appは、GitLabやBitbucketでは使えない |
| 認証情報 | Claude Consoleで発行したAPIキー、または有料プランのサブスクリプションで発行する長期トークンのどちらかを用意する |
| GitHub CLI | クイックセットアップでは、GitHub CLI(gh)をインストールし、gh auth loginでログインしておく |
| Claude Code | クイックセットアップでは、手元でClaude Codeを使える状態にしておく |
GitLabのパイプラインでClaude Codeを動かしたい場合は、別の仕組み(Claude Code GitLab CI/CD)が用意されています。この記事の手順はGitHub専用です。
クイックセットアップの手順
Claude Codeから/install-github-appを実行すると、GitHub Appの導入、認証情報の登録、ワークフローファイルの準備までを案内してくれます。
- リポジトリでClaude Codeを開く対象のリポジトリのフォルダで
claudeを起動します。 - コマンドを実行する入力欄に
/install-github-appと入力し、画面の案内に従います。まずClaude GitHub Appが導入されます。 - 認証情報を選ぶすでにClaude CodeでAPIキーを使っている場合は、そのキーが再利用されます。そうでない場合は、サブスクリプションの長期トークンを作るか、APIキーを貼り付けるかを選びます。
- ワークフローファイルを選ぶ追加するワークフロー(「@claude」に応答するもの、PRをレビューするもの)を選びます。認証情報は、リポジトリのシークレットとして保存されます。
- プルリクエストを作って取り込むClaude Codeがワークフローファイルを入れたブランチをプッシュし、GitHubをブラウザで開いてプルリクエストの作成画面を表示します。このプルリクエストを作成し、マージすると「@claude」が使えるようになります。
途中で中断したい場合は、Escキーを押します。すでに始まっている手順は最後まで実行され、それ以降の手順は始まりません。終了時の画面に、リポジトリにすでに行われた変更(プッシュされたブランチや保存されたシークレット)が表示されます。
GitHub Appの導入後に「GitHub Actionsの設定を続けるか」と聞かれます。「Skip for now」を選ぶと、GitHub Appだけを入れた状態で止められます。残りは、あとで/install-github-appをもう一度実行すれば進められます。
レビュー用のワークフローを選んだとき
公式ドキュメントによると、レビュー用のワークフローを選んだ場合、Claudeはプルリクエストにコメントとして結果を書き込みます。見つけた問題ごとのインライン(行ごと)のコメントか、問題がなければ1つの要約コメントです。ドラフトのプルリクエストなど、レビューを見送るものもあります。Claude Codeのバージョン2.1.229より前は、レビュー結果が実行ログにしか書かれませんでした。古い方法で作ったファイルは、/install-github-appをもう一度実行し、「Update workflow file with latest version」を選ぶと更新できます。
手動セットアップの手順
コマンドを使わずに設定する場合は、GitHub Appの導入、シークレットの登録、ワークフローファイルの配置を自分で行います。
- Claude GitHub Appを入れるClaude GitHub App(github.com/apps/claude)を対象のリポジトリに導入します。アクションが使う権限は、Contents(ファイルの変更)、Issues、Pull requestsのそれぞれの読み書きです。
- シークレットを登録するリポジトリの「Settings」→「Secrets and variables」→「Actions」から、
ANTHROPIC_API_KEY(APIキー)またはCLAUDE_CODE_OAUTH_TOKEN(サブスクリプションの長期トークン)のどちらかを登録します。 - ワークフローファイルを置くアクションのリポジトリで公開されている
examples/claude.ymlを、自分のリポジトリの.github/workflows/に置きます。そのままで動く形のファイルで、初期状態ではANTHROPIC_API_KEYを使う設定になっています。 - 動作を確かめるIssueかPRのコメントに「@claude」と書いて、返事が来るかを確認します。
CLAUDE_CODE_OAUTH_TOKENを登録した場合は、ワークフローのanthropic_api_keyの行を、claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}に書き換えます。
認証情報の選び方
アクションがClaudeを呼び出すための認証情報には、いくつかの選択肢があります。
| 方法 | 登録するもの | 特徴 | 向いている場面 |
|---|---|---|---|
| APIキー | ANTHROPIC_API_KEY | Claude Consoleで発行する。使った分だけのAPI従量課金 | 会社・チームで使う。複数のリポジトリで共有する |
| サブスクリプションのトークン | CLAUDE_CODE_OAUTH_TOKEN | claude setup-tokenで作る。Pro・Max・Team・Enterpriseの契約で使える。トークンはコマンドを実行した人の契約に結び付く | 個人で試す。1人で使う小さなリポジトリ |
| ワークロードID連携 | 連携ルールのIDなど | GitHubのOIDCトークンを使い、長期のシークレットを保存しない | セキュリティ要件が厳しい組織 |
| クラウド事業者経由 | 各社のロールなど | Amazon Bedrock・Google Cloud・Microsoft Foundry経由でClaudeを使う | すでにそのクラウドでClaudeを使っている組織 |
公式ドキュメントでは、複数のリポジトリでシークレットを共有する場合は、OAuthトークンではなく、Claude ConsoleのAPIキーを使うよう案内されています。OAuthトークンは、claude setup-tokenを実行した人のサブスクリプションに結び付いているためです。このトークンは1年間有効な長期のもので、モデルへの問い合わせにしか使えません。
組織で導入するとき
クイックセットアップも手動セットアップも、1つのリポジトリごとの設定です。組織の複数のリポジトリに広げる場合は、公式ドキュメントで次の進め方が紹介されています。
- Claude GitHub Appを組織単位で1回導入し、対象を「すべてのリポジトリ」か「選んだリポジトリ」にする
- 認証情報は、組織のActionsシークレットとして1つ登録し、リポジトリごとの登録を省く
- ワークフローファイルは、使うリポジトリごとに置くか、1つを「再利用可能なワークフロー」として定義して各リポジトリから呼び出す
長期のシークレットをそもそも保存したくない場合は、ワークロードID連携も使えます。GitHubのOIDCトークンをClaude Consoleのサービスアカウントと交換する方式で、ワークフローにはid-token: writeの権限が必要です。Console側の設定は、アクションのセットアップガイドに手順があります。
設定を取り消すとき
使うのをやめる場合は、導入した順と逆に、次の3つを取り除きます。
- ワークフローファイル:
.github/workflows/から、アクションを使っているファイルを削除する(クイックセットアップならclaude.yml、レビュー用を選んだならclaude-code-review.yml) - シークレット:リポジトリや組織のシークレットを削除する。ただし、シークレットを消しても、認証情報そのものは有効なままなので、完全に無効にするにはClaude ConsoleでAPIキーも削除する
- GitHub App:リポジトリや組織の設定からClaude GitHub Appを削除する。ただし、Code Reviewなど、ほかのClaudeの機能も同じAppを使うため、それらを使っているなら残す
ワークフローファイルの読み方

ワークフローファイルは、YAML(ヤムル)という形式で書かれた設定ファイルです。プログラムを書けなくても、何がどこに書いてあるかが分かれば、読んだり調整したりできます。ここでは、公式ドキュメントに載っている「@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 }}
上から順に、役割を見ていきます。
on:いつ動くか
onには、ワークフローを動かすきっかけ(イベント)を書きます。上の例では、IssueやPRにコメントが書かれたとき(issue_comment)と、PRの行コメントが書かれたとき(pull_request_review_comment)です。よく使うイベントは次のとおりです。
| 書き方 | 動くタイミング | 主な使い方 |
|---|---|---|
issue_comment | IssueやPRにコメントが書かれた | 「@claude」への対応 |
pull_request_review_comment | PRの特定の行にコメントが書かれた | コードの特定の行についての依頼 |
pull_request_review | PRのレビューが提出された | レビュー本文での依頼 |
issues | Issueが作られた、担当者が付いた、ラベルが付いた | Issueの整理、Issueからの実装 |
pull_request | PRが作られた、更新された | 自動レビュー |
schedule | 決めた時刻(cron形式) | 日次・週次のレポート |
if:条件を絞る
ifの行は、「コメントに『@claude』が入っているときだけ実行する」という条件です。これがないと、コメントが書かれるたびに実行環境が起動し、GitHub Actionsの実行時間を消費してしまいます。公式ドキュメントによると、アクション自体もトリガーフレーズを確認しますが、起動前に絞っておくことで無駄な実行を防げます。
permissions:何を許可するか
permissionsは、このワークフローが使うGitHubの権限を決めます。必要なものだけを書くのが基本です。
| 権限 | 意味 | 公式ドキュメントでの説明 |
|---|---|---|
contents: write | ファイルの変更とコミット | Claudeがリポジトリのファイルを変更できる |
pull-requests: write | PRへのコメントや変更 | PRを作成し、変更をプッシュできる |
issues: write | Issueへのコメントや変更 | Issueに応答できる |
id-token: write | 認証用のOIDCトークンの発行 | 標準のGitHub App認証に必要 |
actions: read | ワークフローの実行結果の読み取り | PRでCIの結果を読めるようにする |
レビューだけをさせるワークフローなら、書き込み権限は不要です。公式ドキュメントのレビュー用の例でも、contents: read、pull-requests: read、issues: read、id-token: writeだけが指定されています。やらせたいことに合わせて、権限を減らしていきましょう。
steps:実際の作業
stepsには、順番に実行する作業を書きます。
actions/checkout:リポジトリの内容を実行環境に取り込みます。Claudeが作業するための手元のコピーになります。fetch-depth: 1は、履歴を最新の1件だけ取る指定で、動きが速くなりますanthropics/claude-code-action@v1:Claude Code GitHub Actionsの本体です。@v1は、バージョン1系を使うという指定ですwith:本体に渡す設定です。anthropic_api_keyに、登録したシークレットを指定します
${{ secrets.ANTHROPIC_API_KEY }}という書き方は、「リポジトリのシークレットに登録した値を使う」という意味です。APIキーそのものをファイルに書き込んではいけません。ファイルはリポジトリの利用者全員に見えるため、キーが漏れてしまいます。
with:アクションに渡す設定
よく使う設定項目を、公式ドキュメントから抜き出しました。
| 項目 | 役割 |
|---|---|
prompt | Claudeへの指示。文章でも、スキル(/スキル名)の呼び出しでもよい。書かない場合は、トリガーフレーズに反応する対話モードになる |
claude_args | Claude CodeのCLI(コマンド)に渡す引数。モデルの指定、ターン数の上限、使えるツールの許可など |
anthropic_api_key | APIキー |
claude_code_oauth_token | サブスクリプションの長期トークン |
github_token | GitHub操作に使うトークン。省略すると、Claude GitHub Appとして動く |
settings | Claude Codeの設定(JSON文字列、またはファイルのパス) |
trigger_phrase | 反応する言葉。初期値は「@claude」 |
plugin_marketplaces / plugins | 使うプラグインの配布元と、入れるプラグイン |
use_bedrock / use_vertex / use_foundry | Amazon Bedrock、Google Cloud、Microsoft Foundry経由で使う |
全項目は、アクションのリポジトリにある設定リファレンスに載っています。ブランチ名の接頭辞(branch_prefix、初期値はclaude/)、コミットの署名、1つのコメントだけを更新させる設定など、運用で役立つ項目も多くあります。
claude_argsで渡せるもの
claude_argsには、Claude CodeのCLIで使う引数をそのまま書けます。公式ドキュメントで紹介されているのは次のものです。
| 引数 | 意味 | 書き方の例 |
|---|---|---|
--max-turns | やりとりの回数(ターン数)の上限 | --max-turns 5 |
--model | 使うモデル。省略するとClaude Codeの既定モデル | --model claude-sonnet-5(公式の例) |
--allowedTools | 使ってよいツールをカンマ区切りで許可する | --allowedTools "Bash(npm:*),Bash(git:*)" |
--mcp-config | MCPサーバー(外部ツールとの接続)の設定ファイル | --mcp-config /path/to/config.json |
--append-system-prompt | 標準の指示に、追加の指示を足す | --append-system-prompt "セキュリティを重視する" |
--debug | デバッグ用の出力 | --debug |
複数を書くときは、YAMLの|を使って1行に1つずつ書くと読みやすくなります。
claude_args: |
--max-turns 10
--model claude-sonnet-5
--allowedTools "Bash(npm:*),Bash(git:*)"
ベータ版から移行するとき
以前の@betaを使っているワークフローは、公式ドキュメントの手順で更新します。usesの@betaを@v1にし、modeを削除します。direct_promptはpromptに変え、max_turnsやmodelなどはclaude_argsに移します。custom_instructionsは--append-system-promptになります。
使い方の例

ここからは、具体的な使い方を紹介します。YAMLは公式ドキュメントとアクションのリポジトリの例をもとにしています。使うときは、自社のリポジトリに合わせて書き換えてください。
@claudeで頼む
最も基本的な使い方です。前の章のワークフローを置くと、IssueやPRのコメントで「@claude」と書くだけで、Claudeが動き始めます。公式ドキュメントには、次のような依頼の例が載っています。
@claude implement this feature based on the issue description
@claude how should I implement user authentication for this endpoint?
@claude fix the TypeError in the user dashboard component
日本語でも依頼できます。ただし、公式ドキュメントに日本語の例は載っていないため、依頼がうまく伝わらない場合は、具体的に書くようにしてください。
| 頼みたいこと | 書き方の例 |
|---|---|
| 質問する | @claude この関数は何をしていますか。改善できる点はありますか |
| 修正を頼む | @claude この関数にエラー処理を追加してください |
| レビューを頼む | @claude このPRをレビューして、改善点を提案してください |
| 画像を見せて頼む | @claude この画面のずれを直してください(スクリーンショットを添付) |
Claudeは、返事を1つのコメントにまとめ、作業の進み具合に合わせて更新していきます。コメントの内容は、アクションのリポジトリのFAQで、「進捗のチェックボックス付きで、同じコメントが更新される」と説明されています。
頼み方は「具体的に」
公式ドキュメントでも、費用を抑える方法として「具体的な依頼にする」ことが挙げられています。対象のファイル、直したい動き、守ってほしいルールを書くと、Claudeの作業の回数が減り、結果もそろいやすくなります。Issueのテンプレートで、必要な情報を最初にそろえるのも有効です。
プルリクエストを自動でレビューする
プルリクエストが作られたときに、自動でレビューさせる例です。公式ドキュメントでは、code-reviewプラグインを入れて、そのスキルを実行する形で紹介されています。
name: Code Review
on:
pull_request:
types: [opened, synchronize, ready_for_review, reopened]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
plugins: "code-review@claude-code-plugins"
prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
このワークフローで重要なのは、次の2か所です。
--comment:付けると、レビュー結果がプルリクエストにコメントとして投稿されます。付けないと何も投稿されず、結果は実行ログでしか読めませんclaude_argsの--allowedTools:行ごとのコメントを投稿するための仕組みを起動するのに必要です。スキル側に同じ許可が書かれていても、この行は残しておきます
公式ドキュメントによると、Claudeはドラフトや閉じられたプルリクエスト、自動作成や軽微な変更と判断したもの、すでにClaudeのコメントが付いているものは見送ります。また、公開リポジトリでは、フォークからのプルリクエストにはGitHubがシークレットを渡さないため、同じリポジトリ内のブランチからのプルリクエストだけがレビューされます。
レビューの対象を絞りたいときは、onにpathsを書くと、特定のフォルダやファイルが変更されたときだけ実行できます。アクションのリポジトリには、そのための例(pr-review-filtered-paths.yml)も用意されています。
毎朝のレポートを作る
promptを書けば、スケジュールのような「人の操作がないきっかけ」でも動かせます。毎日決まった時刻に、前日のコミットと未解決のIssueをまとめる例です。
name: Daily Report
on:
schedule:
- cron: "0 9 * * *"
jobs:
report:
runs-on: ubuntu-latest
permissions:
contents: read
issues: read
id-token: write
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Generate a summary of yesterday's commits and open issues"
claude_args: |
--model claude-sonnet-5
--allowedTools "mcp__github__list_commits,mcp__github__list_issues"
スケジュール実行では、次の点に注意してください。
- 時刻はUTC:
cronの時刻はUTC(協定世界時)で書きます。日本時間(JST)はUTCより9時間進んでいるため、上の「0 9 * * *」は日本時間の18時です。日本時間の朝9時なら「0 0 * * *」になります - ツールを許可する:文章の
promptだけでは、Claudeはシェルやコマンドを使えません。必要なツールを--allowedToolsで許可します。上の例では、コミットとIssueを読む2つのツールを許可しています - 既定のブランチだけ:GitHubは、スケジュール実行を既定のブランチのファイルからのみ動かします
- 公開リポジトリでは自動停止がある:公開リポジトリでは、60日間活動がないと、スケジュールが無効になります
- 結果は実行ログ:初期状態では、結果は実行ログに残ります。IssueやSlackに送りたい場合は、そのための指示とツールが別に必要です
スケジュール実行は「人がコメントした」というきっかけがないため、実行者の確認の対象外です。ただし、GitHubはスケジュール実行を、cronの設定を最後に変えたユーザーの実行として扱います。そのユーザーがボットの場合は、allowed_botsにそのボットを入れないと動きません。
Issueにラベルを付ける
新しいIssueの内容を読んで、ラベルを付ける例です。アクションのリポジトリのissue-triage.ymlでは、次のような設定になっています。
on:
issues:
types: [opened]
jobs:
triage-issue:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
issues: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
prompt: "/label-issue REPO: ${{ github.repository }} ISSUE_NUMBER: ${{ github.event.issue.number }}"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_non_write_users: "*"
github_token: ${{ secrets.GITHUB_TOKEN }}
この例では、/label-issueというスキルとスクリプトを、リポジトリ側に用意しておく必要があります。また、allowed_non_write_users: "*"は、書き込み権限のない人が作ったIssueでも動かす設定です。セキュリティ上の注意点があるため、後の「権限と安全」の章で説明します。
timeout-minutes: 10は、実行時間の上限を10分にする指定です。想定外に長く動き続けて、費用がかさむことを防げます。
CIの失敗を自動で直させる
アクションのリポジトリには、CI(自動テスト)が失敗したときに、失敗の内容をClaudeに渡して修正させる例(ci-failure-auto-fix.yml)もあります。CIが失敗したことをきっかけにworkflow_runで動き、失敗したジョブのログを集めてClaudeに渡し、修正用のブランチを作る流れです。
便利な反面、この例には、ファイルの冒頭に注意書きがあります。プルリクエストのブランチのコードを、書き込み権限のある状態で実行するため、リポジトリへの書き込み権限を持つ全員が信頼できる場合にだけ使うように書かれています。外部の協力者を受け入れているリポジトリでは使わないでください。
スキルやプラグインを実行する
promptには、文章のほか、スキルの呼び出しも書けます。リポジトリの.claude/skills/に置いたスキルなら、actions/checkoutをアクションの前に実行して、/スキル名をpromptに書きます。プラグインに入っているスキルは、plugin_marketplacesとpluginsでプラグインを入れてから、/プラグイン名:スキル名の形で呼び出します。
チームで決めたレビュー手順やリリース前のチェックをスキルにしておけば、同じ手順を手元でもGitHub上でも使い回せます。
費用の考え方

Claude Code GitHub Actionsには、機能そのものの利用料はかかりません。かかるのは、GitHub Actionsの実行時間と、Claudeの利用料の2つです。公式ドキュメントでも、1回の実行でこの2種類を消費すると説明されています。
2種類の費用
| 費用 | 何にかかるか | 請求先 | 増える要因 |
|---|---|---|---|
| GitHub Actionsの実行時間 | GitHubが用意する実行環境(ランナー)を使った時間 | GitHub | 実行の回数、1回の実行時間 |
| Claudeの利用料(APIのトークン) | 指示と回答の長さに応じた量 | Anthropic(APIキーの場合) | 指示と回答の長さ、作業の複雑さ、リポジトリの大きさ |
サブスクリプションの長期トークンで認証した場合は、APIの従量課金ではなく、Claudeの契約を使います。ただし、契約の利用枠のうち、この実行がどのように数えられるかの詳しい説明は、公式ドキュメントでは確認できませんでした。まず少ない回数で試し、使用量の画面で減り方を確かめてください。
GitHub Actionsの実行時間
GitHubのプランには、毎月無料で使える実行時間があります。GitHubの公式ドキュメントでは、標準のGitHub-hostedランナー(GitHubが用意する実行環境)について、次の枠が案内されています。
| GitHubのプラン | 毎月の無料枠(分) |
|---|---|
| GitHub Free(個人・組織) | 2,000分 |
| GitHub Pro | 3,000分 |
| GitHub Team | 3,000分 |
| GitHub Enterprise Cloud | 50,000分 |
公開リポジトリで標準のランナーを使う場合は、無料です。枠を超えると、実行環境ごとの分単価で課金されます。同じページでは、Linuxの2コアが1分あたり0.006米ドルと案内されています(2026年10月時点)。macOSやWindowsのランナーは単価が高くなります。公式ドキュメントの例はいずれもLinuxのubuntu-latestなので、この指定のままにしておけば、単価を低く保てます。
プランや単価は変わることがあります
GitHubの無料枠や分単価は、プランや時期によって変わることがあります。導入前に、GitHubの課金のページと、自社のプランの契約内容を確認してください。
Claudeの利用料
APIキーで認証する場合、Claudeの利用料は、APIの従量課金です。指示や読み込んだファイルの長さ、Claudeの回答の長さ、作業の回数に応じたトークン(文字量の単位)の数で決まります。レビューのように、変更の多いプルリクエストを読む作業や、リポジトリ全体を調べる作業は、トークンを多く使います。トークンの単価は、Anthropicの料金ページで公開されています。
費用は、リポジトリの大きさ、プルリクエストの数、頼み方によって大きく変わるため、一般的な金額の目安は示せません。まず、1つのリポジトリで1〜2週間試し、Claude Consoleの使用量で実際の金額を確かめてから、広げる範囲を決めるのが確実です。
費用を抑える方法
公式ドキュメントでは、2種類の費用を下げるための方法が、次のように紹介されています。
| 方法 | 書き方・やり方 | 効果 |
|---|---|---|
| 具体的な依頼にする | 対象・やりたいこと・条件を書く | Claudeの作業回数が減る |
| Issueのテンプレートを使う | 必要な情報を最初に書いてもらう | やりとりが減る |
CLAUDE.mdを簡潔にする | 毎回読み込まれるため、必要な内容に絞る | 毎回のトークンが減る |
| ターン数を制限する | claude_argsに--max-turnsを書く | 作業の回数に上限ができる |
| 実行時間を制限する | ワークフローやジョブにtimeout-minutesを書く | 暴走による費用の増加を防ぐ |
| 同時実行を制限する | GitHubのconcurrencyで並列実行を絞る | 短時間に実行が重なるのを防ぐ |
| 実行する条件を絞る | ifやpathsで、必要なときだけ動かす | 無駄な実行がなくなる |
特に、--max-turnsとtimeout-minutesは、設定しておくだけで、想定外の費用を防ぎやすくなります。最初は小さめの値で始め、足りなければ増やす進め方がおすすめです。
まず「小さく」「止められる」状態で始める
導入の最初は、1つのリポジトリ、1つのワークフロー、実行時間とターン数の上限付きで始めましょう。費用の動きと結果の質を確かめてから、対象を広げると、負担が見えないまま増えることを避けられます。
クラウド経由で使う場合
Claude APIを直接使うかわりに、自社のクラウド契約を通してClaudeを使うこともできます。アクションには、Amazon Bedrock(use_bedrock: "true")、Google Cloudの基盤(use_vertex: "true")、Microsoft Foundry(use_foundry: "true")のための設定があります。
この場合、GitHubのOIDCトークンでクラウドに認証するため、リポジトリにクラウドの長期的な認証情報を保存する必要がありません。クラウド側では、IAMロールなどの信頼設定を事前に作ります。手順はクラウドごとに異なるので、公式ドキュメントの「Use Claude Code GitHub Actions with cloud providers」を参照してください。Bedrockを使ったClaude Codeの導入全般はClaude Code Bedrockの記事で解説しています。
権限と安全

Claudeは、リポジトリのファイルを書き換え、コメントを投稿できます。そのため、誰が動かせるのか、何を許可するのかを、先に決めておくことが大切です。ここでは、公式ドキュメントとアクションのリポジトリのセキュリティ文書をもとに整理します。
誰が動かせるか
アクションは、実行の前に、動かした人を2つの観点で確認します。どちらかに該当すると、実行は失敗します。
| 確認 | 内容 | 例外の設定 |
|---|---|---|
| 書き込み権限 | IssueやPRのイベントでは、動かした人がリポジトリへの書き込み権限を持っていること | allowed_non_write_usersで、指定した人を許可できる(github_tokenも必要)。スケジュールなど、人が行わないイベントでは確認されない |
| 人であること | すべてのイベントで、ボットによる実行は拒否される。ボット同士の無限ループを防ぐため | allowed_botsで、指定したボットを許可できる |
つまり、通常の設定では、リポジトリに書き込める人だけが、Claudeを呼び出せます。外部の人が公開リポジトリにIssueを書いても、Claudeは動きません。
例外の設定は慎重に
アクションのリポジトリのセキュリティ文書では、allowed_non_write_usersは「大きなセキュリティ上のリスクがある」と説明されています。書き込み権限のない人のIssueでも動かす設定のため、issues: writeだけのような、ごく限られた権限のワークフローでだけ使うよう案内されています。allowed_botsに「*」(すべて)を指定すると、公開リポジトリでは、外部の誰かが作ったGitHub Appからも呼び出せてしまう場合があります。名前を明示して指定するほうが安全です。
GitHub Appの権限
Claude GitHub Appは、Claudeのさまざまな機能(Claude Code GitHub Actions、Code Review、クラウドセッションの自動修正)で共通して使われます。GitHub Appの権限は1つのセットにまとまっているため、導入時には次の権限をまとめて許可することになります。
| 権限 | アクセス |
|---|---|
| Actions | 読み書き |
| Administration | 読み取り |
| Checks | 読み書き |
| Contents | 読み書き |
| Discussions | 読み書き |
| Issues | 読み書き |
| Members | 読み取り |
| Merge queues | 読み取り |
| Metadata | 読み取り |
| Pull requests | 読み書き |
| Repository hooks | 読み書き |
| Statuses | 読み取り |
| Workflows | 読み書き |
GitHubでは、権限の一部だけを受け入れることができません。この権限の範囲が組織の方針に合わない場合は、公式ドキュメントで、Contents・Issues・Pull requestsの3つだけを持つ、自社専用のGitHub Appを作る方法が案内されています。ただし、自作のAppで動くのは、Claude Code GitHub Actionsだけです。Code Reviewやクラウドセッションの自動修正には、公式のAppが必要です。
使えるツールを絞る
Claudeが使えるツールは、--allowedToolsで決まります。アクションのリポジトリのFAQでは、シェルコマンドの実行(Bashツール)は、初期状態では無効と説明されています。使わせたいコマンドだけを、次のように指定します。
claude_args: |
--allowedTools "Bash(npm install),Bash(npm run test:*),Bash(npm run lint:*)"
このように、実行してよいコマンドを名前で限定します。「すべて許可」にせず、テストと静的解析など、必要なものだけを許可するのが基本です。
Claudeにできないこと
アクションのリポジトリのFAQとセキュリティ文書には、Claudeの動作の制限が書かれています。
- ブランチのマージ、リベース、強制プッシュ(force push)はしない。呼び出されたブランチ(自分のブランチかPRのブランチ)以外には、プッシュしない
- 初期設定では、プルリクエストを自動では作らない。変更を新しいブランチにコミットし、プルリクエスト作成ページへのリンクを返す。人が確認してから作成する
- 権限は、動かしているリポジトリの中に限られる。ほかのリポジトリにはプッシュできない
- 閉じられたプルリクエストには、プッシュできない。新しいブランチが作られる
これらは、システムの指示として実装されているため、--allowedToolsでgitのコマンドを許可しても、リベースの依頼は断られると説明されています。
外部からの入力に注意する
公開リポジトリのIssueやコメントは、誰でも書けます。そこに、AIへの指示が隠されている可能性があります(プロンプトインジェクション)。たとえば、HTMLのコメントや見えない文字を使って、「秘密の情報を出力して」といった指示が混ぜられることがあります。
アクションは、HTMLコメントや見えない文字などを取り除いて、Claudeに渡します。ただし、セキュリティ文書では、新しい回避方法が出てくる可能性があるため、外部の協力者からの入力は、原文を確認してからClaudeに処理させることをすすめています。公開リポジトリでは、include_comments_by_actorで、Claudeに渡すコメントの書き手を絞る方法もあります。
pull_request_targetとworkflow_runの注意
pull_request_targetやworkflow_runは、リポジトリ本体のシークレットを使って実行されます。セキュリティ文書では、これらで信頼できない参照先(フォークのプルリクエストの内容など)を作業場所のルートにチェックアウトしてから、アクションを動かさないよう案内されています。外部の人のプルリクエストを扱う場合は、基本のブランチをルートにチェックアウトし、プルリクエストの内容は別のフォルダに取り込んで、--add-dirで渡す方法が示されています。
また、プルリクエストでアクションを動かすときは、.claude/、CLAUDE.md、.mcp.jsonなどの設定ファイルを、プルリクエストの内容ではなく、基本ブランチのものに戻してから実行します。プルリクエストの作者が、設定ファイルを書き換えて、Claudeの動作を変えることを防ぐ仕組みです。
認証情報とログの扱い
- APIキーやトークンは、必ずGitHubのシークレットに登録し、ワークフローファイルに直接書かない
- ワークフローには、必要な権限だけを書く
- Claudeの変更は、マージする前に必ず人が確認する
show_full_output(出力をすべて表示する設定)は、初期状態では無効。有効にすると、ツールの実行結果や環境変数などがログに出るため、公開リポジトリでは、ログが誰にでも見える状態になる- GitHub Actionsのデバッグモードを有効にすると、同じく全出力が表示される
コミットの署名は、初期状態では付きません。use_commit_signingかssh_signing_keyを設定すると、「Verified」の表示が付く署名付きのコミットにできます。前者はGitHubのAPIを使うため設定が簡単ですが、リベースなどの複雑なgit操作はできません。
導入前に決めておくこと
会社で使う場合は、次の項目を先に決めておくと、運用が安定します。
| 決めること | 内容の例 |
|---|---|
| 対象のリポジトリ | まず、社内ツールなど、影響の小さいリポジトリで試す。顧客の機密を扱うリポジトリは後にする |
| 認証の方法 | 会社として発行するAPIキーを使う。個人のOAuthトークンを、業務のリポジトリで使い回さない |
| 許可するツール | 実行してよいコマンドの一覧。テストと静的解析まで、など |
| 費用の上限 | ターン数・実行時間の上限と、月の利用額の目安。確認する人 |
| 変更の確認 | Claudeの変更は、人がレビューしてからマージする。自動マージはしない |
| 外部の人の扱い | 公開リポジトリで外部の人のIssueやPRを、Claudeに読ませるかどうか |
動かないとき

設定したのに「@claude」に反応しない、期待した動きにならない、といった場合の確認点を整理します。公式ドキュメントとアクションのリポジトリのFAQにある内容をもとにしています。
@claudeに反応しない
| 確認すること | 見方 |
|---|---|
| GitHub Appが入っているか | リポジトリまたは組織の設定で、Claude GitHub Appが導入されているか |
| ワークフローが有効か | リポジトリのActionsの設定で、ワークフローが有効になっているか |
| シークレットがあるか | APIキーまたはOAuthトークンが、リポジトリのシークレットに登録されているか |
| 書き方は正しいか | コメントに「@claude」が、独立した単語として入っているか。「/claude」や「@claude-bot」では反応しない |
| 書き込み権限があるか | コメントした人が、リポジトリへの書き込み権限を持っているか |
| ワークフローが既定のブランチにあるか | ワークフローのファイルが、既定のブランチにマージされているか(コメントでの実行では、既定のブランチのファイルが使われる) |
最後の項目は、公式ドキュメントに明記されたものではなく、GitHub Actionsの一般的な仕様です。コメントをきっかけにした実行では、既定のブランチにあるワークフローが使われるため、/install-github-appで作られたプルリクエストをマージしていないと動きません。
認証のエラーが出る
- APIキーまたはトークンが有効かを、手元の
claudeで確かめてから、ワークフローを調べる - 標準のGitHub App認証を使う場合は、
permissionsにid-token: writeが入っているかを確かめる。ないと、OIDCの認証でエラーになる - Bedrock・Google Cloud・Foundryでは、クラウド側のロールの信頼設定と、シークレットの名前が合っているかを確かめる
「403 Resource not accessible by integration」と出る
アクションのリポジトリのFAQによると、GitHub Appのトークンでは、ユーザー情報のAPIにアクセスできないために起きるエラーです。現在のバージョンでは、bot_idとbot_nameの初期値がClaudeのボットになっているため、通常は起きません。独自のボットを使う場合は、この2つを両方指定します。
Claudeのコミットで、CIが動かない
公式ドキュメントでは、次の2点が案内されています。
- GitHubは、標準の
GITHUB_TOKENで作られたコミットでは、別のワークフローを起動しない。github_token: ${{ secrets.GITHUB_TOKEN }}をアクションに渡している場合は、その行を削除するか、自作のGitHub Appのトークンを渡す - CIのワークフローの
onに、Claudeのプッシュで起きるイベント(pushやpull_request)が入っているかを確かめる
うまくいかない原因を調べるには
Claudeが何をしたかは、GitHubの「Actions」タブから、該当の実行のログで確認できます。ログには、読んだファイルや、実行しようとしたコマンドが記録されます。ツールの許可が足りずに止まっている場合は、そのログから、どのツールを許可すればよいかが分かります。
それでも原因が分からない場合は、アクションのリポジトリのFAQとIssueを確認してください。
よくある質問
Claude Code GitHub Actionsは、無料で使えますか?
アクション自体の利用料はかかりませんが、GitHub Actionsの実行時間と、Claudeの利用料(APIの従量課金、またはサブスクリプション)が必要です。GitHubの無料枠の範囲内に収まる場合は、GitHub側の費用はかかりません。
PRの自動レビューは、Code ReviewとGitHub Actionsのどちらがよいですか?
TeamまたはEnterpriseプランで、ワークフローを管理したくなければ、Code Reviewが手軽です。レビューの観点や、動かすタイミング、使うモデルを自分で決めたい場合や、Teamなどのプランを使っていない場合は、GitHub Actionsを使います。
Claudeが勝手にコードをマージすることはありますか?
アクションのリポジトリのドキュメントでは、Claudeはブランチのマージやリベース、強制プッシュをしないと説明されています。初期設定では、プルリクエストも自動では作らず、作成ページへのリンクを返します。ただし、ほかのワークフローで自動マージを設定している場合は、その設定が優先されます。
日本語で「@claude」に依頼しても動きますか?
「@claude」と書けば反応します。依頼文は日本語でも書けます。公式ドキュメントの例は英語ですが、意図が伝わるよう、対象と条件を具体的に書いてください。
「@claude」以外の言葉で呼び出せますか?
できます。trigger_phraseに、反応させたい言葉を指定します。ただし、言葉は単語として区切られている必要があります。
GitLabやBitbucketでも使えますか?
このアクションはGitHub用です。/install-github-appも、github.comのリポジトリだけで使えます。GitLabについては、別にClaude Code GitLab CI/CDが公式に用意されています。
社内のGitHub Enterprise Serverでも使えますか?
公式ドキュメントには、GitHub Enterprise Server向けのページが別にあります。セルフホストの環境では、設定が異なる点があるため、そのページを確認してください。
複数のリポジトリにまたがる作業は頼めますか?
頼めません。アクションのリポジトリのFAQでは、Claudeのトークンは、動かしているリポジトリの中に限られると説明されています。ほかのリポジトリへはプッシュできません。公開リポジトリは、必要なツールを許可すれば読めるとされています。
ワークフローファイル(.github/workflows)を、Claudeに書き換えさせられますか?
アクションのリポジトリのFAQには、ClaudeはGitHub Actionsのワークフローファイルを更新しないと書かれています。ただし、GitHub Appの権限の一覧には「Workflows」が含まれており、仕様が変わる可能性もあります。ワークフローファイルの変更は、どの場合でも、人が内容を確認してから反映してください。
コードの履歴が途中までしか見えないのは、なぜですか?
動作を速くするため、Claudeは履歴を一部だけ取得します。プルリクエストでは直近20件、新しいブランチでは1件です。全履歴が必要な場合は、actions/checkoutの設定で、全履歴を取得するようにします。
Claudeの回答が、複数のコメントに分かれません。
仕様です。Claudeは、IssueやPRのやりとりが散らからないよう、進捗の更新も最終結果も、1つのコメントを更新していきます。
使うモデルは選べますか?
選べます。claude_argsに--modelを書きます。指定しない場合は、Claude Codeの既定のモデルが使われます。モデルの種類や名前は変わることがあるため、公式のモデル一覧で確認してください。
小さなチームでは、どこから始めればよいですか?
1つのリポジトリで、「@claude」に応答する基本のワークフローだけを入れるのがおすすめです。実行時間とターン数の上限を付けて、数週間使い、費用と結果の質を確かめてから、自動レビューなどを足していきます。
まとめ
この記事のまとめ
- Claude Code GitHub Actionsは、GitHubの出来事をきっかけに、自社の実行環境でClaudeを動かす機能
- 導入は、
/install-github-appか、GitHub App・シークレット・ワークフローファイルの手動設定。リポジトリの管理者権限が必要 promptがなければ「@claude」に応答する対話モード、あれば自動で動く自動モード- 費用はGitHub Actionsの実行時間とClaudeの利用料の2種類。ターン数と実行時間の上限を付けて始める
- 動かせるのは書き込み権限のある人だけ。ボットや外部の人を許可する設定は、権限を絞ってから使う
- ツールは必要なものだけを許可し、Claudeの変更は人が確認してからマージする
GitHub Actionsは、設定さえ整えれば、レビューやレポート作成を人の手を離れて回せる仕組みです。一方で、権限・費用・外部からの入力への備えを後回しにすると、かえって運用の負担になります。まずは小さなリポジトリで、上限を付けて試すのが確実です。
社内のリポジトリへの導入や、ワークフローの設計、権限と費用のルールづくりでお困りの場合は、INTERCREATE JAPANがClaude Codeの導入支援としてお手伝いしています。
参考・出典
- Claude Code GitHub Actions(Claude Code Docs)
- Use Claude Code GitHub Actions with cloud providers(Claude Code Docs)
- Authentication(Claude Code Docs)
- Code Review(Claude Code Docs)
- claude-code-action(GitHub)
- Security(claude-code-action ドキュメント)
- FAQ(claude-code-action ドキュメント)
- About billing for GitHub Actions(GitHub Docs)
INTERCREATE JAPAN
