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

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

エージェントはあなたのユーザーアカウントで動くので、あなたが読めるものはすべて読めます。ai-jailはエージェントをOSサンドボックスの中で起動します。プロジェクトには書き込めますが、鍵やトークン、ホームディレクトリはそこにありません。

terminal
cd ~/Projects/my-appai-jail claude
回路パターンでできた南京錠。窓の格子の奥で光っているマイクロチップがエージェントです。
  1. エージェントはあなたとして動く

    コーディングエージェントは、あなたのユーザーアカウントで動くプログラムです。エージェント本体も、それが起動するスクリプトやパッケージ、MCPサーバーも、あなたが開けるものは何でも開けます。

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

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

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

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

  4. 秘密情報、ネットワーク、デバイスは無効

    環境変数は許可リストにあるものだけに絞られるので、シェルにあるトークンはシェルの外に出ません。ネットワーク、Dockerソケット、画面、クリップボードはすべて無効です。

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

    クラウド型のエージェントにはネットワークと自身のログイン情報が必要なので、その2つを有効にします。それ以外は、指定するまで閉じたままです。

壁はハーネス全体を囲む

サンドボックスを内蔵するエージェントは、モデルが実行するコマンドだけをその中に入れます。エージェントのプロセス、ファイル操作ツール、MCPサーバー、フックは外側に残り、あなたのアカウントで動きます。ai-jailはそのすべてを中で起動します。

2枚のパネル。左では、組み込みサンドボックスが囲んでいるのはシェルコマンドだけで、エージェント、MCPサーバー、フックはその外、ホームディレクトリの隣にあります。右では、ai-jailがエージェント、MCPサーバー、フック、シェルコマンドをまとめて囲み、ホームディレクトリは壁の外にあります。
ポリシーは一度書けば、使うすべてのエージェントに効きます。
詳しい比較を見る

設定なしで得られるもの

どの機能も、有効にするまでは無効です。プロジェクト外への書き込みはメモリ上に置かれ、セッションが終わると消えます。

ジェイルの中

  • プロジェクトディレクトリ。読み書き可能で、パスは実際のまま
  • /usrにあるシステムのツールチェーン。読み取り専用
  • 新しいホームディレクトリと専用の/tmp

手が届かない

  • ~/.ssh~/.aws~/.gnupg、ブラウザのプロファイル
  • シェル環境にあるトークンとAPIキー
  • ほかのプロセス、ホストのIPC、ptracebpfなどのカーネルインターフェース

指定するまで無効

  • --network
  • --agent-state、エージェント自身のログイン情報
  • --ssh--gpu--display--dockerなど
すべてのスイッチを見る

複数のカーネル層を、小さなバイナリ1つで

Linuxでは、bubblewrapが名前空間とマウントを組み立て、Landlockがファイルシステムのルールをカーネル内でもう一度適用し、seccompが危険なシステムコールを止め、リソース制限が暴走したプロセスを抑えます。macOSでは、同じポリシーがsandbox-execのプロファイルになります。

デーモンもrootも不要

ai-jailはRust製の単一バイナリで、エージェントを起動し、エージェントと一緒に終了します。バックグラウンドに残るものはなく、sudoを打つ場面もありません。

イメージは使わず、手元のツールチェーンで

エージェントは、手元のマシンにすでにあるコンパイラやランタイムを使います。コンテナイメージをビルドしたり更新し続けたりする必要はありません。

リポジトリ側からは緩められない

プロジェクト内の.ai-jailファイルは、サンドボックスを厳しくできても緩めることはできません。緩められるのは、あなた自身のグローバル設定ファイルとフラグだけです。

各層の仕組みを見る

最初によく聞かれる質問

エージェントは遅くなりますか?
いいえ。サンドボックスは、名前空間やマウントルールといったカーネルの機能でできています。エミュレーションも仮想マシンも使わないので、エージェントはネイティブの速度で動きます。
どのエージェントに対応していますか?
どんなコマンドでも動かせます。Claude Code、Codex、Gemini CLI、OpenCode、Crush、Grok、Kimi、pi、jcode、SoulForgeにはプリセットがあります。ai-jail bashを使えば、ジェイルの中でシェルを開いて様子を確かめられます。
Windowsで動きますか?
ネイティブでは動きません。WSL2を入れ、その中でLinux用のバックエンドを使ってください。
エージェントにインターネットが必要です。それでもジェイルは役に立ちますか?
はい。--networkを有効にしても、エージェントが読めるのはプロジェクトだけです。鍵やホームのほかのファイルは、送ろうにもそこにありません。ただし、読めるものは送れます。プロジェクト内の秘密情報をマスクしておくことが大事なのはそのためです。マスクする方法を見る
無料ですか?
はい。ai-jailはGPL 3.0ライセンスのオープンソースです。

エージェントを檻の中に

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

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