tools.* e configuração de provedor personalizado / URL base. Para agentes, canais e outras chaves de configuração de nível superior, consulte Referência de configuração.
Ferramentas
Perfis de ferramentas
tools.profile define uma lista de permissões base antes de tools.allow/tools.deny:
A integração local define configs locais novas como
tools.profile: "coding" quando não definido (perfis explícitos existentes são preservados).| Perfil | Inclui |
|---|---|
minimal | Apenas session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, skill_workshop, video_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Sem restrição (igual a não definido) |
Grupos de ferramentas
| Grupo | Ferramentas |
|---|---|
group:runtime | exec, process, code_execution (bash é aceito como alias para exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | heartbeat_respond, cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list, update_plan |
group:media | image, image_generate, music_generate, video_generate, tts |
group:openclaw | Todas as ferramentas integradas (exclui Plugins de provedor) |
group:plugins | Ferramentas pertencentes a Plugins carregados, incluindo servidores MCP configurados expostos por meio de bundle-mcp |
Ferramentas MCP e de Plugin dentro da política de ferramentas do sandbox
Servidores MCP configurados são expostos como ferramentas pertencentes a Plugins sob o id de Pluginbundle-mcp. Perfis de ferramentas normais podem permiti-los, mas tools.sandbox.tools é uma barreira adicional para sessões em sandbox. Se o modo de sandbox for "all" ou "non-main", inclua uma destas entradas na lista de permissões de ferramentas do sandbox quando ferramentas MCP/Plugin devem ficar visíveis:
bundle-mcppara servidores MCP gerenciados pelo OpenClaw demcp.servers- o id de Plugin para um Plugin nativo específico
group:pluginspara todas as ferramentas pertencentes a Plugins carregados- nomes exatos de ferramentas de servidores MCP ou globs de servidor, como
outlook__send_mailououtlook__*, quando você quer apenas um servidor
mcp.servers. Caracteres que não são [A-Za-z0-9_-] viram -, nomes que não começam com uma letra recebem um prefixo mcp-, e prefixos longos ou duplicados podem ser truncados ou receber sufixos; por exemplo, mcp.servers["Outlook Graph"] usa um glob como outlook-graph__*.
openclaw doctor para detectar esse formato em servidores gerenciados pelo OpenClaw em mcp.servers. Servidores MCP carregados de manifestos de Plugins empacotados ou de .mcp.json do Claude usam a mesma barreira de sandbox, mas este diagnóstico ainda não enumera essas fontes; use as mesmas entradas da lista de permissões se as ferramentas deles desaparecerem em turnos com sandbox.
tools.codeMode
tools.codeMode habilita a superfície genérica de modo de código do OpenClaw. Quando habilitado
para uma execução com ferramentas, o modelo vê apenas exec e wait; ferramentas normais do OpenClaw
passam para trás da ponte de catálogo tools.* dentro do sandbox, e ferramentas MCP ficam
disponíveis por meio do namespace MCP gerado.
API.list("mcp") e
API.read("mcp/<server>.d.ts") para inspecionar assinaturas em estilo TypeScript antes de
chamar MCP.<server>.<tool>(). Consulte Modo de código para o
contrato de runtime, limites e etapas de depuração.
tools.allow / tools.deny
Política global de permissão/negação de ferramentas (negação prevalece). Não diferencia maiúsculas de minúsculas, aceita curingas *. Aplicada mesmo quando o sandbox Docker está desligado.
write e apply_patch são ids de ferramentas separados. allow: ["write"] também habilita apply_patch para modelos compatíveis, mas deny: ["write"] não nega apply_patch. Para bloquear toda mutação de arquivos, negue group:fs ou liste cada ferramenta de mutação explicitamente:
tools.byProvider
Restringe ainda mais ferramentas para provedores ou modelos específicos. Ordem: perfil base → perfil de provedor → permissão/negação.
tools.toolsBySender
Restringe ferramentas para uma identidade de solicitante específica. Isto é defesa em profundidade sobre o controle de acesso do canal; valores de remetente devem vir do adaptador de canal, não do texto da mensagem.
channel:<channelId>:<senderId>, id:<senderId>, e164:<phone>, username:<handle>, name:<displayName> ou "*". IDs de canal são ids canônicos do OpenClaw; aliases como teams normalizam para msteams. Chaves legadas sem prefixo são aceitas apenas como id:. A ordem de correspondência é canal+id, id, e164, username, name e então curinga.
agents.list[].tools.toolsBySender por agente substitui a correspondência global de remetente quando corresponde, mesmo com uma política {} vazia.
tools.elevated
Controla acesso elevado a exec fora do sandbox:
- A substituição por agente (
agents.list[].tools.elevated) só pode restringir ainda mais. /elevated on|off|ask|fullarmazena estado por sessão; diretivas inline se aplicam a uma única mensagem.execelevado ignora o sandbox e usa o caminho de escape configurado (gatewaypor padrão, ounodequando o destino de exec énode).
tools.exec
tools.loopDetection
Verificações de segurança contra loops de ferramentas são desabilitadas por padrão. Defina enabled: true para ativar a detecção. Configurações podem ser definidas globalmente em tools.loopDetection e substituídas por agente em agents.list[].tools.loopDetection.
Histórico máximo de chamadas de ferramentas retido para análise de loops.
Limite de padrão repetido sem progresso para avisos.
Limite repetido mais alto para bloquear loops críticos.
Limite de parada rígida para qualquer execução sem progresso.
Avisa sobre chamadas repetidas com a mesma ferramenta/os mesmos argumentos.
Avisa/bloqueia em ferramentas de sondagem conhecidas (
process.poll, command_status etc.).Avisa/bloqueia em padrões alternados de pares sem progresso.
tools.web
tools.media
Configura compreensão de mídia de entrada (imagem/áudio/vídeo):
Media model entry fields
Media model entry fields
Entrada de provedor (
type: "provider" ou omitido):provider: id do provedor de API (openai,anthropic,google/gemini,groqetc.)model: substituição do id do modeloprofile/preferredProfile: seleção de perfil deauth-profiles.json
type: "cli"):command: executável a ser executadoargs: argumentos com modelo (compatível com{{MediaPath}},{{Prompt}},{{MaxChars}}etc.;openclaw doctor --fixmigra placeholders obsoletos{input}para{{MediaPath}})
capabilities: lista opcional (image,audio,video). Padrões:openai/anthropic/minimax→ imagem,google→ imagem+áudio+vídeo,groq→ áudio.prompt,maxChars,maxBytes,timeoutSeconds,language: substituições por entrada.- As entradas
tools.media.image.timeoutSecondse as entradastimeoutSecondscorrespondentes do modelo de imagem também se aplicam quando o agente chama a ferramenta explícitaimage. Para compreensão de imagens, esse tempo limite se aplica à própria solicitação e não é reduzido por trabalho de preparação anterior. - Falhas recorrem à próxima entrada.
auth-profiles.json → variáveis de ambiente → models.providers.*.apiKey.Campos de conclusão assíncrona:asyncCompletion.directSend: sinalizador de compatibilidade obsoleto. Tarefas assíncronas de mídia concluídas permanecem mediadas pela sessão solicitante para que o agente receba o resultado, decida como informar o usuário e use a ferramenta de mensagem quando a entrega de origem exigir.
tools.agentToAgent
tools.sessions
Controla quais sessões podem ser direcionadas pelas ferramentas de sessão (sessions_list, sessions_history, sessions_send).
Padrão: tree (sessão atual + sessões geradas por ela, como subagentes).
Visibility scopes
Visibility scopes
self: somente a chave da sessão atual.tree: sessão atual + sessões geradas pela sessão atual (subagentes).agent: qualquer sessão pertencente ao id do agente atual (pode incluir outros usuários se você executar sessões por remetente sob o mesmo id de agente).all: qualquer sessão. O direcionamento entre agentes ainda exigetools.agentToAgent.- Limite do sandbox: quando a sessão atual está em sandbox e
agents.defaults.sandbox.sessionToolsVisibility="spawned", a visibilidade é forçada paratreemesmo setools.sessions.visibility="all". - Quando não é
all,sessions_listinclui um campo compactovisibilityque descreve o modo efetivo e um aviso de que algumas sessões podem ser omitidas fora do escopo atual.
tools.sessions_spawn
Controla o suporte a anexos inline para sessions_spawn.
Attachment notes
Attachment notes
- Anexos exigem
enabled: true. - Anexos de subagente são materializados no workspace filho em
.openclaw/attachments/<uuid>/com um.manifest.json. - Anexos ACP são somente imagens e encaminhados inline para o runtime ACP depois que os mesmos limites de contagem de arquivos, bytes por arquivo e bytes totais passam.
- O conteúdo dos anexos é automaticamente redigido da persistência da transcrição.
- Entradas Base64 são validadas com verificações estritas de alfabeto/preenchimento e uma proteção de tamanho antes da decodificação.
- As permissões de arquivos de anexos de subagente são
0700para diretórios e0600para arquivos. - A limpeza de subagente segue a política
cleanup:deletesempre remove anexos;keepos retém somente quandoretainOnSessionKeep: true.
tools.experimental
Sinalizadores experimentais de ferramentas integradas. Desativado por padrão, a menos que uma regra de ativação automática para GPT-5 strict-agentic se aplique.
planTool: habilita a ferramenta estruturadaupdate_planpara acompanhar trabalhos não triviais de várias etapas.- Padrão:
false, a menos queagents.defaults.embeddedAgent.executionContract(ou uma substituição por agente) esteja definido como"strict-agentic"para uma execução da família GPT-5 do OpenAI ou OpenAI Codex. Defina comotruepara forçar a ferramenta fora desse escopo, ou comofalsepara mantê-la desativada mesmo em execuções GPT-5 strict-agentic. - Quando habilitado, o prompt do sistema também adiciona orientação de uso para que o modelo só a use em trabalhos substanciais e mantenha no máximo uma etapa
in_progress.
agents.defaults.subagents
model: modelo padrão para subagentes gerados. Se omitido, os subagentes herdam o modelo do chamador.allowAgents: allowlist padrão de ids de agentes de destino configurados parasessions_spawnquando o agente solicitante não define seu própriosubagents.allowAgents(["*"]= qualquer destino configurado; padrão: somente o mesmo agente). Entradas obsoletas cuja configuração de agente foi excluída são rejeitadas porsessions_spawne omitidas deagents_list; executeopenclaw doctor --fixpara limpá-las.runTimeoutSeconds: tempo limite padrão (segundos) parasessions_spawn.0significa sem tempo limite.announceTimeoutMs: tempo limite por chamada (milissegundos) para tentativas de entrega de anúncioagentdo Gateway. Padrão:120000. Retentativas transitórias podem fazer a espera total do anúncio ser maior que um tempo limite configurado.- Política de ferramenta por subagente:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Provedores personalizados e URLs base
Plugins de provedor publicam suas próprias linhas de catálogo de modelos. Adicione provedores personalizados viamodels.providers na configuração ou em ~/.openclaw/agents/<agentId>/agent/models.json.
Configurar um baseUrl de provedor personalizado/local também é a decisão estreita de confiança de rede para solicitações HTTP de modelo: OpenClaw permite essa origem exata scheme://host:port pelo caminho de fetch protegido, sem adicionar uma opção de configuração separada nem confiar em outras origens privadas.
Auth and merge precedence
Auth and merge precedence
- Use
authHeader: true+headerspara necessidades de autenticação personalizadas. - Substitua a raiz da configuração do agente com
OPENCLAW_AGENT_DIR. - Precedência de mesclagem para IDs de provedor correspondentes:
- Valores
baseUrlnão vazios demodels.jsondo agente vencem. - Valores
apiKeynão vazios do agente vencem somente quando esse provedor não é gerenciado por SecretRef no contexto atual de configuração/perfil de autenticação. - Valores
apiKeyde provedor gerenciado por SecretRef são atualizados a partir dos marcadores de origem (ENV_VAR_NAMEpara refs de ambiente,secretref-managedpara refs de arquivo/exec), em vez de persistir segredos resolvidos. - Valores de cabeçalho de provedor gerenciado por SecretRef são atualizados a partir dos marcadores de origem (
secretref-env:ENV_VAR_NAMEpara refs de ambiente,secretref-managedpara refs de arquivo/exec). apiKey/baseUrlvazios ou ausentes do agente recorrem amodels.providersna configuração.contextWindow/maxTokensde modelo correspondente usam o maior valor entre a configuração explícita e os valores implícitos do catálogo.contextTokensde modelo correspondente preserva um limite explícito de runtime quando presente; use-o para limitar o contexto efetivo sem alterar os metadados nativos do modelo.- Catálogos de Plugin de provedor são armazenados como fragmentos de catálogo gerados e pertencentes ao Plugin no estado do Plugin do agente.
- Use
models.mode: "replace"quando quiser que a configuração reescreva totalmentemodels.jsone os fragmentos ativos de catálogo de Plugin. - A persistência de marcadores é autoritativa pela origem: os marcadores são gravados a partir do snapshot de configuração de origem ativo (pré-resolução), não de valores de segredo resolvidos em runtime.
- Valores
Detalhes de campos de provedor
Top-level catalog
Top-level catalog
models.mode: comportamento do catálogo de provedores (mergeoureplace).models.providers: mapa de provedores personalizados indexado por id de provedor.- Edições seguras: use
openclaw config set models.providers.<id> '<json>' --strict-json --mergeouopenclaw config set models.providers.<id>.models '<json-array>' --strict-json --mergepara atualizações aditivas.config setrecusa substituições destrutivas, a menos que você passe--replace.
- Edições seguras: use
Conexão e autenticação do provedor
Conexão e autenticação do provedor
models.providers.*.api: adaptador de solicitação (openai-completions,openai-responses,anthropic-messages,google-generative-ai, etc.). Para backends/v1/chat/completionsauto-hospedados, como MLX, vLLM, SGLang e a maioria dos servidores locais compatíveis com OpenAI, useopenai-completions. Um provedor personalizado combaseUrl, mas semapi, usaopenai-completionspor padrão; definaopenai-responsessomente quando o backend oferecer suporte a/v1/responses.models.providers.*.apiKey: credencial do provedor (prefira substituição por SecretRef/env).models.providers.*.auth: estratégia de autenticação (api-key,token,oauth,aws-sdk).models.providers.*.contextWindow: janela de contexto nativa padrão para modelos neste provedor quando a entrada do modelo não definecontextWindow.models.providers.*.contextTokens: limite de contexto efetivo de runtime padrão para modelos neste provedor quando a entrada do modelo não definecontextTokens.models.providers.*.maxTokens: limite padrão de tokens de saída para modelos neste provedor quando a entrada do modelo não definemaxTokens.models.providers.*.timeoutSeconds: timeout opcional, por provedor, para solicitações HTTP de modelo, em segundos, incluindo conexão, cabeçalhos, corpo e tratamento de abortamento total da solicitação.models.providers.*.injectNumCtxForOpenAICompat: para Ollama +openai-completions, injetaoptions.num_ctxnas solicitações (padrão:true).models.providers.*.authHeader: força o transporte da credencial no cabeçalhoAuthorizationquando necessário.models.providers.*.baseUrl: URL base da API upstream.models.providers.*.headers: cabeçalhos estáticos extras para roteamento de proxy/tenant.
Substituições de transporte de solicitação
Substituições de transporte de solicitação
models.providers.*.request: substituições de transporte para solicitações HTTP de provedor de modelo.request.headers: cabeçalhos extras (mesclados com os padrões do provedor). Valores aceitam SecretRef.request.auth: substituição da estratégia de autenticação. Modos:"provider-default"(usa a autenticação interna do provedor),"authorization-bearer"(comtoken),"header"(comheaderName,value,prefixopcional).request.proxy: substituição de proxy HTTP. Modos:"env-proxy"(usa variáveis de ambienteHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(comurl). Ambos os modos aceitam um subobjetotlsopcional.request.tls: substituição de TLS para conexões diretas. Campos:ca,cert,key,passphrase(todos aceitam SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: quandotrue, permite que solicitações HTTP de provedor de modelo para redes privadas, CGNAT ou intervalos semelhantes passem pelo guard de fetch HTTP do provedor. URLs base de provedores personalizados/locais já confiam na origem exata configurada, exceto origens de metadados/link-local, que continuam bloqueadas sem adesão explícita. Defina isto comofalsepara sair da confiança na origem exata. WebSocket usa o mesmorequestpara cabeçalhos/TLS, mas não aquele gate de SSRF de fetch. Padrãofalse.
Entradas do catálogo de modelos
Entradas do catálogo de modelos
models.providers.*.models: entradas explícitas do catálogo de modelos do provedor.models.providers.*.models.*.input: modalidades de entrada do modelo. Use["text"]para modelos somente texto e["text", "image"]para modelos nativos de imagem/visão. Anexos de imagem só são injetados em turnos do agente quando o modelo selecionado está marcado como compatível com imagens.models.providers.*.models.*.contextWindow: metadados da janela de contexto nativa do modelo. Isto substituicontextWindowno nível do provedor para esse modelo.models.providers.*.models.*.contextTokens: limite opcional de contexto de runtime. Isto substituicontextTokensno nível do provedor; use quando quiser um orçamento de contexto efetivo menor que ocontextWindownativo do modelo;openclaw models listmostra ambos os valores quando eles diferem.models.providers.*.models.*.compat.supportsDeveloperRole: dica opcional de compatibilidade. Paraapi: "openai-completions"combaseUrlnão vazio e não nativo (host que não sejaapi.openai.com), o OpenClaw força isto parafalseem runtime.baseUrlvazio/omitido mantém o comportamento padrão da OpenAI.models.providers.*.models.*.compat.requiresStringContent: dica opcional de compatibilidade para endpoints de chat compatíveis com OpenAI que aceitam somente strings. Quandotrue, o OpenClaw achata arrays de puro texto emmessages[].contentpara strings simples antes de enviar a solicitação.models.providers.*.models.*.compat.strictMessageKeys: dica opcional de compatibilidade para endpoints de chat estritos compatíveis com OpenAI. Quandotrue, o OpenClaw reduz objetos de mensagem de Chat Completions enviados pararoleecontentantes de enviar a solicitação.models.providers.*.models.*.compat.thinkingFormat: dica opcional de payload de pensamento. Use"together"parareasoning.enabledno estilo Together,"qwen"paraenable_thinkingde nível superior, ou"qwen-chat-template"parachat_template_kwargs.enable_thinkingem servidores compatíveis com OpenAI da família Qwen que oferecem suporte a kwargs de chat-template no nível da solicitação, como vLLM. Modelos Qwen do vLLM configurados expõem escolhas binárias de/think(off,on) para estes formatos.models.providers.*.models.*.compat.requiresReasoningContentOnAssistantMessages: dica opcional de compatibilidade para backends de Chat Completions no estilo DeepSeek que exigem que mensagens anteriores do assistente mantenhamreasoning_contentna reprodução. Quandotrue, o OpenClaw preserva esse campo nas mensagens de assistente enviadas. Use isto ao conectar um proxy personalizado compatível com DeepSeek que rejeita solicitações após remoção do raciocínio. Padrãofalse.
Descoberta do Amazon Bedrock
Descoberta do Amazon Bedrock
plugins.entries.amazon-bedrock.config.discovery: raiz das configurações de descoberta automática do Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: ativa/desativa a descoberta implícita.plugins.entries.amazon-bedrock.config.discovery.region: região da AWS para descoberta.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filtro opcional de provider-id para descoberta direcionada.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: intervalo de polling para atualização da descoberta.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: janela de contexto fallback para modelos descobertos.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: tokens máximos de saída fallback para modelos descobertos.
--custom-image-input para forçar metadados compatíveis com imagem ou --custom-text-input para forçar metadados somente texto.
Exemplos de provedores
Cerebras (GLM 4.7 / GPT OSS)
Cerebras (GLM 4.7 / GPT OSS)
O Plugin oficial externo do provedor Use
cerebras pode configurar isto via openclaw onboard --auth-choice cerebras-api-key. Use configuração explícita de provedor somente ao substituir padrões.cerebras/zai-glm-4.7 para Cerebras; zai/glm-4.7 para Z.AI direto.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Modelos locais (LM Studio)
Modelos locais (LM Studio)
Veja Modelos locais. TL;DR: execute um modelo local grande via LM Studio Responses API em hardware robusto; mantenha modelos hospedados mesclados para fallback.
MiniMax M3 (direto)
MiniMax M3 (direto)
MINIMAX_API_KEY. Atalhos: openclaw onboard --auth-choice minimax-global-api ou openclaw onboard --auth-choice minimax-cn-api. O catálogo de modelos usa M3 por padrão e também inclui as variantes M2.7. No caminho de streaming compatível com Anthropic, o OpenClaw desativa o pensamento do MiniMax M2.x por padrão, a menos que você defina thinking explicitamente; MiniMax-M3 (e M3.x) permanece no caminho de pensamento omitido/adaptativo do provedor por padrão. /fast on ou params.fastMode: true reescreve MiniMax-M2.7 para MiniMax-M2.7-highspeed.Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" ou openclaw onboard --auth-choice moonshot-api-key-cn.Endpoints nativos da Moonshot anunciam compatibilidade de uso em streaming no transporte compartilhado openai-completions, e o OpenClaw determina isso a partir das capacidades do endpoint, não apenas pelo id do provedor integrado.OpenCode
OpenCode
OPENCODE_API_KEY (ou OPENCODE_ZEN_API_KEY). Use refs opencode/... para o catálogo Zen ou refs opencode-go/... para o catálogo Go. Atalho: openclaw onboard --auth-choice opencode-zen ou openclaw onboard --auth-choice opencode-go.Synthetic (Anthropic-compatible)
Synthetic (Anthropic-compatible)
/v1 (o cliente Anthropic a acrescenta). Atalho: openclaw onboard --auth-choice synthetic-api-key.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. Referências de modelo usam o ID de provedor canônico zai/*. Atalho: openclaw onboard --auth-choice zai-api-key.- Endpoint geral:
https://api.z.ai/api/paas/v4 - Endpoint de codificação (padrão):
https://api.z.ai/api/coding/paas/v4 - Para o endpoint geral, defina um provedor personalizado com a substituição da URL base.
Relacionado
- Configuração — agentes
- Configuração — canais
- Referência de configuração — outras chaves de nível superior
- Ferramentas e plugins