case_1138

dangerously-skip-permissionsの危険と安全な使い方

dangerously-skip-permissionsの危険と安全な使い方

Claude Codeの--dangerously-skip-permissionsは確認なしで操作を通すフラグ。公式が求めるコンテナ・非rootでの使い方、有効化の方法、効かない原因、代わりのauto modeまで整理しました。

2026年10月5日時点の公式ドキュメントで確認した結論から書く。Claude Codeの --dangerously-skip-permissions は、権限モードを bypassPermissions にして、ファイル編集もコマンド実行も確認なしで通すフラグだ。公式はこのモードを「インターネットに出られないコンテナ・VM・dev containerのような隔離環境だけで使う」よう警告しており、LinuxとmacOSではrootやsudoで起動すると拒否される。手元のPCで確認を減らしたいだけなら、分類器が操作を審査するauto modeか、Bashのサンドボックスを使うのが公式の示す代わりの道になる(Anthropic「Choose a permission mode」)。

「claude code dangerously skip permissions」で調べる人の目的は、だいたい3つある。毎回の確認を止めたい。VS Codeや設定ファイルで既定にしたい。付けたのに効かない理由を知りたい。この記事では、AnthropicのClaude Code公式ドキュメントとエンジニアリング記事に書かれている内容だけを使って、このフラグで何が起きるか、どこでなら使ってよいか、効かない時の直し方と代わりの選択肢を順に並べる。

この記事の要点

何が起きるか

  • 確認が消える:ファイル編集、コマンド、ネットワークへのアクセスを確認なしで実行する。.git・.claude・.zshrc のような保護されたパスへの書き込みも通る。
  • それでも止まるもの:denyルール、明示したaskルール、ホームディレクトリや作業ディレクトリなど重要なパスを消す rm。
  • 防げないもの:プロンプトインジェクション。公式は、このモードがプロンプトインジェクションにも意図しない操作にも保護を提供しないと明記している。

使ってよい条件

  • コンテナ・VM・sandbox runtimeの中で、root以外のユーザーとして動かす。
  • 外向きの通信を絞り、ホストの ~/.ssh やクラウドの認証ファイルをマウントしない。
  • 手元のPCで確認を減らしたいだけなら、auto modeかBashのサンドボックスを先に検討する。

読んでほしい人と今日やること

  • 対象読者:確認の多さに疲れた開発者、CIや夜間の作業でClaude Codeを無人で動かしたい人、チームの権限設定を決める担当者。
  • 今日やること:使う予定の環境で whoami を打ち、rootでないことを確かめる。チームで禁止したいなら、管理設定に "disableBypassPermissionsMode": "disable" を入れる。

dangerously-skip-permissionsは何をするフラグか

bypassPermissionsモードと同じ意味

CLIリファレンスでは、--dangerously-skip-permissions は権限の確認をスキップするフラグで、--permission-mode bypassPermissions と同じ意味だと説明されている(Anthropic「CLI reference」)。Claude Codeの権限モードは6つあり、確認なしで動く範囲がモードごとに違う。公式の一覧を日本語にすると次のとおりだ(Anthropic「Choose a permission mode」)。

--dangerously-skip-permissionsのフラグがbypassPermissionsモードに入り確認なしで通す流れと、それでも止まるものとしてdenyルール・askルール・重要なパスを並べた図
図解1|フラグはbypassPermissionsモードそのもの。それでも止まるものがある
モード 確認なしで動くもの 向いている場面
default(Manual) 読み取りだけ すべての操作を自分で確かめたい作業
acceptEdits 読み取り、ファイル編集、mkdir・touch・mv・cp などのよく使うファイル操作 見ながらコードを直す作業
plan 読み取り(auto modeが使える時は、分類器が通したコマンドも) 変更する前にコードを調べる
auto すべて。ただし裏で安全チェックが走る 長い作業、確認疲れを減らしたい時
dontAsk 読み取りと、事前に許可したツールだけ。確認が要るものは拒否 固めたCIやスクリプト
bypassPermissions すべて 隔離したコンテナとVMだけ

最後の行が、--dangerously-skip-permissions で入るモードだ。公式の表で、向いている場面が「隔離したコンテナとVMだけ」と書かれているのはこのモードしかない。

