Claude Codeの--dangerously-skip-permissionsを安全に使う方法
Claude Codeの権限確認を止めつつコンピューターを守る方法。--dangerously-skip-permissionsが何をスキップするか、autoモードで足りる場面、コンテナでの実行方法。
- CLI
- 0.2.17
- プレビュー ref
- a2c45c8
要点
--dangerously-skip-permissions はClaude Codeの権限確認をオフにします。ツール呼び出しは確認なしで実行されます。到達できる範囲を制限する境界の内側なら問題ありませんが、SSH鍵が入ったノートPCではリスクがあります。
簡単な判断リスト:
- 見ている間の確認を減らしたい: まずautoモードか許可リストを試します。チェックが残ります。
- 長時間の無人実行をしたい: コンテナ、VM、dev containerの中で、rootではないユーザーとして、ネットワークの送信先を制限し、ホストの秘密情報をマウントせずに
--dangerously-skip-permissionsを使います。 - 席を外しても連絡がつく状態にしたい: 確認を出す権限モードのままにして、確認にはスマートフォンから答えます。
問題
よくある話です。リファクタリングを始めてキッチンに行き、戻ってくるとターミナルが「Allow this command?」で20分待っていた。2回目にそうなると、Claude Codeの権限確認を止める方法を検索し、--dangerously-skip-permissions にたどり着きます。使う前に、SSH鍵、クラウドの認証情報、ブラウザのプロファイルが入ったノートPCでそれが何を意味するかを考えておく価値があります。
このフラグは実在し、役に立ちます。問題は、どこでなら安全に使えるか、そして安全でないときに何を使うかです。
Claude Codeの --dangerously-skip-permissions がすること
Anthropicの権限モードのページより:
--dangerously-skip-permissionsは--permission-mode bypassPermissionsと同じです。保護されたパスへの書き込みを含め、ツール呼び出しはすぐに実行されます。- 明示的なaskルールや、重要なパスに対する
rm・rmdirによる削除と認識されたものなど、一部の操作は引き続き確認を求めます。 - これを有効にせずに始めたセッションから、bypassモードに入ることはできません。
- LinuxとmacOSでは、rootでこのフラグを付けるとClaude Codeは起動を拒否します。
- Anthropicは、コンテナ、VM、dev containerなどの隔離された環境でのみ使うよう求めています。
サンドボックスのページの表現では、権限モードはツール呼び出しを実行するかどうかを決め、隔離は実行された後に何に到達できるかを決めます。前者を省くと、残るのは後者だけです。
方法1:autoモードや許可リストでClaude Codeの確認を減らす
確認をオフにする前に、その中間のモードを試す価値があります。
autoモード。
claude --permission-mode autoあなたに確認する代わりに、分類器が各操作を審査します。Anthropicはこれを隔離の境界ではなく、操作ごとの制御だと説明しています。対応するモデルが必要で、組織がオフにすることもできます。
スクリプト実行向けの厳密な許可リスト。
claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"リスト外のものは確認されずに拒否されます。CIなど、形の決まったジョブに向いています。
Bashサンドボックス。 手動モードのセッションで、auto-allow付きの /sandbox を使うと、macOS、Linux、WSL2でシェルコマンドをOSレベルで制限できます。対象はシェルコマンドだけなので、無人実行にはこれだけでは足りません。
方法2:コンテナやVMの中でClaude Codeの権限確認をスキップする
手放しで実行したいときは、セッション全体を使い捨てできるものの中に入れます。
dev containerでClaude Codeを動かす
AnthropicはClaude Codeのリポジトリで、デフォルト拒否のファイアウォールスクリプト付きのリファレンスdev containerを公開しています。そのガイダンスを要約すると:
- コンテナ内でClaude Codeをroot以外のユーザーで動かします(dev containerの設定の
remoteUser)。 - ネットワークの送信先をClaude Codeが必要とするドメインに制限します。リファレンスの
init-firewall.shがこれを行い、NET_ADMINとNET_RAWのケーパビリティが必要です。 ~/.sshやクラウドの認証情報ファイルなど、ホストの秘密情報をマウントしません。短命でリポジトリ単位のトークンを優先します。- 信頼できるリポジトリで使います。悪意のあるプロジェクトは、Claude Code自身の認証情報を含め、コンテナ内のものなら何でも読めます。
そのうえで:
claude --dangerously-skip-permissions使い捨てのVMや予備のサーバーを使う
使い捨てのVMや小さなサーバーなら、同じ性質をより確かな境界で得られます。専用のユーザーを作り、タスクに必要なリポジトリだけをクローンし、そのユーザーには本番の認証情報へのアクセスを与えません。
bypassしたセッションがそれでも到達できるものを見直す
- マウントしたワークスペースはあなたのものです。 Claudeはバインドマウントしたプロジェクトのどのファイルも変更でき、その編集はホストに反映されます。長時間の実行の前にコミットかstashをして、差分を見たり元に戻したりできるようにしておきます。
- ネットワークは出入り口のままです。 送信ルールが許すところには、セッションも到達できます。
- 後でレビューします。 マージする前に、他人のプルリクエストと同じようにdiffを読みます。
方法3:Claude Codeの権限確認は残し、スマートフォンから答える
そもそもこのフラグが欲しくなる理由は、たいてい確認そのものではありません。確認が出たときにキーボードの前にいないことです。それには別の解決策があります。
権限確認をスマートフォンに届け、戻るまで実行中のセッションが止まったままにならないようにしつつ、より安全なモードを使い続けたいなら、HappierはClaude Code、Codexなどのエージェントをスマートフォン、デスクトップ、Webからクロスデバイスで実行・オーケストレーションできるオープンソースアプリです。
エージェントはあなた自身のコンピューターで動き、スマートフォン、デスクトップ、Webのアプリがそこに接続します。セットアップはスマートフォンからHappierを使う方法にあります。GitHubで公開されており、こちらからダウンロードでき、Discordもあります。
具体的には:
- 権限確認がスマートフォンに表示され、セッションがあなたを待っているときはプッシュ通知が届きます。そこで許可か拒否を選びます。詳しくは承認のガイドにあります。
- 権限モードはセッションごとに選べます。 セッションの権限チップには、エージェントが対応するモードが並びます。Claudeなら デフォルト(Default)、読み取り専用(Read Only)、オート(Auto)、YOLO です。バックエンドごとのデフォルトは 設定(Settings)→ セッション(Session)→ Permissions にあり、権限変更を適用(Apply permission changes)で、変更をすぐ反映するか次のメッセージから反映するかを決めます。
- YOLOはClaude Codeをbypassモードで動かします。 ClaudeではHappierのYOLOは
--dangerously-skip-permissionsが有効にするのと同じbypassPermissionsモードなので、消去しても構わないコンピューターで選んでください。 - 起動されたセッションは、親の権限モード以下に留まります。 エージェントが別のセッションを起動するとき、より高いモードの要求は拒否されます。設定(Settings)→ Actions → AI セッション作成ポリシー(AI session spawn policy)には 権限上限(Permission ceiling)もあり、エージェントに作業を任せつつ、起動されるものはすべて Read-only に留めることができます。
うまくいく使い方:本物の認証情報に触れる作業はノートPC上の デフォルト のセッションで、長く機械的な作業は使い捨てサーバー上の YOLO のセッションで行い、両方を同じセッション一覧で見ます。
正直な制約:Happierが中継するのは確認と設定で、隔離はセッションが動くコンピューターやコンテナによるものです。
トラブルシューティング
--dangerously-skip-permissions でClaude Codeが起動を拒否する
LinuxとmacOSでは、rootでこのフラグを付けるとClaude Codeは拒否します。コンテナ内で whoami を確認してください。コンテナやVMに通常のユーザーを作り、そのユーザーで実行します。
組織でbypass permissionsモードが無効になっている
管理者はマネージド設定の permissions.disableBypassPermissionsMode でbypassモードを無効にできます。その場合はautoモードか許可リストを使います。
実行中のClaude Codeセッションがbypassモードに切り替わらない
Anthropicのドキュメントによると、有効にせずに始めたセッションからbypassモードには入れません。フラグを付けて新しいセッションを始めてください。
Claude Codeのplanモードで編集が止まらなかった
bypassが使える対話ターミナルのセッションでは、planモードのブロックは強制されないとAnthropicは説明しています。Claudeには計画するよう伝えられますが、試みた編集は実行されることがあります。planモードに頼るときはbypassをオフにしておきます。
よくある質問
--dangerously-skip-permissions は安全?
ネットワークアクセスが制限され、ホストの秘密情報がない、隔離されたroot以外の環境なら、信頼できるリポジトリに対して妥当な選択です。普段使いのコンピューターでは、エージェントがあなたと同じ範囲に到達できます。
autoモードと権限スキップの違いは?
autoモードは確認を、各操作を審査する分類器に置き換えます。bypassモードはチェックを取り除きます。どちらも隔離の境界ではありません。
同じコマンドで何度も確認されないようにするには?
設定にそのコマンドの許可ルールを追加するか、スクリプト実行なら --allowedTools を使います。それ以外の確認は残ります。
HappierのYOLOはCodexでも使える?
HappierにはCodexやその他のバックエンド向けのYOLOもあり、各プロバイダーが独自のポリシーで適用します。Codexでは承認なしのフルアクセスに対応するので、同じ隔離のアドバイスが当てはまります。