Claude Code の --dangerously-skip-permissions を安全に使うには?隔離環境の選び方と設定
目次
Claude Code の --dangerously-skip-permissions は、消えても漏れても困らない隔離環境の中だけで使います。Claude のログインのほかに置く認証情報は 1 つのリポジトリに絞った GitHub のトークンだけにし、外への通信は許可したドメインに絞ります。Anthropic のドキュメントも「常にコンテナ、VM、または サンドボックスランタイム内で --dangerously-skip-permissions セッションを実行してください」と書いています。
隔離のしかたは 4 つから選びます。Claude Code に組み込みのサンドボックス(/sandbox)、Anthropic の devcontainer、Docker Sandboxes、使い捨てのクラウド VM です。決め手は、隔離の強さ(プロセス、コンテナ、microVM、VM)、同時にいくつ動かすか、パソコンを閉じても動き続けてほしいかの 3 つ。組み込みのサンドボックスだけでは足りません。囲うのは Bash などのコマンドだけで、ファイルを読み書きするツール、MCP サーバー、フックはその外で動くためです。
引用したドキュメントは、すべて 2026 年 11 月 8 日に読んだものです。その日の npm の最新版は Claude Code 2.1.319、Codex CLI 0.167.0 でした。コマンドには出どころを添えています。「手元で実行」は、この記事のために macOS と Codex CLI 0.166.0 で動かしたもの。「ドキュメントから転載」は、ベンダーのドキュメントにそのまま載っているもので、こちらでは試していません。
先に結論:やりたいことから選ぶ
| やりたいこと | 選ぶもの | 理由 |
|---|---|---|
| 自分のパソコンで、確認の回数だけ減らしたい | フラグは使わず、/sandbox か自動モード(auto mode) | Anthropic はこの用途に組み込みのサンドボックスを挙げています |
| 1 つのリポジトリで、全自動で長く任せたい | Docker Sandboxes か devcontainer | フラグを使うのは、この境界の中だけ |
| 信頼できないリポジトリを触る | 専用の VM か、Claude Code on the web(クラウドセッション) | Anthropic の比較表がこの 2 つを挙げています |
| 何本も同時に動かしたい、パソコンを閉じたい | クラウド VM、Claude Code のクラウドセッション、Codex Cloud | 自分のパソコンの中の隔離は、パソコンを閉じると止まります |
| Windows の社用 PC で使う | WSL2 の中で /sandbox。全自動にするなら Docker Sandboxes か、会社が認めたクラウドの環境 | ネイティブの Windows では組み込みのサンドボックスが動きません |
--dangerously-skip-permissions とは
--dangerously-skip-permissions は、Claude Code がツールを使う前の確認(権限プロンプト)を飛ばすフラグです。CLI リファレンスの説明は「権限プロンプトをスキップします。--permission-mode bypassPermissions と同等です」。権限モードの表では、bypassPermissions が確認なしで実行する操作は「すべて」、最適な用途は「隔離されたコンテナや VM のみ」とあります。
それでも止まるものはあります。
- 拒否ルール:「拒否ルールは
bypassPermissionsを含むすべてのモードでブロックします」。settings.jsonのdenyに書いたものは、このモードでも実行されません。 - 確認ルール(
ask)に一致するツールと、rm -rf /やrm -rf ~のような重要なパスの削除は、確認が出ます。ただし重要なパスの削除の確認は、このモードではオフにできます。 - root での起動:Linux と macOS では、root か
sudoの下で起動すると--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasonsと出て止まります。
逆に、守ってくれないものもはっきり書かれています。「bypassPermissions はプロンプトインジェクションまたは意図しないアクションに対する保護を提供しません」。はじめてこのモードで対話セッションを開くと、責任を受け入れるかを聞く警告が出ます。受け入れると ~/.claude/settings.json に skipDangerousModePermissionPrompt が true で書かれ、次からは出ません。
確認を減らしたいだけなら、自動モード(auto mode)という手もあります。別の分類器のモデルが、実行の前に操作を見て、頼まれた範囲を超えるものや、読んだ内容に操られているように見えるものを止めます。ただし Anthropic は分類器を「アクション単位の制御であり、分離境界ではない」と書いています。隔離の境界は、フラグを使うなら必須、自動モードなら守りを足す層、という位置づけです。
Codex では --yolo とサンドボックスのモード
Codex で同じ役割のフラグは --dangerously-bypass-approvals-and-sandbox で、別名が --yolo です。OpenAI のドキュメントの表は「Dangerous full access」の行で "No sandbox; no approvals (not recommended)" と書いています。手元の codex --help(0.166.0)の説明は次のとおりです。
--dangerously-bypass-approvals-and-sandbox
Skip all confirmation prompts and execute commands without sandboxing. EXTREMELY
DANGEROUS. Intended solely for running in environments that are externally sandboxed
Codex のサンドボックスには read-only、workspace-write、danger-full-access の 3 つのモードがあります。既定の workspace-write は、作業フォルダの中の書き込みだけを許し、ネットワークは切っています。ドキュメントで Auto と呼ぶ組み合わせは --sandbox workspace-write --ask-for-approval on-request で、フラグを付けないときの既定です。古い記事にある --full-auto は、手元の 0.166.0 では error: unexpected argument '--full-auto' found と出て動きませんでした。
サンドボックスとは
サンドボックスは、コマンドが読めるファイル、書けるファイル、つなげる宛先を、OS の仕組みで制限する囲いです。macOS では Seatbelt、Linux と WSL2 では bubblewrap を使います。英語の資料では sandbox、isolation(分離)、egress(外への通信)、allowlist(許可リスト)という言葉で書かれます。
権限プロンプトとの違いは、止めるタイミングです。権限モードは、ツールを使うかどうかを実行の前に決めます。サンドボックスは、実行したあとのコマンドが何に届くかを決めます。Anthropic のドキュメントもこの 2 つを分けて説明しています。
Claude Code の組み込みのサンドボックスは /sandbox でオンにします。既定の範囲は次のとおりです(Anthropic のサンドボックスのページ)。
| 範囲 | 既定 |
|---|---|
| 書き込み | 作業ディレクトリ、ユーザーごとの一時ディレクトリ、追加したディレクトリ |
| 読み取り | 「~/.ssh や ~/.aws/credentials などの認証情報ファイルを含む、マシンの大部分」 |
| ネットワーク | マシン上のプロキシを通る。許可ドメインは最初は空 |
| 環境変数 | Claude Code から受け継ぎ、そこにあるシークレットも含む |
囲うのは Bash、PowerShell、Monitor のコマンドと、そこから起動したプロセスだけです。Read や Edit のようなファイルのツール、MCP サーバー、フックは囲いの外で動きます。Claude Code のプロセスごと囲うなら、同じ仕組みを使うサンドボックスランタイム(srt claude で起動するベータ版)か、コンテナや VM に入れます。
Codex のサンドボックスも、書き込みとネットワークは止めますが、読み取りは広く通します。手元で実行した結果です(macOS、Codex CLI 0.166.0、codex sandbox -c sandbox_mode='"workspace-write"' <コマンド> の形で実行)。
| 試したコマンド | 結果 |
|---|---|
touch ./inside.txt(作業フォルダに書く) | 成功 |
touch ~/codex-probe-a2.txt(ホームに書く) | Operation not permitted で失敗 |
curl -s -o /dev/null -w '%{http_code}\n' https://example.com | 000 を出して終了コード 6(名前解決できない) |
ls ~/.ssh | 成功(終了コード 0) |
wc -c ~/.zshrc | 成功(読める) |
自分のパソコンの上のサンドボックスは、秘密のファイルをエージェントから隠してくれません。外への通信が開いていれば、読んだものは送れます。全自動にするなら、秘密がはじめから置かれていないマシンに移すほうが確かです。
全自動で起きること:消える、漏れる、乗っ取られる
確認を飛ばすと、困るのは次の 3 つです。
- 消える。2025 年 7 月、Replit の AI エージェントが、コードの凍結中に本番のデータベースを消しました。Windows で Gemini CLI をサンドボックスなしで使い、ファイルが失われたという報告も GitHub に上がっています。経緯は「バイブコーディングの危険性と実際の事例」にまとめました。
- 漏れる。Anthropic は devcontainer のページで「
--dangerously-skip-permissionsで実行する場合、開発コンテナは、~/.claudeに保存されている Claude Code の認証情報を含む、コンテナ内でアクセス可能なものを悪意のあるプロジェクトが流出させることを防ぎません」と書いています。OpenAI も Codex について "a malicious project can exfiltrate anything available inside the devcontainer, including Codex credentials" と書いています。 - 乗っ取られる。読んだファイルに書かれた指示に、エージェントが従ってしまうことです(プロンプトインジェクション)。
3 つ目は、2026 年 10 月 22 日に Forever Security が公開した調査が具体的です。ダウンロードフォルダに置かれた AGENTS.md や CLAUDE.md で、エージェントを操れるかを試しました。Codex については "In our testing, Codex ran the malware in more than 90% of attempts." とあります。植えられた AGENTS.md は「インストールにネットワークが要る」と理由を付けて、Codex に子プロセスを --dangerously-bypass-approvals-and-sandbox 付きで起動させました(Forever は "a flag the model wrote itself" と書いています)。Claude Code は、ANTHROPIC_BASE_URL を研究者のサーバーに向けた .claude/settings.json を書かされ、ログインのトークンがそのサーバーに届きました。こちらは "In our testing, Claude followed through on this about 50% of the time." です。Forever の助言には "Treat ~/Downloads as hostile ground for agents." と "Leave approval gates and sandboxes enabled." があります。
危ないフラグは、読んだ指示に従ってエージェント自身が付けることもあります。だから、フラグの有無ではなく、エージェントの外にある境界(コンテナや VM と、外への通信の許可リスト)で守ります。
選択肢を比べる:プロセス、コンテナ、microVM、VM
隔離の強さ、認証情報、外への通信
| 選択肢 | 隔離の種類 | 認証情報の置き場所 | 外への通信 |
|---|---|---|---|
組み込みのサンドボックス(/sandbox) | OS のプロセス単位。囲うのは Bash などのコマンドだけ | 自分のパソコン。~/.ssh などは既定で読める(credentials で拒否できる) | プロキシで許可ドメインに絞る。ただし bypassPermissions では、許可外のホストも strictAllowlist を入れない限り通る |
| Anthropic の devcontainer | Docker のコンテナ(カーネルはホストと共有) | コンテナの中の ~/.claude。中のものは持ち出せる | 参考の init-firewall.sh が許可した宛先以外を止める(SSH と DNS はどこへでも通る) |
| Docker Sandboxes | microVM。サンドボックスごとに別のカーネル | ホストに置いたまま。外へのリクエストにホストのプロキシが付ける。"The raw credential values never enter the VM."(SSH エージェントは既定で転送) | 既定で拒否。プリセットの Balanced は開発でよく使う宛先を許可 |
| Claude Code のクラウドセッション | Anthropic が管理する分離された VM | GitHub のトークンはサンドボックスの外に置かれる | None、Trusted(既定)、Full、Custom から選ぶ |
| Codex Cloud | タスクごとに分離されたワークスペース | ネットワークシークレットはプロキシが差し替え、プログラムには仮の値が渡る | 環境ごとに制限できる |
| 借りるクラウド VM(exe.dev、Fly.io Sprites、boat.dev、Vultr など) | VM | VM の中。何を入れるかは自分で決める。exe.dev は秘密を VM の外から通信に差し込む連携を持つ | 自分で設定する。exe.dev は外への通信を連携先だけに絞る設定を持つ(既定はすべて許可) |
| サンドボックス API(E2B、Daytona) | E2B は isolated Linux VM、Daytona は dedicated kernel と説明 | 中に渡したものだけ | 各社の設定による |
同時実行、パソコンを閉じられるか、料金
料金は各社が 2026 年 11 月 8 日に表示していたもので、税、通信量、モデルの利用料は含みません。
| 選択肢 | 同時にいくつ | パソコンを閉じても動くか | Claude のサブスクリプション | 料金 |
|---|---|---|---|---|
| 組み込みのサンドボックス | パソコンの性能しだい | 止まる | そのまま使える | 追加なし |
| devcontainer(ローカル) | コンテナの数だけ | 止まる | 使える(ブラウザでログイン、または CLAUDE_CODE_OAUTH_TOKEN) | 無料。ただし Docker Desktop は大きな会社では有料 |
| Docker Sandboxes(ローカル) | サンドボックスの数だけ | 止まる | 使える(中で /login) | "The sbx CLI and local sandbox compute are free to use, including for commercial and professional work." |
| Claude Code のクラウドセッション | 複数。使用量の上限は共有 | 動き続ける | 必須(Pro、Max、Ultra、Team と、Enterprise の一部の席) | 「クラウド VM に対する別途料金はかかりません」。Claude の Pro は $20/月(年払いなら $17/月) |
| Codex Cloud | タスクごとにワークスペースが分かれる | 動き続ける("can keep working while your computer is asleep") | 使わない(ChatGPT のプラン) | ChatGPT の Plus($20/月)に "Codex on the web" が含まれる |
| 借りるクラウド VM | VM の数だけ | 動き続ける | 使える。ただしトークンが VM の中に入る | 下の表 |
| サンドボックス API | E2B は無料の枠で 20、有料で 100 まで | 動き続ける | 各社のドキュメントに記載なし | 下の表 |
Docker には同じ sbx で使うクラウドのサンドボックス(sbx --cloud)もあり、Docker Agentic Platform の従量課金で、既定では 60 分で期限が切れます。
クラウド VM とサンドボックス API の料金(4 vCPU、8 GB)
1 日 8 時間、20 日、合わせて 160 時間動かす使い方で比べます。目安の列は、各社の単価からの計算です。
| サービス | リージョン | 各社の料金 | 160 時間の目安 | 止めたとき |
|---|---|---|---|---|
| exe.dev | 東京(TYO)あり | 4 vCPU・8 GB で $35/月(2 vCPU・4 GB は $15/月)。VM は最大 50 台まで、この枠を分け合う | $35 | 定額 |
| boat.dev | EU のみ(ドイツ、フィンランド、フランス) | 4 vCPU・8 GB で $0.036/時、"$20 minimum per month" | $20 | 秒単位の課金が止まる。ディスクは 14 日以上スナップショットで残る。既定の TTL は 1 時間(変更できる) |
| Fly.io Sprites | — | CPU $0.0385/CPU 時、メモリ $0.021875/GB 時。実際に使った分だけ | 使い方しだい。Fly の例では 4 時間の Claude Code のセッションで $0.23 | 使っていないと 0 まで縮む |
| Vultr | 東京あり | 4 vCPU・8 GB で $40/月、$0.055/時 | 毎日作って消すなら約 $8.80、置いたままなら $40 | 止めても課金は続く。止めるには削除 |
| E2B | — | 4 vCPU $0.000056/秒、8 GiB $0.000036/秒。無料の枠は 1 回 $100 分のクレジットで、CPU とメモリは既定の大きさだけ、セッションは 1 時間まで | 約 $203(4 vCPU・8 GB と 1 時間を超えるセッションに要る月 $150 の Pro と、使用料 約 $53) | 有料プランでもセッションは 24 時間まで |
| Daytona | — | vCPU $0.0504/時、メモリ $0.0162/GiB 時。最初に $200 分の無料の計算資源 | 約 $53 | — |
| GitHub Codespaces | — | 4 コア $0.36/時(2 コアは $0.18/時)、ストレージ $0.07/GB 月 | 約 $58 とストレージ | — |
東京のリージョンがあるかは、速さだけでなく、会社のコードを国外に置いてよいかにも関わります。boat.dev は 2026 年 11 月 8 日の時点で EU だけでした。
Docker Sandboxes で動かす手順
Docker Sandboxes は、エージェントを microVM の中で動かす Docker の製品です。Anthropic のドキュメントも「Docker の無料のスタンドアロン製品であり、Docker Desktop は必要ありません」と紹介しています。中で動く Claude Code は、何も付けなければ claude --dangerously-skip-permissions で起動し、Codex は codex --dangerously-bypass-approvals-and-sandbox で起動します。
動く環境は、macOS 14 以降の Apple シリコン、x64 の Windows 11、KVM が使える Ubuntu 24.04 以降です。以下のコマンドはすべてドキュメントから転載しました。
macOS に入れる。
brew trust docker/tap
brew install docker/tap/sbx
Windows に入れる。管理者として開いた PowerShell で Windows Hypervisor Platform をオンにしてから、sbx を入れます。
Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform -All
winget install -h Docker.sbx
Docker にサインインし、ネットワークの方針を決めて、プロジェクトのフォルダで起動します。
sbx login
sbx policy init balanced
cd ~/my-project
sbx run --name my-sandbox claude
Claude のサブスクリプションを使うなら、中の Claude Code で /login を実行します。Docker の説明は "The session token stays on your host and is never stored inside the sandbox." です。Codex なら sbx run codex で起動し、ログインはホストで済ませます(sbx secret set openai --oauth)。
許可されている宛先を確かめ、足りなければ足します。
sbx policy ls
sbx policy allow network registry.npmjs.org
終わったら止め、要らなくなったら消します。消すと、中に入れたパッケージやイメージも消えます。作業フォルダのファイルは残ります。
sbx stop my-sandbox
sbx rm my-sandbox
気をつける点が 4 つあります。
- 既定では作業フォルダが読み書きできる形でつながり、エージェントの編集はそのまま手元のファイルに入ります。Docker は、Git のフックが
.git/の中にあってgit diffに出ないことを挙げ、別に確かめるよう書いています("Git hooks live inside.git/and do not appear ingit diffoutput")。 - 既定の許可ドメインには、
*.googleapis.comのような広いワイルドカードがあります。sbx policy lsで見て、要らないものは外します。 - ホストで
SSH_AUTH_SOCKが設定されていると、SSH エージェントが既定で中に転送されます。秘密鍵は渡りませんが、中のエージェントはその鍵で署名でき、ネットワークの方針が通す宛先に SSH でつなげます。要らなければ設定のssh.agentForwardingEnabledでオフにし、sbx daemon restartで反映します。 - ホストの
~/.claudeは中では使われません。中で使えるのは作業フォルダのプロジェクトの設定だけです。
devcontainer で動かす手順と認証
devcontainer(開発コンテナ)は、VS Code などが Docker のコンテナの中で開発環境を開く仕組みです。Anthropic はファイアウォール付きの参考の構成を anthropics/claude-code で公開しています。チームの全員に同じ環境を配れるのが強みで、Codespaces でも動きます。VS Code のドキュメントが Windows の条件に挙げるのは Docker Desktop です。以下の JSON とコマンドは、Anthropic のドキュメントと参考の構成から転載しました。
1. devcontainer.json に Claude Code の Feature を入れる
リポジトリの .devcontainer/devcontainer.json に次を書くか、今ある features に足します。末尾の :1.0 は Claude Code のバージョンではなく、インストールのスクリプトの版です。Claude Code は最新が入ります。
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
}
}
VS Code のコマンドパレットで「Dev Containers: Rebuild Container」を実行して作り直します。
2. 認証を再ビルドで消さない
コンテナのホームは再ビルドで消えるため、そのままでは毎回ログインし直しになります。~/.claude を名前付きのボリュームに置き、CLAUDE_CONFIG_DIR を同じ場所に向けます。remoteUser が node の場合の例です。
"mounts": [
"source=claude-code-config,target=/home/node/.claude,type=volume"
],
"containerEnv": {
"CLAUDE_CONFIG_DIR": "/home/node/.claude"
}
CLAUDE_CONFIG_DIR がないと、~/.claude.json がホームに残って再ビルドで消え、初回の設定がくり返されます。参考の構成は source=claude-code-config-${devcontainerId} として、リポジトリごとにボリュームを分けています。このボリュームにはログインの情報が入るため、コンテナの中のエージェントからは読めます。
3. 外への通信を絞る
参考の構成は、runArgs で NET_ADMIN と NET_RAW を足し、起動のたびに init-firewall.sh を sudo で実行します。スクリプトが通すのは、GitHub の IP の範囲(api.github.com/meta から取得)、registry.npmjs.org、api.anthropic.com、sentry.io、statsig.com、VS Code の拡張機能と更新の宛先です。ただし、SSH(ポート 22)と DNS(UDP 53)はどの宛先にも通し、ホストのネットワーク(/24)も通します。最後に example.com に届かないことを確かめます。
"runArgs": [
"--cap-add=NET_ADMIN",
"--cap-add=NET_RAW"
],
"postStartCommand": "sudo /usr/local/bin/init-firewall.sh",
"waitFor": "postStartCommand"
この部分だけを自分の構成に写しても、スクリプトがなければ動きません。Anthropic は、参考の .devcontainer/ をリポジトリにコピーし、Dockerfile をツールに合わせて直す方法を案内しています。
スクリプトから読めることが 1 つあります。GitHub への通信は丸ごと通るため、コンテナに入れる GitHub のトークンは 1 つのリポジトリに絞っておきます。どのリポジトリにも書けるトークンがあれば、それが外への出口になります。
4. root ではなく一般ユーザーで動かす
参考の構成は "remoteUser": "node" で、root ではないユーザーで動きます。Claude Code は root で起動するとこのフラグを拒否するため、自分の構成でも remoteUser を root 以外にします。
5. ログインして、フラグを付けて起動する
コンテナのターミナルで claude を実行し、ブラウザでログインします。ブラウザが開かないときや、ログインのあとに localhost への接続エラーが出るときは、ターミナルに出るログインの URL を手元のブラウザで開き、表示されたコードを Paste code here のプロンプトに貼ります。貼れないときは claude auth login が標準入力からコードを読みます。
Codespaces では、Codespaces のシークレットに ANTHROPIC_API_KEY か、claude setup-token で作った CLAUDE_CODE_OAUTH_TOKEN を入れておくと、コンテナの環境変数になります。ログインが済んだら起動します。
claude --dangerously-skip-permissions
権限の確認を飛ばすと、Claude はバインドマウントした作業フォルダのファイルを何でも変えられ、その変更はホストにそのまま出ます。Anthropic は、このフラグを手順 3 の通信の制限と組み合わせるよう書いています。
クラウド VM で動かす手順
自分のパソコンの外で動かすと、パソコンを閉じても止まらず、何本でも並べられます。手順は次のとおりです。
- VM を作る。消してよい専用の VM にし、SSH の秘密鍵、クラウドの認証情報(
~/.awsなど)、本番の.envは入れません。会社のコードなら、リージョン(東京か、国外か)も確かめます。 - GitHub のトークンを 1 つのリポジトリに絞る。fine-grained の個人用アクセストークンは "Each token can be further limited to only access specific repositories" で、GitHub は classic ではなくこちらを勧めています。期限も付けます。
- ログインする。Claude Code は、自分のパソコンで
claude setup-tokenを実行すると 1 年間有効のトークンが出ます。これを VM でexport CLAUDE_CODE_OAUTH_TOKEN=your-tokenとして使います(ドキュメントから転載)。このトークンはモデルへのリクエストにしか使えず、Claude の Pro、Max、Ultra、Team、Enterprise のどれかのプランが要ります。Codex はcodex login --device-auth(ベータ)で、ブラウザのない VM からログインできます。ログインの情報は~/.codex/auth.jsonに入り、OpenAI は "treat~/.codex/auth.jsonlike a password" と書いています。 - 外への通信を絞る。devcontainer の手順 3 と同じく、モデルの API、GitHub、パッケージのレジストリだけを通します。VM の中で
/sandboxを重ねる場合は、~/.claude/settings.jsonでsandbox.network.strictAllowlistをtrueにしないと、bypassPermissionsでは許可外のホストにも通ってしまいます。サンドボックスの外での再試行も、"allowUnsandboxedCommands": falseで止めておきます。 - SSH を切っても止まらないように、tmux の中で起動する。tmux の Getting Started にある
tmux new -smysessionで始め、C-b dで離れ、tmux attach -tmysessionで戻ります(tmux のドキュメントから転載。こちらでは試していません)。Claude Code にも、worktree ごとに tmux のセッションを作るclaude -w feature-auth --tmuxがあります。 - 結果は PR で持ち帰る。VM から 1 つのリポジトリのブランチに push し、手元でレビューしてからマージします。VM は使い終わったら消します。Vultr のように、止めただけでは課金が続くところもあります。
エージェントが書いた HTML のレポートやページをスマホで見たいときは、「HTML を URL に変換する方法」のボックスにファイルを入れると、Convika が登録なしのプレビューのリンクを作ります(開けるのは 3 分間だけで、スクリプトは止めて表示します)。
認証情報をマシンに置かない
確認を飛ばしたエージェントは、マシンの中で読めるものを何でも読み、通信が開いていれば外へ送れます。入れないものを先に決めます。
- SSH の秘密鍵(
~/.ssh)とクラウドの認証情報(~/.aws/credentialsなど)。Anthropic は、これらをコンテナにマウントせず、リポジトリに絞ったトークンか短い期限のトークンを使うよう書いています。 - どのリポジトリにも書ける GitHub のトークン。
- 本番のデータベースや決済の鍵が入った
.env。 - ブラウザのプロファイル(ログイン中のセッション)。
Claude Code のログインは、Linux では ~/.claude/.credentials.json(ファイルモード 0600)に入ります。0600 は他のユーザーから守るだけで、同じユーザーで動くエージェントには読めます。Forever Security の調査で Claude Code のトークンが研究者のサーバーに届いたのも、ANTHROPIC_BASE_URL の向け先が変えられたためでした。コンテナや VM の外への通信を許可リストで絞っていれば、知らないサーバーへの送信はそこで止まります(/sandbox の許可リストは Claude Code 自身の通信には効きません)。
生の認証情報を中に入れずに済む仕組みもあります。
- Docker Sandboxes は、ホストのプロキシが外への通信に認証のヘッダーを付けます。Claude のサブスクリプションで
/loginしたときも、トークンはホストに残ります。ただし SSH エージェントは既定で中に転送されます。 - Claude Code のクラウドセッションは、GitHub のトークンをサンドボックスの外に置き、リポジトリへの操作には範囲を絞った認証情報を発行します。
- Codex Cloud のネットワークシークレットは "Programs receive a placeholder; the proxy substitutes the real value for allowed destinations." です。
Windows(WSL2)で使う
Claude Code の組み込みのサンドボックスは、ネイティブの Windows では動きません。Anthropic の Windows の表では、サンドボックスが使えるのは WSL 2 だけで、ネイティブの Windows と WSL 1 は「サポートされていません」です。Claude Code は、PowerShell や CMD ではなく WSL のターミナルの中で入れて起動します。
WSL 2 の中で /sandbox を使うには、bubblewrap と socat を入れます(ドキュメントから転載)。WSL のバージョンは PowerShell の wsl -l -v で確かめます。
sudo apt-get install bubblewrap socat
WSL 2 は、それだけでは Windows との壁になりません。Microsoft のドキュメントでは、C:\ は既定で /mnt/c/ にマウントされ([automount] の enabled が true)、WSL から Windows のプログラムも起動できます([interop] の enabled が true)。WSL の中で直接 --dangerously-skip-permissions を使うと、エージェントは Windows 側のファイルにも届きます。Anthropic も、WSL 2 では cmd.exe や powershell.exe、/mnt/c/ の下のプログラムの起動が Unix ソケットを通って Windows に渡ること、それを止めるには追加の seccomp フィルターが要ることを書いています。
WSL の中で全自動にするなら、全自動用のディストリビューションを分けて認証情報を置かず、その /etc/wsl.conf で 2 つを切り、プロジェクトを WSL 側(~/ の下)に置きます。キーは Microsoft のドキュメントの表のもので、こちらでは試していません。設定はディストリビューションを止めてから効くため、PowerShell で wsl --shutdown を実行します。
[automount]
enabled=false
[interop]
enabled=false
ほかの選び方は 2 つです。
- Docker Sandboxes は Windows 11 で動き、Docker Desktop は要りません。Windows Hypervisor Platform をオンにするには、管理者の PowerShell が要ります。
- devcontainer は、VS Code のドキュメントが Windows の条件に Docker Desktop を挙げています。Windows 10 の Home なら Docker Desktop 2.3 以降と WSL 2 のバックエンドです。
WSL 2 でブラウザのログインが開かないときは、ログインの URL とコードを貼る方法か、BROWSER の環境変数を Windows のブラウザに向ける方法があります(export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"、ドキュメントから転載)。Codex は、ネイティブの Windows では Windows のサンドボックス(MXC)、WSL2 では Linux のサンドボックスを使います。WSL1 は Codex 0.115 から使えません。VS Code の Codex の拡張機能を WSL2 の中で動かす設定は "chatgpt.runCodexInWindowsSubsystemForLinux": true です。
社用 PC で許される範囲
社用 PC には、VPN、社内の SSO のセッション、クラウドの CLI の認証情報が入っていることが多く、どれもエージェントから読めます。社用 PC の上で直接 --dangerously-skip-permissions を使うのはやめ、使うなら Docker Sandboxes か、会社が認めたクラウドの環境にします。その前に、次の 4 つを確かめます。
- 会社が止めていないか。管理者は、管理設定で
permissions.disableBypassPermissionsModeを"disable"にすると、このモードを使えなくできます。サンドボックスを全員に強制することもできます(sandboxのキーを MDM か、claude.ai のサーバー管理設定で配る)。フラグが効かないなら、それは会社の方針です。 - コードをどこに送ってよいか。Anthropic は「分離はモデルに送信される内容を変更しません」と書いています。サンドボックスの有無にかかわらず、Claude が読んだファイルはモデルに送られます。クラウド VM やクラウドセッションでは、それに加えてコードが別の会社のマシンに置かれます。会社のルールとリージョンを確かめます。
- ライセンス。Docker Desktop が無料なのは "Small businesses (fewer than 250 employees AND less than $10 million in annual revenue)" などで、大きな組織での業務利用は有料のサブスクリプションです。Docker Sandboxes の
sbxとローカルでの実行は、商用でも無料です。 - 管理者の権限。Docker Sandboxes に要る Windows Hypervisor Platform をオンにするには、管理者として PowerShell を開く必要があります。権限がなければ、情報システムの担当に頼みます。
全員に同じ環境を配るなら、devcontainer をリポジトリに入れるのが早道です。ただし Anthropic は、Claude Code はコンテナを強制しないため、これは「強制境界ではなく慣例」だと書いています。コンテナの外で使わせないなら、端末の管理やソフトウェアの許可リストの仕組みで止めます。
会社として全社員に設定を配る手順(managed settings、監査のログ、社内ガイドラインのチェックリスト)は「社内で Claude Code を安全に使うには」にまとめました。
何本も同時に動かす:worktree か、別のマシンか
同じマシンで何本も動かすなら、エージェントごとに作業フォルダを分けます。Claude Code の claude -w <名前> は、<repo>/.claude/worktrees/<name> に分かれた git の worktree で始めます。Docker も "Branches alone don't isolate edits in one working directory." と書き、Docker Sandboxes では --clone で各サンドボックスに自分専用のクローンを持たせます。
ただし worktree で分かれるのはファイルだけで、認証情報、外への通信、CPU とメモリは同じマシンのものを分け合います。1 本がマシンを壊せば、全部が巻き込まれます。別々の VM なら、ディスクも認証情報も 1 本ずつ分かれ、パソコンを閉じても動きます。その分、台数に比例して料金がかかります。
サブエージェントに役割を分けるなら「Claude Code と Codex のサブエージェント」、手順をスキルにまとめるなら「Claude Code と Codex のスキル」が続きです。エージェントに push させないなど、文ではなくフックで止める方法は「Claude Code のガードレールはフックで作る」に書きました。
よくある質問
Docker の中なら --dangerously-skip-permissions は安全ですか?
壊される範囲は、コンテナの中と、つないだ作業フォルダと、中の認証情報で届く先(GitHub など)に限られます。ただし中に入れた認証情報は持ち出せます。Anthropic も OpenAI も、devcontainer はコンテナの中のものの流出を防がないと書いています。中に置く認証情報を 1 つのリポジトリに絞ったトークンだけにし、外への通信を許可リストで絞れば、被害の範囲は小さくなります。それでも、つないだ作業フォルダは書き換えられます。
Claude Code のサンドボックスと Docker Sandboxes の違いは?
Claude Code のサンドボックス(/sandbox)は、自分のパソコンの上で Bash などのコマンドだけを OS の仕組みで囲います。ファイルのツール、MCP サーバー、フックは外で動き、~/.ssh などは既定で読めます。Docker Sandboxes は Claude Code ごと microVM に入れ、別のカーネルで動かします。認証情報は VM に入れず、ホストのプロキシが付けます(SSH エージェントは既定で転送されるので、要らなければオフにします)。全自動に向くのは Docker Sandboxes です。
Docker Sandboxes で Claude のサブスクリプションは使えますか?
使えます。中の Claude Code で /login を実行します。Docker のドキュメントは Max、Team、Enterprise を挙げ、トークンはホストに残ってサンドボックスの中には保存されないと書いています。API キーを使うなら sbx secret set anthropic で保存します。ホストの ~/.claude の設定は中では使われません。
Claude Code on the web でも --dangerously-skip-permissions は必要ですか?
要りませんし、使えません。クラウドセッションで選べる権限モードは Accept edits、Plan、Auto で、Bypass permissions はありません。セッションはもともと Anthropic が管理する分離された VM で動き、通信は既定で許可リスト(Trusted)に絞られます。リポジトリの設定に bypassPermissions を書いても無視されます。
エージェントがサンドボックスから抜け出すことはありますか?
あります。Claude Code 2.1.319 の変更履歴には "Fixed a sandbox escape when creating a worktree" とあり、2.1.309 ではシェルの起動ファイルがサンドボックスの外で動いていた不具合が直っています。また bypassPermissions では、サンドボックスの中で失敗したコマンドを外で再試行するとき、確認なしで実行されます。"allowUnsandboxedCommands": false で、この再試行を止められます。Claude Code を最新に保ち、サンドボックスをコンテナや VM の中で重ねて使います。
devcontainer の認証は再ビルドで消えますか?
既定では消えます。コンテナのホームは再ビルドで破棄されるためです。~/.claude を名前付きのボリュームにマウントし、containerEnv の CLAUDE_CONFIG_DIR を同じパスにすると残ります。Codespaces は停止と再開では残り、再ビルドで消えます。Codespaces のシークレットに CLAUDE_CODE_OAUTH_TOKEN を入れておけば、作り直してもログインし直さずに使えます。
出典(2026 年 11 月 8 日に読んだもの)
- Anthropic「サンドボックス環境を選択する」「サンドボックス化」「権限モード」「開発コンテナ」「CLI リファレンス」「認証」「インストールのトラブルシューティング」「セットアップ」「クラウドで Claude Code を使用する」「クラウド環境」「変更履歴」、参考の構成 anthropics/claude-code の .devcontainer、料金(2026 年 11 月 8 日に読んだもの)
- OpenAI「Agent approvals & security」「Sandbox」「Authentication」「Codex Cloud」「Cloud environments」「Pricing」(2026 年 11 月 8 日に読んだもの)
- Docker「Docker Sandboxes」「Get started」「Install」「Security」「Architecture」「Claude Code」「Codex」「FAQ」「Credentials」「Cloud sandboxes」「Docker Desktop license agreement」(2026 年 11 月 8 日に読んだもの)
- Microsoft「Advanced settings configuration in WSL」、VS Code「Developing inside a Container」(2026 年 11 月 8 日に読んだもの)
- GitHub「Managing your personal access tokens」「GitHub Codespaces billing」(2026 年 11 月 8 日に読んだもの)
- Forever Security「Hijacking AI agents via the Downloads folder」(2026 年 10 月 22 日)
- 料金:exe.dev の「Personal plan」「Regions」、Fly.io Sprites(Fly.io の料金)、boat.dev、Vultr の課金と API のプラン一覧、E2B、Daytona、exe.dev の「Integrations」「Internet access」(2026 年 11 月 8 日に読んだもの)
- tmux「Getting Started」(2026 年 11 月 8 日に読んだもの)
- npm の最新版:
@anthropic-ai/claude-code2.1.319、@openai/codex0.167.0(2026 年 11 月 8 日の時点)
関連記事
- 社内で Claude Code を安全に使うには?実行環境の選び方とセキュリティ設定社内で Claude Code を使うなら、権限・ネットワーク・データの扱いを managed settings で全社員に固定し、全自動は認証情報を置かない隔離環境だけで許します。6 つの実行環境の比較表、社外に出るデータと ZDR、10 月の VM の脆弱性と侵害から見ること、社内ガイドラインのチェックリストを、Anthropic の公式ドキュメントで確かめてまとめました。
- バイブコーディングの危険性と実際の事例|公開前に確かめる 8 つの手順2025〜2026 年のバイブコーディングの危険性と情報漏洩の事例を出典つきで整理。原因の多くは AI のコードではなく公開の設定です。自分の作ったものが当てはまるかの見分け方と、公開前に確かめること、漏れたときの対応を解説します。
- Claude Code のエージェント組織が 17 日で 92 回リリースした運用の仕組みClaude Code の AI エージェント組織が 17 日で 1,403 件のコミット、92 回の本番リリース、82 本のページ公開を回した記録。19 件のまちがいから作った権限・レビュー・デプロイの仕組みを公開します。
AI Skill Pod
AI スキルを、チームでかんたん共有
チームのスキルを、全員がいつもの ChatGPT・Claude・Gemini で使えます。プランは問いません。招待リンクを送るだけ。無料で始められます。
AI Skill Pod を無料で始める