Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Setiap agen dalam penyiapan multi-agen dapat menimpa kebijakan sandbox dan alat global. Halaman ini membahas konfigurasi per agen, aturan prioritas, dan contoh.

Sandboxing

Backend dan mode — referensi sandbox lengkap.

Sandbox vs tool policy vs elevated

Debug “mengapa ini diblokir?”

Elevated mode

Exec elevated untuk pengirim tepercaya.
Autentikasi dicakup berdasarkan agen: setiap agen memiliki penyimpanan autentikasi agentDir sendiri di ~/.openclaw/agents/<agentId>/agent/auth-profiles.json. Jangan pernah menggunakan ulang agentDir antar agen. Agen dapat membaca hingga ke profil autentikasi agen default/utama ketika tidak memiliki profil lokal, tetapi token refresh OAuth tidak dikloning ke penyimpanan agen sekunder. Jika Anda menyalin kredensial secara manual, salin hanya profil api_key atau token statis yang portabel.

Contoh konfigurasi

{
  "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", "message"],
          "deny": ["exec", "write", "edit", "apply_patch", "process", "browser"],
          "message": {
            "crossContext": {
              "allowWithinProvider": false,
              "allowAcrossProviders": false
            }
          }
        }
      }
    ]
  },
  "bindings": [
    {
      "agentId": "family",
      "match": {
        "provider": "whatsapp",
        "accountId": "*",
        "peer": {
          "kind": "group",
          "id": "120363424282127706@g.us"
        }
      }
    }
  ]
}
Hasil:
  • Agen main: berjalan di host, akses alat penuh.
  • Agen family: berjalan di Docker (satu kontainer per agen), hanya pengiriman pesan read dan percakapan saat ini.
{
  "agents": {
    "list": [
      {
        "id": "personal",
        "workspace": "~/.openclaw/workspace-personal",
        "sandbox": { "mode": "off" }
      },
      {
        "id": "work",
        "workspace": "~/.openclaw/workspace-work",
        "sandbox": {
          "mode": "all",
          "scope": "shared",
          "workspaceRoot": "/tmp/work-sandboxes"
        },
        "tools": {
          "allow": ["read", "write", "apply_patch", "exec"],
          "deny": ["browser", "gateway", "discord"]
        }
      }
    ]
  }
}
{
  "tools": { "profile": "coding" },
  "agents": {
    "list": [
      {
        "id": "support",
        "tools": { "profile": "messaging", "allow": ["slack"] }
      }
    ]
  }
}
Hasil:
  • agen default mendapatkan alat coding.
  • agen support hanya untuk perpesanan (+ alat Slack).
{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "scope": "session"
      }
    },
    "list": [
      {
        "id": "main",
        "workspace": "~/.openclaw/workspace",
        "sandbox": {
          "mode": "off"
        }
      },
      {
        "id": "public",
        "workspace": "~/.openclaw/workspace-public",
        "sandbox": {
          "mode": "all",
          "scope": "agent"
        },
        "tools": {
          "allow": ["read"],
          "deny": ["exec", "write", "edit", "apply_patch"]
        }
      }
    ]
  }
}

Prioritas konfigurasi

Ketika konfigurasi global (agents.defaults.*) dan konfigurasi khusus agen (agents.list[].*) sama-sama ada:

Konfigurasi sandbox

Pengaturan khusus agen menimpa global:
agents.list[].sandbox.mode > agents.defaults.sandbox.mode
agents.list[].sandbox.scope > agents.defaults.sandbox.scope
agents.list[].sandbox.workspaceRoot > agents.defaults.sandbox.workspaceRoot
agents.list[].sandbox.workspaceAccess > agents.defaults.sandbox.workspaceAccess
agents.list[].sandbox.docker.* > agents.defaults.sandbox.docker.*
agents.list[].sandbox.browser.* > agents.defaults.sandbox.browser.*
agents.list[].sandbox.prune.* > agents.defaults.sandbox.prune.*
agents.list[].sandbox.{docker,browser,prune}.* menimpa agents.defaults.sandbox.{docker,browser,prune}.* untuk agen tersebut (diabaikan ketika cakupan sandbox diselesaikan menjadi "shared").

Pembatasan alat

