Sandbox vs policy 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 vs host). - Policy degli strumenti (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) decide 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 sandbox/accesso al workspace effettivi
- se la sessione è attualmente in sandbox (main vs non-main)
- autorizzazione/blocco effettivi degli strumenti sandbox (e se provengono da agent/globale/predefinito)
- controlli elevated e percorsi chiave per la correzione
Sandbox: dove vengono eseguiti gli strumenti
Il sandboxing è controllato daagents.defaults.sandbox.mode:
"off": tutto viene eseguito sull’host."non-main": solo le sessioni non-main sono in sandbox (comune “sorpresa” per gruppi/canali)."all": tutto è in sandbox.
Bind mount (controllo rapido di sicurezza)
docker.bindsbuca il filesystem sandbox: tutto ciò che monti è visibile all’interno del container con la modalità impostata (:roo:rw).- Il valore predefinito è lettura-scrittura se ometti la modalità; preferisci
:roper sorgenti/segreti. scope: "shared"ignora i bind per agente (si applicano solo i bind globali).- OpenClaw valida due volte le sorgenti dei bind: prima sul percorso sorgente normalizzato, poi di nuovo dopo la risoluzione attraverso l’antenato esistente più profondo. Le escape tramite symlink del genitore non aggirano i controlli di percorso bloccato o root consentita.
- I percorsi leaf inesistenti vengono comunque controllati in sicurezza. Se
/workspace/alias-out/new-filesi risolve tramite un genitore con symlink verso un percorso bloccato o fuori dalle root consentite configurate, il bind viene rifiutato. - Montare
/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à dei bind.
Policy degli strumenti: quali strumenti esistono/sono richiamabili
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 - Policy strumenti globale/per agente:
tools.allow/tools.denyeagents.list[].tools.allow/agents.list[].tools.deny - Policy strumenti del provider:
tools.byProvider[provider].allow/denyeagents.list[].tools.byProvider[provider].allow/deny - Policy strumenti sandbox (si applica solo quando si è 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. - La policy degli strumenti è il blocco definitivo:
/execnon può sovrascrivere uno strumentoexecnegato. /execcambia solo i valori predefiniti della sessione per mittenti autorizzati; non concede accesso agli strumenti. Le chiavi degli strumenti provider accettano siaprovider(ad es.google-antigravity) siaprovider/model(ad es.openai/gpt-5.4).
Gruppi di strumenti (abbreviazioni)
Le policy degli strumenti (globali, per agente, 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,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) esegue fuori dalla sandbox (potrebbero comunque applicarsi approvazioni). - Usa
/elevated fullper saltare le approvazioni exec per la sessione. - Se stai già eseguendo in modo diretto, elevated è di fatto una no-op (comunque soggetta a controlli).
- Elevated non è limitato alle 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/della 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 dei mittenti:
tools.elevated.allowFrom.<provider>(e facoltativamenteagents.list[].tools.elevated.allowFrom.<provider>)
Correzioni comuni della “prigione sandbox"
"Strumento X bloccato dalla policy strumenti sandbox”
Chiavi di correzione (scegline una):- Disabilita sandbox:
agents.defaults.sandbox.mode=off(o per agenteagents.list[].sandbox.mode=off) - Consenti lo strumento nella sandbox:
- rimuovilo da
tools.sandbox.tools.deny(o per agenteagents.list[].tools.sandbox.tools.deny) - oppure aggiungilo a
tools.sandbox.tools.allow(o all’allow per agente)
- rimuovilo da
“Pensavo che questo fosse main, perché è in sandbox?”
In modalità"non-main", le chiavi di gruppo/canale non sono main. Usa la chiave della sessione main (mostrata da sandbox explain) o cambia la modalità in "off".
Vedi anche
- Sandboxing — riferimento completo della sandbox (modalità, ambiti, backend, immagini)
- Sandbox e strumenti multi-agente — override per agente e precedenza
- Elevated Mode