概要
- Claude Code の--dangerously-skip-permissionsフラグ使用時の安全な実行環境構築方法
- Docker や他のサンドボックス手法の課題と限界
- Vagrant +VirtualBoxによるVM隔離の利点と実践手順
- パフォーマンスや安全性、実際の運用での注意点
- Claude Code の自由度を保ちつつ、事故リスクを低減する運用ノウハウ
Claude Codeの危険なフラグとその課題
- --dangerously-skip-permissions フラグで Claude Code が全権限で動作
- 「パッケージをインストールしてもいい?」「設定を変更してもいい?」などの 確認プロンプトが不要
- 作業効率向上だが、 ファイルシステム破壊リスク が高まる
- ホストOS上で直接実行は危険、安全な隔離が必須
Dockerによる隔離の検討と問題点
- Dockerコンテナ による隔離を最初に検討
- Claude Code にDockerイメージ作成・実行権限を与える必要
- Docker-in-Docker (dind)が必須となり、--privilegedモードが必要
- サンドボックスの意義が損なわれる (root権限でのコンテナ実行)
- ネットワークやボリュームの権限問題、運用の煩雑さ
- 結果的に 本末転倒 となるため却下
他の選択肢の検討
- ベアメタル実行 :論外
- sandbox-runtime :ACLベースで制限が強すぎる
- firejail等 :Docker-in-Dockerと同様の制約
- 手動VM構築 :再現性・手間の課題
- クラウドVM :コスト・遅延・データアップロードの手間
Vagrant+VirtualBoxによる隔離
- Vagrant :インフラをコードで管理できるローカルVM管理ツール
- 完全なVM隔離 (カーネル共有なし)
- 簡単な初期化・破棄
- 共有フォルダ でローカル感覚の作業
- Docker-in-Docker問題なし
- VirtualBox 7.2.4 のCPUバグに注意(高負荷問題あり)
Vagrantfileの例
- bento/ubuntu-24.04 ベースのVM
- 共有フォルダ :ホストとVM間で/agent-workspaceを同期
- VMリソース :メモリ4GB、CPU2コア、GUIなし
- プロビジョニング :Docker, Node.js, npm, git, unzip, Claude Codeインストール
- vagrantユーザー をdockerグループへ追加
vm_name = File.basename(Dir.getwd)
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-24.04"
config.vm.synced_folder ".", "/agent-workspace", type: "virtualbox"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
vb.cpus = 2
vb.gui = false
vb.name = vm_name
vb.customize ["modifyvm", :id, "--audio", "none"]
vb.customize ["modifyvm", :id, "--usb", "off"]
end
config.vm.provision "shell", inline: <<-SHELL
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y docker.io nodejs npm git unzip
npm install -g @anthropic-ai/claude-code --no-audit
usermod -aG docker vagrant
chown -R vagrant:vagrant /agent-workspace
SHELL
end
運用方法と利便性
- cd ~/my-project
- vagrant up でVM起動とプロビジョニング
- vagrant ssh 後、 claude --dangerously-skip-permissions で実行
- 初回のみ Claude Code へのサインインが必要
- vagrant suspend で一時停止、 exit でセッション終了
- VM破棄 も容易、何かあればすぐ再作成可能
Claude Codeの新たな力
- sudo権限付与 でインストール・設定変更・Docker操作など自在
- WebアプリAPIの起動・curlでの検証
- ブラウザインストール・E2Eテスト作成
- Postgres設定・マイグレーション検証
- Dockerイメージのビルド・実行
- ホストPCで実行するには不安な操作 も安心して任せられる
- 出力/エラーメッセージの中継不要 で一気通貫の自動化
パフォーマンス
- Claude Code 自体は軽量
- VMリソース も十分、共有フォルダのファイル同期も問題なし
- Linux+VirtualBox での検証、他OSは要確認
安全性とリスク
- 防げるリスク
- ファイルシステムの事故破壊
- 過剰なパッケージインストール
- 意図しない設定変更
- 「うっかり操作」全般
- 防げないリスク
- プロジェクト自体の削除(共有フォルダは双方向同期)
- VMエスケープ脆弱性 (稀だがゼロではない)
- ネットワーク経由の攻撃やデータ流出 (VMは外部ネットに接続可能)
- 脅威モデル :事故防止が主目的、高度な攻撃は想定外
- git管理 ならプロジェクト破損もリカバリ可能
- rsync型共有 で一方向同期も可能(要手動同期)
まとめと推奨
- VirtualBoxのCPUバグ 以外は構築も運用も快適
- Claude Code に全権限を与えても、VM隔離で安心
- Vagrantfile は短く再利用性が高い
- プロジェクトディレクトリに設置→vagrant upで即サンドボックス
- Claude Code dangerousフラグ利用者には強く推奨
- 慎重派でも、一瞬の油断で事故は起きる ため、こうした隔離策が有効