Claude Code は `gh` CLI を「最もコンテキスト効率の良い GitHub 操作手段」として公式 Best Practices で推奨している。一方で `gh auth login` のデフォルトスコープは `repo, read:org, gist` と広めで、Claude にそのまま渡すとリスクが大きい。本稿は権限境界を作る現実的な手順を整理する。
デフォルトスコープの実態
`gh auth login` でブラウザ経由 OAuth 認証すると、最低限 `repo, read:org, gist` の 3 つが付与される(公式 Discussion #7762)。これは外せない。
- `repo` — 全プライベートレポへの **フルアクセス**(read/write)
- `read:org` — 所属 org の情報読み取り
- `gist` — Gist の作成・更新
つまり Claude Code に `gh` を使わせる時点で、**事実上の全レポ書き込み権限**を与えていることになる。
権限を絞る 3 つのアプローチ
A. プロファイル分離
開発用と Claude 用で gh のホスト・プロファイルを分け、Claude 用には fine-grained PAT を `gh auth login --with-token` で食わせる:
GH_HOST=github.com gh auth login --with-token < ~/.tokens/claude-pat.txtこれで Claude が触れる範囲が fine-grained PAT の権限まで狭まる。
B. permissions の allow リストで `gh` を絞る
Claude Code の `settings.json` で `gh` のサブコマンドを限定:
{
"permissions": {
"allow": [
"Bash(gh pr view *)",
"Bash(gh pr list *)",
"Bash(gh issue view *)",
"Bash(gh api repos/myorg/myrepo/*)"
],
"deny": [
"Bash(gh repo delete *)",
"Bash(gh secret *)",
"Bash(gh auth *)"
]
}
}`gh secret` や `gh auth` などの設定変更系を明示 deny。
C. sandbox + 限定 PAT で多層
`/sandbox` を有効にし、ネットワーク先を `api.github.com` のみに絞る + 専用 PAT。漏洩時のリスクをさらに下げる。
CI 環境では PAT より `GITHUB_TOKEN` を使う
続きを読むには
無料でアカウント作成
CCHub は Claude Code 開発者のための日本語コミュニティです。