🛡️ CLAUDE CODE /SANDBOX ✦ BUBBLEWRAP ✦ SEATBELT ✦ CODEX SANDBOX_MODE ✦ DANGER-FULL-ACCESS ✦ CODEX-UNIVERSAL ✦ DOCKER SANDBOXES ✦ SBX CLI ✦ MICROVM ✦ 🛡️ CLAUDE CODE /SANDBOX ✦ BUBBLEWRAP ✦
純正サンドボックス・コンテナ機能ガイド
Claude Code / Codex CLI に組み込まれたセキュリティ機能の使い方
Claude Code /sandbox Codex sandbox_mode Docker Sandboxes sandbox-runtime 2026-07-16 更新
🔗 関連ガイド
コンテナ内でのボリューム永続化・バックグラウンドジョブ運用は コンテナ運用ガイド、CLAUDE.md/設定ファイルの書き方は コンテキスト管理ガイド を参照。
⚡ TL;DR
Claude Code/sandbox コマンドで即有効化。macOS は何もインストール不要(Seatbelt)。Linux は bubblewrap + socat を apt install するだけ。ただし Bashコマンドしか隔離しない(file tools/MCP/hookはホスト直)
🧪 sandbox-runtime(ベータ)は Claude Code プロセス全体を隔離。file tools・MCP・hookも含めて Docker 無しで丸ごと隔離したい場合はこちら
Codex CLIsandbox_mode を config.toml で設定。Docker 内では danger-full-access + approval_policy = "never" がベストプラクティス
Docker Sandboxes(Docker社純正)は microVM で完全隔離。sbx run codex ~/project だけで動く。Docker Desktop 4.44+ 必須
🔑 コンテナ内で Claude Code を動かす場合は enableWeakerNestedSandbox: true が必須。bubblewrap はネストして動かないため
00 — 4つのアプローチを比較する
項目 Claude Code /sandbox sandbox-runtime Codex CLI sandbox_mode Docker Sandboxes (sbx)
提供元 Anthropic Anthropic(experimental) OpenAI Docker
対象ツール Claude Code のみ Claude Code(他プロセスもラップ可) Codex CLI のみ Claude Code / Codex 両対応
分離レベル Bashコマンドのみ(file tools/MCP/hookは対象外) プロセス全体(file tools・MCP・hookも含む) プロセス(OS sandbox) microVM(独自カーネル)
macOS Seatbelt 追加DL不要 Seatbelt Seatbelt macOS Docker Desktop 必須
Linux bubblewrap + socat 要インストール bubblewrap Landlock Linux 対応
Windows 非対応 WSL2内のみ 非対応 WSL2内のみ WSL2 推奨 要確認
ネットワーク制限 ドメイン allowlist(プロキシ経由) デフォルト全拒否(設定ファイルで許可リスト指定) デフォルト OFF(設定で制限可) あり(VM境界)
起動方法 /sandbox コマンド npx @anthropic-ai/sandbox-runtime claude config.toml または CLI フラグ sbx run codex ~/project
コスト 無料(Claude Code 内蔵) 無料(OSSパッケージ) 無料(Codex CLI 内蔵) Docker Desktop 有料プラン
成熟度 安定版 ベータ(研究プレビュー・設定形式が変わる可能性) 安定版 安定版
00b — 起動コマンド早見表
⚡ ツール × 起動方法 クイックリファレンス

● Claude Code

VS Code devcontainer
# 前提: Dev Containers 拡張
# コマンドパレット:
Ctrl+Shift+P
Dev Containers: Reopen in Container

# または左下の "><" アイコン
# → "Reopen in Container"

# コンテナ起動後
claude
Docker 単体(スタンドアロン)
docker run -it --rm \
  --cap-add=NET_ADMIN \
  --cap-add=NET_RAW \
  -e ANTHROPIC_API_KEY \
  -v "$HOME/.claude":/home/node/.claude \
  -v "$(pwd)":/workspace \
  -w /workspace \
  <image> claude

