Gateway
Bac à sable vs politique des outils vs privilèges élevés
OpenClaw dispose de trois contrôles liés (mais différents) :
- Bac à sable (
agents.defaults.sandbox.*/agents.list[].sandbox.*) décide où les outils s’exécutent (backend de bac à sable ou hôte). - Politique d’outils (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) décide quels outils sont disponibles/autorisés. - Élévation (
tools.elevated.*,agents.list[].tools.elevated.*) est une échappatoire réservée à exec pour s’exécuter hors du bac à sable lorsque vous êtes en bac à sable (gatewaypar défaut, ounodelorsque la cible exec est configurée surnode).
Débogage rapide
Utilisez l’inspecteur pour voir ce qu’OpenClaw fait réellement :
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
Il affiche :
- le mode, la portée et l’accès à l’espace de travail effectifs du bac à sable
- si la session est actuellement en bac à sable (main ou non-main)
- les autorisations/refus effectifs des outils du bac à sable (et s’ils viennent de l’agent, du global ou des valeurs par défaut)
- les garde-fous d’élévation et les chemins de clés de correction
Bac à sable : où les outils s’exécutent
La mise en bac à sable est contrôlée par agents.defaults.sandbox.mode :
"off": tout s’exécute sur l’hôte."non-main": seules les sessions non-main sont en bac à sable (source courante de « surprise » pour les groupes/canaux)."all": tout est en bac à sable.
Consultez Mise en bac à sable pour la matrice complète (portée, montages d’espace de travail, images).
Montages bind (vérification de sécurité rapide)
docker.bindsperce le système de fichiers du bac à sable : tout ce que vous montez est visible dans le conteneur avec le mode que vous définissez (:roou:rw).- La valeur par défaut est lecture-écriture si vous omettez le mode ; préférez
:ropour les sources/secrets. scope: "shared"ignore les montages par agent (seuls les montages globaux s’appliquent).- OpenClaw valide les sources de montage deux fois : d’abord sur le chemin source normalisé, puis à nouveau après résolution via l’ancêtre existant le plus profond. Les échappements par parent symbolique ne contournent pas les vérifications de chemins bloqués ou de racines autorisées.
- Les chemins de feuille inexistants restent vérifiés en toute sécurité. Si
/workspace/alias-out/new-filese résout via un parent symbolique vers un chemin bloqué ou hors des racines autorisées configurées, le montage est rejeté. - Monter
/var/run/docker.sockdonne effectivement le contrôle de l’hôte au bac à sable ; ne le faites que délibérément. - L’accès à l’espace de travail (
workspaceAccess: "ro"/"rw") est indépendant des modes de montage.
Politique d’outils : quels outils existent/sont appelables
Deux couches comptent :
- Profil d’outils :
tools.profileetagents.list[].tools.profile(liste d’autorisation de base) - Profil d’outils du fournisseur :
tools.byProvider[provider].profileetagents.list[].tools.byProvider[provider].profile - Politique d’outils globale/par agent :
tools.allow/tools.denyetagents.list[].tools.allow/agents.list[].tools.deny - Politique d’outils du fournisseur :
tools.byProvider[provider].allow/denyetagents.list[].tools.byProvider[provider].allow/deny - Politique d’outils du bac à sable (s’applique uniquement en bac à sable) :
tools.sandbox.tools.allow/tools.sandbox.tools.denyetagents.list[].tools.sandbox.tools.*
Règles pratiques :
denyl’emporte toujours.- Si
allown’est pas vide, tout le reste est considéré comme bloqué. - La politique d’outils est l’arrêt net :
/execne peut pas contourner 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’outils de fournisseur acceptent soitprovider(par exemplegoogle-antigravity), soitprovider/model(par exempleopenai/gpt-5.4).
Groupes d’outils (raccourcis)
Les politiques d’outils (globale, agent, bac à sable) prennent en charge les entrées group:*, qui se développent en plusieurs outils :
{
tools: {
sandbox: {
tools: {
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
},
},
},
}
Groupes disponibles :
group:runtime:exec,process,code_execution(bashest accepté comme alias deexec)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:heartbeat_respond,cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_list,update_plangroup:media:image,image_generate,music_generate,video_generate,ttsgroup:openclaw: tous les outils intégrés d’OpenClaw (exclut les plugins de fournisseur)
Élévation : « exécuter sur l’hôte » réservé à exec
L’élévation n’accorde pas d’outils supplémentaires ; elle n’affecte que exec.
- Si vous êtes en bac à sable,
/elevated on(ouexecavecelevated: true) s’exécute hors du bac à sable (des approbations peuvent toujours s’appliquer). - Utilisez
/elevated fullpour ignorer les approbations exec pour la session. - Si vous vous exécutez déjà directement, l’élévation est effectivement sans effet (toujours soumise aux garde-fous).
- L’élévation n’est pas limitée à une skill et ne remplace pas les autorisations/refus d’outils.
- L’élévation n’accorde pas de contournements inter-hôtes arbitraires depuis
host=auto; elle suit les règles normales de cible exec et ne conservenodeque lorsque la cible configurée/de session est déjànode. /execest distinct de l’élévation. Il ajuste seulement les valeurs par défaut exec par session pour les expéditeurs autorisés.
Garde-fous :
- Activation :
tools.elevated.enabled(et éventuellementagents.list[].tools.elevated.enabled) - Listes d’expéditeurs autorisés :
tools.elevated.allowFrom.<provider>(et éventuellementagents.list[].tools.elevated.allowFrom.<provider>)
Consultez Mode élevé.
Corrections courantes de « prison de bac à sable »
« L’outil X est bloqué par la politique d’outils du bac à sable »
Clés de correction (choisissez-en une) :
- Désactiver le bac à sable :
agents.defaults.sandbox.mode=off(ou par agentagents.list[].sandbox.mode=off) - Autoriser l’outil dans le bac à sable :
- retirez-le de
tools.sandbox.tools.deny(ou par agentagents.list[].tools.sandbox.tools.deny) - ou ajoutez-le à
tools.sandbox.tools.allow(ou à l’autorisation par agent)
- retirez-le de
« Je pensais que c’était main, pourquoi est-ce en bac à sable ? »
En mode "non-main", les clés de groupe/canal ne sont pas main. Utilisez la clé de session main (affichée par sandbox explain) ou passez le mode à "off".
Connexe
- Mise en bac à sable -- référence complète du bac à sable (modes, portées, backends, images)
- Bac à sable et outils multi-agent -- remplacements et précédence par agent
- Mode élevé