権限の設定
Claude Code の権限モードを設定し、どの操作に人間による確認が必要かを制御する
権限の設定¶
Claude Code は権限システムを使用して、どの操作にユーザーの確認が必要かを制御します。権限を適切に設定することで、安全性を確保しながら開発効率を高めることができます。
4 つの権限モード¶
| モード | 説明 | 適用シーン |
|---|---|---|
default |
ツールを初めて使用する際に権限を確認 | 日常的な開発、安全性と効率のバランス |
acceptEdits |
ファイル編集を自動承認、その他の操作は確認が必要 | 頻繁なファイル修正が必要なタスク |
plan |
分析のみで実行しない(Plan Mode) | コードの探索・レビュー、Claude に変更を加えさせたくない場合 |
bypassPermissions |
すべての権限プロンプトをスキップ | CI/CD 自動化、信頼できる安全な環境 |
権限モードの切り替え¶
Shift+Tabを押して権限モードを循環切り替えShift+Tabを 2 回押して Plan Mode に入る(Escape で終了)- ダイアログで直接モードを選択
デフォルト権限モードの設定¶
.claude/settings.json で設定します:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
Allow ルール:コマンドの事前承認¶
特定のコマンドを事前に承認して、毎回確認を求められないようにします:
{
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test:*)",
"Bash(git status)",
"Bash(git add:*)",
"Bash(git diff:*)"
]
}
}
Allow ルールの構文:
Bash(コマンド)— コマンドの完全一致Bash(コマンドプレフィックス:*)— そのプレフィックスで始まるコマンドに一致Read(ファイルパス)— 特定ファイルの読み取りを許可Write(ファイルパス)— 特定ファイルへの書き込みを許可
Deny ルール:機密ファイルの保護¶
Claude が機密ファイルにアクセスまたは変更するのを防ぎます:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Write(./.git/**)",
"Bash(rm -rf:*)"
]
}
}
Deny ルールの構文:
- パスパターンは
*(単一レベル)と**(複数レベル)のワイルドカードをサポート - Deny ルールは Allow ルールより優先度が高い
Allow と Deny の併用¶
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff)"
],
"deny": [
"Bash(git push:*)",
"Bash(rm -rf:*)",
"Read(./.env*)"
]
}
}
設定ファイルの階層¶
Claude Code は以下の優先順位で権限設定をマージします:
| 優先度 | 場所 | 適用範囲 |
|---|---|---|
| 最高 | .claude/settings.local.json(Git にコミットしない) |
個人ローカルの上書き |
| 中 | .claude/settings.json(Git にコミット) |
チーム共有設定 |
| 最低 | ~/.claude/settings.json |
グローバルユーザー設定 |
チームコラボレーションの推奨事項:
- チーム共通の allow/deny ルールを
.claude/settings.jsonに記述して Git にコミットする - 個人の特別なニーズは
.claude/settings.local.jsonに記述して.gitignoreに追加する
ベストプラクティス¶
1. 機密認証情報の保護
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./credentials/**)",
"Read(./.ssh/**)"
]
}
}
2. フロントエンドプロジェクトの設定
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(npm run dev)",
"Bash(npm run build)",
"Bash(npm run test:*)",
"Bash(npm run lint:*)"
]
}
}
3. CI/CD 自動化
{
"permissions": {
"defaultMode": "bypassPermissions"
}
}
⚠️ 注意:
bypassPermissionsモードはすべてのセキュリティチェックをスキップします。完全に信頼できる自動化環境でのみ使用してください。