Sandbox vs Tool Policy vs Elevated
Sandbox vs Tool Policy vs Elevated
Section intitulée « Sandbox vs Tool Policy vs Elevated »OpenClaw has three related (but different) controls:
- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decides where tools run (Docker vs host). - Tool policy (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) decides which tools are available/allowed. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) is an exec-only escape hatch to run on the host when you’re sandboxed.
Quick debug
Section intitulée « Quick debug »Use the inspector to see what OpenClaw is actually doing:
openclaw sandbox explainopenclaw sandbox explain --session agent:main:mainopenclaw sandbox explain --agent workopenclaw sandbox explain --jsonIt prints:
- effective sandbox mode/scope/workspace access
- whether the session is currently sandboxed (main vs non-main)
- effective sandbox tool allow/deny (and whether it came from agent/global/default)
- elevated gates and fix-it key paths
Sandbox: where tools run
Section intitulée « Sandbox: where tools run »Sandboxing is controlled by agents.defaults.sandbox.mode:
"off": everything runs on the host."non-main": only non-main sessions are sandboxed (common “surprise” for groups/channels)."all": everything is sandboxed.
See Sandboxing for the full matrix (scope, workspace mounts, images).
Bind mounts (security quick check)
Section intitulée « Bind mounts (security quick check) »docker.bindspierces the sandbox filesystem: whatever you mount is visible inside the container with the mode you set (:roor:rw).- Default is read-write if you omit the mode; prefer
:rofor source/secrets. scope: "shared"ignore les liaisons par agent (seules les liaisons globales s’appliquent).- Lier
/var/run/docker.sockconfère effectivement le contrôle de l’hôte au sandbox ; ne faites cela que intentionnellement. - L’accès à l’espace de travail (
workspaceAccess: "ro"/"rw") est indépendant des modes de liaison.
Stratégie d’outil : quels outils existent/sont appelables
Section intitulée « Stratégie d’outil : quels outils existent/sont appelables »Deux couches sont importantes :
- Profil d’outil :
tools.profileetagents.list[].tools.profile(liste d’autorisation de base) - Profil d’outil du fournisseur :
tools.byProvider[provider].profileetagents.list[].tools.byProvider[provider].profile - Stratégie d’outil globale/par agent :
tools.allow/tools.denyetagents.list[].tools.allow/agents.list[].tools.deny - Stratégie d’outil du fournisseur :
tools.byProvider[provider].allow/denyetagents.list[].tools.byProvider[provider].allow/deny - Stratégie d’outil du sandbox (s’applique uniquement lors de l’utilisation du sandbox) :
tools.sandbox.tools.allow/tools.sandbox.tools.denyetagents.list[].tools.sandbox.tools.*
Règles empiriques :
denygagne toujours.- Si
allown’est pas vide, tout le reste est traité comme bloqué. - La stratégie d’outil est l’arrêt définitif :
/execne peut pas remplacer un outilexecrefusé. /execne modifie que les valeurs par défaut de session pour les expéditeurs autorisés ; il n’accorde pas l’accès aux outils. Les clés d’outil du fournisseur acceptent soitprovider(par ex.google-antigravity) soitprovider/model(par ex.openai/gpt-5.2).
Groupes d’outils (raccourcis)
Section intitulée « Groupes d’outils (raccourcis) »Les stratégies d’outil (globales, agent, sandbox) prennent en charge les entrées group:* qui s’étendent à plusieurs outils :
{ tools: { sandbox: { tools: { allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"], }, }, },}Groupes disponibles :
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: tous les outils OpenClaw intégrés (exclut les plugins de provider)
Elevated : exec-only “run on host”
Section intitulée « Elevated : exec-only “run on host” »Elevated n’accorde pas d’outils supplémentaires ; cela n’affecte que exec.
- Si vous êtes sandboxed,
/elevated on(ouexecavecelevated: true) s’exécute sur l’hôte (les approbations peuvent toujours s’appliquer). - Utilisez
/elevated fullpour ignorer les approbations d’exécution pour la session. - Si vous fonctionnez déjà en mode direct, elevated est effectivement une opération vide (toujours soumise à des restrictions).
- Elevated n’est pas limité à une compétence (skill) et ne remplace pas l’autorisation/le refus d’outil.
/execest distinct d’elevated. Il ajuste uniquement les valeurs par défaut d’exécution par session pour les expéditeurs autorisés.
Portes :
- Activation :
tools.elevated.enabled(et optionnellementagents.list[].tools.elevated.enabled) - Listes d’autorisation des expéditeurs :
tools.elevated.allowFrom.<provider>(et optionnellementagents.list[].tools.elevated.allowFrom.<provider>)
Voir Elevated Mode.
Corrections courantes du “sandbox jail"
Section intitulée « Corrections courantes du “sandbox jail" »"Tool X bloqué par la stratégie d’outil de sandbox”
Section intitulée « "Tool X bloqué par la stratégie d’outil de sandbox” »Clés de réparation (en choisir une) :
- Désactiver le sandbox :
agents.defaults.sandbox.mode=off(ouagents.list[].sandbox.mode=offpar agent) - Autoriser l’outil dans le sandbox :
- le supprimer de
tools.sandbox.tools.deny(ouagents.list[].tools.sandbox.tools.denypar agent) - ou l’ajouter à
tools.sandbox.tools.allow(ou allow par agent)
- le supprimer de
“Je pensais que c’était main, pourquoi est-ce sandboxed ?”
Section intitulée « “Je pensais que c’était main, pourquoi est-ce sandboxed ?” »En mode "non-main", les clés de groupe/channel ne sont pas main. Utilisez la clé de session principale (affichée par sandbox explain) ou basculez le mode sur "off".
Voir aussi
Section intitulée « Voir aussi »- Sandboxing — référence complète du sandbox (modes, portées, backends, images)
- Multi-Agent Sandbox & Tools — substitutions par agent et priorité
- Elevated Mode