権限の設定

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 モードはすべてのセキュリティチェックをスキップします。完全に信頼できる自動化環境でのみ使用してください。

🚀
QCode を始めよう — AI プログラミングアシスタント
Claude Code 公式リレー、高速・安定・すぐに使える
料金プランを見る → アカウント登録