それでも止まるもの

公式は、どのモードでも自動では通さない操作を挙げている。bypassPermissions でも、次のものは確認が出るか拒否される(Anthropic「Choose a permission mode」)。

  • 明示的なaskルールに当たるツール
  • AskUserQuestion のように、ユーザーの操作が要るツール
  • ファイルシステムのルート、ホームディレクトリ、作業ディレクトリとその親といった「重要なパス」を消す rm・rmdir
  • permissions.blockReadsOutsideWorkingDirectories を有効にしている時の、作業ディレクトリの外の読み取り(Claude Code v2.1.257以降・Anthropic「Choose a permission mode」)

最後の項目の設定は、Claude Code外部読取制御|設定5手順 で詳しく扱っている。denyルールも、bypassPermissions を含むすべてのモードで効く。反対に、allowルールはこのモードでは効果が無い。

重要なパスの削除は2分で打ち切られる

重要なパスを消す rm が来ると、bypassPermissions でもターミナルに確認が出る。この確認には2分のカウントダウンが付き、答えないまま時間が切れると、Claude Codeはそのコマンドを拒否してClaudeに別のやり方を伝える。何かキーを押せばカウントダウンは止まる。1つのセッションで3回時間切れになると、それ以降の重要なパスの削除は確認なしで拒否され、新しいメッセージを送ると数え直しになる。この動きはClaude Code v2.1.281以降のもので、環境変数 CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1 を設定すると時間制限が外れる(Anthropic「Choose a permission mode」)。

確認なしで通るようになるもの

ほかのモードとの一番の違いは、保護されたパスへの書き込みだ。公式は、リポジトリの状態とClaude自身の設定を誤って壊さないように、一部のパスへの書き込みを自動では通さない。対象は .git・.vscode・.idea・.husky・.devcontainer・.claude(一部を除く)などのディレクトリと、.gitconfig・.bashrc・.zshrc・.npmrc・.mcp.json・.claude.json などのファイルだ。default と acceptEdits では確認が出て、auto では分類器に回り、dontAsk では拒否される。bypassPermissions だけは、そのまま通る(Anthropic「Choose a permission mode」)。

もう1つ、対話型のターミナルでbypass permissionsが使える状態だと、plan modeの書き込み禁止も強制されない。Claudeには「編集せずに計画する」よう指示が出るが、計画中に試みた編集やコマンドは確認なしで実行される。

なぜ「dangerously」なのか

プロンプトインジェクションを防がない

公式の警告ははっきりしている。bypassPermissions は、プロンプトインジェクションにも意図しない操作にも保護を提供しない(Anthropic「Choose a permission mode」)。auto modeの分類器は、Claudeが読んだ悪意のある内容に引きずられたように見える操作を止めるよう作られている。bypassPermissions には、この審査も人の確認も無い。READMEやIssue、Webページに紛れた指示が、そのままコマンドになる余地が残る。

プロンプトインジェクション、保護されたパス、認証情報の3段を左に積み、保護を提供しないの注記と、右に.zshrc、~/.ssh、コンテナの中の例を並べた図
図解2|保護を提供しない3つの範囲

Claude Codeを閉じても残る変更ができる

保護されたパスの一覧には、シェルの起動ファイル(.bashrc・.zshrc・.profile など)とGitの設定(.gitconfig・.git)が入っている。ここに書かれた内容は、次にターミナルを開いた時やGitを動かした時にも効く。確認なしで書き込めるということは、1回の作業の失敗が、セッションの外まで持ち越されうるということだ。

コンテナの中でも持ち出しは防げない

dev containerの公式ページは、--dangerously-skip-permissions で動かした場合、悪意のあるプロジェクトがコンテナの中から読めるものを外へ持ち出すのは防げないと警告している。対象には、~/.claude に保存されたClaude Code自身の認証情報も含まれる。そのため公式は、信頼できるリポジトリだけで使うこと、ホストの ~/.ssh やクラウドの認証ファイルをコンテナにマウントしないこと、リポジトリ単位か短命のトークンを使うことを求めている(Anthropic「Development containers」)。ワークスペースをバインドマウントしている場合、Claudeが書き換えたファイルがそのままホストにも反映されることも、同じページに書かれている。