# 非対話型
docker run --rm ... \
  claude -p "タスク説明"
Docker Sandboxes(sbx)
# 初回のみ: APIキー登録
sbx secret set -g anthropic

# 起動
sbx run claude ~/my-project

# または cd してから
cd ~/my-project
sbx run claude

# 非対話型
sbx run claude . -- \
  --dangerously-skip-permissions \
  -p "タスク"

● Codex CLI

codex-universal イメージ
# 対話型
docker run --rm -it \
  -e OPENAI_API_KEY \
  -v "$HOME/.codex":/root/.codex \
  -v "$(pwd)":/workspace \
  ghcr.io/openai/codex-universal:latest \
  codex

# 言語バージョン固定
  -e CODEX_ENV_PYTHON_VERSION=3.12 \
  -e CODEX_ENV_NODE_VERSION=22
devcontainer feature
// .devcontainer/devcontainer.json
{
  "features": {
    "ghcr.io/dirien/devcontainer-feature-codex/codex:0": {
      "version": "latest"
    }
  },
  "mounts": [
    "source=${localEnv:HOME}/.codex,target=/home/vscode/.codex,type=bind"
  ],
  "remoteEnv": {
    "OPENAI_API_KEY": "${localEnv:OPENAI_API_KEY}"
  }
}
Docker Sandboxes(sbx)
# 初回のみ: APIキー登録
sbx secret set -g openai

# 対話型起動
sbx run codex ~/my-project

# 非対話型(CI向け)
sbx run codex . -- exec \
  --sandbox read-only \
  --ask-for-approval never \
  "テストを全部通してください"

● Kiro CLI

Docker Sandboxes(sbx)
# 起動(認証は初回のみ)
sbx run kiro ~/my-project

# 初回ログイン(device flow)
sbx run kiro --name my-kiro \
  -- login --use-device-flow
# → URL と確認コードが表示される
# → ブラウザで認証 → 自動セッション開始

# 注意: ホストのユーザー設定は引き継がれない
(プロジェクト設定のみ有効)
Docker 単体(認証永続化)
docker run -it --rm \
  -v "$HOME/.local/share/kiro-cli":/root/.local/share/kiro-cli \
  -v "$(pwd)":/workspace \
  -w /workspace \
  kiro-cli:latest kiro

# 認証状態は
# ~/.local/share/kiro-cli/data.sqlite3 に保存
# → ボリュームマウントで永続化
devcontainer(手動構成)
// .devcontainer/devcontainer.json
{
  "mounts": [
    "source=${localEnv:HOME}/.local/share/kiro-cli,target=/home/vscode/.local/share/kiro-cli,type=bind"
  ]
}

# 注意: 公式 devcontainer feature は未提供
# Dockerfile で npm install -g kiro が必要
💡 認証の扱い方まとめ
ツール認証方式永続化パスコンテナでの注意
Claude CodeAPI Key (環境変数)~/.claude/Named Volume か bind mount で永続化
Codex CLIAPI Key (環境変数)~/.codex/bind mount 推奨。OAuth token もここに保存
Kiro CLIDevice Flow(ブラウザ)~/.local/share/kiro-cli/sqlite3 DB をボリュームマウントで永続化必須
01 — Claude Code 組み込み /sandbox
CLAUDE CODE
OS ネイティブの sandbox を使い Bash サブプロセスのファイル・ネットワークアクセスを制限。設定不要で始められる
🚀 セットアップ(OS別)
🍎 macOS — 追加インストール不要
# Claude Code を起動して実行するだけ
/sandbox

# OS 組み込みの Seatbelt が使われる
# 何もインストール不要

macOS では Seatbelt(sandbox-exec)が自動的に使われる。

🐧 Linux / WSL2 — 2パッケージ要
# Ubuntu/Debian
sudo apt-get install bubblewrap socat

# Fedora
sudo dnf install bubblewrap socat

# seccomp フィルタ(任意・推奨)
npm install -g @anthropic-ai/sandbox-runtime

# その後 Claude Code 再起動 → /sandbox

