Claude Code GitHub Actions を「月額プランだけ」で動かしてみた
はじめに
結構前に話題になっていたGitHub上で動くClaude Code、 ClaudeActions を導入しました。
GitHub Issue に @claude と書くだけで
- 実装状態を確認してくれたり
- 実装してくれたり
- PR を作ってくれたり
ができるとのことで実際に試してみました。
ただし、思った以上にハマりどころが多く、
月額のサブスクだけで動くの?
やっぱり API キー(従量課金)が必要なんじゃないの?
という疑問にぶつかりました。
実際にハマったポイントと、最終的に完全に動いた構成をメモします。
結論:月額プランだけで動きます
結論から言うと、
- Claude Code GitHub Actions は API キー不要
- Claude Pro(月額課金)だけで動かせます
ただし、
- OAuth トークンが必要
- GitHub Actions workflow への渡し方がかなり分かりにくい
です。
やりたかったこと
やりたかったのは、次のような運用です。
- GitHub Issue / PR に
@claudeとコメント - Claude が
- リポジトリを読む
- 実装状態を確認 or 実装
- Issue / PR に日本語で返信
- 必要なら PR 作成
- API 従量課金は使わない
最初に出るエラーと勘違い
最初に出るエラーがこちらです。
Either ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN is required
これを見ると、無理なのかなと思ってしまいましたが、これは誤解でした。
必要なのは OAuth トークン
Claude Code GitHub Actions は、
ANTHROPIC_API_KEY- または
CLAUDE_CODE_OAUTH_TOKEN
の どちらか を受け取る実装になっています。
重要ポイント
- ⭕ API キーは不要
- ❌
env:で渡すだけでは 動かない - ⭕ Action input(with:)で明示的に渡す必要あり
ここが最大のハマりどころでした。
OAuth トークンの取得方法
Claude CLI を使って発行します。
claude setup-token
実行すると次のような表示が出ます。
Your OAuth token (valid for 1 year): sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx
⚠️ このトークンは 一度しか表示されません
必ずコピーして安全な場所に保存してください。
GitHub Secrets に登録する
GitHub リポジトリの設定画面で、
Settings → Secrets and variables → Actions
から Secret を追加します。
| Name | Value |
|---|---|
| CLAUDE_CODE_OAUTH_TOKEN | CLI で取得した OAuth トークン |
GitHub Actions workflow の正解例
ここが一番重要です。
以下の構成で 完全に動作 しました。
name: Claude Code
on:
issue_comment:
types: [created]
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
ポイント
-
actions/checkoutは必須
→.gitが無いとブランチ操作で失敗します - OAuth トークンは env ではなく with で渡す
- ここを間違えると永遠にエラーが出ます
実際に動かしてみた
Issue に次のように書くだけです。
@claude テスト。返信して
結果:
- GitHub Actions が起動
- Claude がリポジトリを解析
- Issue に 日本語で詳細な返信
- 実装済み機能やコード位置まで指摘
「本当に動いた」感が一気に出ます。
実運用で使える指示例
Issue 本文を整理させる
@claude
Issue本文を背景・目的・受け入れ条件の形に整理してください。
実装して PR を作らせる
@claude
この Issue の受け入れ条件を満たすように実装して PR を作ってください。
PR をレビューさせる
@claude
この PR をレビューして懸念点と改善案を出してください。
Claude の挙動をカスタマイズする
⚠️ 重要:prompt: パラメータの落とし穴
Claude Actions v1.0 では、prompt: パラメータの有無でモードが切り替わります。
| パラメータ | モード | 動作 |
|---|---|---|
prompt: なし
|
Interactive Mode |
@claude メンションで起動し、コメントに自動返信 |
prompt: あり
|
Automation Mode | ワークフローイベントで自動起動、コメント返信なし |
よくある間違い
@claude で呼び出す Interactive Mode の workflow に prompt: を追加すると、コメントが返信されなくなります。
# ❌ 間違った例:Interactive Mode で prompt: を使うとコメントが返信されない
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
prompt: "日本語で簡潔に回答すること" # ← これを追加するとモードが切り替わる
これは prompt: が Automation Mode への切り替えトリガーだからです。
Interactive Mode でカスタマイズする正しい方法
@claude コメントで使う場合、prompt: は使わずに以下の方法でカスタマイズします。
方法1:CLAUDE.md ファイル(推奨)
リポジトリのルートに CLAUDE.md を作成すると、Claude が自動で読み込みます。
## コーディング規約
- Python コードは PEP 8 に従う
- 関数には必ず docstring を書く
- セキュリティ脆弱性をチェックする
方法2:claude_args で追加指示
claude_args: '--append-system-prompt "指示内容"' を使います。
# ⭕ 正しい例:Interactive Mode のまま動作をカスタマイズ
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
claude_args: '--append-system-prompt "日本語で簡潔に回答すること。結論を最初に述べ、詳細は折りたたむ。"'
これなら Interactive Mode のまま、Claude の挙動をカスタマイズできます。
Automation Mode を使う場合
自動実行したい場合(PR オープン時の自動レビューなど)は、別の workflow ファイルを作成します。
# .github/workflows/claude-auto-review.yml
name: Claude Auto Review
on:
pull_request:
types: [opened]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
prompt: "/review" # Automation Mode で自動レビュー
Interactive Mode 用と Automation Mode 用で workflow を分けることで、両方の機能を使い分けられます
モデルを指定する
Claude Code Actions では、使用するモデルを明示的に選択できます。
claude_args: に --model オプションを渡します。
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
claude_args: "--model claude-opus-4-6"
指定可能なモデル例
| モデル名 | 特徴 |
|---|---|
claude-opus-4-6 |
最新の高性能モデル |
claude-sonnet-4-5 |
バランス型(デフォルト) |
claude-haiku-4 |
高速・軽量 |
プロンプトとモデル指定を組み合わせることで、
日本語対応 × 高精度な自動開発環境を構築できます。
なぜこの記事を書いたか
情報自体は少しずつ出ていますが、
- API キー前提の説明が多い
- OAuth の話が散在している
-
env:で渡すと失敗する仕様が分かりにくい
という理由で、かなりハマりました。
同じところで時間を溶かす人が減ればと思い、
Qiita 用にまとめました。
おわりに
Claude Pro(月額課金)だけで GitHub Actions を回すことは可能です。
ただし、
- OAuth トークンは CLI で取得
- Action input(with)で渡す
この2点を外すと動きません。
うまくハマると、
Issue 駆動 × AI 開発が一気に現実的になります。
質問や補足があれば、Qiita のコメントでどうぞ。
参考サイト