Claude CodeをGitHub Actionsで動かす方法|認証・起動条件・エラー確認

Claude CodeとGitHub Actionsを連携させ、@claudeメンションで自動化するイメージ図

「Claude Code を GitHub Actions で動かせる」って聞いたけど、何がどう動くのか正直ピンとこないんだよな…

設定ファイルをコピペしてみたけど、API キーとサブスクどっちで動かすのが正解?

検索すると「Claude Code」が何種類も出てきて、自分が欲しいものがどれか分からないんだけど…

Claude CodeをGitHub Actionsで動かすには、GitHub App・認証情報・ワークフローの3点を接続します。コメントがあっても、起動条件や権限が一致しなければ処理は始まりません。まず検証用リポジトリの小さなIssueで起動と結果を確認し、費用・実行時間・権限を管理してから定型作業へ広げましょう。

先に結論

設定したIssueやPRのイベントでClaude Codeを起動し、調査・修正・レビューを依頼できます。コード変更やpushが行われるかは、依頼内容とワークフローの権限・設定によります。最初は小さな変更で動作を確認しましょう。

認証はAPIキーか、Claudeの契約に紐づくOAuthトークンを選びます。個人の検証と、組織で長く共有する自動化では、資格情報の管理者と費用の扱いを分けて考えてください。

理由はシンプル。OAuth トークンは発行した本人の契約に紐づくからです。

この記事でわかること

  • 紛らわしい4つの「Claude Code」の見分け方
  • 導入の2ルートと、つまずきやすい前提条件
  • API キーとサブスクトークンの選び分け
  • 2種類あるコストと、その減らし方

それでは順番に見ていきましょう。

Index

@claude を起点に、設定した権限の範囲で作業を依頼する

@claude とコメントすると claude-code-action が起動し、同じコメントが書き換わりながらコードが push されるまでの3ステップ
できること

Issue や PR のコメントに反応して、Claude がリポジトリ内で実際にコードを編集し、コミットを pushします。

正体は anthropics/claude-code-action という GitHub Action です。

ワークフローファイルを1枚置くだけで、こんな呼びかけが通るようになります。

コメント例
@claude このIssueの内容で実装して
@claude ダッシュボードのTypeErrorを直して
@claude この認証まわり、どう実装するのが筋がいい?

返事はどこに来るんですか?

Yuu

同じ Issue や PR にコメントで返ってきます。作業の進行に合わせて、そのコメントが書き換わっていきます◎

まず整理|「Claude Code」が4つあって紛らわしい

claude-code-action・Code Review・Claude Code on the web・Claude Agent SDK の4つの違い。見分け方はワークフローファイルを自分で置くかどうか

調べるほど別物が出てきて、途中で分からなくなりました…

ここ、いちばん混乱しやすいところです。名前の近い製品が4つあります。

claude-code-action

本記事の主役。ワークフローを自分で書いて使うタイプです。

Code Review

ワークフロー不要。PR に自動でレビューが付きます。

Claude Code on the web

ブラウザやスマホから動かすタイプです。

Claude Agent SDK

GitHub の外で自動化を組むための土台。今回の Action もこの上に載っています。

見分け方はひとつだけ。ワークフローファイルを自分で置くかどうかです。

じゃあ、わざわざワークフローを書く意味ってどこにあるのかな?

Yuu

トリガー・モデル・プロンプトを自分で決められる点です。定型作業を仕込みたいならこちら◎

導入する|クイックと手動、どちらを選ぶか

導入は2ルート。クイックはgh auth loginのあと/install-github-appを実行してPRをマージ、手動はGitHub App導入・シークレット登録・.github/workflows/への配置

共通の前提

どちらのルートでも、リポジトリの管理者権限が必要です。

導入は2ルート。タブで切り替えて、自分に合うほうを見てください。

STEP

GitHub CLI(gh)を入れて gh auth login を済ませる

STEP

対象リポジトリで claude を起動し /install-github-app を実行

STEP

