Configuração de Sandbox e Ferramentas para Múltiplos Agentes
Cada agente em uma configuração com múltiplos agentes pode substituir a política global de sandbox e ferramentas. Esta página aborda a configuração por agente, as regras de precedência e exemplos.- Backends e modos de sandbox: consulte Sandboxing.
- Depuração de ferramentas bloqueadas: consulte Sandbox vs Tool Policy vs Elevated e
openclaw sandbox explain. - Execução elevada: consulte Elevated Mode.
agentDir
em ~/.openclaw/agents/<agentId>/agent/auth-profiles.json.
As credenciais não são compartilhadas entre agentes. Nunca reutilize agentDir entre agentes.
Se você quiser compartilhar credenciais, copie auth-profiles.json para o agentDir do outro agente.
Exemplos de configuração
Exemplo 1: agente pessoal + agente familiar restrito
- agente
main: é executado no host, com acesso total às ferramentas - agente
family: é executado no Docker (um contêiner por agente), apenas com a ferramentaread
Exemplo 2: agente de trabalho com sandbox compartilhado
Exemplo 2b: perfil global de codificação + agente apenas de mensagens
- os agentes padrão recebem ferramentas de codificação
- o agente
supporté apenas para mensagens (+ ferramenta Slack)
Exemplo 3: modos de sandbox diferentes por agente
Precedência de configuração
Quando existem configurações globais (agents.defaults.*) e específicas do agente (agents.list[].*):
Configuração de sandbox
As configurações específicas do agente substituem as globais:agents.list[].sandbox.{docker,browser,prune}.*substituiagents.defaults.sandbox.{docker,browser,prune}.*para esse agente (ignorado quando o escopo do sandbox é resolvido como"shared").
Restrições de ferramentas
A ordem de filtragem é:- Perfil de ferramentas (
tools.profileouagents.list[].tools.profile) - Perfil de ferramentas do provedor (
tools.byProvider[provider].profileouagents.list[].tools.byProvider[provider].profile) - Política global de ferramentas (
tools.allow/tools.deny) - Política de ferramentas do provedor (
tools.byProvider[provider].allow/deny) - Política de ferramentas específica do agente (
agents.list[].tools.allow/deny) - Política do provedor do agente (
agents.list[].tools.byProvider[provider].allow/deny) - Política de ferramentas do sandbox (
tools.sandbox.toolsouagents.list[].tools.sandbox.tools) - Política de ferramentas de subagente (
tools.subagents.tools, quando aplicável)
agents.list[].tools.sandbox.tools estiver definido, ele substitui tools.sandbox.tools para esse agente.
Se agents.list[].tools.profile estiver definido, ele substitui tools.profile para esse agente.
As chaves de ferramentas por provedor aceitam provider (por exemplo, google-antigravity) ou provider/model (por exemplo, openai/gpt-5.4).
As políticas de ferramentas oferecem abreviações group:* que se expandem para várias ferramentas. Consulte Tool groups para ver a lista completa.
As substituições de modo elevado por agente (agents.list[].tools.elevated) podem restringir ainda mais a execução elevada para agentes específicos. Consulte Elevated Mode para obter detalhes.
Migração de agente único
Antes (agente único):agent.* são migradas por openclaw doctor; prefira agents.defaults + agents.list daqui para frente.
Exemplos de restrição de ferramentas
Agente somente leitura
Agente de execução segura (sem modificações de arquivos)
Agente apenas de comunicação
sessions_history nesse perfil ainda retorna uma visualização de recuperação limitada e sanitizada
em vez de um despejo bruto de transcrição. A recuperação do assistente remove tags de raciocínio,
estruturas <relevant-memories>, cargas XML de chamada de ferramenta em texto simples
(incluindo <tool_call>...</tool_call>,
<function_call>...</function_call>, <tool_calls>...</tool_calls>,
<function_calls>...</function_calls> e blocos truncados de chamada de ferramenta),
estruturas rebaixadas de chamada de ferramenta, tokens de controle do modelo
em ASCII/largura total vazados e XML malformado de chamada de ferramenta do MiniMax antes da redação/truncamento.
Armadilha comum: "non-main"
agents.defaults.sandbox.mode: "non-main" se baseia em session.mainKey (padrão "main"),
não no ID do agente. Sessões de grupo/canal sempre recebem suas próprias chaves, portanto
são tratadas como não principais e usarão sandbox. Se você quiser que um agente nunca use
sandbox, defina agents.list[].sandbox.mode: "off".
Testes
Depois de configurar sandbox e ferramentas para múltiplos agentes:-
Verifique a resolução do agente:
-
Verifique os contêineres de sandbox:
-
Teste as restrições de ferramentas:
- Envie uma mensagem que exija ferramentas restritas
- Verifique se o agente não pode usar as ferramentas negadas
-
Monitore os logs:
Solução de problemas
Agente sem sandbox apesar de mode: "all"
- Verifique se há um
agents.defaults.sandbox.modeglobal que o substitui - A configuração específica do agente tem precedência, então defina
agents.list[].sandbox.mode: "all"
Ferramentas ainda disponíveis apesar da lista de negação
- Verifique a ordem de filtragem de ferramentas: global → agente → sandbox → subagente
- Cada nível só pode restringir ainda mais, não restaurar permissões
- Verifique com logs:
[tools] filtering tools for agent:${agentId}
Contêiner não isolado por agente
- Defina
scope: "agent"na configuração de sandbox específica do agente - O padrão é
"session", que cria um contêiner por sessão
Veja também
- Sandboxing — referência completa de sandbox (modos, escopos, backends, imagens)
- Sandbox vs Tool Policy vs Elevated — depuração de “por que isto está bloqueado?”
- Elevated Mode
- Multi-Agent Routing
- Sandbox Configuration
- Session Management