Strands Box:OS隔離と「意味的ポリシー」を組み合わせ、先の操作に応じて後の権限を決めるオープンソースのエージェント用サンドボックス
strands-agents/boxはStrands Agentsチームが公開した、Rust製・Apache-2.0のAIエージェント用サンドボックスエンジン。OSレベルの隔離と、Dogwood言語のpermit/forbidポリシーを組み合わせ、判定エンジンはエージェントのプロセスの外で動き、既定は拒否。現在はApple Silicon搭載Macのみのプレビューで、執筆時点でスターは約393。独立した安全性監査は確認できなかった。
strands-agents/boxは、Strands Agentsチームが公開したオープンソースのプロジェクトで、「AIエージェントのためのオープンソースのサンドボックスエンジン」と説明されています。リポジトリはRustで書かれ、Apache-2.0ライセンスです。2026年10月2日に作成され、最後のプッシュは10月12日、執筆時点でスターは約393、フォークは19です。答えようとしている問いは実用的です。エージェントがコマンドを実行し、ファイルを読み書きし、ネットワークにつながり、外部ツールを呼べるとき、「何をしてよいか」をプロンプトの一言から、プログラムが強制する境界に変えるにはどうすればよいか、ということです。特定のエージェントには依存せず、動かすプログラムやバイナリを選び、box.tomlでアクセス範囲を、policy.dwでポリシーを書きます。
設計は2層です。第1層はOSの隔離で、box.tomlの直接のアクセス権限、たとえばどのディレクトリを読み書きでき、どのプログラムを起動できるかは、ホストのOSが強制します。第2層はDogwoodというポリシー言語による「意味的ポリシー」で、規則はpermitとforbidの2種類だけです。ポリシーエンジンが検査する操作は既定で拒否され、一致するpermitが許可しなければならず、一致するforbidはその許可を上書きします。面白いのは部品の配置です。Strands Shell、Python用のMonty、外向きゲートウェイ、MCPブローカーが、それぞれ扱う操作を組み込みのDogwoodローカルエンジンに渡して判定します。このエンジンはBox自身のプロセス、つまりエージェントのサンドボックスの外で動きます。エージェントはBoxのインタープリターにリクエストを送れますが、外部プログラムやローカルのMCPサーバーは送れず、外部プログラムのネットワーク通信は既定でBoxのゲートウェイを通ります。
この配置でいくつかの具体的な能力が得られます。第一に、インタープリターとゲートウェイが同じイベント履歴を共有するため、規則は過去の操作と経過時間を使えます。READMEの例は、ShellやPythonであるファイルを読んだことが原因で、その後の外部へのHTTPリクエストをゲートウェイが拒否するというもので、許可アドレスの一覧だけより実際のデータ漏えいに近い場面です。第二に、外向きゲートウェイは接続とHTTPリクエスト(メソッドとパスを含む)を検査し、MCPブローカーは設定済みのツール呼び出しと引数を検査します。第三に、ゲートウェイは許可されたリクエストを、設定されたAPI資格情報やAWS SigV4署名で認証できるため、エージェントは根本の秘密を受け取りません。第四に、すべてのポリシー判定はOTLP JSON形式で記録され、既定ではboxディレクトリ下のprivate/telemetry/records.jsonlに書かれ、後の監査に使えます。
使う前に、プロジェクトが示す境界を確認してください。まずプレビュー版で、Apple Silicon搭載Macでのローカル実行にしか対応していません。ガイドはmacOS 15以降、Homebrewで入れたNode.js 22.21以降、us-west-2のAmazon Bedrock上のClaude Opus 5を求めます。ダウンロードスクリプトはリリースのチェックサムを確認し、PATHやシステムのディレクトリを変えずに./box-coreへ展開します。次に、READMEは、box.tomlの直接のファイルシステム権限はOSが強制し、個別のDogwood判定を生まないと明記しています。ファイル操作にポリシーを効かせるには、インタープリターを使い、そのファイルをエージェントの直接権限から外してください。最後に、これらはすべてプロジェクト自身の説明で、私たちは実行しておらず、独立した安全性監査や侵入テストも見ていません。
どう評価するか。エージェントを作るチームにとって、役割分担が明快です。OSが「触れるか」を決め、ポリシーエンジンが「どんな条件で行えるか」を決め、両方がエージェントの外にあります。「パスワードを漏らさないでください」とプロンプトに書くより、はるかに確実で、ネットワークの許可リストだけのサンドボックスより細かいです。代償は、新しいポリシー言語を学び、ファイル、ネットワーク、ツール呼び出しをBox経由に直す必要があることです。LinuxとWindowsではまだ使えません。エージェントが機微なデータに触れるなら、まず付属のStrands Python SDKの小さなエージェントの例を試し、判定の記録を読んでから、運用を変える価値があるかを決めると良いでしょう。
Sources
FAQ
Strands Boxは何を解決し、どのように動くのですか。
エージェントを動かすプロセスに2層の制限をかけます。第1層はOSのサンドボックスで、box.tomlにエージェントが直接触れるファイル、プログラム、ネットワークを書き、ホストOSが強制します。第2層は意味的ポリシーで、policy.dwにDogwoodでpermitとforbidの規則を書き、エージェントの外にあるローカルエンジンが判定します。エンジンが検査する操作は既定で拒否され、一致するpermitだけが許可し、一致するforbidはそれを上書きします。Box自体は特定のエージェントに依存せず、動かすプログラムを自由に選べます。
「履歴に依存するポリシー」とは何ですか。
Boxのインタープリターとゲートウェイは同じイベント履歴を共有するため、規則は過去の操作や経過時間を使えます。READMEの例では、ShellやPythonでファイルを読むと、その後の外部へのHTTPリクエストをゲートウェイが拒否できます。ゲートウェイはリクエストのメソッドとパスも検査し、MCPブローカーは設定済みのツール呼び出しと引数を検査します。さらにAPI資格情報やAWS SigV4署名をゲートウェイが付与するため、エージェントは秘密鍵を持ちません。判定はOTLP JSONで記録されます。
本番で使えますか。どんな制限がありますか。
プロジェクト自身がプレビューと明記しています。対応はApple Silicon搭載Macでのローカル実行のみで、導入ガイドはmacOS 15以降、Homebrewで入れたNode.js 22.21以降、Amazon Bedrock上のClaude Opus 5を前提にしています。もう一つの制限は、box.tomlの直接のファイルシステム権限はOSが強制し、Dogwoodの判定を生まないことです。ファイル操作にポリシーを効かせるには、Boxのインタープリター経由で扱い、そのファイルを直接権限から外す必要があります。独立した監査は見当たらないため、自分で評価せずに重要なデータの保護を任せるのは避けるべきです。