Claude Code: bypassPermissions でも deny リストは効く → 危険コマンドだけ明示的に禁止する
権限確認を全部スキップする bypassPermissions を使う場合でも、permissions.deny に書いたルールは優先される。確認ダイアログ地獄を避けつつ、怖い操作だけ確実に封じられる。
どんな時に使う?
- 毎回の許可確認が多すぎて作業が進まない
- かといって
rm -rf・本番への push・秘密情報の読み取りはさせたくない
設定例(.claude/settings.json)
.claude/settings.json)json
{
"permissions": {
"defaultMode": "bypassPermissions",
"deny": [
"Bash(rm -rf:*)",
"Bash(git push:*)",
"Read(./.env)",
"Read(./secrets/**)"
]
}
}注意点
- deny はパターン一致なので、言い換え(別コマンド・スクリプト経由)までは防げない。コンテナや devcontainer などのサンドボックス内で使うのが前提。
- 挙動はバージョンで変わりうる。公式ドキュメントの permissions の項で優先順位を確認すること。
- チーム共有の設定に
bypassPermissionsを入れるのは避け、個人のsettings.local.jsonに留めるのが無難。