Beta — OSレベルのサンドボックスはオプトインで、現在も活発に開発中です。挙動、
設定、プラットフォームサポートはリリースごとに変更される可能性があります。
デフォルトのアクセスポリシー(サンドボックス有効時)
| リソース | デフォルトポリシー | 設定項目 |
|---|---|---|
| ファイル読み取り | すべて許可。明示的な denyRead エントリのみブロックされます。 | sandbox.filesystem.denyRead |
| ファイル書き込み | CWD(現在の作業ディレクトリ)以外はすべて拒否。追加のパスは許可できます。denyWrite は allowWrite より優先されます。 | sandbox.filesystem.allowWrite, sandbox.filesystem.denyWrite |
| ネットワーク | *.factory.ai(デフォルトで常に許可)以外はすべて拒否。追加のドメインは明示的に許可する必要があります。 | sandbox.network.allowedDomains |
含まれる機能
コマンド単位のサンドボックスモード(有効時のデフォルト):- ファイルツール(Read、Edit、Create、LS、Grep、Glob、ApplyPatch) — すべての操作の前に
checkFileAccess()を実行し、読み取りにはdenyRead、書き込みにはallowWrite/denyWriteを適用 - Execute ツール — シェルコマンドを OS サンドボックス(Seatbelt / bubblewrap)でラップし、ネットワークはドメインレベル制御のために SRT のフィルタリングプロキシ経由でルーティング
- FetchUrl —
allowedDomainsに対してcheckNetworkAccess()を実行 - 注記 — メインのDroidプロセス、MCP、サブエージェントはまだ分離されていません。
- サンドボックス違反があると、Auto(High)自律レベルでもエージェントループが中断され、TUIプロンプトが表示されます
- 3つの選択肢: 1回だけ許可、常に許可(設定に永続化)、拒否
denyWrite違反では、「常に許可」の代わりに「拒否リストから削除」オプションが表示されます(設定のdenyWriteから該当エントリを削除)denyRead違反でも、「常に許可」の代わりに「拒否リストから削除」オプションが表示されます- Execute のネットワーク違反では、SRT のプロキシコールバックを通じたリアルタイムのドメインプロンプトが表示され、60秒で自動拒否されます
droid exec):
- サンドボックス違反はプロンプトなしで自動拒否されます — ハングせず、ユーザー操作も不要です
- エージェントは拒否メッセージを受け取り、それを出力に報告します
- ファイル書き込み違反(CWD外): ユーザー設定の
sandbox.filesystem.allowWriteに親ディレクトリを追加 denyWrite違反:sandbox.filesystem.denyWriteから該当エントリを削除denyRead違反:sandbox.filesystem.denyReadから該当エントリを削除- ドメイン違反: ドメイン(3つ以上のパートを持つドメインではワイルドカード付き。例:
registry.npmjs.org->*.npmjs.org)をsandbox.network.allowedDomainsに追加 - 変更は現在のセッションにすぐ反映されます
- 組織レベルの
denyWrite/denyRead設定は、ユーザーの「常に許可」では上書きできません - 拒否が組織設定に由来する場合、違反プロンプトには「(組織ポリシー)」と表示されます
- サンドボックス有効時は、フッターに
SANDBOXステータスインジケーターを表示 - 違反の詳細(パス、ドメイン、理由)を含む「Sandbox Violation」プロンプトを表示
設定構成
denyWrite / denyRead は和集合マージを使用するため、組織による拒否は下位レイヤーで削除できません。
