ccgate: Permission の確認を別の LLM に代行させる(Claude Code / Codex CLI の PermissionRequest hook)
人に確認が出る直前の PermissionRequest hook で小さな LLM(既定は Haiku)に判定させ、allow / deny(理由つき)/ fallthrough(人に戻す)を返す。作者の環境では月約2,000件の確認のうち普段は97%前後が自動化。
どんな問題を解決する?
- 長い作業を任せて戻ると、確認ダイアログで止まっている
$()や&&、パイプを含む調査用のコマンドは、許可リストに入れたコマンドの組み合わせでも確認が出るghやgitを丸ごと allow/deny にすると、不便か危険のどちらかになる(gh pr viewは通したいがgh apiの書き込みは止めたい、など)- 同じ理由で何度も拒否しているのに、エージェントが似た操作を繰り返す
手順(Claude Code)
- インストール(例:
mise use -g aqua:tak848/ccgate) ~/.claude/settings.jsonに hook を登録する
json
{
"hooks": {
"PermissionRequest": [
{ "matcher": "", "hooks": [{ "type": "command", "command": "ccgate claude" }] }
]
}
}export CCGATE_ANTHROPIC_API_KEY=...(記事時点では Anthropic API のみ対応)- ルールを書き出して調整する:
ccgate claude init > ~/.claude/ccgate.jsonnet。プロジェクト別はccgate claude init -p > .claude/ccgate.local.jsonnet ccgate claude metricsで allow / deny / fallthrough の内訳を見てルールを直す
Codex CLI は config.toml の [features] で codex_hooks = true にして、ccgate codex を同じように使う。
ルールの書き方(自然言語、jsonnet)
jsonnet
{
environment: ['Use project-defined task runners such as make, pnpm, mise, or task when available.'],
allow: ['Running project-defined lint, test, build, and format commands is allowed.'],
deny: [
'Do not run one-shot remote package execution such as npx, pnpx, bunx, or curl | bash. deny_message: リポジトリに定義されたコマンドを使ってください。',
'Do not access sibling checkouts when running inside a git worktree. deny_message: 現在のワークツリー内のパスを使ってください。',
],
}deny_messageはエージェントに返るので、「止める」だけでなく「正しいやり方に誘導する」ことができる- 最後だけ人が見たい操作(ローカル DB の migrate-down、draft PR の作成など)は
denyではなくfallthroughに寄せる - 無人実行(スケジューラや bot)では
fallthrough_strategy: 'deny'にして、迷ったら止める
Auto Mode との使い分け
- Claude Code の Auto Mode は本体に組み込まれたモード。ccgate は今のモードの上に重ねる外付けのゲートで、Codex でも同じ書式のルールが使え、判定ログと集計が手元に残る
- 公式設定
useAutoModeDuringPlan(既定 true)で Plan mode 中も Auto Mode が効く(記事の追記)
注意点
- LLM の判定なので誤判定はありうる。強い境界は
permissions.deny・managed settings・sandbox で守る - 判定ごとに API 呼び出しの料金がかかる(作者は Haiku で月 $5 程度、平均3秒台)
- Plan mode の安全性はプロンプト依存で、保証ではない
- 関連: Claude Code: bypassPermissions でも deny リストは効く → 危険コマンドだけ明示的に禁止する、Codex: 「フルアクセス」より auto-review(Approve for me)を使う、ptuf: 1コマンドで PreToolUse フックを入れ、.env や危険コマンドを止める
出典
- @tak848 · 2026-04-28
- @LayerX_tech 2026-04-28(記事「97%のPermission確認を自動化するCoding Agent用OSS『ccgate』が誕生した」): @LayerX_tech · 2026-04-28
- 記事: zenn.dev