コンテンツにスキップ

Multi-Agent Sandbox と Tools の設定ガイド

複数の AI Agent を運用していると、セキュリティの境界線に悩むことがあります。例えば、自分のローカル環境で自由にコードを実行させたい Agent もいれば、パブリックな環境や家族向けのチャットで動かすために機能を制限したい Agent もいるはずです。これらを一つの設定で管理しようとすると、権限が強すぎたり、逆に不便すぎたりといった問題が発生します。

OpenClaw では、Agent ごとに独立した Sandbox 設定とツール利用権限(Tool restrictions)を持たせることができます。これにより、フルアクセス可能な個人アシスタントと、機能を絞った公開用 Agent を安全に共存させることが可能です。

  • OpenClaw のインストール
  • Docker(Sandbox 機能を利用する場合)
  • 設定ファイル(JSON 形式)へのアクセス権

まずは、5分で設定できる「メインの個人アシスタント」と「制限付きの家族用 Bot」の構成例を見てみましょう。

{
"agents": {
"list": [
{
"id": "main",
"default": true,
"name": "Personal Assistant",
"workspace": "~/.openclaw/workspace",
"sandbox": { "mode": "off" }
},
{
"id": "family",
"name": "Family Bot",
"workspace": "~/.openclaw/workspace-family",
"sandbox": {
"mode": "all",
"scope": "agent"
},
"tools": {
"allow": ["read"],
"deny": ["exec", "write", "edit", "apply_patch", "process", "browser"]
}
}
]
},
"bindings": [
{
"agentId": "family",
"match": {
"provider": "whatsapp",
"accountId": "*",
"peer": {
"kind": "group",
"id": "120363424282127706@g.us"
}
}
}
]
}

この設定を適用すると、以下のようになります。

  • main Agent: ホストマシン上で動作し、すべてのツールにアクセスできます。
  • family Agent: Docker コンテナ内で動作し、read ツールのみが許可されます。

グローバル設定(agents.defaults.*)と Agent 個別の設定(agents.list[].*)が両方存在する場合、Agent 個別の設定が優先されます。

以下の項目は、Agent 個別の設定がグローバル設定を上書きします。

  • agents.list[].sandbox.mode > agents.defaults.sandbox.mode
  • agents.list[].sandbox.scope > agents.defaults.sandbox.scope
  • agents.list[].sandbox.docker.* > agents.defaults.sandbox.docker.*
  • agents.list[].sandbox.browser.* > agents.defaults.sandbox.browser.*

Tool Restrictions のフィルタリング

Section titled “Tool Restrictions のフィルタリング”

ツールは以下の順序でフィルタリングされます。後のステップで制限を追加することはできますが、前のステップで拒否された権限を復活させることはできません。

  1. Tool profile: tools.profile または Agent 個別の profile
  2. Global tool policy: tools.allow / tools.deny
  3. Agent-specific tool policy: agents.list[].tools.allow/deny
  4. Sandbox tool policy: tools.sandbox.tools または Agent 個別の sandbox.tools

便利なツールグループ(Shorthands)

Section titled “便利なツールグループ(Shorthands)”

ツールを一つずつ指定する代わりに、便利なグループ指定が使えます。

  • group:runtime: exec, bash, process
  • group:fs: read, write, edit, apply_patch
  • group:messaging: message
  • group:openclaw: すべての組み込み OpenClaw ツール

設定が完了したら、正しく反映されているか確認しましょう。

  1. Agent の解決状況を確認する:

    Terminal window
    openclaw agents list --bindings
  2. Sandbox コンテナの状態を確認する:

    Terminal window
    docker ps --filter "name=openclaw-sbx-"
  3. ログを監視する:

    Terminal window
    tail -f "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/logs/gateway.log" | grep -E "routing|sandbox|tools"

mode: "all" にしたのに Sandbox 化されない

Section titled “mode: "all" にしたのに Sandbox 化されない”
  • グローバルの agents.defaults.sandbox.mode が影響していないか確認してください。
  • 確実に適用するには、agents.list[].sandbox.mode: "all" を明示的に設定してください。

拒否リストに入れたツールがまだ使える

Section titled “拒否リストに入れたツールがまだ使える”
  • フィルタリングの順序(Global → Agent → Sandbox)を確認してください。
  • ログで [tools] filtering tools for agent:${agentId} という出力を探し、どの段階でツールが許可されているかチェックします。

コンテナが Agent ごとに分離されない

Section titled “コンテナが Agent ごとに分離されない”
  • Agent 個別の設定で scope: "agent" が設定されているか確認してください。
  • デフォルトの "session" スコープでは、セッションごとにコンテナが作成されます。

設定についてさらに詳しく知りたい場合や、個別のトラブルシューティングが必要な場合は、AI Setup Assistant を活用してください。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。