Ubuntu 24.04 は AppArmor 追加設定が必要な場合あり(後述)。

⚠️ Ubuntu 24.04 / AppArmor 制限

sysctl kernel.apparmor_restrict_unprivileged_userns1 の場合、bubblewrap が user namespace を作れない。以下のプロファイルを追加する:

sudo tee /etc/apparmor.d/bwrap <<'EOF'
abi <abi/4.0>,
include <tunables/global>
profile bwrap /usr/bin/bwrap flags=(unconfined) {
  userns,
}
EOF
sudo systemctl reload apparmor
⚙️ 2 つの動作モード
⚡ Auto-allow モード(推奨)
  • sandbox 内コマンドを自動承認
  • deny ルールは常に適用
  • 新ドメインアクセス時はプロンプト
  • rm / 等の危険操作は例外でプロンプト
  • 承認回数が大幅に減る
🔍 Regular permissions モード
  • sandbox 内でも通常の承認フロー
  • より細かくコントロールしたい場合
  • 承認数は減らない
  • sandbox の制限は同様に適用

/sandbox パネルの Mode タブで切り替え。設定は .claude/settings.local.json(git非管理)に保存される。全PJに適用したい場合は ~/.claude/settings.json"sandbox": {"enabled": true} を追加。

🔒 分離の仕組み

ファイルシステム制限

  • 書き込み: workdir + セッション temp のみ
  • 読み込み: ほぼ全域(~/.aws ~/.ssh も読める!)
  • ~/.bashrc 等のシェル設定は書き込み不可
  • settings.json 自体への書き込みは自動ブロック
  • allowWrite / denyRead で拡張可能

ネットワーク制限

  • デフォルト:許可ドメインなし
  • 新ドメインアクセス時にプロンプト(承認で追加)
  • allowedDomains で事前許可
  • deniedDomains で明示的ブロック
  • プロキシ経由・TLS は検査しない
⚠️ デフォルトで読み込める
~/.aws/credentials~/.ssh/id_rsa などは デフォルトで読み込み可能。 ブロックするには sandbox.filesystem.denyRead: ["~/.aws", "~/.ssh"] を明示的に設定すること。
📋 settings.json 設定リファレンス
// .claude/settings.json(プロジェクトスコープ)
{
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": false,    // true: 依存不足で起動失敗
    "allowUnsandboxedCommands": true, // false: エスケープハッチ無効化
    "enableWeakerNestedSandbox": false, // Docker内のみ true にする

    "filesystem": {
      "allowWrite": ["~/.kube", "/tmp/build"],  // 書き込み許可追加
      "denyRead":  ["~/.aws", "~/.ssh"],          // 読み込みブロック
      "allowRead": ["."]                           // denyRead 内の例外
    },

    "allowedDomains": ["registry.npmjs.org", "api.github.com"],
    "deniedDomains":  ["example.com"],

    "bwrapPath": "/usr/bin/bwrap",  // v2.1.133+ カスタムパス
    "socatPath": "/usr/bin/socat",

    "network": {
      "httpProxyPort": 8080,   // カスタムプロキシ
      "socksProxyPort": 8081
    }
  },

  "excludedCommands": ["docker *", "kubectl *"]  // sandbox 外で実行
}

パス prefix: / = 絶対パス、~/ = ホーム相対、./ or 無し = プロジェクトルート相対。

🛠️ よくあるトラブル
🐳 docker コマンドが sandbox 内で動かない

docker は sandbox と互換性なし。excludedCommands に追加して sandbox 外で実行させる:

"excludedCommands": ["docker *"]
🔁 コンテナ(devcontainer)内で bubblewrap が失敗する

非特権コンテナ内では bubblewrap が /proc をマウントできない。弱化モードを有効にする:

"enableWeakerNestedSandbox": true

注意:コンテナ自体の分離で補う前提。セキュリティが弱まる。

🧪 jest がハングする

watchman が sandbox と非互換。jest --no-watchman で実行するか、excludedCommands に追加。

