Configuration du sandbox et des outils multi-agents
Chaque agent dans une configuration multi-agents peut remplacer la politique globale de sandbox et d’outils. Cette page couvre la configuration par agent, les règles de priorité et des exemples.- Backends et modes de sandbox : voir Sandboxing.
- Débogage des outils bloqués : voir Sandbox vs Tool Policy vs Elevated et
openclaw sandbox explain. - Exec élevé : voir Elevated Mode.
agentDir à l’emplacement
~/.openclaw/agents/<agentId>/agent/auth-profiles.json.
Les identifiants ne sont pas partagés entre les agents. Ne réutilisez jamais agentDir entre agents.
Si vous voulez partager des identifiants, copiez auth-profiles.json dans le agentDir de l’autre agent.
Exemples de configuration
Exemple 1 : agent personnel + agent familial restreint
- agent
main: s’exécute sur l’hôte, accès complet aux outils - agent
family: s’exécute dans Docker (un conteneur par agent), outilreaduniquement
Exemple 2 : agent de travail avec sandbox partagé
Exemple 2b : profil global de développement + agent réservé à la messagerie
- les agents par défaut obtiennent les outils de développement
- l’agent
supportest limité à la messagerie (+ outil Slack)
Exemple 3 : modes de sandbox différents par agent
Priorité de la configuration
Lorsque des configurations globales (agents.defaults.*) et spécifiques à l’agent (agents.list[].*) existent :
Configuration du sandbox
Les paramètres spécifiques à l’agent remplacent les paramètres globaux :agents.list[].sandbox.{docker,browser,prune}.*remplaceagents.defaults.sandbox.{docker,browser,prune}.*pour cet agent (ignoré lorsque la portée du sandbox se résout à"shared").
Restrictions d’outils
L’ordre de filtrage est :- Profil d’outils (
tools.profileouagents.list[].tools.profile) - Profil d’outils du fournisseur (
tools.byProvider[provider].profileouagents.list[].tools.byProvider[provider].profile) - Politique globale d’outils (
tools.allow/tools.deny) - Politique d’outils du fournisseur (
tools.byProvider[provider].allow/deny) - Politique d’outils spécifique à l’agent (
agents.list[].tools.allow/deny) - Politique de fournisseur de l’agent (
agents.list[].tools.byProvider[provider].allow/deny) - Politique d’outils du sandbox (
tools.sandbox.toolsouagents.list[].tools.sandbox.tools) - Politique d’outils du subagent (
tools.subagents.tools, le cas échéant)
agents.list[].tools.sandbox.tools est défini, il remplace tools.sandbox.tools pour cet agent.
Si agents.list[].tools.profile est défini, il remplace tools.profile pour cet agent.
Les clés d’outils du fournisseur acceptent soit provider (par ex. google-antigravity), soit provider/model (par ex. openai/gpt-5.4).
Les politiques d’outils prennent en charge les raccourcis group:* qui se développent en plusieurs outils. Voir Tool groups pour la liste complète.
Les remplacements élevés par agent (agents.list[].tools.elevated) peuvent restreindre davantage l’exec élevé pour des agents spécifiques. Voir Elevated Mode pour les détails.
Migration depuis un agent unique
Avant (agent unique) :agent.* sont migrées par openclaw doctor ; préférez désormais agents.defaults + agents.list.
Exemples de restriction d’outils
Agent en lecture seule
Agent d’exécution sûre (sans modification de fichiers)
Agent réservé à la communication
sessions_history dans ce profil renvoie toujours une vue de rappel limitée et assainie
plutôt qu’un dump brut de transcription. Le rappel assistant supprime les balises de réflexion,
l’échafaudage <relevant-memories>, les charges utiles XML d’appel d’outil en texte brut
(y compris <tool_call>...</tool_call>,
<function_call>...</function_call>, <tool_calls>...</tool_calls>,
<function_calls>...</function_calls> et les blocs d’appel d’outil tronqués),
l’échafaudage d’appel d’outil dégradé, les jetons de contrôle de modèle ASCII/pleine largeur divulgués,
et le XML d’appel d’outil MiniMax mal formé avant la rédaction/troncature.
Piège courant : “non-main”
agents.defaults.sandbox.mode: "non-main" repose sur session.mainKey (valeur par défaut "main"),
et non sur l’id de l’agent. Les sessions de groupe/canal obtiennent toujours leurs propres clés, elles
sont donc traitées comme non-main et seront sandboxées. Si vous voulez qu’un agent ne soit jamais
sandboxé, définissez agents.list[].sandbox.mode: "off".
Tests
Après avoir configuré le sandbox et les outils multi-agents :-
Vérifiez la résolution des agents :
-
Vérifiez les conteneurs de sandbox :
-
Testez les restrictions d’outils :
- Envoyez un message nécessitant des outils restreints
- Vérifiez que l’agent ne peut pas utiliser les outils refusés
-
Surveillez les journaux :
Dépannage
L’agent n’est pas sandboxé malgré mode: "all"
- Vérifiez s’il existe un
agents.defaults.sandbox.modeglobal qui le remplace - La configuration spécifique à l’agent a priorité, donc définissez
agents.list[].sandbox.mode: "all"
Les outils restent disponibles malgré la liste deny
- Vérifiez l’ordre de filtrage des outils : global → agent → sandbox → subagent
- Chaque niveau ne peut que restreindre davantage, pas réaccorder
- Vérifiez avec les journaux :
[tools] filtering tools for agent:${agentId}
Le conteneur n’est pas isolé par agent
- Définissez
scope: "agent"dans la configuration de sandbox spécifique à l’agent - La valeur par défaut est
"session", ce qui crée un conteneur par session
Voir aussi
- Sandboxing — référence complète du sandbox (modes, portées, backends, images)
- Sandbox vs Tool Policy vs Elevated — déboguer « pourquoi est-ce bloqué ? »
- Elevated Mode
- Routage multi-agents
- Configuration du sandbox
- Gestion des sessions