Anthropic自身の評価

Anthropicは2026年3月25日のエンジニアリング記事で、ユーザーは権限確認の93%を承認していると書いている。確認疲れから抜ける手段として、組み込みのサンドボックスと --dangerously-skip-permissions の2つを挙げたうえで、後者は「ほとんどの状況で安全ではない」と評価した(Anthropic「How we built Claude Code auto mode: a safer way to skip permissions」(2026年3月25日))。

使ってよい場所の条件

公式が求める隔離

公式のサンドボックス環境のページは、--dangerously-skip-permissions のセッションを必ずコンテナ・VM・sandbox runtimeの中で動かすよう求めている。そうすれば、ファイルを扱うツールもMCPサーバーもフックも、同じ境界の内側に入るからだ。Bashのサンドボックスだけではシェルのコマンドしか縛れないため、完全な無人実行には足りないとも書かれている(Anthropic「Choose a sandbox environment」)。

コンテナ・VM・sandbox runtime、root以外のユーザー、外向きの通信を絞る、マウントしない、信頼できるリポジトリの5つの条件が、無人実行の1つの箱に集まる図
図解3|5つの条件がそろって初めて無人実行に使える

公式の記述を、自分の環境で確かめられる条件に直すと次の5つになる。

  1. コンテナ・VM・sandbox runtime(@anthropic-ai/sandbox-runtime)の中で動かす。sandbox runtimeはベータのリサーチプレビューという位置づけだ
  2. root以外のユーザーで動かす
  3. 外向きの通信を絞る。公式の参考dev containerは、既定ですべて拒否するファイアウォールを持っている
  4. ホストの ~/.ssh やクラウドの認証ファイルをマウントしない
  5. 信頼できるリポジトリだけで使う

rootやsudoでは起動しない

LinuxとmacOSでは、rootやsudoでこのモードを始めようとすると、次のメッセージで起動を拒否される(Anthropic「Choose a permission mode」)。

--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

Claude Codeが認識できるサンドボックスの中では、このチェックは自動で省かれる。コンテナで無人実行するなら、Claude Codeをroot以外のユーザーで動かす公式のdev container構成を使うのが近道だ。

dev containerで無人実行する

公式のdev containerは、Claude Codeをroot以外のユーザーで動かし、コマンドの実行をコンテナの中に閉じ込める。そのため、無人で動かすために --dangerously-skip-permissions を付けてよいとされている。条件は、remoteUser がroot以外のアカウントになっていることだ。公式は、このフラグを外向き通信の制限と組み合わせるよう勧めている(Anthropic「Development containers」)。チームでの導入の進め方は Claude Code Dev Container安全導入 にまとめた。

参考になるdev containerは、GitHub anthropics/claude-code「.devcontainer」 で公開されている。dev container自体の仕組みは、Visual Studio Code「Developing inside a Container」 が詳しい。

# dev container の中で実行する
whoami        # root ではないことを確かめる

# 1回だけ実行して終わる(-p は非対話モード)
claude -p "テストを実行して、失敗したものを直して" --dangerously-skip-permissions

-p の非対話モードでは初回の確認ダイアログが出ない。本来なら確認が出る数少ない操作は、確認の代わりに拒否される(Anthropic「Choose a permission mode」)。

有効にする方法

起動時のフラグで有効にする

一番素直なのは、起動時にフラグを付ける方法だ。次の2行は同じ意味になる。

起動時のフラグから初回だけ出る確認ダイアログを経てskipDangerousModePermissionPromptが記録される流れと、--allow-dangerously-skip-permissionsとShift+Tab、permissions.defaultModeと~/.claude/settings.jsonの2つの別の入り口を示した図
図解4|起動時のフラグ、あとから切り替え、設定ファイルの3つの入り口
claude --dangerously-skip-permissions
claude --permission-mode bypassPermissions

注意したいのは、このモードを有効にせずに始めたセッションからは、あとで bypassPermissions に入れない点だ(Anthropic「Choose a permission mode」)。使う可能性があるなら、起動時に決めておく。

別のモードで始めて、あとで切り替える

