Claude CodeをGitHub Actionsで動かす方法|@claudeメンションで自動化する

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

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

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

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

こんなお悩みを、全部まとめて解消していきます。

先に結論

Issue や PR に @claude とコメントすると、Claude がコードを書いて push まで済ませます

認証は個人ならサブスク用トークン、組織なら API キー。ここが最初の分かれ道です。

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

この記事でわかること

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

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

Index

@claude とコメントするだけで、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 の比較表。入手先・課金・紐づき先・向いている場面
結論

個人利用ならサブスクトークン、複数人・組織なら API キーです。

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

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

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

Yuu

そこが落とし穴です。その人が抜けると全部止まります。組織なら API キー一択で考えて大丈夫です。

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

yaml claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

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

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

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

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

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

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

Yuu

そうなんです。定期レポート用途では Actions タブから開いて読む前提になります。

誰が起動できるか

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

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

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

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

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

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

Yuu

はい。ただしActions の分数は別枠で消えていきます。ここが見落とされがちです。

まず効く、地味な節約

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

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

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

ここを丸ごと外す方法が、自前サーバーをセルフホストランナーにする構成です。

Yuu

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

Actions の分数を気にせず回したいなら

セルフホストランナーを置く先として、月額を固定できる VPS という選択肢があります。AI関連ツールの常時稼働用途を想定したプランもあります。

先に確認を

セルフホストランナーは自分で保守する必要があります。まずは 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往復させてみてください。そこから先は、やりたいことが自然に見えてきます◎

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

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

この記事を書いた人

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

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

Index