用意された PR を作成してマージする

App の導入・シークレット登録・ワークフロー生成まで、まとめて面倒を見てくれます。

ここでつまずきます

クイックセットアップは gh コマンドが前提です。入っていないと成立せず、Claude Code 側が不足を検知して警告します。

Yuu

実際、手元の環境には gh が無くてこのルートは選べませんでした。先に入れておくのが安全です。

最小構成で動かす前に、トリガー・権限・認証を確認する

yaml
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 }}

定型部分を除くと、意味があるのは次の4行だけです。

記述役割
id-token: writeGitHub App 認証に必須
actions: readPR の CI 結果を Claude が読める
actions/checkout作業用にリポジトリを取得する
if:無関係なコメントでランナーを起動させない

if: は無くても動きますよね?

Yuu

動きます。ただ全コメントでランナーが起動して、Actions の分数を無駄に食います。

YAML の地味な罠

この on: は YAML 1.1 で真偽値の true として解釈されます。GitHub 側は正しく扱うので実害はありませんが、自作スクリプトで読むと躓きます。

認証は API キーとサブスクトークン、どちらにすべきか

ANTHROPIC_API_KEY と CLAUDE_CODE_OAUTH_TOKEN の比較表。入手先・課金・紐づき先・向いている場面
結論

個人の試行では利用中の契約と管理しやすさから選びます。組織で複数リポジトリへ共有する資格情報は、個人の契約に紐づくOAuthトークンではなく、APIキーや対応する組織向け認証を検討します。

ANTHROPIC_API_KEYCLAUDE_CODE_OAUTH_TOKEN
入手先Claude Consoleclaude setup-token
課金API 従量課金Claude のサブスク契約
紐づき先組織・ワークスペース発行した個人
向いている場面組織で共有個人リポジトリ

サブスク側は Pro・Max・Team・Enterprise で使えます。

チームでもサブスクトークンを共有すればお得なのかな…?

Yuu

OAuthトークンは発行者の契約に紐づきます。組織の共通基盤にするなら、退職・契約変更・権限変更時の扱いまで決めましょう。公式ガイドは共有SecretにはAPIキーを案内し、長期Secretを避ける方法としてOIDCも説明しています。

サブスクトークンを使う場合は、ワークフローの1行を差し替えます。

yaml claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

長期のシークレットを置きたくない場合は、OIDC 連携という選択肢もあります。

2つの動作モード|待ち受けか、自動実行か

prompt を書いたかどうかでインタラクティブとオートメーションが自動的に切り替わる分岐図

モードを指定する項目はありません。prompt を書いたかどうかで自動的に切り替わります。

インタラクティブオートメーション
条件prompt なしprompt あり
きっかけ@claude の呼びかけ任意のイベント・cron
結果の出先Issue や PR のコメントワークフローの実行ログ

ログにしか出ないのは、ちょっと不便じゃないか…?

Yuu

出力先はワークフローとバージョンで確認します。現行の公式レビュー設定はPRへのコメントに対応しています。古い設定ではログだけに出る場合があるため、公式のレビュー設定・更新手順と照合してください。

誰が起動できるか

Issue や PR 起点では、書き込み権限のあるユーザーだけが起動できます。Bot は原則ブロックされます。Claude が自分で自分を呼ぶ無限ループを防ぐためです。

コストは2種類ある|Actions 分数とトークン

費用はGitHub Actionsの実行分数とClaudeのトークンの2種類。サブスクでもActions分数は別枠で消費される
ここを外すと計算が合わない

費用は「GitHub Actions の実行分数」と「Claude のトークン」の2本立てです。

片方だけ見ていると、想定より請求が伸びます。

トークン側はサブスクなら気にしなくていいんですよね?

Yuu

OAuth認証ではAPI従量課金の代わりに、Claudeの契約側の利用枠を使います。無制限という意味ではありません。GitHub Actionsの実行分数と、Claude側の利用状況を両方確認してください。

