Sandbox vs Kebijakan Alat vs Elevated
OpenClaw memiliki tiga kontrol yang saling terkait (tetapi berbeda):- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) menentukan di mana alat dijalankan (Docker vs host). - Kebijakan alat (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) menentukan alat 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, ataunodesaat target exec dikonfigurasi kenode).
Debug cepat
Gunakan inspector untuk melihat apa yang sebenarnya dilakukan OpenClaw:- mode/cakupan/akses workspace sandbox yang efektif
- apakah sesi saat ini berada dalam sandbox (main vs non-main)
- allow/deny alat sandbox yang efektif (dan apakah berasal dari agent/global/default)
- gerbang elevated dan path kunci perbaikan
Sandbox: tempat alat dijalankan
Sandboxing dikendalikan olehagents.defaults.sandbox.mode:
"off": semuanya berjalan di host."non-main": hanya sesi non-main yang berada dalam sandbox (sering menjadi “kejutan” umum untuk grup/channel)."all": semuanya berada dalam sandbox.
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 telah dinormalisasi, lalu sekali lagi setelah menyelesaikannya melalui ancestor terdalam yang ada. Escape melalui parent symlink tidak melewati pemeriksaan blocked-path atau allowed-root.
- Path leaf yang belum ada tetap diperiksa dengan aman. Jika
/workspace/alias-out/new-filediselesaikan melalui parent yang disymlink ke path yang diblokir atau ke luar allowed roots yang dikonfigurasi, bind akan ditolak. - Melakukan bind pada
/var/run/docker.socksecara efektif memberikan kontrol host ke sandbox; lakukan ini hanya dengan sengaja. - Akses workspace (
workspaceAccess: "ro"/"rw") independen dari mode bind.
Kebijakan alat: alat mana yang ada/dapat dipanggil
Dua lapisan penting:- Profil alat:
tools.profiledanagents.list[].tools.profile(allowlist dasar) - Profil alat provider:
tools.byProvider[provider].profiledanagents.list[].tools.byProvider[provider].profile - Kebijakan alat global/per-agent:
tools.allow/tools.denydanagents.list[].tools.allow/agents.list[].tools.deny - Kebijakan alat provider:
tools.byProvider[provider].allow/denydanagents.list[].tools.byProvider[provider].allow/deny - Kebijakan alat sandbox (hanya berlaku saat dalam sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denydanagents.list[].tools.sandbox.tools.*
denyselalu menang.- Jika
allowtidak kosong, semua yang lain dianggap diblokir. - Kebijakan alat adalah penghentian keras:
/exectidak dapat mengesampingkan alatexecyang ditolak. /exechanya mengubah default sesi untuk pengirim yang berwenang; perintah ini tidak memberikan akses alat. Kunci alat provider menerimaprovider(misalnyagoogle-antigravity) atauprovider/model(misalnyaopenai/gpt-5.4).
Grup alat (singkatan)
Kebijakan alat (global, agent, sandbox) mendukung entrigroup:* yang diperluas menjadi beberapa alat:
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,video_generate,ttsgroup:openclaw: semua alat OpenClaw bawaan (tidak termasuk plugin provider)
Elevated: “jalankan di host” khusus exec
Elevated tidak memberikan alat tambahan; fitur ini hanya memengaruhiexec.
- Jika Anda berada dalam sandbox,
/elevated on(atauexecdenganelevated: true) akan berjalan di luar sandbox (persetujuan mungkin tetap berlaku). - Gunakan
/elevated fulluntuk melewati persetujuan exec untuk sesi tersebut. - Jika Anda sudah berjalan secara langsung, elevated pada dasarnya tidak berpengaruh (tetap berada di balik gerbang).
- Elevated tidak dibatasi per skill dan tidak mengesampingkan allow/deny alat.
- Elevated tidak memberikan override lintas host sembarang dari
host=auto; fitur ini mengikuti aturan target exec normal dan hanya mempertahankannodesaat target yang dikonfigurasi/sesi memang sudahnode. /execterpisah dari elevated. Perintah ini hanya menyesuaikan default exec per sesi untuk pengirim yang berwenang.
- Pengaktifan:
tools.elevated.enabled(dan secara opsionalagents.list[].tools.elevated.enabled) - Allowlist pengirim:
tools.elevated.allowFrom.<provider>(dan secara opsionalagents.list[].tools.elevated.allowFrom.<provider>)
Perbaikan umum “sandbox jail"
"Alat X diblokir oleh kebijakan alat sandbox”
Kunci perbaikan (pilih salah satu):- Nonaktifkan sandbox:
agents.defaults.sandbox.mode=off(atau per-agentagents.list[].sandbox.mode=off) - Izinkan alat tersebut 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 berada dalam sandbox?”
Dalam mode"non-main", kunci grup/channel bukan main. Gunakan kunci sesi main (ditampilkan oleh sandbox explain) atau ubah mode menjadi "off".
Lihat juga
- Sandboxing — referensi sandbox lengkap (mode, cakupan, backend, image)
- Multi-Agent Sandbox & Tools — override per-agent dan prioritas
- Elevated Mode