Urutan pemfilterannya adalah:
1

Tool profile

tools.profile atau agents.list[].tools.profile.
2

Provider tool profile

tools.byProvider[provider].profile atau agents.list[].tools.byProvider[provider].profile.
3

Global tool policy

tools.allow / tools.deny.
4

Provider tool policy

tools.byProvider[provider].allow/deny.
5

Agent-specific tool policy

agents.list[].tools.allow/deny.
6

Agent provider policy

agents.list[].tools.byProvider[provider].allow/deny.
7

Sandbox tool policy

tools.sandbox.tools atau agents.list[].tools.sandbox.tools.
8

Subagent tool policy

tools.subagents.tools, jika berlaku.
  • Setiap tingkat dapat semakin membatasi alat, tetapi tidak dapat mengaktifkan kembali alat yang telah ditolak dari tingkat sebelumnya.
  • Jika agents.list[].tools.sandbox.tools ditetapkan, nilai itu menggantikan tools.sandbox.tools untuk agen tersebut.
  • Jika agents.list[].tools.profile ditetapkan, nilai itu menimpa tools.profile untuk agen tersebut.
  • Kunci alat penyedia menerima provider (misalnya google-antigravity) atau provider/model (misalnya openai/gpt-5.4).
Jika allowlist eksplisit apa pun dalam rantai tersebut membuat proses berjalan tanpa alat yang dapat dipanggil, OpenClaw berhenti sebelum mengirimkan prompt ke model. Ini disengaja: agen yang dikonfigurasi dengan alat yang hilang seperti agents.list[].tools.allow: ["query_db"] harus gagal dengan jelas sampai Plugin yang mendaftarkan query_db diaktifkan, bukan berlanjut sebagai agen teks saja.
Kebijakan alat mendukung singkatan group:* yang diperluas menjadi beberapa alat. Lihat Grup alat untuk daftar lengkapnya. Timpa elevated per agen (agents.list[].tools.elevated) dapat semakin membatasi exec elevated untuk agen tertentu. Lihat Mode elevated untuk detail.

Migrasi dari agen tunggal

{
  "agents": {
    "defaults": {
      "workspace": "~/.openclaw/workspace",
      "sandbox": {
        "mode": "non-main"
      }
    }
  },
  "tools": {
    "sandbox": {
      "tools": {
        "allow": ["read", "write", "apply_patch", "exec"],
        "deny": []
      }
    }
  }
}
Konfigurasi agent.* lama dimigrasikan oleh openclaw doctor; selanjutnya, utamakan agents.defaults + agents.list.

Contoh pembatasan alat

{
  "tools": {
    "allow": ["read"],
    "deny": ["exec", "write", "edit", "apply_patch", "process"]
  }
}

Kekeliruan umum: “non-main”

agents.defaults.sandbox.mode: "non-main" didasarkan pada session.mainKey (default "main"), bukan id agen. Sesi grup/channel selalu mendapatkan kuncinya sendiri, sehingga diperlakukan sebagai non-main dan akan disandbox. Jika Anda ingin agen tidak pernah disandbox, atur agents.list[].sandbox.mode: "off".

Pengujian

Setelah mengonfigurasi sandbox dan alat multi-agen:
1

Periksa resolusi agen

openclaw agents list --bindings
2

Verifikasi kontainer sandbox

docker ps --filter "name=openclaw-sbx-"
3

Uji pembatasan alat

  • Kirim pesan yang memerlukan alat terbatas.
  • Verifikasi bahwa agen tidak dapat menggunakan alat yang ditolak.
4

Pantau log

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

Pemecahan masalah

  • Periksa apakah ada agents.defaults.sandbox.mode global yang menimpanya.
  • Konfigurasi khusus agen memiliki prioritas, jadi atur agents.list[].sandbox.mode: "all".
  • Periksa urutan pemfilteran alat: global → agen → sandbox → subagen.
  • Setiap tingkat hanya dapat membatasi lebih lanjut, bukan memberikan kembali.
  • Verifikasi dengan log: [tools] filtering tools for agent:${agentId}.
  • Atur scope: "agent" dalam konfigurasi sandbox khusus agen.
  • Default-nya adalah "session" yang membuat satu kontainer per sesi.

Terkait