本文へスキップ
メニュー
自分に必要?エージェントが手元のマシンで触れられるもの仕組みエージェントとシステムの間にある層比較組み込みサンドボックス、Docker、VM設定タスクに必要なものだけを開けるセキュリティ脅威モデルとその限界ダウンロードバイナリ、チェックサム、リリースノートインストール
AIコーディングエージェントのためのOSサンドボックス

AIコーディングエージェントのための檻

ai-jailは、Claude CodeやCodexなどのAIコーディングエージェントをLinuxとmacOSのOSサンドボックス内で実行します。プロジェクトには書き込めます。起動したエージェント自身のログイン情報を除き、あなたのファイルと認証情報には手が届きません。

terminal
ai-jail claude
VMではない

エージェントに渡すのはプロジェクトだけで、マシン全体ではありません。ai‑jailはその境界を実際に強制します。

まともなエージェントが誤るとき

エージェントは一日中、あなたが書いていない文章を読みます。Webページ、issue、README、パッケージ。指示を隠したページが1つあれば十分で、エージェントに悪意がなくてもそれに従ってしまいます。

↔ 横にスワイプすると図全体を見られます

同じページを、ai-jailなしとありで。鍵は読める場所になく、一般のインターネットは閉じたままです。例外はエージェント自身のAPIとLinuxのパッケージレジストリです。
エージェントの手が届くほかのもの
  1. エージェントはあなたとして動く

    コーディングエージェントは、あなたのユーザーアカウントで動くプログラムです。エージェントが起動するスクリプトやパッケージ、MCPサーバー(エージェントに追加のツールを提供する補助プログラム)も同じです。そのすべてが、あなたが開けるものは何でも開けます。

  2. ai-jail経由で起動する

    コマンドの前にai-jailと打ちます。エージェントは専用の名前空間で起動し、プロジェクトは元と同じパスにマウントされます。

  3. ホームはマウントされない

    エージェントには新しい空のホームディレクトリが渡されます。SSH鍵(サーバーにログインするためのファイル)もクラウドの認証情報も、ブラウザのプロファイルもほかのプロジェクトも、その中には存在しません。

  4. 秘密情報、ネットワーク、デバイスは閉じたまま

    環境変数は許可リストにあるものだけに絞られるので、シェルの秘密情報はシェルの外に出ません。ネットワークは閉じています。例外はエージェント自身のAPIホストと、Linuxではツールチェーンが取得先にするパッケージレジストリだけです。Dockerソケット、画面、クリップボードは無効です。

  5. タスクに必要なものを開ける

    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ファイルはジェイルを厳しくできても開けることはできません。

各層の仕組みを見る

最初によく聞かれる質問

エージェントは遅くなりますか?
いいえ。サンドボックスは、名前空間やマウントルールといったカーネルの機能でできています。エミュレーションも仮想マシンも使わないので、エージェントはネイティブの速度で動きます。
どのエージェントに対応していますか?
どんなコマンドでも動かせます。Claude Code、Codex、Gemini CLI、OpenCode、Antigravity、Kimi、Kiro、Prime Agent、Devin、Crush、Grok、jcode、pi、aider、SoulForge、ompについては、ログイン情報の置き場所を知っていて、デフォルトでマウントします。Installの表にそれぞれが得るものをまとめました。ai-jail bashを使えば、ジェイルの中でシェルを開いて様子を確かめられます。
Windowsで動きますか?
ネイティブでは動きません。WSL2を入れ、その中でLinux用のバックエンドを使ってください。
エージェントにインターネットが必要です。それでもジェイルは役に立ちますか?
はい。Claude Codeのような既知のエージェントは、何もしなくても自身のAPIホストに届き、Linuxではパッケージレジストリにも届きます。それ以外には届きません。--allow-hostは指定したホストを足します。代わりに--networkを有効にしても、エージェントが読めるのはプロジェクトだけなので、鍵もホームの残りも送る材料として存在しません。読めるものは送れます。だからプロジェクト内の秘密情報をマスクすることが大事です。マスクの方法を見る。
無料ですか?
はい。ai-jailはGPL 3.0ライセンスのオープンソースです。

エージェントを檻の中に

ai-jailは単一のバイナリで、デーモンもroot権限も要りません。いつものコマンドの前に1語足すだけです。

terminal
brew tap akitaonrails/tap && brew install ai-jailai-jail claude