エージェントに渡すのはプロジェクトだけで、マシン全体ではありません。ai‑jailはその境界を実際に強制します。
まともなエージェントが誤るとき
エージェントは一日中、あなたが書いていない文章を読みます。Webページ、issue、README、パッケージ。指示を隠したページが1つあれば十分で、エージェントに悪意がなくてもそれに従ってしまいます。
↔ 横にスワイプすると図全体を見られます
エージェントはあなたとして動く
コーディングエージェントは、あなたのユーザーアカウントで動くプログラムです。エージェントが起動するスクリプトやパッケージ、MCPサーバー(エージェントに追加のツールを提供する補助プログラム)も同じです。そのすべてが、あなたが開けるものは何でも開けます。
ai-jail経由で起動する
コマンドの前に
ai-jailと打ちます。エージェントは専用の名前空間で起動し、プロジェクトは元と同じパスにマウントされます。ホームはマウントされない
エージェントには新しい空のホームディレクトリが渡されます。SSH鍵(サーバーにログインするためのファイル)もクラウドの認証情報も、ブラウザのプロファイルもほかのプロジェクトも、その中には存在しません。
秘密情報、ネットワーク、デバイスは閉じたまま
環境変数は許可リストにあるものだけに絞られるので、シェルの秘密情報はシェルの外に出ません。ネットワークは閉じています。例外はエージェント自身のAPIホストと、Linuxではツールチェーンが取得先にするパッケージレジストリだけです。Dockerソケット、画面、クリップボードは無効です。
タスクに必要なものを開ける
Claude Code、Codex、Gemini、Grok、Devinはログイン済みで始まり、自身のAPIホストに届きます。フラグ、つまり
ai-jailの後ろに打つオプションでさらに開けます。--allow-hostはホストを足し、--networkはすべてを開けます。
壁はハーネス全体を囲む
サンドボックスを内蔵するエージェントは、モデルが実行するコマンドだけをその中に入れます。エージェントのプロセス、ファイル操作ツール、MCPサーバー、フック(決まったタイミングでエージェントが実行するスクリプト)は外側に残り、あなたのアカウントで動きます。ai-jailはそのすべてを中で起動します。プロンプトは人に尋ねます。人は急いでいたり、騙されたりします。サンドボックスはカーネル、つまりOSの中核に尋ねます。答えは毎回同じです。
↔ 横にスワイプすると図全体を見られます
設定なしで得られるもの
あなたのマシンに届くものは、オンにするまですべてオフです。例外はエージェント自身のログイン情報、自身のAPIホスト、ツールチェーン(Linux)とそのパッケージレジストリで、それぞれに--no-のスイッチがあります。プロジェクト外への書き込みはメモリに置かれ、セッションが終わると消えます。
ジェイルの中
- プロジェクト。読み書き可能で、パスは実際のまま
- 手元のツールチェーン。読み取り専用で、ジェイル専用のキャッシュ付き(Linux)
~/.claudeなどエージェント自身のログイン情報。ログイン済みで起動できる- 既知のエージェント自身のAPIホストと、Linuxではパッケージレジストリ
- 新しいホームディレクトリと専用の
/tmp
手が届かない
~/.ssh、~/.aws、~/.gnupg、ブラウザのプロファイル- シェルの秘密情報。ただしエージェント自身のAPIキーは除く
- ほかのプロセス、ホストのIPC、
ptraceとbpf
指定するまで無効
- ホストを足すなら
--allow-host、ローカルのサービス1つなら--forward-port、全部なら--network --ssh、--gpu、--display、--dockerなど
ai-jailは、デーモンもrootも要らない小さなプログラム1つです。Linuxでは、bubblewrapで名前空間とマウントを作り、カーネルが対応していればLandlock、seccomp、リソース制限も重ねます。macOSでは、プラットフォームが対応する範囲をより薄いsandbox-execプロファイルに変換します。エージェントは手元のコンパイラやランタイムを使い、デフォルトではリポジトリ内の.ai-jailファイルはジェイルを厳しくできても開けることはできません。
最初によく聞かれる質問
エージェントは遅くなりますか?
どのエージェントに対応していますか?
ai-jail bashを使えば、ジェイルの中でシェルを開いて様子を確かめられます。Windowsで動きますか?
エージェントにインターネットが必要です。それでもジェイルは役に立ちますか?
--allow-hostは指定したホストを足します。代わりに--networkを有効にしても、エージェントが読めるのはプロジェクトだけなので、鍵もホームの残りも送る材料として存在しません。読めるものは送れます。だからプロジェクト内の秘密情報をマスクすることが大事です。マスクの方法を見る。無料ですか?
エージェントを檻の中に
ai-jailは単一のバイナリで、デーモンもroot権限も要りません。いつものコマンドの前に1語足すだけです。
brew tap akitaonrails/tap && brew install ai-jailai-jail claude