【検証】 Claude Code GitHub Actionsは、どのブランチの パーミッション を参照するのか?
こんちは。
リテールアプリ共創部 エンハンスチームの塚本です。
Claude Code GitHub Actions を使い始めました。(パート2)
前に同じようなブログ↑ を書きましたが、今回はパーミッション編です。
Claude Code GitHub Actionsを使っていると、
「単体テストを実行してほしいけど Claudeに権限が無くてできない...」 というケースに遭遇します。
Claude Code GitHub Actionsでは、ワークフローファイルの allowed_tools
でClaudeが実行できるコマンドやMCPツールを制御します。
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_tools: "Bash(npm i)"
パーミッションは、デフォルトブランチのワークフローファイルに従うのでしょうか?
それとも、PRブランチのワークフローファイルに従うのでしょうか?
PRブランチのワークフローに従ってくれると、試行錯誤がしやすそうです。
今回はこちらを検証していきます。
Claude Code GitHub Actions とは
Claude Codeを GitHub Actions 経由で動かせるものです。
IssueやPRのコメントで @claude
とメンションして指示を出すことで、コードレビューや実装を依頼できます。
検証
検証手順
- mainブランチの
claude.yml
は権限がない状態とする - PRを作成し、PRのブランチで
claude.yml
にnpm install
の権限を付与する - PRのコメントで
npm install
できるか確認する
事前準備
ローカルで Claude Code を開き、 /install-github-app
を実行します。以下の手順をガイドしてくれるので、従いながら設定をします。
- 対象リポジトリに ClaudeのGitHubアプリをインストール
- API Keyを取得
- API Keyをシークレットに保存
- GitHub Actions workflow のPR作成
その後、npm init
を実行し、 npm install
できる状態にしました。
mainブランチの claude.yml を検証
特に権限が付与されていない claude.yml
を作成します。
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Issueを作成し、コメントで npm install
できるか頼んでみます。
権限がないので、実行してくれません。
claude.yml
に npm install
の権限を付与する
PRのブランチで PRのブランチでallowed_tools: "Bash(npm install)"
の記述を追加します。
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_tools: "Bash(npm install)"
PRを作成し、PRコメントで npm install
できるか頼んでみます。
こちらも権限がないので、実行してくれませんでした。
検証結果
☔ パーミッションはmainブランチの claude.yml
に従う
所感
検証がしづらい点では少し困りますが、PRブランチ側で好きなパーミッションを付けられる方が問題なので、安全性を重視するならこの仕様の方が良さそうです。
まとめ
- Claude Code GitHub Actionsのパーミッション(allowed_tools)は、PRブランチではなくmainブランチのワークフローファイルに従う
- この仕様により、PRブランチで任意のパーミッションを付与してセキュリティリスクが生じることを防いでいる
- 検証や試行錯誤はしづらくなるが、安全性を重視した適切な設計と言える