Sandbox vs Kebijakan Tool vs Elevated
OpenClaw memiliki tiga kontrol yang saling terkait (tetapi berbeda):- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) menentukan di mana tool dijalankan (Docker vs host). - Kebijakan tool (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) menentukan tool mana yang tersedia/diizinkan. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) adalah jalur keluar khusus exec untuk berjalan di luar sandbox saat Anda berada dalam sandbox (gatewaysecara default, ataunodeketika target exec dikonfigurasi kenode).
Debug cepat
Gunakan inspector untuk melihat apa yang sebenarnya dilakukan OpenClaw:- mode/cakupan/akses workspace sandbox efektif
- apakah sesi saat ini sedang disandbox (main vs non-main)
- allow/deny tool sandbox efektif (dan apakah itu berasal dari agent/global/default)
- gate elevated dan path kunci fix-it
Sandbox: tempat tool berjalan
Sandboxing dikendalikan olehagents.defaults.sandbox.mode:
"off": semuanya berjalan di host."non-main": hanya sesi non-main yang disandbox (sering menjadi “kejutan” untuk grup/channel)."all": semuanya disandbox.
Bind mount (pemeriksaan keamanan cepat)
docker.bindsmenembus filesystem sandbox: apa pun yang Anda mount akan terlihat di dalam container dengan mode yang Anda tetapkan (:roatau:rw).- Default-nya adalah read-write jika Anda menghilangkan mode; utamakan
:rountuk source/secret. scope: "shared"mengabaikan bind per-agent (hanya bind global yang berlaku).- OpenClaw memvalidasi sumber bind dua kali: pertama pada path sumber yang dinormalkan, lalu lagi setelah resolve melalui ancestor terdalam yang ada. Escape melalui parent symlink tidak melewati pemeriksaan blocked-path atau allowed-root.
- Path leaf yang tidak ada tetap diperiksa dengan aman. Jika
/workspace/alias-out/new-filedi-resolve melalui parent yang bersymlink ke path yang diblokir atau di luar allowed roots yang dikonfigurasi, bind akan ditolak. - Melakukan bind pada
/var/run/docker.socksecara efektif menyerahkan kontrol host ke sandbox; lakukan ini hanya dengan sengaja. - Akses workspace (
workspaceAccess: "ro"/"rw") independen dari mode bind.
Kebijakan tool: tool mana yang ada/dapat dipanggil
Dua lapisan penting:- Profil tool:
tools.profiledanagents.list[].tools.profile(allowlist dasar) - Profil tool penyedia:
tools.byProvider[provider].profiledanagents.list[].tools.byProvider[provider].profile - Kebijakan tool global/per-agent:
tools.allow/tools.denydanagents.list[].tools.allow/agents.list[].tools.deny - Kebijakan tool penyedia:
tools.byProvider[provider].allow/denydanagents.list[].tools.byProvider[provider].allow/deny - Kebijakan tool sandbox (hanya berlaku saat disandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denydanagents.list[].tools.sandbox.tools.*
denyselalu menang.- Jika
allowtidak kosong, semua yang lain dianggap diblokir. - Kebijakan tool adalah penghentian tegas:
/exectidak dapat menimpa toolexecyang ditolak. /exechanya mengubah default sesi untuk pengirim yang berwenang; itu tidak memberikan akses tool. Kunci tool penyedia menerimaprovider(misalnyagoogle-antigravity) atauprovider/model(misalnyaopenai/gpt-5.4).
Grup tool (shorthand)
Kebijakan tool (global, agent, sandbox) mendukung entrigroup:* yang diekspansi menjadi beberapa tool:
group:runtime:exec,process,code_execution(bashditerima sebagai alias untukexec)group:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,sessions_yield,subagents,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,x_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_listgroup:media:image,image_generate,ttsgroup:openclaw: semua tool OpenClaw bawaan (tidak termasuk plugin penyedia)
Elevated: “jalankan di host” khusus exec
Elevated tidak memberikan tool tambahan; ini hanya memengaruhiexec.
- Jika Anda berada dalam sandbox,
/elevated on(atauexecdenganelevated: true) berjalan di luar sandbox (persetujuan mungkin tetap berlaku). - Gunakan
/elevated fulluntuk melewati persetujuan exec untuk sesi tersebut. - Jika Anda sudah berjalan langsung, elevated pada dasarnya tidak melakukan apa-apa (tetap digate).
- Elevated tidak dicakup oleh skill dan tidak menimpa allow/deny tool.
- Elevated tidak memberikan override arbitrer lintas host dari
host=auto; ini mengikuti aturan target exec normal dan hanya mempertahankannodeketika target yang dikonfigurasi/sesi memang sudahnode. /execterpisah dari elevated. Ini hanya menyesuaikan default exec per sesi untuk pengirim yang berwenang.
- Pengaktifan:
tools.elevated.enabled(dan opsionalagents.list[].tools.elevated.enabled) - Allowlist pengirim:
tools.elevated.allowFrom.<provider>(dan opsionalagents.list[].tools.elevated.allowFrom.<provider>)
Perbaikan umum “penjara sandbox"
"Tool X diblokir oleh kebijakan tool sandbox”
Kunci fix-it (pilih satu):- Nonaktifkan sandbox:
agents.defaults.sandbox.mode=off(atau per-agentagents.list[].sandbox.mode=off) - Izinkan tool di dalam sandbox:
- hapus dari
tools.sandbox.tools.deny(atau per-agentagents.list[].tools.sandbox.tools.deny) - atau tambahkan ke
tools.sandbox.tools.allow(atau allow per-agent)
- hapus dari
“Saya kira ini main, kenapa disandbox?”
Dalam mode"non-main", kunci grup/channel bukan main. Gunakan kunci sesi main (ditampilkan oleh sandbox explain) atau ubah mode ke "off".
Lihat juga
- Sandboxing — referensi sandbox lengkap (mode, cakupan, backend, image)
- Sandbox & Tools Multi-Agent — override per-agent dan prioritas
- Elevated Mode