コンテンツにスキップ

Claude Code 完全ガイド

Claude Code権限モード完全ガイド:6つのモードと設定階層を徹底解説

対象:

Claude Codeの権限システムを体系的に理解し、チーム運用に反映したいDevOps担当者・チームリーダー

この記事のポイント

  1. 権限モードは用途別に6種類あり、Shift+Tabで循環する3つとJSON設定の3つに分かれる
  2. settings.jsonは4階層(Managed → Project → Local → User)の優先度で適用される
  3. 権限とサンドボックスは別レイヤーであり、併用が推奨される

検証環境(2026年3月)

コンポーネントバージョン / 備考
Claude Codev2.0+
権限ドキュメントConfigure permissions - Claude Code Docs1
設定ドキュメントClaude Code settings2

権限システムの全体像

Claude Codeはデフォルトで読み取り専用。ファイル編集やコマンド実行は、すべて明示的な承認を経て実行される1

この動作を制御するのが権限モードallow/deny/askルールHooksサンドボックスの4つの仕組み。ツール呼び出し時の評価順序は以下の通り。

  1. Hooksの評価:PreToolUseフックが実行され、許可・拒否・変更を返す
  2. denyルールの評価:settings.jsonのdenyに該当すればブロック(bypassPermissionsモードでも有効)
  3. allowルールの評価:allowに該当すれば承認
  4. askルールの評価:askに該当すれば確認プロンプト
  5. 権限モードの適用:上記のいずれにも該当しない場合、アクティブなモードに従う

6つの権限モード

Shift+Tabで循環する3モード

セッション中にShift+Tabを押すと、以下の3モードが順に切り替わる1

モードバナー表示動作用途
default(バナーなし)各ツール初回使用時に確認を求める通常の開発作業。安全性を最優先する場面
acceptEdits⏵⏵ accept edits onファイル編集を自動承認。Bashコマンドは個別に確認リファクタリング、テストコード修正など編集中心のタスク
plan⏸ plan mode on読み取り専用。変更やコマンド実行を行わないコードレビュー、調査、実行前の計画立案

JSON設定で有効化する追加モード

以下のモードはsettings.jsondefaultModeまたはCLIフラグで指定する1

モード設定方法動作用途
dontAsksettings.jsonのみallowルールに該当しないツール呼び出しを自動拒否(確認プロンプトなし)ヘッドレスエージェント。許可するツールを明示的に定義し、それ以外をサイレントに拒否する場合
bypassPermissionsclaude --dangerously-skip-permissions or settings.json全権限チェックをスキップ(denyルールとHooksは引き続き評価される)隔離されたコンテナ、VM、CI/CDパイプライン専用
Auto Modeclaude --enable-auto-modeClaudeがリスクを判断し自動承認/確認を切り替え(具体的な判断基準は非公開)リサーチプレビュー(2026年3月〜)。判断基準が非公開のため、隔離環境での利用を推奨3

settings.jsonでのデフォルトモード設定

{
  "defaultMode": "acceptEdits"
}

defaultModeに指定できる値はdefaultacceptEditsplandontAskbypassPermissionsの5つ2。Auto Modeは別系統のCLIフラグで有効化する。


settings.jsonの4階層と優先度

Claude Codeの設定は4つの階層で管理され、上位が下位を上書きする2

優先度種別ファイルパス用途
最高Managed(管理)macOS: /Library/Application Support/ClaudeCode/managed-settings.json、Linux/WSL: /etc/claude-code/managed-settings.json組織全体のポリシー強制(MDM配布可能)
Project(チーム共有).claude/settings.json(ソース管理にコミット)チームで共有するプロジェクト規約
Project Local(個人).claude/settings.local.json(gitignore対象)個人の実験・調整用
最低User(ユーザー)~/.claude/settings.json全プロジェクト共通の個人設定

例えばユーザー設定でallowされた権限が、プロジェクト設定でdenyされている場合、プロジェクト設定が優先されブロックされる。


権限ルールの構文

ルールはToolまたはTool(specifier)の形式で記述する1

基本構文