--allow-dangerously-skip-permissions を付けて起動すると、bypassPermissions は Shift+Tab で切り替える候補に加わるが、最初は別のモードで始まる。plan modeで調べてから切り替える、という使い方ができる(Anthropic「CLI reference」)。

claude --allow-dangerously-skip-permissions

Shift+Tab の順番では、plan のあとに追加のモードが入り、bypassPermissions が先、auto が最後になる。切り替わると、画面下のステータスバーに ⏵⏵ bypass permissions on と出る(Anthropic「Choose a permission mode」)。

設定ファイルで既定にする

毎回フラグを付けたくない場合は、permissions.defaultMode に bypassPermissions を書く。

{
  "permissions": {
    "defaultMode": "bypassPermissions"
  }
}

ただし、書ける場所が限られる。公式によると、bypassPermissions はユーザー設定(~/.claude/settings.json)、--settings で渡したファイル、管理設定からだけ有効になる。プロジェクトの .claude/settings.json や .claude/settings.local.json に書いても効かず、セッションはManualモードで始まる。起動時のモードは、--permission-mode か --dangerously-skip-permissions、設定ファイルの permissions.defaultMode、組み込みの既定値の順に決まる(Anthropic「Choose a permission mode」)。設定ファイルの階層は Claude Code settings.json設定完全ガイド にまとめている。

初回だけ出る確認ダイアログ

このモードを有効にして初めて対話型のセッションを始めると、確認なしの操作に責任を持つかを尋ねる警告が出る。受け入れると ~/.claude/settings.json に skipDangerousModePermissionPrompt: true が書き込まれ、次からは出ない。断るとClaude Codeは終了する。もう一度出したい時は、このキーを消すか false にする。非対話モードではダイアログは出ず、--bg で始めるバックグラウンドのセッションは、対話型のセッションで一度受け入れるまで拒否される(Anthropic「Choose a permission mode」)。このキーは、信頼していないリポジトリの設定からは飛ばせない作りになっている(Anthropic「All settings」)。

VS Code拡張で使う

VS Code拡張のチャット画面で使うには、拡張の設定で「Allow dangerously skip permissions」(claudeCode.allowDangerouslySkipPermissions、既定は false)をオンにする。オンにすると、プロンプト欄の下のモード表示に「Bypass permissions」が出る。公式はこの設定について、インターネットに出られないサンドボックスでだけ使うよう書いている(Anthropic「Use Claude Code in VS Code」)。

オフのままだと、claudeCode.initialPermissionMode やユーザー設定に bypassPermissions と書いても、会話はManualで始まる。モード表示でBypass permissionsを選んだ場合も、効くのはその会話だけだ。なお、VS Code拡張のチャット画面では、plan modeの書き込み禁止は保たれる(Anthropic「Choose a permission mode」)。

デスクトップアプリで使う

デスクトップアプリのCodeタブでは、送信ボタンの横のモード選択に「Bypass permissions」が出る。ProとMaxのプランでは、設定の「Allow bypass permissions mode」をオンにすると選べるようになる。TeamとEnterpriseのプランでは、組織のポリシーで決まる(Anthropic「Choose a permission mode」)。

付けても効かない・起動しない時

rootやsudoで動かしている

前の節のエラーが出るなら、root以外のユーザーで起動し直す。コンテナの中なら、remoteUser の設定を見直す。

プロジェクトの設定ファイルに書いた

.claude/settings.json や .claude/settings.local.json の "defaultMode": "bypassPermissions" は効かない。~/.claude/settings.json に移すか、起動時のフラグを使う。

組織が無効にしている

permissions.disableBypassPermissionsMode が "disable" になっている設定ファイルがあると、Claude Codeは --dangerously-skip-permissions を受け付けない。このキーはフラグより優先される(Anthropic「All settings」)。会社の端末で効かない時は、/status の Setting sources の行で、どの設定ファイルが読み込まれているかを確かめる(Anthropic「Settings files and precedence」)。管理設定が出ているなら、自分のファイルでは変えられないので、管理者に相談する。

--restrictedで起動している

