Claude Code の defaultMode 4 種類の違いと選び方(default / acceptEdits / plan / bypass)
Claude Code の settings.json で設定する permissions.defaultMode の 4 つの値の違いを表で整理し、個人開発・チーム開発・CI のそれぞれでどれを選ぶべきかを解説します。Shift+Tab による一時的な切り替えとの関係も説明します。
目次
Claude Code の permissions.defaultMode は、「allow にも deny にも一致しなかった操作をどう扱うか」を決める設定です。4 つの値があり、日常的に使うのは default と acceptEdits の 2 つです。
結論として、個人開発なら acceptEdits、初めて触るコードベースや設計作業なら plan、CI や使い捨てコンテナだけ bypassPermissions、が目安です。
KEY POINT
この記事で分かること
- 4 つの defaultMode の違い(何が自動で、何が確認されるか)
- 用途別の選び方
- Shift+Tab や起動オプションによる一時的な切り替えとの関係
4 つの値の比較
| 値 | ファイル読み取り | ファイル編集 | コマンド実行 | 用途 |
|---|---|---|---|---|
default | 自動 | 確認 | 確認 | 初期値。慎重に進めたいとき |
acceptEdits | 自動 | 自動 | 確認 | 日常の開発。編集は任せ、コマンドは見る |
plan | 自動 | 不可 | 不可(読み取り系の一部を除く) | 調査、設計、レビュー |
bypassPermissions | 自動 | 自動 | 自動 | 隔離環境での自律実行のみ |
いずれのモードでも、deny に一致する操作は実行されず、allow に一致する操作は確認なしで実行されます。defaultMode が効くのは、どのルールにも一致しなかった操作だけです。
設定の書き方
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
ユーザー全体の既定にするなら ~/.claude/settings.json、プロジェクトごとなら .claude/settings.json、自分だけなら .claude/settings.local.json に書きます。
用途別の選び方
個人開発:acceptEdits
ファイル編集を毎回確認する手間がなくなり、コマンド実行(テスト、インストール、Git)は確認できます。編集内容は後から git diff でまとめて見る運用にすると効率的です。
初めてのコードベース・設計作業:plan
変更を伴わないので、安心して調査と計画を任せられます。計画に納得してから acceptEdits に切り替えて実装に進みます(Plan Mode の使い方)。
チーム共有の設定:default か acceptEdits
プロジェクトの settings.json に書く場合は、慎重な側に倒しておきます。速く進めたい人は自分の settings.local.json で acceptEdits に上書きできます。
CI・使い捨てコンテナ:bypassPermissions
確認する人がいない環境では、確認待ちで止まらないようにします。ただしすべての操作が自動で通るため、ホスト環境や本番の認証情報がある環境では使わないでください。
bypassPermissions は deny も無視しない
bypassPermissions でも deny は有効です。CI で使う場合でも、rm -rf や force push の deny は入れておいてください。
一時的に切り替える方法
| 方法 | 範囲 |
|---|---|
Shift+Tab | 現在のセッション内。default → acceptEdits → plan を順に切り替え |
claude --permission-mode plan | そのセッションの初期モード |
claude -p ... --permission-mode acceptEdits | 非対話モードの 1 回の実行 |
いずれも設定ファイルは書き換えません。「普段は acceptEdits、今日は調査だけ」のような使い分けは、設定を変えずに Shift+Tab や起動オプションで行います。
関連する設定
defaultMode だけでは「どのコマンドを自動にするか」は決められません。allow / ask / deny と組み合わせた全体の設計は、親記事の settings.json で permissions を設計する を参照してください。
まとめ
- defaultMode は「ルールに一致しなかった操作」の扱いを決める。deny と allow は常に優先される
- 個人開発は
acceptEdits、調査はplan、チーム共有は慎重側、隔離環境だけbypassPermissions Shift+Tabと--permission-modeは一時的な切り替えで、設定ファイルは変わらない
よくある質問
- defaultMode と Shift+Tab の切り替えはどちらが優先されますか?
- Shift+Tab はそのセッション内での一時的な変更で、defaultMode は起動時の初期値です。セッション中の切り替えは設定ファイルを書き換えません。
- acceptEdits にするとコマンドも自動実行されますか?
- されません。acceptEdits はファイルの作成・編集だけを自動許可し、コマンド実行は引き続き確認(または allow ルール)に従います。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。