- AIコーディングエージェントを完全なシステム権限で実行しつつ、ユーザーのホームディレクトリ破損リスクを遮断するツール
- Claude Code、Codex、Gemini CLI、OpenCode など主要なAI CLIが事前設定され、**「YOLOモード」**で実行可能
- DockerまたはPodmanコンテナ内でプロジェクトディレクトリだけをマウントし、ホームディレクトリはデフォルトで除外
- コンテナ内ではsudo権限と永続ボリュームを提供し、ツールと設定をセッション間で維持
- 開発者がAI自動化機能を安全に試せる隔離されたサンドボックス環境を提供
概要
- YoloboxはAIコーディングエージェントをコンテナ内で実行し、システムを保護しながら完全な実行権限を与えるツール
- AIがコマンド実行中に誤って
rm -rf ~ のような破壊的コマンドを実行しても、ホームディレクトリには影響しない
- プロジェクトディレクトリは
/workspace にマウントされ、ホームディレクトリはデフォルトではマウントされない
- 永続ボリュームによりツールと設定がセッション間で保持される
主な構成と機能
- コンテナ内でAIエージェントはsudo権限を持ち、自由にコマンドを実行できる
- デフォルトイメージには次が含まれる
- AI CLI: Claude Code、Gemini CLI、OpenAI Codex、OpenCode(すべて自動実行モードに設定)
- 開発環境: Node.js 22、Python 3、make、cmake、gcc、Git、GitHub CLI
- ユーティリティ: ripgrep、fd、fzf、jq、vim
- 必要に応じてユーザーが直接 sudo で追加パッケージをインストール可能
実行とコマンド
yolobox コマンドでサンドボックスシェルに入る
yolobox run で単一コマンドを実行可能
yolobox upgrade、yolobox config、yolobox reset --force、yolobox version などの管理コマンドを提供
- 主なフラグ
--runtime: docker または podman を選択
--no-network: ネットワークを無効化
--readonly-project: プロジェクトを読み取り専用でマウント
--claude-config: ホストのClaude設定をコンテナにコピー
セキュリティモデル
- コンテナ分離をセキュリティ境界として使用
- コンテナはLinux名前空間を通じてファイルシステム、プロセス、ネットワークを分離
- AIはコンテナ内ではroot権限を持つが、外部システムにはアクセスできない
- 保護対象
- ホームディレクトリ、SSHキー、認証情報、dotfiles、他のプロジェクト、ホストシステムファイル
- 保護しない項目
- プロジェクトディレクトリ(デフォルトで読み書き可能)
- ネットワークアクセス(オプションで遮断可能)
- カーネル脆弱性やコンテナエスケープ攻撃
セキュリティ強化の段階
- 基本モード: 標準的なコンテナ分離
- 第2段階:
--no-network --readonly-project オプションで攻撃面を縮小
- 第3段階: Rootless Podman を使ってホストのroot権限を排除
- コンテナのrootがホストの一般ユーザーにマッピングされ、脱出時の被害を最小化
- 第4段階: VM内で実行してカーネル共有を排除
- macOSではUTM、Parallels、Lima、LinuxではPodman machineまたは専用VMを使用
ネットワーク分離
- Rootless Podmanはデフォルトでslirp4netnsネットワークを使用し、ホストネットワークから分離
allow_host_loopback=false 設定でローカルネットワークへのアクセスを遮断可能
ライセンスとその他
- MITライセンスで公開
- リポジトリの言語構成: Go 75.9%、Dockerfile 13.6%、Shell 8.7%、Makefile 1.8%
- 「Yolobox」という名前は「YOLO(You Only Live Once)」の精神に由来し、AIを自由に実行しつつ安全に隔離された環境を意味する
1件のコメント
Hacker Newsのコメント
最近、Litterboxという似たプロジェクトを作った(デモサイト)
Linux専用だが、Podman に依存しているため。代わりに、自分の用途に合った利点がある
自分も似たようなものを実験していた。
READMEに動作原理と 信頼境界(Dockerコンテナベース)を明確に説明するとよいと思う。カーネル脆弱性が悪用されうるので、コンテナ脱出のリスクは依然として存在する
Rootless Podman と
slirp4netnsを使ってネットワークアクセスを最小化している。次の段階として Podman machine を使ってカーネルを完全に分離しようとしているが、ボリュームマウントがうまく動かない
agents.mdやclaude.mdに アシモフの三原則 を入れるべきだと提案するclaude.mdに入れると、モデルがその概念を 「頭に刷り込まれる」 効果がある。昔のモデルは「象という単語を使うな」と言うと、むしろその単語を避けようとして妙な結果を出していたShaiを確認してみるとよいと勧める。ローカルで動作し、ディレクトリアクセス権とネットワークトラフィックを制御できる
shai -rw .で現在のディレクトリの読み書きを許可し、shai -u rootで別ユーザーとして実行できるShaiは デフォルト拒否、明示的許可(opt-in) の哲学に従う。
.shai/config.yamlをリポジトリで共有し、チーム全体で同じ設定を使うことを勧めている--no-networkで遮断できるyolo-cageを開発中。Yoloboxがローカルマシン保護に焦点を当てるのに対し、yolo-cageは 秘密情報の流出防止と複数エージェントの協調 に焦点を当てている
Kubernetesで実行され、すべてのegressトラフィックをスキャン してAPIキーやトークンの漏えいを防ぐ。
Gitブランチの分離を強制して、エージェントが自分のPRをマージできないようにする — 「エージェントは提案し、人間が承認する」
さらに 脱出テストフレームワーク を内蔵し、Claudeが自ら脱出を試みるよう誘導する。そのプロンプトはリポジトリ内にあり、エージェントが本物かどうかを検証する
コミットに「claude」表記を付ける必要がなぜあるのか不思議だった。OSやvimのバージョンのようには書かないのに。LLMは結局 英語をコードにコンパイルするツール にすぎない
自分も似た試みをした。もう少し 利便機能 を追加した Toadbox を作った
AI向けサンドボックスの話は多いが、実は Claude Code、Codex、Gemini CLI にはすでに 内蔵サンドボックス がある
自分は Apple Container Framework を使って似たものを実装中。確認したことがあるか気になる
ただし Docker API互換性 と 構成可能性 が不足している。関連する議論を ここ にまとめた
もともとShaiをApple Container上に載せようとしたが、パッケージングの問題 で断念した
自分も似たものを作っている → sandbox-codex
まだ進行中で、tmuxログの可読性 が低い。Dockerは完全なサンドボックスではないので、VirtualBoxで動かしている