--restricted(Claude Code v2.1.248以降)で始めたセッションでは、bypassPermissions は拒否される(Anthropic「Choose a permission mode」)。評価用の仕組みなどから起動している場合は、起動コマンドを確かめる。

クラウドセッションで使おうとした

クラウドセッションは、設定ファイルの defaultMode: "bypassPermissions" を読まない。何も表示されずに無視され、モード選択に出ているモードで始まる。リポジトリに入れた設定でクラウドセッションをbypassで始めることはできない(Anthropic「Choose a permission mode」)。

それでも確認が出る

「それでも止まるもの」に挙げた操作は、このモードでも確認が出る。設定ファイルの permissions.ask に当たるルールが無いか、重要なパスを消すコマンドを実行させていないかを見る。

代わりの選択肢

auto mode

auto modeでは、確認の代わりに別の分類器モデルが、実行前の操作を審査する。依頼の範囲を超える操作、知らないインフラを狙う操作、Claudeが読んだ悪意のある内容に引きずられたように見える操作を止め、明示したaskルールでは確認を出す。Claude Code v2.1.283以降は、対話型のターミナルとVS Codeのセッションで、すべてのプランと接続先の組み込みの開始モードになっている。使えるかどうかはモデルと組織の設定で決まり、Anthropic APIではOpus 4.6以降、Sonnet 4.6以降、Fableのモデルが対象だ(Anthropic「Choose a permission mode」)。チームでの入れ方は Claude Code自動許可モード実践|チーム導入と安全設計 で扱っている。

auto mode(分類器)、Bashのサンドボックス(auto-allow)、acceptEdits(allowルール)、dontAsk(CI)の4枚のカードを並べた図
図解5|確認を減らす4つの代わり

Anthropicのエンジニアリング記事は、auto modeを「割り込みを戻さずに --dangerously-skip-permissions を置き換える」ものとして説明している。同じ記事は、実際に行き過ぎた操作のうち17%を分類器が見逃したという数字も公表し、--dangerously-skip-permissions を使っている人にとっては大きな改善だが、重要なインフラを一つずつ慎重に確認する作業の代わりにはならないと書いている(Anthropic「How we built Claude Code auto mode: a safer way to skip permissions」(2026年3月25日))。分類器は操作ごとの審査であって隔離の境界ではないので、無人で長く動かすなら、コンテナやVMを足すと守りが重なる(Anthropic「Choose a sandbox environment」)。

Bashのサンドボックスで確認を減らす

手元のPCで確認を減らす公式の組み合わせは、ManualモードにBashのサンドボックスのauto-allowを足す形だ。起動したら /sandbox を実行し、auto-allowを選ぶ。macOS・Linux・WSL2で使え、denyルールは効いたまま、Bash(git push *) のようにコマンドを名指ししたaskルールでは確認が出る(Anthropic「Choose a permission mode」)。

claude --permission-mode default
# 起動したら /sandbox を実行し、auto-allow を選ぶ

Anthropicは2025年10月20日の記事で、社内の利用ではサンドボックスによって権限確認が84%減ったと書いている(Anthropic「Making Claude Code more secure and autonomous with sandboxing」(2025年10月20日))。設定の細かい分け方は Claude Codeサンドボックスで安全に自動実行 を見てほしい。

acceptEditsとallowルールで必要な分だけ通す

ファイル編集の確認だけを減らしたいなら、acceptEdits が向く。よく使うコマンドは、allowルールで個別に許可する。

{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": ["Bash(npm test)"]
  }
}

CIならdontAsk

CIのように人が答えられない場所では、事前に許可したものだけを動かし、それ以外を拒否する dontAsk が公式の例になっている(Anthropic「Choose a permission mode」)。

claude -p "テストを実行して" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"

組織でbypassPermissionsを禁止する

管理設定に1行足す

チームとして使わせたくない場合は、管理設定に次のキーを入れる。

{
  "permissions": {
    "disableBypassPermissionsMode": "disable"
  }
}

このキーがあると、Claude Codeは --dangerously-skip-permissions を拒否する。サブエージェントの定義に書かれた permissionMode: bypassPermissions も無視して、親のセッションのモードで動かす。Claude Code v2.1.223より前は、無効にしていてもサブエージェント側のモードが適用されていたので、古いバージョンが残っていないかも見ておく(Anthropic「All settings」)。

