権限の管理
Claude Code はファイルの読み書き、コマンドの実行、外部APIへのアクセスといった強力な操作が可能です。権限システムは、これらの操作を安全に制御するための仕組みです。「どのツールを許可し、どのツールをブロックするか」をルールとして定義できます。
権限モード
権限モードは、Claude Code がツールを使おうとした時のデフォルトの振る舞いを決定します。起動時のフラグ --permission-mode で指定するか、対話中に Shift+Tab で切り替えられます。
| モード | 説明 |
|---|---|
default | 各ツールの初回使用時にユーザーに許可を確認(デフォルト・推奨) |
acceptEdits | ファイル編集を自動許可。レビューの手間を減らしたい時に |
plan | 読み取り専用の Plan Mode。ファイル変更もコマンド実行も不可 |
dontAsk | 事前に許可したツール以外はすべて自動拒否 |
bypassPermissions | すべての確認をスキップ。開発/テスト用途のみ |
注意
bypassPermissions は Claude に無制限のアクセスを与えます。本番環境では絶対に使用しないでください。
権限ルールの書き方
settings.json の permissions セクションで、ツールごとに allow(許可)、ask(確認)、deny(拒否)のルールを定義できます。
json
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git commit *)",
"Read",
"Edit(/src/**/*.ts)"
],
"ask": [
"Edit",
"Write"
],
"deny": [
"Bash(git push *)",
"Bash(rm -rf *)"
]
}
}パターン構文
ルールにはワイルドカードやパスパターンが使えます。
| パターン | マッチ対象 |
|---|---|
Bash | すべてのBashコマンド |
Bash(npm run build) | 完全一致のコマンドのみ |
Bash(npm run *) | npm run で始まるすべてのコマンド |
Edit(/src/**/*.ts) | src 配下の .ts ファイルへの編集 |
WebFetch(domain:example.com) | 特定ドメインへの HTTP リクエスト |
mcp__server__tool | MCP 経由のツール呼び出し |
ルールの優先順位
複数のルールがマッチする場合、Deny が最優先で評価されます。
DENY(拒否)
→
ASK(確認)
→
ALLOW(許可)
ルール評価の優先順序(ホバーで詳細表示)