Claude Code の permission モードは、どの操作を確認なしで実行するかを決めます。default(Manual と表示)は編集やシェルコマンドの前に確認します。acceptEdits はファイル編集と一般的なファイル操作コマンドも許可します。plan では Claude は読み取りと計画の提案のみ行い、編集はしません。auto ではバックグラウンドの分類器があなたの代わりに操作を承認します。dontAsk は確認が必要な操作をすべて拒否します。bypassPermissions は --dangerously-skip-permissions で有効になり、確認をほぼすべて省略します。隔離されたコンテナや VM 専用です。モードは Shift+Tab で切り替えるか、claude --permission-mode <mode> で起動時に指定します。
このガイドは Anthropic の permission モードのドキュメントに基づいています。Claude Code は頻繁に更新されるため、使用中のバージョンについてはそちらを確認してください。
016 つのモードの概要
default(Manual)読み取りのみすべての操作を確認したい場合、機密性の高い作業acceptEdits読み取り、ファイル編集、および作業ディレクトリ内での mkdir、touch、mv、cp などの一般的なファイル操作コマンド様子を見ながらコードを反復的に修正する場合plan読み取りのみ。プランを承認するまで編集はブロックされます変更を加える前にコードを調査する場合autoすべて。ただし各操作の前に分類器がチェックします確認プロンプトを減らして長いタスクを進めたい場合dontAsk作業ディレクトリ内の読み取りと事前に許可したツールのみ。それ以外はすべて拒否されますCI や制限付きスクリプトbypassPermissions一部の例外を除きすべて隔離されたコンテナや VM のみdefault は設定、hook、--permission-mode フラグで使われる名前です。CLI、IDE 拡張機能、デスクトップアプリでは Manual と表示され、CLI では manual をエイリアスとして指定することもできます。
02モードの切り替え方
terminal では Shift+Tab を押します。default、acceptEdits、plan の順に切り替わり、その後にセッションで許可されているオプションのモードが続きます。dontAsk はこの切り替えには含まれず、フラグでのみ指定できます。
特定のモードでセッションを開始するには:
claude --permission-mode plan
特定のモードをデフォルトにするには、~/.claude/settings.json で設定します:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
フラグは設定より優先され、設定は組み込みのデフォルトより優先されます。1 つ注意すべき制限があります。auto と bypassPermissions は、プロジェクトの .claude/settings.json や .claude/settings.local.json に書いても有効になりません。リポジトリが勝手に bypass モードにすることはできないということです。この 2 つはユーザー設定で指定するか、フラグで渡してください。
新しいセッションの初期モード
Claude Code の最近のバージョン(v2.1.283 以降)では、auto モードが利用可能な場合、設定で別途指定しない限り、対話型の terminal セッションと VS Code セッションは auto で開始されます。claude -p と Agent SDK の実行は default で開始されます。モードを選んだ覚えがないのに確認プロンプトが少ないと感じたら、これが理由です。
03各モードの詳細
default(Manual)
Claude は確認なしでファイルを読み取れます。編集、シェルコマンド、ネットワークアクセスはそれぞれ確認プロンプトが表示されます。Bash のプロンプトで「Yes, and don't ask again」を選ぶと、.claude/settings.local.json に allow ルールが保存され、このリポジトリではそのコマンドについて再度確認されなくなります。ファイル編集の承認はセッション終了まで有効です。
acceptEdits
作業ディレクトリ内での編集と簡単なファイル操作コマンド(mkdir、touch、rm、rmdir、mv、cp、sed)は確認なしで実行されます。その他のシェルコマンドは引き続き確認されます。diff をリアルタイムで見ながら作業する場合にちょうどよい中間的なモードです。
plan
Claude は読み取りと読み取り専用コマンドで調査し、プランを提示します。承認するまでソースは一切編集されません。慣れていないコードやリスクの高い変更に使いましょう。
auto
別のモデルが各操作を実行前にレビューし、依頼の範囲を超える操作、認識できないインフラを対象とする操作、悪意のあるコンテンツに誘導されたと思われる操作をブロックします。明示的な ask ルールは引き続き確認プロンプトを表示します。分類器が 3 回連続、またはセッション内で計 20 回操作をブロックすると、auto モードは一時停止し、通常の確認プロンプトに戻ります。Anthropic 自身も、auto モードは「確認プロンプトを減らすが、安全性を保証するものではない」と述べています。
dontAsk
確認プロンプトが必要な操作はすべて拒否されます。実行されるのは allow ルールに一致する操作と、承認が不要な操作のみです。応答する人がいないスクリプトや CI 向けのモードです。
bypassPermissions と --dangerously-skip-permissions
--dangerously-skip-permissions は --permission-mode bypassPermissions と同じです。.git や .claude などの保護されたパスへの書き込みも含め、確認プロンプトはスキップされます。ただし、明示的な ask ルール、AskUserQuestion、一部の危険な rm コマンドなど、どのモードでも確認または拒否されるものがいくつかあります。deny ルールも引き続きブロックします。
Anthropic は、インターネットにアクセスできないコンテナ、VM、dev container でのみ使用するよう推奨しています。Mac と Linux では、認識されたサンドボックス外で root または sudo で実行した場合、Claude Code はこのモードでの起動を拒否します。bypass を有効にはせず選択肢として使えるようにしたいだけなら、--allow-dangerously-skip-permissions を使うと、切り替えずに Shift+Tab の切り替え候補に追加できます。
04ルールはモードの上に適用される
モードは基本的な動作を決めます。設定の permission ルールでそれを細かく調整できます:
{
"permissions": {
"allow": ["Bash(npm run test *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"]
}
}
ルールは deny、ask、allow の順にチェックされ、最初に一致したものが適用されます。deny ルールは bypassPermissions を含むすべてのモードでブロックします。allow ルールは bypassPermissions では効果がありません。もともとすべて許可されているためです。/permissions を実行すると、すべてのルールとその定義元のファイルを確認できます。
hook も関与できます。PreToolUse hook はどのモードでもツール呼び出しをブロックできます。PermissionRequest hook は確認プロンプトに代わりに応答できますが、deny ルールを上書きすることはできません。方法は PermissionRequest ガイドで説明しています。
05席を離れるときのモードの選び方
--dangerously-skip-permissions を使いたくなる理由の多くは、Claude を動かしたまま離席し、戻ったときにセッションが prompt で止まっていた、という事態を避けたいからです。これは確かに困る問題ですが、bypass モードは自分のマシン上での監視そのものをなくすことで解決しています。
より安全な組み合わせには次のようなものがあります。
- 定型的なコマンドには allow ルールを使う。 テスト、lint、ビルドのコマンドを
allowに追加し、git pushやデプロイはaskのままにして、defaultまたはacceptEditsモードで使います。 - auto モードは、定型的な操作を分類器の判断に任せてもよい長時間タスク向けです。
- prompt を自分のいる場所に届ける。 確認を求めるモードのまま、重要な数件の prompt だけをスマートフォンから応答します。
最後の方法を実現するのが Claude Code Notifier です。Anthropic 製ではない独立したツールです。コマンドラインツールの ccn が Mac、Windows、Linux 上で Claude Code の hook として動作します。キーボードから離れているときに Claude Code が許可を求めようとすると、そのリクエストがペアリング済みの iPhone または Android スマートフォンに届き、1 回だけ許可、セッション中は許可、拒否のいずれかを選べます。対象は Claude Code がもともと表示するはずだった prompt だけなので、何を確認するかは引き続きモードとルールで決まります。auto モードではリクエストが減り、bypassPermissions ではまったく来なくなりますが、「Claude が完了しました」の通知や質問は引き続き届きます。セットアップはスマートフォンでの承認ガイドを、リスクについてはスマートフォンから承認しても安全かをご覧ください。
06よくある質問
default と acceptEdits の違いは何ですか?
default は、ファイル編集とシェルコマンドのたびに確認を求めます。acceptEdits では、作業ディレクトリ内でのファイル編集や、mkdir、mv、cp などの一般的なファイル操作コマンドは確認なしで実行されます。それ以外のシェルコマンドはどちらのモードでも確認が表示されます。
--dangerously-skip-permissions は bypassPermissions と同じですか?
はい。このフラグは --permission-mode bypassPermissions と同等です。Anthropic は、隔離されたコンテナや VM、できればインターネットに接続されていない環境でのみ使うことを推奨しています。
特定のコマンドだけ Claude Code に許可を求めさせないようにするには?
prompt で「Yes, and don't ask again」を選ぶか、設定の permissions.allow に "Bash(npm test)" のような allow ルールを追加します。モード全体を変えるよりも安全です。
プロジェクトの設定で bypassPermissions モードにされることはありますか?
いいえ。.claude/settings.json や .claude/settings.local.json に書かれた bypassPermissions や auto は無効です。これらはユーザー設定、管理設定、またはコマンドラインフラグからのみ適用されます。
bypassPermissions モードでも hook は実行されますか?
はい。hook はすべてのモードで実行され、ツール呼び出しを拒否する PreToolUse hook は bypassPermissions でもその呼び出しをブロックします。一方、PermissionRequest hook は応答すべき prompt があるときにしか実行されないため、bypass モードではほとんど発火しません。