{
  "permissions": {
    "allow": [
      "Edit",
      "MultiEdit",
      "Bash(npm run *)",
      "Bash(git commit *)"
    ],
    "deny": [
      "Bash(git push *)",
      "Bash(rm -rf *)",
      "Bash(curl *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  }
}

重要な構文ルール

グロブパターンのスペースに注意が必要。Bash(ls *)ls -laにマッチするがlsofにはマッチしない。一方Bash(ls*)は両方にマッチする1

シェル演算子への対応として、Claude Codeは&&などのシェル演算子を認識する。Bash(safe-cmd *)というallowルールはsafe-cmd && other-cmdを承認しない1

MCPツールの指定mcp__サーバー名__ツール名形式を使う。例:mcp__puppeteer__puppeteer_navigate。ワイルドカードmcp__puppeteer__*でサーバー内の全ツールを指定することも可能1

Subagent制御Agent(AgentName)形式で行う。例:Agent(Explore)をdenyに追加するとExploreサブエージェントが無効化される1

Bashパーミッションの制限事項

Bashの権限パターンでコマンド引数を制約するアプローチは脆弱。例えばBash(curl http://github.com/ *)はGitHub URLに制限する意図だが、以下のバリエーションでバイパスされる1

  • URLの前にオプションが付く場合:curl -X GET http://github.com/...
  • プロトコル違い:curl https://github.com/...
  • リダイレクト経由:curl -L http://bit.ly/xyz

推奨される代替手段として、Bashのネットワークツール(curl、wget等)をdenyでブロックし、WebFetch(domain:github.com)で許可ドメインを制御するか、PreToolUseフックでURL検証を実装する1


サンドボックスとの関係

権限システムとサンドボックスは補完的なセキュリティレイヤーであり、併用が推奨される14

レイヤー適用範囲制御内容
権限全ツール(Bash, Read, Edit, WebFetch, MCP等)Claudeがどのツール・ファイル・ドメインにアクセス可能か
サンドボックスBashツールとその子プロセスのみファイルシステムとネットワークへのOSレベルアクセス制限

サンドボックスはmacOSではSeatbelt(v1.0.20以降デフォルト有効)、LinuxではbubblewrapをOSプリミティブとして使用する4

ファイルシステム隔離:作業ディレクトリへの読み書きを許可し、外部ファイルの変更をブロック。ネットワーク隔離:承認済みサーバーへの接続のみ許可し、データの外部送信を防止。

Anthropicの内部テストでは、サンドボックスにより権限プロンプトが84%削減されたと報告されている4


エンタープライズ管理

Managed Settings

組織全体のポリシーを強制するには、Managed Settings(管理設定)を使用する2。MDMまたはファイル配置で配布し、ユーザーやプロジェクト設定よりも常に優先される。

{
  "permissions": {
    "deny": [
      "Bash(rm -rf *)",
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  },
  "disableBypassPermissionsMode": "disable",
  "disableAutoMode": "disable"
}

disableBypassPermissionsMode"disable"に設定すると、--dangerously-skip-permissionsフラグとsettings.jsonのbypassPermissionsモード設定の両方が無効化される1

disableAutoMode"disable"に設定すると、Auto Mode(--enable-auto-mode)が無効化される3

/permissionsコマンド

セッション中に/permissionsコマンドを実行すると、現在適用されている全ルールとそのソース(どのsettings.jsonから来ているか)を一覧表示できる1


Hooksによるプログラマティック制御

PreToolUseフックは権限システムのに実行され、ツール呼び出しの許可・拒否・変更をプログラムから制御する5

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "python3 validate_command.py \"$TOOL_INPUT\"",
        "timeout": 5000
      }
    ]
  }
}

フックの出力JSONで{"hookSpecificOutput": {"permissionDecision": "allow"}}を返すと許可、非ゼロ終了コードで拒否となる。

denyルールの不具合(GitHub Issues #6631等)が報告されているため、セキュリティクリティカルな制限にはdenyルールとHooksの併用が推奨される。


実運用の判断フローチャート

状況推奨モード理由
初めてのリポジトリを調査plan変更リスクゼロで全体像を把握
定型的なリファクタリングacceptEdits編集は自動、コマンドは確認
20ステップ超のエージェンティックタスクAuto Mode判断ベースの自動承認で中断を最小化
CI/CDパイプライン内の自動実行bypassPermissions(コンテナ内)環境自体がセキュリティ境界
ヘッドレスエージェントで許可ツールを固定dontAsk + allowリスト未許可ツールをサイレント拒否
本番資格情報を持つマシンでの作業default + denyリスト全操作を個別確認、機密ファイルをブロック

次に読む記事



  1. Anthropic, "Configure permissions - Claude Code Docs", https://code.claude.com/docs/en/permissions 

  2. Anthropic, "Claude Code settings", https://code.claude.com/docs/en/settings 

  3. Awesome Agents, "Claude Code Gets Auto Mode - No More Permission Prompts", 2026年3月9日, https://awesomeagents.ai/news/claude-code-auto-mode-research-preview/ 

  4. Anthropic Engineering, "Making Claude Code More Secure and Autonomous", https://www.anthropic.com/engineering/claude-code-sandboxing 

  5. Anthropic, "Control execution with hooks", https://docs.anthropic.com/en/docs/claude-code/hooks