Sandbox vs criteri degli strumenti vs Elevated
OpenClaw ha tre controlli correlati, ma diversi:- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decide dove vengono eseguiti gli strumenti (Docker o host). - Criteri degli strumenti (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) decidono quali strumenti sono disponibili/consentiti. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) è una via di fuga solo per exec per eseguire fuori dalla sandbox quando sei in sandbox (gatewayper impostazione predefinita, oppurenodequando il target exec è configurato sunode).
Debug rapido
Usa l’inspector per vedere cosa OpenClaw sta effettivamente facendo:- modalità/ambito/accesso workspace effettivi della sandbox
- se la sessione è attualmente in sandbox (main vs non-main)
- allow/deny effettivi degli strumenti nella sandbox (e se provengono da agent/global/default)
- gate elevated e percorsi chiave per la correzione
Sandbox: dove vengono eseguiti gli strumenti
La sandbox è controllata daagents.defaults.sandbox.mode:
"off": tutto viene eseguito sull’host."non-main": solo le sessioni non-main sono in sandbox (la comune “sorpresa” per gruppi/canali)."all": tutto è in sandbox.
Bind mount (controllo rapido di sicurezza)
docker.bindsbuca il filesystem della sandbox: tutto ciò che monti è visibile all’interno del container con la modalità che imposti (:roo:rw).- Il valore predefinito è lettura-scrittura se ometti la modalità; preferisci
:roper codice sorgente/segreti. scope: "shared"ignora i bind per-agent (si applicano solo i bind globali).- OpenClaw convalida le sorgenti bind due volte: prima sul percorso sorgente normalizzato, poi di nuovo dopo la risoluzione tramite l’antenato esistente più profondo. Le evasioni tramite symlink-parent non aggirano i controlli dei percorsi bloccati o delle radici consentite.
- I percorsi leaf inesistenti vengono comunque controllati in modo sicuro. Se
/workspace/alias-out/new-fileviene risolto tramite un parent con symlink verso un percorso bloccato o fuori dalle radici consentite configurate, il bind viene rifiutato. - Fare bind di
/var/run/docker.sockconsegna di fatto il controllo dell’host alla sandbox; fallo solo intenzionalmente. - L’accesso al workspace (
workspaceAccess: "ro"/"rw") è indipendente dalle modalità di bind.
Criteri degli strumenti: quali strumenti esistono/sono invocabili
Contano due livelli:- Profilo strumenti:
tools.profileeagents.list[].tools.profile(allowlist di base) - Profilo strumenti del provider:
tools.byProvider[provider].profileeagents.list[].tools.byProvider[provider].profile - Criteri strumenti globali/per-agent:
tools.allow/tools.denyeagents.list[].tools.allow/agents.list[].tools.deny - Criteri strumenti del provider:
tools.byProvider[provider].allow/denyeagents.list[].tools.byProvider[provider].allow/deny - Criteri strumenti della sandbox (si applicano solo in sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denyeagents.list[].tools.sandbox.tools.*
denyvince sempre.- Se
allownon è vuoto, tutto il resto viene trattato come bloccato. - I criteri degli strumenti sono il blocco rigido:
/execnon può aggirare uno strumentoexecnegato. /execcambia solo i valori predefiniti della sessione per i mittenti autorizzati; non concede accesso agli strumenti. Le chiavi degli strumenti del provider accettano siaprovider(ad esempiogoogle-antigravity) siaprovider/model(ad esempioopenai/gpt-5.4).
Gruppi di strumenti (shorthand)
I criteri degli strumenti (globali, agent, sandbox) supportano vocigroup:* che si espandono in più strumenti:
group:runtime:exec,process,code_execution(bashè accettato come alias diexec)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: tutti gli strumenti OpenClaw integrati (esclude i plugin provider)
Elevated: “esegui sull’host” solo per exec
Elevated non concede strumenti aggiuntivi; influisce solo suexec.
- Se sei in sandbox,
/elevated on(oexecconelevated: true) viene eseguito fuori dalla sandbox (le approvazioni possono comunque applicarsi). - Usa
/elevated fullper saltare le approvazioni exec per la sessione. - Se stai già eseguendo direttamente, elevated è di fatto un no-op (comunque soggetto a gate).
- Elevated non è limitato allo scope delle Skills e non sovrascrive allow/deny degli strumenti.
- Elevated non concede override arbitrari cross-host da
host=auto; segue le normali regole del target exec e preservanodesolo quando il target configurato/di sessione è giànode. /execè separato da elevated. Regola solo i valori predefiniti exec per sessione per i mittenti autorizzati.
- Abilitazione:
tools.elevated.enabled(e facoltativamenteagents.list[].tools.elevated.enabled) - Allowlist mittenti:
tools.elevated.allowFrom.<provider>(e facoltativamenteagents.list[].tools.elevated.allowFrom.<provider>)
Correzioni comuni per la “prigione della sandbox"
"Lo strumento X è bloccato dai criteri degli strumenti della sandbox”
Chiavi di correzione (scegline una):- Disabilita la sandbox:
agents.defaults.sandbox.mode=off(o per-agentagents.list[].sandbox.mode=off) - Consenti lo strumento all’interno della sandbox:
- rimuovilo da
tools.sandbox.tools.deny(o per-agentagents.list[].tools.sandbox.tools.deny) - oppure aggiungilo a
tools.sandbox.tools.allow(o all’allow per-agent)
- rimuovilo da
“Pensavo che fosse main, perché è in sandbox?”
In modalità"non-main", le chiavi gruppo/canale non sono main. Usa la chiave della sessione main (mostrata da sandbox explain) oppure cambia la modalità in "off".
Vedi anche
- Sandboxing — riferimento completo della sandbox (modalità, ambiti, backend, immagini)
- Sandbox e strumenti multi-agent — override per-agent e precedenza
- Elevated Mode