Claude Code の bypassPermissions を安全に使える条件

Claude Code 公開:

--dangerously-skip-permissions と bypassPermissions モードで何が無効になるのか、公式が示す隔離環境・非 root・egress 制限の条件、それでも残るリスクと代替手段を整理します。

検証日 2026年9月8日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. 無効になるもの、それでも止まるもの
  2. 有効化の条件
  3. 公式が示す安全に使える条件
  4. 代わりに検討する手段
  5. まとめ

--dangerously-skip-permissions は確認プロンプトを消せますが、公式ドキュメントが示す使用条件ははっきりしています。コンテナ、VM、dev container のような隔離環境で、Claude Code がホストを壊せない状況でのみ使うことです。

普段の開発マシンで常用する設定ではありません。このモードで何が無効になり、何が残るのかを整理します。

KEY POINT

この記事で分かること

  • bypassPermissions で無効になるものと、それでも止まるもの
  • 有効化の条件と、root では起動できない仕様
  • 隔離環境でも残るリスクと、代わりに使える手段

無効になるもの、それでも止まるもの

bypassPermissions は権限プロンプトと安全チェックを無効にし、ツール呼び出しを即座に実行します。通常は自動承認されない protected paths への書き込みも実行されます。

ただし、すべてが素通りになるわけではありません。公式ドキュメントは「どのモードでも自動承認しない操作」を挙げています。

分類bypassPermissions での扱い
deny ルールに一致するツールブロックされる
allow ルール効果がない
明示的な ask ルールに一致するツール確認される
AskUserQuestionrequiresUserInteraction の MCP ツール確認される
critical path を対象にした rm / rmdir確認される
クロスセッションメッセージの安全策 2 つ適用される
blockReadsOutsideWorkingDirectories が有効なときの作業ディレクトリ外の読み取り確認される(v2.1.257 以降)

-p の非対話実行では、これらの「確認されるはずの呼び出し」は確認の代わりに拒否されます。

プロンプトインジェクション対策にはならない

公式ドキュメントは、bypassPermissions がプロンプトインジェクションや意図しない操作に対する保護を提供しないと明記しています。プロンプトを減らしたいだけなら、分類器が実行前に判定する auto モードを検討してください。

有効化の条件

このモードは、有効にせずに開始したセッションからは入れません。起動時に決める必要があります。

claude --permission-mode bypassPermissions
claude --dangerously-skip-permissions

2 つのコマンドは等価です。設定から有効にする場合は permissions.defaultMode"bypassPermissions" を指定しますが、効くのはユーザー設定、--settings、管理者設定だけです。プロジェクトの .claude/settings.json.claude/settings.local.json に書いても効かず、セッションは Manual モードで始まります。Claude Code on the web も設定ファイルからのこのモードを無視します。

そのほかに、次の制約があります。

  1. 初回の対話セッションでは、責任を引き受けるかを尋ねる警告ダイアログが出ます。承諾はユーザー設定に保存され、次回以降は出ません。拒否すると Claude Code は終了します。
  2. 非対話モードではダイアログが出ません。--bg のバックグラウンドセッションは、対話セッションで一度承諾するまで拒否されます。
  3. Linux と macOS では、root または sudo で実行すると起動を拒否し、--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons というメッセージを出します。このチェックは、認識済みのサンドボックス内では自動的にスキップされます。
  4. --restricted を付けて開始したセッションでは、このモードは拒否されます(v2.1.248 以降)。

公式が示す安全に使える条件

次の条件がそろった環境が前提です。

  • 隔離されていること: コンテナ、VM、または sandbox runtime。ホストのシステムを壊せないこと。
  • 非 root で動かすこと: dev container 構成は Claude Code を非 root ユーザーで実行します。remoteUser が非 root アカウントかを確認します。
  • ネットワーク egress を絞ること: 参照実装の dev container には init-firewall.sh が含まれ、許可した宛先だけに送信を制限します。ファイアウォールの実行には NET_ADMINNET_RAW の権限が必要です。
  • 信頼できるリポジトリだけで使うこと: 公式は、信頼できるリポジトリでのみ使い、Claude の動きを監視するよう求めています。

コンテナでも防げないこと

公式ドキュメントは、--dangerously-skip-permissions で実行した場合、dev container は悪意あるプロジェクトがコンテナ内でアクセスできるものを持ち出すことを防がないと明記しています。これには ~/.claude の認証情報が含まれます。~/.ssh やクラウド認証ファイルをマウントせず、リポジトリスコープや短命のトークンを使ってください。バインドマウントしたワークスペースがホスト上のファイルそのものである点にも注意が必要です。

代わりに検討する手段

プロンプトを減らす目的なら、公式は用途ごとの組み合わせを示しています。

やりたいこと使うもの必要な隔離
安全チェックを残してプロンプトを減らすauto モード不要(サンドボックスやコンテナは多層防御になる)
CI で許可リストを厳密に決めて動かす--permission-mode dontAsk--allowedToolsCI ランナーが提供する範囲
ローカルで分類器を使わずプロンプトを減らすManual モード + Bash サンドボックスの auto-allow組み込みの Bash サンドボックス
コンテナ内で完全に無人実行するclaude -p "<prompt>" --dangerously-skip-permissionsコンテナ、VM、または sandbox runtime

組織として使わせたくない場合は、permissions.disableBypassPermissionsMode"disable" にします。管理者設定に置くのが一般的ですが、どのスコープからでも動くため、自分のユーザー設定に書いて自分を締め出すこともできます。

モードごとの違いは defaultMode 4 種類の違いと選び方、非対話実行の組み立ては claude -p で CI やスクリプトから使う にあります。ルール設計全体は親記事の settings.json で permissions を設計する を参照してください。

まとめ

  • --dangerously-skip-permissions--permission-mode bypassPermissions と等価で、起動時にしか有効にできない
  • deny ルール、ask ルール、critical path への rm などは、このモードでも止まる
  • Linux と macOS では root や sudo では起動できず、非 root ユーザーでの実行が前提になる
  • 公式の条件は、隔離環境・非 root・egress 制限・信頼できるリポジトリの 4 点
  • コンテナでも認証情報の持ち出しは防げず、プロンプト削減が目的なら auto モードを先に検討する

よくある質問

--dangerously-skip-permissions と bypassPermissions は違うものですか?
同じものです。公式ドキュメントは --dangerously-skip-permissions を --permission-mode bypassPermissions と等価だと説明しています。
セッションの途中で bypassPermissions に切り替えられますか?
できません。有効にせずに開始したセッションからは入れません。起動時のフラグか、ユーザー設定・--settings・管理者設定の defaultMode で有効にする必要があります。
bypassPermissions でも deny ルールは効きますか?
効きます。deny ルールは bypassPermissions を含むすべてのモードでブロックします。逆に allow ルールは bypassPermissions では効果がありません。

参考にした一次情報

この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。