
Claude Codeをバイパスモードで安全に実行するためのサンドボックス化されたdevcontainer。セキュリティ監査や信頼できないコードのレビュー用に構築されています。
bypassPermissions を安全に有効化した状態で Claude Code を実行するためのサンドボックス化された開発環境です。Trail of Bits でセキュリティ監査ワークフロー向けに構築されました。
ホストマシン上で bypassPermissions を有効にして Claude を実行するのは危険です。確認なしに任意のコマンドを実行できてしまうからです。この devcontainer は ファイルシステムの分離 を提供するため、ホストシステムを危険にさらすことなく、制限なしの Claude による生産性向上のメリットを得られます。
次のような用途に向いています:
Docker ランタイム (いずれか):
brew install colima docker && colima startターミナルでのワークフロー向け (初回のみインストール):
npm install -g @devcontainers/cli
git clone https://github.com/trailofbits/claude-code-devcontainer ~/.claude-devcontainer
~/.claude-devcontainer/install.sh self-install
Colima のデフォルト設定(QEMU + sshfs)は控えめです。パフォーマンスを向上させるには:
# Stop and delete current VM (removes containers/images)
colima stop && colima delete
# Start with optimized settings
colima start \
--cpu 4 \
--memory 8 \
--disk 100 \
--vm-type vz \
--vz-rosetta \
--mount-type virtiofs
お使いの Mac に合わせて --cpu と --memory を調整してください(例: Pro なら 6/16、Max なら 8/32)。
ワークフローに合うパターンを選択してください:
各プロジェクトは独立したボリュームを持つ独自のコンテナを取得します。一回限りのレビュー、信頼できないリポジトリ、プロジェクト間の分離が必要な場合に最適です。
ターミナル:
git clone <untrusted-repo>
cd untrusted-repo
devc . # Installs template + starts container
devc shell # Opens shell in container
VS Code / Cursor:
Dev Containers 拡張機能をインストールします:
ms-vscode-remote.remote-containersanysphere.remote-containersdevcontainer をセットアップします(どちらかを選択):
# Option A: Use devc (recommended)
devc .
# Option B: Clone manually
git clone https://github.com/trailofbits/claude-code-devcontainer .devcontainer/
VS Code で プロジェクトフォルダ を開き、次の操作を行います:
Cmd+Shift+P(Mac)または Ctrl+Shift+P(Windows/Linux)を押す親ディレクトリに devcontainer 設定を置き、その中に複数のリポジトリをクローンします。すべてのリポジトリ間でボリュームを共有します。クライアント案件、関連リポジトリ、継続的な作業に最適です。
# Create workspace for a client engagement
mkdir -p ~/sandbox/client-name
cd ~/sandbox/client-name
devc . # Install template + start container
devc shell # Opens shell in container
# Inside container:
git clone <client-repo-1>
git clone <client-repo-2>
cd client-repo-1
claude # Ready to work
ヘッドレスサーバー向け、または対話型ログインウィザードをスキップする場合:
claude setup-token # run on host, one-time
export CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-...
devc rebuild # rebuilds with token
トークンはコンテナ内に転送されます。コンテナ作成のたびに post_install.py がワンショットの認証ハンドシェイクを実行するため、claude はログインウィザードなしで起動します。
これは、有効な認証情報がある場合でも Claude Code の対話型オンボーディングウィザードがコンテナ内で常に表示される問題(#8938)を回避します。
トークンを設定しない場合、従来どおり対話型ログインフローが機能します。
devc . Install template + start container in current directory
devc up Start the devcontainer
devc rebuild Rebuild container (preserves persistent volumes)
devc destroy [-f] Remove container, volumes, and image for current project
devc down Stop the container
devc shell Open zsh shell in container
devc exec CMD Execute command inside the container
devc upgrade Upgrade Claude Code in the container
devc mount SRC DST Add a bind mount (host → container)
devc sync [NAME] Sync Claude Code sessions from devcontainers to host
devc template DIR Copy devcontainer files to directory
devc self-install Install devc to ~/.local/bin
注:
devc destroyを使用して、プロジェクトの Docker リソースをクリーンアップしてください。コンテナを手動で削除すると(例:docker rm)、孤立したボリュームとイメージが残り、devc destroyではそれらを見つけられなくなります。
/insights のセッション同期Claude Code の /insights コマンドはセッション履歴を分析しますが、ホスト上の ~/.claude/projects/ のみを読み取ります。devcontainer ボリューム内のセッションは参照できません。
devc sync は、すべての devcontainer(実行中および停止中)からホストへセッションログをコピーし、/insights がそれらを含められるようにします:
devc sync # Sync all devcontainers
devc sync crypto # Filter by project name (substring match)
devcontainer は Docker ラベルを介して自動検出されるため、コンテナ名や ID を知る必要はありません。同期は増分方式のため、繰り返し実行しても安全です。
ホストからファイルを VS Code のエクスプローラーパネルにドラッグしてください。/workspace/ に自動的にコピーされます。設定は不要です。
devc mountホストのディレクトリをコンテナ内で利用可能にするには:
devc mount ~/drop /drop # Read-write
devc mount ~/secrets /secrets --readonly
これにより devcontainer.json にバインドマウントが追加され、コンテナが再作成されます。既存のマウントは devc template の更新後も保持されます。
ヒント: 共有「ドロップフォルダ」は、ホームディレクトリ全体をマウントせずにファイルを受け渡しするのに便利です。
セキュリティ上の注意: 大きなホストディレクトリ(例:
$HOME)のマウントは避けてください。マウントされたパスは、--readonlyが指定されていない限りコンテナ内から書き込み可能であり、このプロジェクトが提供するファイルシステムの分離を損なうことになります。
デフォルトでは、コンテナは完全なアウトバウンドネットワークアクセスを持ちます。より厳格なセキュリティが必要な場合は、iptables を使用してネットワークアクセスを制限してください。
sudo iptables -A OUTPUT -d api.anthropic.com -j ACCEPT
sudo iptables -A OUTPUT -d github.com -j ACCEPT
sudo iptables -A OUTPUT -d raw.githubusercontent.com -j ACCEPT
sudo iptables -A OUTPUT -d registry.npmjs.org -j ACCEPT
sudo iptables -A OUTPUT -d pypi.org -j ACCEPT
sudo iptables -A OUTPUT -d files.pythonhosted.org -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -A OUTPUT -j DROP
このプロジェクトが対処する主な脅威は、ホストマシン上で Claude Code が任意のコマンドを実行することです。bypassPermissions が有効な場合、Claude は確認なしにシェルコマンドの実行、パッケージのインストール、ファイルの変更を行います。ホストマシン上では、シェル設定の変更、プロジェクトディレクトリ外での rm -rf、ローカルに保存された認証情報の悪用などが可能になります。devcontainer はこれらすべてを、影響範囲が /workspace に限定された使い捨てコンテナ内に閉じ込めます。
コンテナには一般的な開発ツールが含まれているため、Claude を実行するだけでなく、すべての開発作業をコンテナ内で行うことができます。想定されるワークフローは、リポジトリをクローンし、devcontainer を起動し、その中で完結して作業するというものです。プロジェクトに含まれていない追加のランタイムやツールが必要な場合は、繰り返し使うために Dockerfile に追加するか、devc exec でその場限りインストールしてください。
何が分離され、何が分離されていないかの具体的な境界については、下記の セキュリティモデル を参照してください。特筆すべき点として、devcontainer ランタイムはホストの SSH エージェントソケット(SSH_AUTH_SOCK)を自動的にコンテナ内へ転送します。これによりコンテナ内のコードが SSH 経由でユーザーとして認証できます(例: git push)が、実際の秘密鍵の実体はホストに留まり、コンテナに公開されることはありません。
この devcontainer は ファイルシステムの分離 を提供しますが、完全なサンドボックスではありません。
サンドボックス化されるもの: ファイルシステム(ホストのファイルにはアクセス不可)、プロセス(ホストから分離)、パッケージインストール(コンテナ内に留まる)
サンドボックス化されないもの: ネットワーク(デフォルトで完全なアウトバウンドアクセス—ネットワーク分離 を参照)、git の identity(~/.gitconfig は読み取り専用でマウント)、SSH エージェント(ソケットは転送されるが、鍵はホストに留まる)、Docker ソケット(デフォルトではマウントされない)
コンテナは bypassPermissions モードを自動設定します—Claude は確認なしでコマンドを実行します。これはホストマシン上では危険ですが、コンテナ自体がサンドボックスです。
ボリュームはコンテナの外部に保存されるため、devc rebuild 後もシェル履歴、Claude 設定、gh ログインが保持されます。ホストの ~/.gitconfig は git の identity のために読み取り専用でマウントされます。
npm install -g @devcontainers/cli
devc rebuilddocker logs $(docker ps -lq)gh ボリュームの所有者を修正する必要がある場合があります:
sudo chown -R $(id -u):$(id -g) ~/.config/gh
Python は uv で管理されています:
uv run script.py # Run a script
uv add package # Add project dependency
uv run --with requests py.py # Ad-hoc dependency
イメージを手動でビルドします:
devcontainer build --workspace-folder .
コンテナをテストします:
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . zsh
| オプション | 利点 |
|---|
--vm-type vz | Apple Virtualization.framework(QEMU より高速) |
--mount-type virtiofs | sshfs より 5〜10 倍高速なファイル I/O |
--vz-rosetta | Rosetta 経由で x86 コンテナを実行 |
colima status で確認できます - "macOS Virtualization.Framework" と "virtiofs" と表示されるはずです。
| コンポーネント | 詳細 |
|---|
| ベース | Ubuntu 24.04, Node.js 22, Python 3.13 + uv, zsh |
| ユーザー | vscode (パスワードレス sudo)、作業ディレクトリ /workspace |
| ツール | rg, fd, tmux, fzf, delta, iptables, ipset |
| ボリューム(再ビルド後も保持) | コマンド履歴 (/commandhistory)、Claude 設定 (~/.claude)、GitHub CLI 認証 (~/.config/gh) |
| ホストマウント | ~/.gitconfig (読み取り専用)、.devcontainer/ (読み取り専用) |
| 自動設定 | anthropics + trailofbits スキル、git-delta |