🔐 macOS で gh / gcloud / terraform の TLS 検証エラー

Seatbelt 下で TLS 検証が失敗することがある。対処:

"excludedCommands": ["gh *", "gcloud *", "terraform *"]
01b — sandbox-runtime(プロセス全体を隔離)
🧪 @anthropic-ai/sandbox-runtime

/sandbox はBashコマンドしか隔離しない。Read/Edit/WebFetchなどの組み込みツールやMCPサーバー・hookはホスト上で無制限に動く。 Claude Codeプロセス全体を同じSeatbelt/bubblewrap隔離でラップしたい場合、Docker を使わずに sandbox-runtime を使う。

# 起動
npx @anthropic-ai/sandbox-runtime claude

デフォルトは書き込み・ネットワークとも全拒否~/.srt-settings.json(または--settingsで指定するファイル)で プロジェクトディレクトリと ~/.claude / ~/.claude.json への書き込み、api.anthropic.com 等の必要なドメインを事前に許可しておく必要がある。

⚠️ ベータ(研究プレビュー)
設定ファイルのスキーマは今後変わる可能性がある。安定運用ならまず /sandbox(Bashのみ)を使い、 file tools/MCP/hookも含めて丸ごと隔離したい場合にのみ検討する。
02 — Codex CLI 組み込み sandbox
CODEX CLI
config.toml の sandbox_mode と approval_policy の組み合わせで分離レベルを制御する
📊 3 つの sandbox_mode
✅ read-only
ファイルの読み込みのみ。編集・コマンド実行なし。

用途:コードレビュー・調査専用
⚡ workspace-write
ワークスペース内の読み書き・ローカルコマンド実行。ネットワークアクセスはデフォルト OFF。

用途:日常のローカル開発。--full-auto のデフォルト
🔓 danger-full-access
ファイルシステム・ネットワーク制限なし。

用途:Docker コンテナ内推奨。コンテナが境界になる
💡 --full-auto フラグの正体
--full-auto = approval_policy = "on-request" + sandbox_mode = "workspace-write" のショートカット。ネットワークは別途 sandbox_workspace_write.network_access = true が必要。
📋 config.toml 設定リファレンス
# ~/.codex/config.toml(グローバル)

# 承認ポリシー: "on-request" | "on-failure" | "never" | "untrusted"
approval_policy = "on-request"

# sandbox モード: "read-only" | "workspace-write" | "danger-full-access"
sandbox_mode = "workspace-write"

# workspace-write でのネットワーク許可
[sandbox_workspace_write]
network_access = false   # true にするとネット接続可

─────────────────────────────────────────
# Docker コンテナ内での推奨設定
approval_policy = "never"
sandbox_mode    = "danger-full-access"
# コンテナ境界がセキュリティ層になる
approval_policy意味使い場面
on-request毎回確認デフォルト。通常の対話作業
on-failure失敗時のみ確認自律実行させたい場合
never確認なしコンテナ内・CI環境
untrusted全操作に確認最高セキュリティが必要な場合
🌐 codex-universal Docker イメージ

OpenAI が提供する公式 Docker イメージ。Codex クラウドタスクと同じ環境を再現できる。

# 基本的な使い方
docker run --rm -it \
  -e OPENAI_API_KEY="$OPENAI_API_KEY" \
  -v "$HOME/.codex":/root/.codex \     # OAuth token を永続化
  -v "$PWD":/workspace \
  ghcr.io/openai/codex-universal:latest codex

# 言語バージョンを固定する
docker run --rm -it \
  -e OPENAI_API_KEY="$OPENAI_API_KEY" \
  -e CODEX_ENV_PYTHON_VERSION=3.12 \
  -e CODEX_ENV_NODE_VERSION=22 \
  -v "$PWD":/workspace \
  ghcr.io/openai/codex-universal:latest \
  codex --dangerously-bypass-approvals-and-sandbox \
        exec "テストを全部通してください"