届け方と、auto modeも止める場合

管理設定を各端末に置く方法は、OSごとに Anthropic「Deploy managed settings」 にまとまっている。auto modeも止めたい場合は、同じく管理設定で permissions.disableAutoMode を "disable" にする(Anthropic「Choose a permission mode」)。全社でどの設定を固定するかは、Claude Code全社ガバナンス|利用モデルとスキル統制 の考え方が使える。

想定シナリオ|依存パッケージの更新をコンテナで無人実行する

想定する状況

ここからは公開事例ではなく、構成例(想定)として書く。Webアプリのチームが、依存パッケージの更新と、それで壊れたテストの修正を毎週まとめて行っている。作業は単純だが確認が多く、人が付きっきりになる。そこで、この作業だけを隔離した環境で無人実行したい。

組み方

  1. 公式の参考dev containerをリポジトリにコピーし、ファイアウォールの許可先をパッケージのレジストリとGitのホスティングだけに絞る
  2. remoteUser をroot以外のアカウントにする
  3. ホストの ~/.ssh やクラウドの認証ファイルはマウントしない。pushに使う認証は、そのリポジトリだけに効く短命のトークンにする
  4. コンテナの中で claude -p "依存パッケージを更新して、テストが通るまで直して" --dangerously-skip-permissions を実行する
  5. 結果は作業用のブランチに残し、マージする前に人が差分を確かめる

守りがどこに移るか

確認を外した分、守りは「境界」と「最後の人のレビュー」に移る。境界はコンテナとファイアウォール、最後のレビューはマージ前の差分確認だ。どちらか片方でも用意できないなら、auto modeを選ぶほうが安全になる。

よくある質問

Claude Codeで権限確認をスキップするには?

起動時に claude --dangerously-skip-permissions か claude --permission-mode bypassPermissions を実行します。ただし公式は、インターネットに出られないコンテナやVMの中だけで使うよう警告しています。手元のPCで確認を減らしたいだけなら、auto modeか、/sandbox のauto-allowを先に試してください。

VS Codeでdangerously-skip-permissionsを使うには?

拡張の設定で「Allow dangerously skip permissions」(claudeCode.allowDangerouslySkipPermissions)をオンにすると、モード表示に「Bypass permissions」が出ます。オフのままだと、設定ファイルに bypassPermissions を書いても会話はManualで始まります。

settings.jsonで既定にできますか?

できます。~/.claude/settings.json の permissions.defaultMode に "bypassPermissions" を書きます。プロジェクトの .claude/settings.json や .claude/settings.local.json に書いた場合は効かず、Manualモードで始まります。

「cannot be used with root/sudo privileges」と出ます。

LinuxとmacOSでは、rootやsudoでこのモードを始められません。root以外のユーザーで起動してください。コンテナで使うなら、root以外のユーザーでClaude Codeを動かす公式のdev container構成が使えます。

途中からbypassPermissionsに切り替えられますか?

有効にせずに始めたセッションからは切り替えられません。起動時に --allow-dangerously-skip-permissions を付けておくと、別のモードで始めてから Shift+Tab で切り替えられます。

auto modeとの違いは?

bypassPermissions は審査なしですべて通します。auto modeは、別の分類器モデルが実行前に操作を審査し、依頼の範囲を超える操作などを止めます。Anthropicはauto modeを、--dangerously-skip-permissions を置き換えるものとして説明しています。

あわせて読みたい

運営元 Uravation よりこの事例を自社の業務で試す場合のテーマ選定・評価・本番移行の確認項目を、無料のチェックリストにまとめています。 Claude Code業務自動化PoCチェックリストを受け取る(無料)

参考・出典

Anthropic公式ドキュメント

Anthropicのエンジニアリング記事

そのほかの公式情報

Next Step

この事例を、自社の業務に置き換える。

対象業務、利用データ、評価基準、社内展開の順番まで整理すると、AI開発ツール導入の失敗を減らせます。

導入を相談する

チームで学ぶなら: Claude Code 法人研修(2日間ハンズオン) / 1人で習得するなら: 個別指導(週1マンツーマン)