Claude Codeには4つのパーミッションモード(default・plan・auto・bypass)があり、AIエージェントにどこまでの自律性を許可するかを制御できます。 プロジェクトの性質やチームのセキュリティ要件に合わせて適切なモードを選択することで、安全性を維持しながらAIの生産性を最大化できます。
この記事でわかること
Claude Codeを安全に運用するには、パーミッションモードの理解が不可欠です。この記事では、4つのモードの使い分けから、チーム全体でのポリシー統一まで、実務に直結する設定方法を体系的に解説します。
- Claude Codeの4つのパーミッションモード(default・plan・auto・bypass)の動作の違い — モードによって、エージェントの自律性と安全性のバランスが変わります。
allowedToolsリストによるツール単位の細かい権限制御の方法 — autoモードの中核となるのがリストです。どのツールを許可し、どのツールをブロックするかを細かく制御できます。
- チーム規模・プロジェクト種別に応じたモード選択の実践的な判断基準 — 新しいプロジェクトやチームメンバーはモードから開始し、信頼が確立されたらモードに移行するパターンです。
対象読者: Claude Codeをチームで導入している・導入を検討しているエンジニア、テックリード、セキュリティ担当者
パーミッションモードとは
パーミッションモードは、Claude Codeがファイル編集やコマンド実行などのツールを使う際に、ユーザーの承認を求めるかどうかを制御する仕組みです。モードによって、エージェントの自律性と安全性のバランスが変わります。
4つのモードの詳細比較
モード一覧
| モード |
自律性 |
承認要求 |
推奨シーン |
default |
低 |
書き込み系ツールはすべて承認を要求 |
初めてのプロジェクト、慎重な作業 |
plan |
最低 |
読み取り専用。書き込み・実行はすべて拒否 |
コード分析、設計レビュー、調査 |
auto |
高 |
allowedToolsに含まれるツールは自動承認 |
繰り返し作業、信頼できるプロジェクト |
bypass |
最高 |
すべてのツールを自動承認(承認なし) |
CI/CD、完全自動化パイプライン |
defaultモード
defaultモードは、Claude Codeの標準的な動作モードです。ファイルの読み取り(Read、Glob、Grep)は承認なしで実行されますが、ファイルの書き込み(Edit、Write)やコマンド実行(Bash)は毎回ユーザーの承認を求めます。
[Claude Code] src/index.tsを編集します。よろしいですか?
> Yes / No / Always allow for this session
初めて触るプロジェクトや、本番環境に影響するファイルを扱う場合に適しています。承認のたびにAIの行動を確認できるため、意図しない変更を防止できます。
planモード
planモードは、Claude Codeを「読み取り専用のアナリスト」として使うモードです。ファイルの読み取りは可能ですが、書き込みやコマンド実行は一切できません。
claude --mode plan
コードベースの分析、アーキテクチャレビュー、バグの原因調査など、「調べるだけで変更は不要」なタスクに最適です。誤操作によるファイル変更のリスクをゼロにできます。
autoモード
autoモードは、allowedToolsリストに含まれるツールを自動的に承認し、それ以外のツールは承認を求めるモードです。
claude --mode auto --allowedTools "Edit,Write,Bash(npm test),Bash(npm run build)"
上記の例では、ファイル編集、ファイル作成、npm test、npm run buildの実行は承認なしで自動実行されます。それ以外のBashコマンド(rm、git pushなど)は承認を求めます。
autoモードは、信頼できるプロジェクトで繰り返し作業を効率化したい場合に最適です。必要なツールだけを許可し、危険なコマンドはブロックするという「最小権限の原則」を実現できます。
bypassモード
bypassモードは、すべてのツールを承認なしで自動実行するモードです。ユーザーの介入は一切ありません。
claude --mode bypass -p "テストを実行して、失敗したテストを修正してください"
CI/CDパイプラインや、SDK経由の完全自動化シナリオで使用します。人間が監視していない環境で使うため、実行環境のセキュリティ(サンドボックス、ネットワーク制限など)で安全性を担保する必要があります。
autoモードの中核となるのがallowedToolsリストです。どのツールを許可し、どのツールをブロックするかを細かく制御できます。
ツール指定の構文
| 指定方法 |
例 |
動作 |
| ツール名のみ |
Edit |
そのツールのすべての呼び出しを許可 |
| ツール名+引数パターン |
Bash(npm test) |
特定のコマンドのみ許可 |
| ワイルドカード |
Bash(npm *) |
npmで始まるコマンドをすべて許可 |
| MCP+ツール名 |
mcp__slack__send_message |
MCPサーバーの特定ツールを許可 |
開発者向け(コーディング作業)
{
"allowedTools": [
"Edit",
"Write",
"Bash(npm test)",
"Bash(npm run build)",
"Bash(npm run lint)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(git diff *)",
"Bash(git status)",
"Bash(git log *)"
]
}
ファイル編集、テスト実行、ビルド、リント、Gitの基本操作を許可しています。git pushやrm -rfのような破壊的コマンドは許可リストに含まれないため、承認を求められます。
レビュアー向け(読み取り+コメント)
{
"allowedTools": [
"Read",
"Glob",
"Grep",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git show *)"
]
}
ファイルの読み取りとGitの差分確認のみを許可しています。コードレビューの分析タスクに最適です。
CI/CD向け(ビルド+テスト+デプロイ)
{
"allowedTools": [
"Edit",
"Write",
"Bash(npm *)",
"Bash(git *)",
"Bash(gh pr create *)"
]
}
npmコマンド、Gitコマンド、GitHub CLIによるPR作成を包括的に許可しています。CI/CD環境では、実行環境自体がサンドボックス化されているため、広めの権限を付与しても安全です。
設定ファイルでの管理
パーミッション設定はコマンドライン引数だけでなく、設定ファイルで管理できます。
プロジェクト設定(.claude/settings.json)
{
"permissions": {
"defaultMode": "auto",
"allowedTools": [
"Edit",
"Write",
"Bash(npm test)",
"Bash(npm run build)"
]
}
}
プロジェクト設定はGitリポジトリに含まれるため、チーム全体で統一したパーミッションポリシーを適用できます。
ユーザー設定(~/.claude/settings.json)
{
"permissions": {
"defaultMode": "default"
}
}
ユーザー設定はプロジェクト設定より優先度が低く、プロジェクトで指定された設定が適用されます。ただし、ユーザー設定でbypassモードを禁止するなど、安全側への制限は可能です。
設定の優先順位
設定の優先順位は以下の通りです。
- コマンドライン引数(
--mode auto) — 最優先
- プロジェクト設定(
.claude/settings.json) — プロジェクト単位
- ユーザー設定(
~/.claude/settings.json) — グローバル
チーム運用パターン
パターン1: 段階的権限昇格
新しいプロジェクトやチームメンバーはdefaultモードから開始し、信頼が確立されたらautoモードに移行するパターンです。
Week 1-2: defaultモード(全操作を確認)
↓ プロジェクト構造を理解・信頼関係構築
Week 3-4: autoモード(基本操作を自動承認)
↓ ワークフローが安定
Week 5+: autoモード + 拡張allowedTools(より広い自動承認)
パターン2: タスク別モード切り替え
同じプロジェクト内でも、タスクの性質に応じてモードを切り替えるパターンです。
| タスク |
推奨モード |
理由 |
| コード分析・レビュー |
plan |
変更不要。読み取りのみで安全 |
| 新機能開発 |
auto |
効率重視。allowedToolsで制御 |
| 本番環境のデバッグ |
default |
慎重さが必要。毎回確認 |
| CI/CDパイプライン |
bypass |
完全自動化。環境で安全性担保 |
パターン3: 組織ポリシーによる統一管理
組織全体でパーミッションポリシーを統一する場合、.claude/settings.jsonをテンプレートとして全プロジェクトに配布します。
{
"permissions": {
"defaultMode": "auto",
"allowedTools": [
"Edit",
"Write",
"Bash(npm *)",
"Bash(yarn *)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(git diff *)",
"Bash(git status)",
"Bash(git log *)"
],
"blockedTools": [
"Bash(rm -rf *)",
"Bash(git push --force *)",
"Bash(git reset --hard *)"
]
}
}
破壊的コマンドを明示的にブロックすることで、autoモードの利便性を維持しながらリスクを制御しています。
関連コマンドとの組み合わせ
Hooksとの連携
Hooksを使えば、ツール実行の前後にカスタムスクリプトを挟めます。パーミッションモードとHooksを組み合わせることで、「autoモードで自動承認しつつ、特定のツール実行時にはログを記録する」といった柔軟な制御が可能です。
CLAUDE.mdとの関係
プロジェクトの.claude/CLAUDE.mdに記載したルールは、パーミッションモードとは独立して動作します。パーミッションモードはツール実行の「承認/拒否」を制御しますが、CLAUDE.mdはエージェントの「行動指針」を制御します。両方を適切に設定することで、安全かつ的確なエージェント運用が実現します。こうした取り組みの詳細は、経営データの可視化やコンテンツマーケティングの支援のページでもご紹介しています。
設定確認
パーミッション設定が意図通りに適用されているか不明な場合は、/config コマンドで現在の設定状況を確認できます。設定ファイルの読み込み状況や、適用されているモードを確認できます。
あわせて読みたい
まとめ
パーミッションモードは、Claude Codeの安全性と生産性のバランスを決定する最重要設定です。defaultは慎重な作業、planは読み取り専用の分析、autoはallowedToolsによる柔軟な自動承認、bypassは完全自動化に、それぞれ最適化されています
押さえておきたいポイントは以下の通りです。
- チームでの運用では、
.claude/settings.jsonでポリシーを統一し、タスクの性質に応じてモードを切り替えることが実践的です
- まずは
defaultモードで始め、プロジェクトへの理解が深まったらautoモードに移行するのが安全なアプローチです
- *Claude Codeの全コマンド一覧はClaude Codeチートシートをご覧ください
- AI活用の全体像はAI活用完全ガイドで解説しています
よくある質問(FAQ)
Q1. autoモードとbypassモードの違いは何ですか?
autoモードはallowedToolsに指定したツールのみ自動承認し、それ以外は承認を求めます。bypassモードはすべてのツールを無条件で自動承認します。autoモードは「許可リスト方式」、bypassモードは「全許可方式」と理解してください。日常の開発作業にはautoモード、CI/CDなどの完全自動化環境にはbypassモードが適しています。
はい、Bash(コマンドパターン)の形式で細かく制御できます。Bash(npm test)ならnpm testのみ、Bash(npm )ならnpmで始まるすべてのコマンドが許可されます。正確なコマンド名で指定するほどセキュリティが高まりますが、利便性とのバランスを考慮してください。Bash(rm -rf )のように明示的にブロックしたいコマンドはblockedToolsに追加することも可能です。
Q3. パーミッション設定をチーム全体で統一するにはどうすればよいですか?
.claude/settings.jsonをGitリポジトリに含めてコミットしてください。このファイルはプロジェクト単位のパーミッション設定として、全チームメンバーに適用されます。組織内の複数プロジェクトで統一する場合は、設定ファイルのテンプレートを作成し、新規プロジェクト作成時に配布する運用が効果的です。