創刊準備号 · 2026年秋English · RSS
AgentKoji

GitHub ActionsでClaude Code

@claudeで動かせるのは書き込み権限のある人だけです。GitHub App、シークレット、ワークフローの書き方が分かります。

要点(TL;DR)

  • Claude Code GitHub Actions は、Issue や PR のコメントに @claude と書くと、Claude がコードを読んで答えたり変更をコミットしたりする GitHub Action です。
  • 動かすには Claude GitHub App、シークレット(ANTHROPIC_API_KEY か CLAUDE_CODE_OAUTH_TOKEN)、anthropics/claude-code-action@v1 を呼ぶワークフローの3つが要ります。
  • 手元の /install-github-app でまとめて準備でき、どちらの手順でもリポジトリの管理者の権限が必要です。

Claude Code GitHub Actions は、リポジトリのワークフローの中で Claude Code を動かす GitHub Action です。Issue や PR のコメントに @claude と書くと、Claude がコードを読んで答えたり、変更を作ってコミットしたりします。prompt を渡せば、スケジュールなどのイベントで自動で動かすこともできます。この記事では、セットアップ、動かし方、権限と安全、費用を抑える設定、うまく動かないときを順に説明します。費用の詳しい話はClaude Code×CIの費用と罠に任せます。編集部の検証環境(macOS、Claude Code 2.1.306、2026年10月22日)では、GitHub 上の操作、App のインストール、ワークフローの実行はしていません(未実行)。手元で確かめたのは、ワークフローの YAML の構文だけです。

仕組み

動かすには3つが要ります。

部品役割
Claude GitHub Appリポジトリのファイル、Issue、PR を読み書きする
シークレットANTHROPIC_API_KEY(Claude Console の API キー)か CLAUDE_CODE_OAUTH_TOKEN(Claude の契約のトークン)
ワークフローのファイル.github/workflows/ に置く。anthropics/claude-code-action@v1 を呼ぶ

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

出典:https://code.claude.com/docs/en/github-actions 、2026-10-22確認

クイックセットアップ

手元の Claude Code で /install-github-app を実行すると、App のインストール、シークレットの登録、ワークフローの PR の準備までを進めてくれます(未実行)。

Amazon Bedrock、Google Cloud の Agent Platform、Microsoft Foundry を使う場合は、クイックセットアップではなく、クラウド向けの手順に従います。

出典:https://code.claude.com/docs/en/github-actions 、2026-10-22確認

手動のセットアップ

/install-github-app を使わない場合は、3つを自分で用意します(未実行)。

  1. Claude GitHub App(https://github.com/apps/claude )をリポジトリに入れる。Action が使うのは、Contents、Issues、Pull requests の読み書きの3つの権限。インストールのときは、ほかの Claude の機能が使う権限もまとめて付与される(一部だけを選ぶことはできない)
  2. シークレットを登録する。契約のトークンは、手元で claude setup-token を実行して作る(Pro、Max、Team、Enterprise)
  3. examples/claude.yml を .github/workflows/ に置く

ワークフローでは、API キーは anthropic_api_key、契約のトークンは claude_code_oauth_token の入力に渡します。

公式の @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 }}

id-token: write は GitHub App としての認証に、actions: read は PR の CI の結果を読むのに使います。if で、@claude の無いコメントではランナーを起動しません。

出典:https://code.claude.com/docs/en/github-actions 、2026-10-22確認

@claude で動かす

prompt を渡さないワークフローは、対話のモードで動きます。Issue や PR のコメント、PR のレビュー、新しく開いた Issue の本文やタイトルに @claude が出てくると、その依頼に応えます。結果はコメントで返ります。ダミーの todo アプリ(example-org/todo-app)なら、@claude fix the TypeError in the todo list component のように頼みます。

prompt で自動で動かす

prompt を渡すと、自動のモードになります。メンションを待たずに、cron のスケジュールを含むどんなイベントでも動きます。結果は既定ではコメントではなく、ワークフローの実行ログに出ます。プレーンなテキストの prompt では、Claude はシェルや GitHub の API を使えません。使わせたいツールは、claude_args の --allowedTools か、settings の permissions.allow で渡します。

公式の例をもとに、claude_args の --model の行を外して --max-turns を足した、毎朝のレポートのワークフローです(--model を省くと Claude Code の既定のモデルで動きます)。GitHub はスケジュールのワークフローを既定のブランチからだけ動かし、公開リポジトリでは60日間動きが無いとスケジュールを止めます。

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: |
            --max-turns 5
            --allowedTools "mcp__github__list_commits,mcp__github__list_issues"

記事の2つの YAML は、手元の Ruby 4.0.6 の YAML.safe_load で読めました。インデントを崩すと mapping values are not allowed in this context で止まります。GitHub 上での動作は未確認です(未実行)。claude -p の使い方そのものはclaude -pで自動化するにあります。

出典:https://code.claude.com/docs/en/github-actions 、2026-10-22確認

誰が動かせるか、秘密をどう扱うか

Issue や PR のイベントで動かせるのは、リポジトリへの書き込み権限がある人だけです。 書き込み権限の無い人を許すには、allowed_non_write_users を設定し、自分の github_token を渡します。bot は、allowed_bots に書かない限り動かせません。bot どうしで呼び合うのを防ぐためです。スケジュールの実行は、最後に cron を変えたユーザーなどの実行として扱われるので、それが bot なら allowed_bots に入れます。

API キーやトークンは、リポジトリにコミットせず、必ず GitHub のシークレットに入れます。権限は必要なものだけにし、変更はマージの前に確かめます。秘密情報の扱いはClaude Codeに秘密を渡さないにもまとめています。

出典:https://code.claude.com/docs/en/github-actions 、2026-10-22確認

費用を抑える設定

1回の実行で、GitHub Actions の実行時間と API のトークンを使います(契約のトークンなら契約の枠)。公式が挙げる抑え方です。

出典:https://code.claude.com/docs/en/github-actions 、2026-10-22確認

うまく動かないとき

症状確かめること
@claude に反応しないApp が入っているか、ワークフローが有効か、シークレットがあるか、@claude が独立した単語か(/claude や @claude-bot ではないか)、書いた人に書き込み権限があるか
Claude のコミットで CI が動かない既定の GITHUB_TOKEN で作ったコミットではワークフローが起動しない。github_token: ${{ secrets.GITHUB_TOKEN }} を渡しているなら外して App として認証させる
認証のエラー鍵やトークンが有効か、手元の claude で確かめる

出典:https://code.claude.com/docs/en/github-actions 、2026-10-22確認

Anthropic のインフラで PR をレビューする Code Review との違いはClaude Codeでコードレビューにあります。

まとめ