まず効く、地味な節約

  • @claude への依頼を具体的に書き、往復回数を減らす
  • CLAUDE.md を簡潔に保つ(毎回読まれます)
  • --max-turns で反復回数に上限を付ける
  • ワークフローにタイムアウトを設定する

分数そのものを消したい場合

GitHub ホストのランナーを使う限り、実行時間はそのまま分数を消費します。

セルフホストランナーを選ぶ際は、実行分数の比較にサーバーと保守の費用も加えます。たとえば月の実行量が少なければ、常時用意するサーバーの管理負担が上回る場合もあります。OS更新・監視・アクセス権・停止時の復旧を誰が担うかまで整理してから、GitHub側の現行条件と比較してください。

Yuu

ジョブが長い・回数が多い人ほど効きます。逆に月数回なら、無理に構える必要はありません◎

ABLENET VPSPR

セルフホストランナーが必要な場合に比較する

まずGitHubの実行条件と費用を確認します。VPSへランナーを置く場合は、パッチ適用・権限管理・ジョブの隔離も自分で運用する前提で、構成と総費用を比較しましょう。

公式サイトで料金・利用条件を確認

利用前にGitHubホストランナーで足りる場合、VPSの追加契約は不要です。

先に確認を

セルフホストランナーは自分で保守する必要があります。まずは GitHub ホストで運用し、分数が足りなくなってから検討するのが堅実です。

beta を使っている人は v1 への移行が必要

beta から v1 への移行で変える4点。@betaを@v1へ、modeは削除、direct_promptはpromptへ、max_turnsとmodelはclaude_argsの中へ

前に組んだワークフローが @beta のままなんだよな。動いてはいるけど…

差分は4点だけです。順に潰していきましょう。

betav1
@beta@v1
mode削除(自動判定になった)
direct_promptprompt
max_turns / modelclaude_args の中へ
yaml claude_args: "--max-turns 5 --model claude-sonnet-5"

1つだけ名前が変わります

custom_instructions は同名の移行先がありません。--append-system-prompt に置き換えてください。

よくあるトラブル

よくあるトラブル4件と原因。反応しない・CIが走らない・認証エラー・定期実行の停止
@claude と書いても反応しません

GitHub App の導入、シークレットの登録、コメント者の書き込み権限の3点を確認してください。

/claude や @claude-bot では反応しません。単語として @claude が必要です。

Claude のコミットで CI が走りません

既定の GITHUB_TOKEN によるコミットでは、GitHub がワークフローを起動しない仕様です。

github_token の指定を外し、Claude GitHub App として認証させると解決します。

認証エラーが出ます

まず手元の claude でそのキーが通るか試してください。切り分けが一気に楽になります。

定期実行が途中から動かなくなりました

公開リポジトリでは、60日間活動がないと GitHub 側がスケジュールを無効化します。

まとめ

まずは@claudeが返事をするところまで通す。小さなリポジトリを用意し、ワークフローを1枚置き、@claudeとコメントする

導入前にここだけ確認

0 / 5 完了

まずは @claude が返事をするところまで通すのが、いちばん理解が早いです。

Yuu

最初の1件では、コメント→Action起動→出力や差分→テストまでを確認してください。失敗したらログで認証・権限・起動条件を切り分けます。動くことを確かめた後に最大実行時間と並列数を決め、手元での分担が合う仕事はAgent Teamsの運用と比較しましょう。

※本記事にはアフィリエイトリンクを含みます。料金や仕様は変更されることがあるため、契約前に必ず公式サイトで最新情報をご確認ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

個人でWordPressブログを運営しています。WordPress歴7年。実際に契約・利用しているConoHa WINGとSWELLを中心に、ブログの開設、表示・編集環境の改善、SEO、アフィリエイト、AIを使った制作効率化を検証しています。

公式情報を確認するだけでなく、実機で試した結果、うまくいかなかった点、向かないケースも含めて共有します。読者が遠回りせず、自分のブログで次の一手を選べる情報を届けることが目標です。

Index