収録ランタイムバージョン環境変数
Python3.10 / 3.11 / 3.12 / 3.13 / 3.14CODEX_ENV_PYTHON_VERSION
Node.js18 / 20 / 22 / 24CODEX_ENV_NODE_VERSION
Rust / Go / Java / Ruby / PHP複数バージョンCODEX_ENV_*
ビルドツールuv / pnpm / poetry / cmake / ninja / Bazelisk
03 — Docker Sandboxes(sbx CLI)
DOCKER
microVM で AI エージェントを完全隔離。独自カーネル・Docker daemon でホストを保護。Claude Code / Codex / Kiro 対応
🚀 セットアップと起動コマンド
✅ 必要なもの
  • Docker Desktop 4.44 以上
  • Docker Sandboxes 機能を有効化(Docker Desktop の設定から)
  • sbx CLI(Docker Desktop に同梱)
# ── 初回セットアップ(一度だけ)──────────────────
sbx secret set -g anthropic  # Claude Code 用
sbx secret set -g openai     # Codex CLI 用
# Kiro は初回起動時に device flow で認証(API key 不要)

# ── Claude Code ───────────────────────────────────
sbx run claude ~/my-project           # 対話型
sbx run claude . -- \
  --dangerously-skip-permissions \
  -p "ユニットテストを追加して"           # 非対話型

# ── Codex CLI ─────────────────────────────────────
sbx run codex ~/my-project            # 対話型
sbx run codex . -- exec \
  --sandbox read-only \
  --ask-for-approval never \
  "テストを全部通してください"          # 非対話型 CI 向け

# ── Kiro CLI ──────────────────────────────────────
sbx run kiro ~/my-project             # 対話型
sbx run kiro --name my-kiro \
  -- login --use-device-flow           # 初回ログイン
# → URL と確認コードが表示される → ブラウザで認証
# ※ ホストのユーザー設定は引き継がれない(プロジェクト設定のみ)

# ── 名前付きサンドボックスの管理 ─────────────────
sbx list                              # 実行中一覧
sbx stop <name>                       # 停止
sbx rm <name>                         # 削除
🛡️ microVM の分離レベル
  • 独自 Linux カーネル
  • 独自 Docker daemon
  • ハイパーバイザ境界でホストと分離
  • プロセス sandbox より格段に強い
  • エージェントがホストを破壊できない
📦 内部の動き
  • VM 起動 → プロジェクトを VM 内にマウント
  • ツール(claude/codex/kiro)を VM 内で実行
  • 成果物は bind mount でホストに反映
  • VM 終了でエージェント環境は消滅
04 — devcontainer 内で動かす場合の推奨設定

devcontainerのボリューム構成・~/.claude永続化の設計は コンテナ運用ガイド で詳しく扱う。ここではsandbox設定の推奨値のみ。

CLAUDE CODE in devcontainer
// .claude/settings.json
{
  "sandbox": {
    // bubblewrap はネスト不可なので弱化モード
    "enableWeakerNestedSandbox": true,

    // コンテナの iptables が代わりに制限
    "enabled": true,

    // 資格情報へのアクセスをブロック
    "filesystem": {
      "denyRead": ["~/.aws", "~/.ssh"]
    }
  },
  // docker コマンドは除外
  "excludedCommands": ["docker *"]
}

ネットワーク制限はコンテナの init-firewall.sh が担う。

CODEX CLI in devcontainer
# ~/.codex/config.toml

# コンテナ境界がセキュリティ層なので
# 確認なし・制限なしで動かせる
approval_policy = "never"
sandbox_mode    = "danger-full-access"

# または CLI フラグで指定
# codex --dangerously-bypass-approvals-and-sandbox
# codex --yolo (上記の別名)

コンテナの iptables でネットワーク制限を担わせる設計。

05 — 共通のセキュリティ限界
⚠️ どの方法でも残るリスク

最終更新: 2026-07-16 ✦ Claude Code 公式 Docs (code.claude.com/docs/en/sandboxing, /en/sandbox-environments)、Codex CLI Docs (developers.openai.com)、Docker Docs を参照 ✦ WebFetch で確認済み