Referência de configuração
Todos os campos disponíveis em~/.openclaw/openclaw.json. Para uma visão geral orientada a tarefas, consulte Configuration.
O formato da configuração é JSON5 (comentários + vírgulas à direita são permitidos). Todos os campos são opcionais — o OpenClaw usa padrões seguros quando omitidos.
Canais
Cada canal inicia automaticamente quando sua seção de configuração existe (a menos queenabled: false).
Acesso a DM e grupos
Todos os canais oferecem suporte a políticas de DM e políticas de grupo:| Política de DM | Comportamento |
|---|---|
pairing (padrão) | Remetentes desconhecidos recebem um código único de pareamento; o proprietário precisa aprovar |
allowlist | Apenas remetentes em allowFrom (ou armazenamento de permissão pareado) |
open | Permite todas as DMs de entrada (requer allowFrom: ["*"]) |
disabled | Ignora todas as DMs de entrada |
| Política de grupo | Comportamento |
|---|---|
allowlist (padrão) | Apenas grupos correspondentes à allowlist configurada |
open | Ignora allowlists de grupo (o controle por menção ainda se aplica) |
disabled | Bloqueia todas as mensagens de grupo/sala |
channels.defaults.groupPolicy define o padrão quando groupPolicy de um provedor não está definido.
Códigos de pareamento expiram após 1 hora. Solicitações pendentes de pareamento de DM são limitadas a 3 por canal.
Se um bloco de provedor estiver completamente ausente (channels.<provider> ausente), a política de grupo em runtime usa allowlist como fallback (fail-closed) com um aviso na inicialização.Substituições de modelo por canal
Usechannels.modelByChannel para fixar IDs de canal específicos em um modelo. Os valores aceitam provider/model ou aliases de modelo configurados. O mapeamento de canal se aplica quando uma sessão ainda não tem uma substituição de modelo (por exemplo, definida via /model).
Padrões de canal e heartbeat
Usechannels.defaults para compartilhar política de grupo e comportamento de heartbeat entre provedores:
channels.defaults.groupPolicy: política de grupo de fallback quandogroupPolicyno nível do provedor não está definido.channels.defaults.contextVisibility: modo padrão de visibilidade de contexto suplementar para todos os canais. Valores:all(padrão, inclui todo o contexto citado/thread/histórico),allowlist(inclui apenas contexto de remetentes na allowlist),allowlist_quote(igual a allowlist, mas mantém contexto explícito de citação/resposta). Substituição por canal:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: inclui status íntegros de canal na saída do heartbeat.channels.defaults.heartbeat.showAlerts: inclui status degradados/com erro na saída do heartbeat.channels.defaults.heartbeat.useIndicator: renderiza saída de heartbeat compacta em estilo indicador.
WhatsApp com múltiplas contas
WhatsApp com múltiplas contas
- Comandos de saída usam por padrão a conta
defaultse ela existir; caso contrário, usam o primeiro id de conta configurado (ordenado). channels.whatsapp.defaultAccountopcional substitui essa seleção padrão de conta de fallback quando corresponde a um id de conta configurado.- O diretório legado de autenticação Baileys de conta única é migrado por
openclaw doctorparawhatsapp/default. - Substituições por conta:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token do bot:
channels.telegram.botTokenouchannels.telegram.tokenFile(somente arquivo regular; symlinks são rejeitados), comTELEGRAM_BOT_TOKENcomo fallback para a conta padrão. channels.telegram.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado.- Em configurações com múltiplas contas (2+ ids de conta), defina um padrão explícito (
channels.telegram.defaultAccountouchannels.telegram.accounts.default) para evitar roteamento por fallback;openclaw doctoravisa quando isso está ausente ou inválido. configWrites: falsebloqueia gravações de configuração iniciadas pelo Telegram (migrações de ID de supergrupo,/config set|unset).- Entradas
bindings[]de nível superior comtype: "acp"configuram bindings ACP persistentes para tópicos de fórum (usechatId:topic:topicIdcanônico emmatch.peer.id). A semântica dos campos é compartilhada em ACP Agents. - Pré-visualizações de streaming no Telegram usam
sendMessage+editMessageText(funciona em chats diretos e em grupo). - Política de repetição: consulte Retry policy.
Discord
- Token:
channels.discord.token, comDISCORD_BOT_TOKENcomo fallback para a conta padrão. - Chamadas diretas de saída que fornecem um
tokenexplícito do Discord usam esse token para a chamada; configurações de repetição/política da conta continuam vindo da conta selecionada no snapshot ativo de runtime. channels.discord.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado.- Use
user:<id>(DM) ouchannel:<id>(canal de guild) para destinos de entrega; IDs numéricos simples são rejeitados. - Slugs de guild ficam em minúsculas com espaços substituídos por
-; chaves de canal usam o nome em slug (sem#). Prefira IDs de guild. - Mensagens criadas por bot são ignoradas por padrão.
allowBots: trueas habilita; useallowBots: "mentions"para aceitar apenas mensagens de bot que mencionem o bot (mensagens próprias continuam filtradas). channels.discord.guilds.<id>.ignoreOtherMentions(e substituições de canal) descarta mensagens que mencionam outro usuário ou role, mas não o bot (excluindo @everyone/@here).maxLinesPerMessage(padrão 17) divide mensagens altas mesmo quando abaixo de 2000 caracteres.channels.discord.threadBindingscontrola o roteamento vinculado a threads do Discord:enabled: substituição do Discord para recursos de sessão vinculados a thread (/focus,/unfocus,/agents,/session idle,/session max-agee entrega/roteamento vinculados)idleHours: substituição do Discord para desfoco automático por inatividade em horas (0desabilita)maxAgeHours: substituição do Discord para idade máxima rígida em horas (0desabilita)spawnSubagentSessions: chave opt-in para criação/binding automáticos de thread porsessions_spawn({ thread: true })
- Entradas
bindings[]de nível superior comtype: "acp"configuram bindings ACP persistentes para canais e threads (use o id de canal/thread emmatch.peer.id). A semântica dos campos é compartilhada em ACP Agents. channels.discord.ui.components.accentColordefine a cor de destaque para contêineres Discord components v2.channels.discord.voicehabilita conversas em canais de voz do Discord e substituições opcionais de auto-join + TTS.channels.discord.voice.daveEncryptionechannels.discord.voice.decryptionFailureTolerancesão repassados para opções DAVE de@discordjs/voice(padrãotruee24).- O OpenClaw também tenta recuperação de recepção de voz saindo/reentrando em uma sessão de voz após falhas repetidas de descriptografia.
channels.discord.streamingé a chave canônica do modo de streaming. Os valores legadosstreamModee booleanosstreamingsão migrados automaticamente.channels.discord.autoPresencemapeia a disponibilidade em runtime para presença do bot (íntegro => online, degradado => idle, exausto => dnd) e permite substituições opcionais de texto de status.channels.discord.dangerouslyAllowNameMatchingreabilita correspondência mutável de nome/tag (modo de compatibilidade break-glass).channels.discord.execApprovals: entrega nativa de aprovações de exec no Discord e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo auto, aprovações de exec são ativadas quando aprovadores podem ser resolvidos a partir deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário do Discord autorizados a aprovar solicitações de exec. Usacommands.ownerAllowFromcomo fallback quando omitido.agentFilter: allowlist opcional de ID de agente. Omita para encaminhar aprovações para todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: onde enviar prompts de aprovação."dm"(padrão) envia para DMs do aprovador,"channel"envia para o canal de origem,"both"envia para ambos. Quando o alvo inclui"channel", os botões só podem ser usados por aprovadores resolvidos.cleanupAfterResolve: quandotrue, exclui DMs de aprovação após aprovação, negação ou timeout.
off (nenhum), own (mensagens do bot, padrão), all (todas as mensagens), allowlist (de guilds.<id>.users em todas as mensagens).
Google Chat
- JSON da conta de serviço: inline (
serviceAccount) ou baseado em arquivo (serviceAccountFile). - SecretRef de conta de serviço também é compatível (
serviceAccountRef). - Fallbacks por env:
GOOGLE_CHAT_SERVICE_ACCOUNTouGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Use
spaces/<spaceId>ouusers/<userId>para destinos de entrega. channels.googlechat.dangerouslyAllowNameMatchingreabilita correspondência mutável de principal de e-mail (modo de compatibilidade break-glass).
Slack
- Socket mode requer
botTokeneappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENpara fallback por env da conta padrão). - HTTP mode requer
botTokenmaissigningSecret(na raiz ou por conta). botToken,appToken,signingSecreteuserTokenaceitam strings em texto simples ou objetos SecretRef.- Snapshots de conta do Slack expõem campos por credencial de origem/status, como
botTokenSource,botTokenStatus,appTokenStatuse, em HTTP mode,signingSecretStatus.configured_unavailablesignifica que a conta está configurada por SecretRef, mas o caminho atual de comando/runtime não pôde resolver o valor do segredo. configWrites: falsebloqueia gravações de configuração iniciadas pelo Slack.channels.slack.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado.channels.slack.streamingé a chave canônica de modo de streaming. Os valores legadosstreamModee booleanosstreamingsão migrados automaticamente.- Use
user:<id>(DM) ouchannel:<id>para destinos de entrega.
off, own (padrão), all, allowlist (de reactionAllowlist).
Isolamento de sessão por thread: thread.historyScope é por thread (padrão) ou compartilhado no canal. thread.inheritParent copia a transcrição do canal pai para novas threads.
typingReactionadiciona uma reação temporária à mensagem recebida do Slack enquanto uma resposta está em andamento e a remove na conclusão. Use um shortcode de emoji do Slack como"hourglass_flowing_sand".channels.slack.execApprovals: entrega nativa de aprovações de exec no Slack e autorização de aprovadores. Mesmo schema do Discord:enabled(true/false/"auto"),approvers(IDs de usuário do Slack),agentFilter,sessionFilteretarget("dm","channel"ou"both").
| Grupo de ações | Padrão | Observações |
|---|---|---|
| reactions | enabled | Reagir + listar reações |
| messages | enabled | Ler/enviar/editar/excluir |
| pins | enabled | Fixar/desafixar/listar |
| memberInfo | enabled | Informações de membro |
| emojiList | enabled | Lista de emojis personalizados |
Mattermost
Mattermost é distribuído como plugin:openclaw plugins install @openclaw/mattermost.
oncall (responde em @-mention, padrão), onmessage (toda mensagem), onchar (mensagens começando com prefixo de gatilho).
Quando comandos nativos do Mattermost estão habilitados:
commands.callbackPathdeve ser um caminho (por exemplo/api/channels/mattermost/command), não uma URL completa.commands.callbackUrldeve resolver para o endpoint do gateway do OpenClaw e ser acessível pelo servidor Mattermost.- Callbacks nativos de slash são autenticados com os tokens por comando retornados
pelo Mattermost durante o registro do slash command. Se o registro falhar ou nenhum
comando for ativado, o OpenClaw rejeitará callbacks com
Unauthorized: invalid command token. - Para hosts privados/tailnet/internos de callback, o Mattermost pode exigir que
ServiceSettings.AllowedUntrustedInternalConnectionsinclua o host/domínio do callback. Use valores de host/domínio, não URLs completas. channels.mattermost.configWrites: permite ou nega gravações de configuração iniciadas pelo Mattermost.channels.mattermost.requireMention: exige@mentionantes de responder em canais.channels.mattermost.groups.<channelId>.requireMention: substituição de controle por menção por canal ("*"para padrão).channels.mattermost.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado.
Signal
off, own (padrão), all, allowlist (de reactionAllowlist).
channels.signal.account: fixa a inicialização do canal em uma identidade específica de conta Signal.channels.signal.configWrites: permite ou nega gravações de configuração iniciadas pelo Signal.channels.signal.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado.
BlueBubbles
BlueBubbles é o caminho recomendado para iMessage (baseado em plugin, configurado emchannels.bluebubbles).
- Caminhos de chave principais cobertos aqui:
channels.bluebubbles,channels.bluebubbles.dmPolicy. channels.bluebubbles.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado.- Entradas
bindings[]de nível superior comtype: "acp"podem vincular conversas do BlueBubbles a sessões ACP persistentes. Use um handle BlueBubbles ou string de alvo (chat_id:*,chat_guid:*,chat_identifier:*) emmatch.peer.id. Semântica compartilhada dos campos: ACP Agents. - A configuração completa do canal BlueBubbles está documentada em BlueBubbles.
iMessage
O OpenClaw executaimsg rpc (JSON-RPC por stdio). Não requer daemon nem porta.
-
channels.imessage.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado. - Requer Full Disk Access para o banco de dados do Messages.
-
Prefira alvos
chat_id:<id>. Useimsg chats --limit 20para listar chats. -
cliPathpode apontar para um wrapper SSH; definaremoteHost(hostouuser@host) para buscar anexos via SCP. -
attachmentRootseremoteAttachmentRootsrestringem caminhos de anexos recebidos (padrão:/Users/*/Library/Messages/Attachments). -
SCP usa verificação estrita de chave do host, então garanta que a chave do host de relay já exista em
~/.ssh/known_hosts. -
channels.imessage.configWrites: permite ou nega gravações de configuração iniciadas pelo iMessage. -
Entradas
bindings[]de nível superior comtype: "acp"podem vincular conversas do iMessage a sessões ACP persistentes. Use um handle normalizado ou alvo explícito de chat (chat_id:*,chat_guid:*,chat_identifier:*) emmatch.peer.id. Semântica compartilhada dos campos: ACP Agents.
Exemplo de wrapper SSH para iMessage
Exemplo de wrapper SSH para iMessage
Matrix
Matrix é baseado em extensão e configurado emchannels.matrix.
- Autenticação por token usa
accessToken; autenticação por senha usauserId+password. channels.matrix.proxyroteia tráfego HTTP do Matrix por um proxy HTTP(S) explícito. Contas nomeadas podem substituí-lo comchannels.matrix.accounts.<id>.proxy.channels.matrix.allowPrivateNetworkpermite homeservers privados/internos.proxyeallowPrivateNetworksão controles independentes.channels.matrix.defaultAccountseleciona a conta preferida em configurações com múltiplas contas.channels.matrix.execApprovals: entrega nativa de aprovações de exec no Matrix e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo auto, aprovações de exec são ativadas quando aprovadores podem ser resolvidos deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário do Matrix (por exemplo@owner:example.org) autorizados a aprovar solicitações de exec.agentFilter: allowlist opcional de ID de agente. Omita para encaminhar aprovações para todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: onde enviar prompts de aprovação."dm"(padrão),"channel"(sala de origem) ou"both".- Substituições por conta:
channels.matrix.accounts.<id>.execApprovals.
- Sondagens de status do Matrix e consultas ao diretório em tempo real usam a mesma política de proxy do tráfego em runtime.
- Configuração completa do Matrix, regras de destino e exemplos de configuração estão documentados em Matrix.
Microsoft Teams
Microsoft Teams é baseado em extensão e configurado emchannels.msteams.
- Caminhos de chave principais cobertos aqui:
channels.msteams,channels.msteams.configWrites. - A configuração completa do Teams (credenciais, webhook, política de DM/grupo, substituições por time/canal) está documentada em Microsoft Teams.
IRC
IRC é baseado em extensão e configurado emchannels.irc.
- Caminhos de chave principais cobertos aqui:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountopcional substitui a seleção padrão de conta quando corresponde a um id de conta configurado.- A configuração completa do canal IRC (host/porta/TLS/canais/allowlists/controle por menção) está documentada em IRC.
Múltiplas contas (todos os canais)
Execute múltiplas contas por canal (cada uma com seu próprioaccountId):
defaulté usado quandoaccountIdé omitido (CLI + roteamento).- Tokens por env só se aplicam à conta default.
- Configurações base do canal se aplicam a todas as contas, a menos que sejam substituídas por conta.
- Use
bindings[].match.accountIdpara rotear cada conta para um agente diferente. - Se você adicionar uma conta não padrão via
openclaw channels add(ou onboarding de canal) enquanto ainda estiver em uma configuração de canal de conta única de nível superior, o OpenClaw primeiro promove os valores de conta única de nível superior com escopo de conta para o mapa de contas do canal, para que a conta original continue funcionando. A maioria dos canais os move parachannels.<channel>.accounts.default; Matrix pode preservar um alvo nomeado/padrão existente correspondente em vez disso. - Bindings existentes apenas de canal (sem
accountId) continuam correspondendo à conta padrão; bindings com escopo de conta continuam opcionais. openclaw doctor --fixtambém repara formas mistas movendo valores de conta única de nível superior com escopo de conta para a conta promovida escolhida para esse canal. A maioria dos canais usaaccounts.default; Matrix pode preservar um alvo nomeado/padrão existente correspondente em vez disso.
Outros canais de extensão
Muitos canais de extensão são configurados comochannels.<id> e documentados em suas páginas de canal dedicadas (por exemplo Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch).
Veja o índice completo de canais: Channels.
Controle por menção em chats de grupo
Mensagens de grupo exigem menção por padrão (menção por metadados ou padrões regex seguros). Aplica-se a chats em grupo de WhatsApp, Telegram, Discord, Google Chat e iMessage. Tipos de menção:- Menções por metadados: @-mentions nativas da plataforma. Ignoradas no modo de chat consigo mesmo do WhatsApp.
- Padrões de texto: padrões regex seguros em
agents.list[].groupChat.mentionPatterns. Padrões inválidos e repetições aninhadas inseguras são ignorados. - O controle por menção é aplicado apenas quando a detecção é possível (menções nativas ou pelo menos um padrão).
messages.groupChat.historyLimit define o padrão global. Canais podem substituir com channels.<channel>.historyLimit (ou por conta). Defina 0 para desabilitar.
Limites de histórico de DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modo de chat consigo mesmo
Inclua seu próprio número emallowFrom para habilitar o modo de chat consigo mesmo (ignora @-mentions nativas, responde apenas a padrões de texto):
Commands (tratamento de comandos de chat)
Detalhes de comandos
Detalhes de comandos
- Comandos de texto precisam ser mensagens autônomas com
/no início. native: "auto"habilita comandos nativos para Discord/Telegram e deixa Slack desabilitado.- Substituição por canal:
channels.discord.commands.native(bool ou"auto").falselimpa comandos registrados anteriormente. channels.telegram.customCommandsadiciona entradas extras ao menu do bot do Telegram.bash: truehabilita! <cmd>para shell do host. Requertools.elevated.enablede remetente emtools.elevated.allowFrom.<channel>.config: truehabilita/config(lê/gravaopenclaw.json). Para clienteschat.senddo gateway, gravações persistentes de/config set|unsettambém exigemoperator.admin;/config showsomente leitura continua disponível para clientes operadores normais com escopo de gravação.channels.<provider>.configWritescontrola mutações de configuração por canal (padrão: true).- Para canais com múltiplas contas,
channels.<provider>.accounts.<id>.configWritestambém controla gravações que têm como alvo essa conta (por exemplo/allowlist --config --account <id>ou/config set channels.<provider>.accounts.<id>...). allowFromé por provedor. Quando definido, ele é a única fonte de autorização (allowlists/pareamento do canal euseAccessGroupssão ignorados).useAccessGroups: falsepermite que comandos ignorem políticas de grupo de acesso quandoallowFromnão está definido.
Padrões do agente
agents.defaults.workspace
Padrão: ~/.openclaw/workspace.
agents.defaults.repoRoot
Raiz opcional do repositório mostrada na linha Runtime do prompt do sistema. Se não estiver definida, o OpenClaw detecta automaticamente caminhando para cima a partir do workspace.
agents.defaults.skills
Allowlist padrão opcional de Skills para agentes que não definem
agents.list[].skills.
- Omita
agents.defaults.skillspara Skills irrestritas por padrão. - Omita
agents.list[].skillspara herdar os padrões. - Defina
agents.list[].skills: []para nenhuma Skill. - Uma lista não vazia em
agents.list[].skillsé o conjunto final para aquele agente; ela não é mesclada com os padrões.
agents.defaults.skipBootstrap
Desabilita a criação automática de arquivos bootstrap do workspace (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.bootstrapMaxChars
Máximo de caracteres por arquivo bootstrap do workspace antes de truncamento. Padrão: 20000.
agents.defaults.bootstrapTotalMaxChars
Máximo total de caracteres injetados em todos os arquivos bootstrap do workspace. Padrão: 150000.
agents.defaults.bootstrapPromptTruncationWarning
Controla o texto de aviso visível ao agente quando o contexto bootstrap é truncado.
Padrão: "once".
"off": nunca injeta texto de aviso no prompt do sistema."once": injeta o aviso uma vez por assinatura única de truncamento (recomendado)."always": injeta aviso em toda execução quando houver truncamento.
agents.defaults.imageMaxDimensionPx
Tamanho máximo em pixels para o lado mais longo de imagem em blocos de imagem do transcript/ferramenta antes de chamadas ao provedor.
Padrão: 1200.
Valores menores normalmente reduzem o uso de vision-token e o tamanho da carga das solicitações em execuções com muitas capturas de tela.
Valores maiores preservam mais detalhes visuais.
agents.defaults.userTimezone
Timezone para o contexto do prompt do sistema (não timestamps de mensagens). Usa como fallback o timezone do host.
agents.defaults.timeFormat
Formato de hora no prompt do sistema. Padrão: auto (preferência do SO).
agents.defaults.model
model: aceita string ("provider/model") ou objeto ({ primary, fallbacks }).- A forma string define apenas o modelo primário.
- A forma objeto define o primário mais modelos de failover ordenados.
imageModel: aceita string ("provider/model") ou objeto ({ primary, fallbacks }).- Usado pelo caminho da ferramenta
imagecomo configuração do modelo de visão. - Também usado como roteamento de fallback quando o modelo selecionado/padrão não aceita entrada de imagem.
- Usado pelo caminho da ferramenta
imageGenerationModel: aceita string ("provider/model") ou objeto ({ primary, fallbacks }).- Usado pela capacidade compartilhada de geração de imagens e qualquer futura superfície de ferramenta/plugin que gere imagens.
- Valores típicos:
google/gemini-3.1-flash-image-previewpara geração nativa de imagem do Gemini,fal/fal-ai/flux/devpara fal, ouopenai/gpt-image-1para OpenAI Images. - Se você selecionar diretamente um provider/model, configure também a autenticação/chave de API correspondente do provedor (por exemplo
GEMINI_API_KEYouGOOGLE_API_KEYparagoogle/*,OPENAI_API_KEYparaopenai/*,FAL_KEYparafal/*). - Se omitido,
image_generateainda pode inferir um padrão de provedor com autenticação. Ele tenta primeiro o provedor padrão atual e depois os provedores restantes de geração de imagem registrados na ordem de provider-id.
videoGenerationModel: aceita string ("provider/model") ou objeto ({ primary, fallbacks }).- Usado pela capacidade compartilhada de geração de vídeo.
- Valores típicos:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashouqwen/wan2.7-r2v. - Defina isso explicitamente antes de usar a geração compartilhada de vídeo. Diferentemente de
imageGenerationModel, o runtime de geração de vídeo ainda não infere um provedor padrão. - Se você selecionar diretamente um provider/model, configure também a autenticação/chave de API correspondente do provedor.
- O provedor empacotado de geração de vídeo Qwen atualmente suporta até 1 vídeo de saída, 1 imagem de entrada, 4 vídeos de entrada, duração de 10 segundos e opções no nível do provedor
size,aspectRatio,resolution,audioewatermark.
pdfModel: aceita string ("provider/model") ou objeto ({ primary, fallbacks }).- Usado pela ferramenta
pdfpara roteamento de modelo. - Se omitido, a ferramenta PDF usa
imageModelcomo fallback, depois o modelo de sessão/padrão resolvido.
- Usado pela ferramenta
pdfMaxBytesMb: limite padrão de tamanho de PDF para a ferramentapdfquandomaxBytesMbnão é passado no momento da chamada.pdfMaxPages: máximo padrão de páginas consideradas pelo modo de fallback de extração na ferramentapdf.verboseDefault: nível padrão de verbose para agentes. Valores:"off","on","full". Padrão:"off".elevatedDefault: nível padrão de saída elevada para agentes. Valores:"off","on","ask","full". Padrão:"on".model.primary: formatoprovider/model(por exemploopenai/gpt-5.4). Se você omitir o provedor, o OpenClaw tenta primeiro um alias, depois uma correspondência única de provedor configurado para aquele id exato de modelo, e só então usa o provedor padrão configurado como fallback (comportamento de compatibilidade obsoleto, então prefiraprovider/modelexplícito). Se esse provedor não expuser mais o modelo padrão configurado, o OpenClaw usa como fallback o primeiro provedor/modelo configurado em vez de expor um padrão obsoleto de provedor removido.models: catálogo de modelos configurado e allowlist para/model. Cada entrada pode incluiralias(atalho) eparams(específicos do provedor, por exemplotemperature,maxTokens,cacheRetention,context1m).params: parâmetros globais padrão do provedor aplicados a todos os modelos. Defina emagents.defaults.params(por exemplo{ cacheRetention: "long" }).- Precedência de mesclagem de
params(config):agents.defaults.params(base global) é substituído poragents.defaults.models["provider/model"].params(por modelo), depoisagents.list[].params(id de agente correspondente) substitui por chave. Consulte Prompt Caching para detalhes. - Escritores de configuração que alteram esses campos (por exemplo
/models set,/models set-imagee comandos de adicionar/remover fallback) salvam a forma canônica de objeto e preservam listas de fallback existentes quando possível. maxConcurrent: máximo de execuções paralelas de agente entre sessões (cada sessão ainda é serializada). Padrão: 4.
agents.defaults.models):
| Alias | Modelo |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off ou defina agents.defaults.models["zai/<model>"].params.thinking por conta própria.
Modelos Z.AI habilitam tool_stream por padrão para streaming de chamada de ferramenta. Defina agents.defaults.models["zai/<model>"].params.tool_stream como false para desabilitá-lo.
Modelos Anthropic Claude 4.6 usam adaptive como padrão para thinking quando nenhum nível explícito é definido.
agents.defaults.cliBackends
Backends de CLI opcionais para execuções de fallback apenas texto (sem chamadas de ferramenta). Útil como backup quando provedores de API falham.
- Backends de CLI são orientados a texto; ferramentas sempre ficam desabilitadas.
- Sessões são compatíveis quando
sessionArgestá definido. - Pass-through de imagem é compatível quando
imageArgaceita caminhos de arquivo.
agents.defaults.heartbeat
Execuções periódicas de heartbeat.
every: string de duração (ms/s/m/h). Padrão:30m(autenticação por chave de API) ou1h(autenticação OAuth). Defina0mpara desabilitar.suppressToolErrorWarnings: quando true, suprime cargas de aviso de erro de ferramenta durante execuções de heartbeat.directPolicy: política de entrega direta/DM.allow(padrão) permite entrega para alvo direto.blocksuprime entrega para alvo direto e emitereason=dm-blocked.lightContext: quando true, execuções de heartbeat usam contexto bootstrap leve e mantêm apenasHEARTBEAT.mddos arquivos bootstrap do workspace.isolatedSession: quando true, cada heartbeat é executado em uma sessão nova sem histórico anterior de conversa. Mesmo padrão de isolamento de cronsessionTarget: "isolated". Reduz o custo por heartbeat de ~100K para ~2-5K tokens.- Por agente: defina
agents.list[].heartbeat. Quando qualquer agente defineheartbeat, somente esses agentes executam heartbeats. - Heartbeats executam turnos completos do agente — intervalos menores consomem mais tokens.
agents.defaults.compaction
mode:defaultousafeguard(sumarização em blocos para históricos longos). Consulte Compaction.timeoutSeconds: máximo de segundos permitidos para uma única operação de compactação antes que o OpenClaw a aborte. Padrão:900.identifierPolicy:strict(padrão),offoucustom.strictantepõe instruções embutidas de retenção de identificadores opacos durante a sumarização de compactação.identifierInstructions: texto opcional personalizado de preservação de identificadores usado quandoidentifierPolicy=custom.postCompactionSections: nomes opcionais de seções H2/H3 de AGENTS.md para reinjetar após a compactação. Padrão["Session Startup", "Red Lines"]; defina[]para desabilitar a reinjeção. Quando não definido ou explicitamente definido para esse par padrão, os cabeçalhos antigosEvery Session/Safetytambém são aceitos como fallback legado.model: substituição opcionalprovider/model-idapenas para sumarização de compactação. Use quando a sessão principal deve manter um modelo, mas os resumos de compactação devem usar outro; quando não definido, a compactação usa o modelo primário da sessão.notifyUser: quandotrue, envia um aviso breve ao usuário quando a compactação começa (por exemplo, “Compacting context…”). Desabilitado por padrão para manter a compactação silenciosa.memoryFlush: turno agêntico silencioso antes da autocompactação para armazenar memórias duráveis. Ignorado quando o workspace é somente leitura.
agents.defaults.contextPruning
Remove resultados antigos de ferramenta do contexto em memória antes de enviar ao LLM. Não modifica o histórico da sessão em disco.
Comportamento do modo cache-ttl
Comportamento do modo cache-ttl
mode: "cache-ttl"habilita passagens de pruning.ttlcontrola com que frequência o pruning pode ser executado novamente (após o último toque no cache).- O pruning primeiro faz soft-trim de resultados de ferramenta grandes demais e depois faz hard-clear de resultados mais antigos, se necessário.
... no meio.Hard-clear substitui todo o resultado da ferramenta pelo placeholder.Observações:- Blocos de imagem nunca são aparados/apagados.
- As proporções são baseadas em caracteres (aproximadas), não em contagens exatas de token.
- Se existirem menos de
keepLastAssistantsmensagens do assistente, o pruning é ignorado.
Block streaming
- Canais que não sejam Telegram exigem
*.blockStreaming: trueexplícito para habilitar respostas em bloco. - Substituições por canal:
channels.<channel>.blockStreamingCoalesce(e variantes por conta). Signal/Slack/Discord/Google Chat usam por padrãominChars: 1500. humanDelay: pausa aleatória entre respostas em bloco.natural= 800–2500ms. Substituição por agente:agents.list[].humanDelay.
Indicadores de digitação
- Padrões:
instantpara chats diretos/menções,messagepara chats de grupo sem menção. - Substituições por sessão:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Sandboxing opcional para o agente embutido. Consulte Sandboxing para o guia completo.
Detalhes do sandbox
Detalhes do sandbox
Backend:Modo OpenShell:
docker: runtime local do Docker (padrão)ssh: runtime remoto genérico via SSHopenshell: runtime OpenShell
backend: "openshell" é selecionado, configurações específicas do runtime passam para
plugins.entries.openshell.config.Configuração do backend SSH:target: alvo SSH no formatouser@host[:port]command: comando do cliente SSH (padrão:ssh)workspaceRoot: raiz remota absoluta usada para workspaces por escopoidentityFile/certificateFile/knownHostsFile: arquivos locais existentes passados ao OpenSSHidentityData/certificateData/knownHostsData: conteúdo inline ou SecretRefs que o OpenClaw materializa em arquivos temporários em runtimestrictHostKeyChecking/updateHostKeys: opções da política de chave de host do OpenSSH
identityDatatem precedência sobreidentityFilecertificateDatatem precedência sobrecertificateFileknownHostsDatatem precedência sobreknownHostsFile- Valores
*Datacom SecretRef são resolvidos a partir do snapshot ativo de runtime de segredos antes da sessão sandbox iniciar
- inicializa o workspace remoto uma vez após criar ou recriar
- depois mantém o workspace SSH remoto como canônico
- roteia
exec, ferramentas de arquivo e caminhos de mídia por SSH - não sincroniza automaticamente alterações remotas de volta para o host
- não oferece suporte a contêineres de navegador em sandbox
none: workspace sandbox por escopo sob~/.openclaw/sandboxesro: workspace sandbox em/workspace, workspace do agente montado como somente leitura em/agentrw: workspace do agente montado como leitura/gravação em/workspace
session: contêiner + workspace por sessãoagent: um contêiner + workspace por agente (padrão)shared: contêiner e workspace compartilhados (sem isolamento entre sessões)
mirror: inicializa o remoto a partir do local antes do exec, sincroniza de volta após o exec; o workspace local permanece canônicoremote: inicializa o remoto uma vez quando o sandbox é criado, depois mantém o workspace remoto como canônico
remote, edições locais no host feitas fora do OpenClaw não são sincronizadas automaticamente para o sandbox após a etapa de inicialização.
O transporte é SSH para dentro do sandbox OpenShell, mas o plugin é responsável pelo ciclo de vida do sandbox e pela sincronização opcional de mirror.setupCommand é executado uma vez após a criação do contêiner (via sh -lc). Precisa de saída de rede, root gravável e usuário root.Contêineres usam por padrão network: "none" — defina "bridge" (ou uma rede bridge personalizada) se o agente precisar de acesso de saída.
"host" é bloqueado. "container:<id>" é bloqueado por padrão, a menos que você defina explicitamente
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (break-glass).Anexos recebidos são preparados em media/inbound/* no workspace ativo.docker.binds monta diretórios adicionais do host; binds globais e por agente são mesclados.Navegador em sandbox (sandbox.browser.enabled): Chromium + CDP em um contêiner. URL de noVNC injetada no prompt do sistema. Não requer browser.enabled em openclaw.json.
O acesso de observador por noVNC usa autenticação VNC por padrão e o OpenClaw emite uma URL com token de curta duração (em vez de expor a senha na URL compartilhada).allowHostControl: false(padrão) bloqueia sessões em sandbox de terem como alvo o navegador do host.networkusa por padrãoopenclaw-sandbox-browser(rede bridge dedicada). Defina comobridgeapenas quando quiser explicitamente conectividade global de bridge.cdpSourceRangeopcionalmente restringe ingresso CDP na borda do contêiner a um intervalo CIDR (por exemplo172.21.0.1/32).sandbox.browser.bindsmonta diretórios adicionais do host apenas no contêiner do navegador em sandbox. Quando definido (inclusive[]), ele substituidocker.bindspara o contêiner do navegador.- Padrões de lançamento são definidos em
scripts/sandbox-browser-entrypoint.she ajustados para hosts com contêineres:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(habilitado por padrão)--disable-3d-apis,--disable-software-rasterizere--disable-gpusão habilitados por padrão e podem ser desabilitados comOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0se o uso de WebGL/3D exigir.OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0reabilita extensões se seu fluxo de trabalho depender delas.--renderer-process-limit=2pode ser alterado comOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; defina0para usar o limite padrão de processos do Chromium.- mais
--no-sandboxe--disable-setuid-sandboxquandonoSandboxestá habilitado. - Os padrões são a linha de base da imagem do contêiner; use uma imagem de navegador personalizada com um entrypoint personalizado para alterar padrões do contêiner.
sandbox.docker.binds atualmente são compatíveis apenas com Docker.
Criar imagens:
agents.list (substituições por agente)
id: id estável do agente (obrigatório).default: quando vários são definidos, o primeiro vence (aviso em log). Se nenhum estiver definido, a primeira entrada da lista é o padrão.model: a forma string substitui apenasprimary; a forma objeto{ primary, fallbacks }substitui ambos ([]desabilita fallbacks globais). Jobs de cron que substituem apenasprimaryainda herdam fallbacks padrão, a menos que você definafallbacks: [].params: parâmetros de stream por agente mesclados sobre a entrada de modelo selecionada emagents.defaults.models. Use para substituições específicas do agente comocacheRetention,temperatureoumaxTokenssem duplicar todo o catálogo de modelos.skills: allowlist opcional de Skills por agente. Se omitido, o agente herdaagents.defaults.skillsquando definido; uma lista explícita substitui os padrões em vez de mesclar, e[]significa nenhuma Skill.thinkingDefault: padrão opcional de nível de thinking por agente (off | minimal | low | medium | high | xhigh | adaptive). Substituiagents.defaults.thinkingDefaultpara esse agente quando nenhuma substituição por mensagem ou sessão estiver definida.reasoningDefault: padrão opcional de visibilidade de reasoning por agente (on | off | stream). Aplica-se quando não há substituição de reasoning por mensagem ou sessão.fastModeDefault: padrão opcional de fast mode por agente (true | false). Aplica-se quando não há substituição por mensagem ou sessão.runtime: descritor opcional de runtime por agente. Usetype: "acp"com padrões emruntime.acp(agent,backend,mode,cwd) quando o agente deve usar por padrão sessões de harness ACP.identity.avatar: caminho relativo ao workspace, URLhttp(s)ou URIdata:.identityderiva padrões:ackReactiondeemoji,mentionPatternsdename/emoji.subagents.allowAgents: allowlist de ids de agente parasessions_spawn(["*"]= qualquer um; padrão: apenas o mesmo agente).- Proteção de herança de sandbox: se a sessão solicitante estiver em sandbox,
sessions_spawnrejeita alvos que seriam executados sem sandbox. subagents.requireAgentId: quando true, bloqueia chamadas desessions_spawnque omitemagentId(força seleção explícita de perfil; padrão: false).
Roteamento multiagente
Execute vários agentes isolados dentro de um Gateway. Consulte Multi-Agent.Campos de correspondência de binding
type(opcional):routepara roteamento normal (tipo ausente usa route como padrão),acppara bindings persistentes de conversa ACP.match.channel(obrigatório)match.accountId(opcional;*= qualquer conta; omitido = conta padrão)match.peer(opcional;{ kind: direct|group|channel, id })match.guildId/match.teamId(opcional; específicos do canal)acp(opcional; somente paratype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(exato, sem peer/guild/team)match.accountId: "*"(para todo o canal)- Agente padrão
bindings vence.
Para entradas type: "acp", o OpenClaw resolve por identidade exata da conversa (match.channel + conta + match.peer.id) e não usa a ordem de níveis de route binding acima.
Perfis de acesso por agente
Acesso completo (sem sandbox)
Acesso completo (sem sandbox)
Ferramentas + workspace somente leitura
Ferramentas + workspace somente leitura
Sem acesso ao sistema de arquivos (apenas mensagens)
Sem acesso ao sistema de arquivos (apenas mensagens)
Sessão
Detalhes dos campos de sessão
Detalhes dos campos de sessão
scope: estratégia base de agrupamento de sessão para contextos de chat em grupo.per-sender(padrão): cada remetente recebe uma sessão isolada dentro de um contexto de canal.global: todos os participantes em um contexto de canal compartilham uma única sessão (use apenas quando contexto compartilhado for desejado).
dmScope: como DMs são agrupadas.main: todas as DMs compartilham a sessão principal.per-peer: isola por id do remetente entre canais.per-channel-peer: isola por canal + remetente (recomendado para caixas de entrada multiusuário).per-account-channel-peer: isola por conta + canal + remetente (recomendado para múltiplas contas).
identityLinks: mapeia ids canônicos para peers com prefixo de provedor para compartilhamento de sessão entre canais.reset: política principal de reset.dailyredefine ematHourno horário local;idleredefine apósidleMinutes. Quando ambos estão configurados, vence o que expirar primeiro.resetByType: substituições por tipo (direct,group,thread).dmlegado é aceito como alias paradirect.parentForkMaxTokens: máximo permitido detotalTokensna sessão pai ao criar uma sessão de thread bifurcada (padrão100000).- Se
totalTokensdo pai estiver acima desse valor, o OpenClaw inicia uma nova sessão de thread em vez de herdar o histórico da transcrição da sessão pai. - Defina
0para desabilitar essa proteção e sempre permitir fork do pai.
- Se
mainKey: campo legado. O runtime agora sempre usa"main"para o bucket principal de chat direto.agentToAgent.maxPingPongTurns: número máximo de turnos de resposta entre agentes durante trocas agente-para-agente (inteiro, intervalo:0–5).0desabilita encadeamento ping-pong.sendPolicy: corresponde porchannel,chatType(direct|group|channel, com alias legadodm),keyPrefixourawKeyPrefix. A primeira regra deny vence.maintenance: controles de limpeza + retenção do armazenamento de sessões.mode:warnemite apenas avisos;enforceaplica a limpeza.pruneAfter: corte de idade para entradas obsoletas (padrão30d).maxEntries: número máximo de entradas emsessions.json(padrão500).rotateBytes: rotacionasessions.jsonquando ele excede esse tamanho (padrão10mb).resetArchiveRetention: retenção para arquivos de transcript arquivados*.reset.<timestamp>. UsapruneAftercomo padrão; definafalsepara desabilitar.maxDiskBytes: orçamento opcional de disco para o diretório de sessões. No modowarn, registra avisos; no modoenforce, remove primeiro artefatos/sessões mais antigos.highWaterBytes: alvo opcional após limpeza por orçamento. Usa80%demaxDiskBytescomo padrão.
threadBindings: padrões globais para recursos de sessão vinculados a thread.enabled: chave mestre padrão (provedores podem substituir; Discord usachannels.discord.threadBindings.enabled)idleHours: padrão de desfoco automático por inatividade em horas (0desabilita; provedores podem substituir)maxAgeHours: padrão de idade máxima rígida em horas (0desabilita; provedores podem substituir)
Mensagens
Prefixo de resposta
Substituições por canal/conta:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Resolução (mais específico vence): conta → canal → global. "" desabilita e interrompe a cascata. "auto" deriva [{identity.name}].
Variáveis de template:
| Variável | Descrição | Exemplo |
|---|---|---|
{model} | Nome curto do modelo | claude-opus-4-6 |
{modelFull} | Identificador completo do modelo | anthropic/claude-opus-4-6 |
{provider} | Nome do provedor | anthropic |
{thinkingLevel} | Nível atual de thinking | high, low, off |
{identity.name} | Nome da identidade do agente | (igual a "auto") |
{think} é um alias para {thinkingLevel}.
Reação de ack
- Usa por padrão
identity.emojido agente ativo; caso contrário"👀". Defina""para desabilitar. - Substituições por canal:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Ordem de resolução: conta → canal →
messages.ackReaction→ fallback de identidade. - Escopo:
group-mentions(padrão),group-all,direct,all. removeAckAfterReply: remove o ack após a resposta em Slack, Discord e Telegram.messages.statusReactions.enabled: habilita reações de status do ciclo de vida em Slack, Discord e Telegram. No Slack e Discord, quando não definido, mantém reações de status habilitadas quando reações de ack estão ativas. No Telegram, defina explicitamente comotruepara habilitar reações de status do ciclo de vida.
Debounce de entrada
Agrupa mensagens rápidas somente texto do mesmo remetente em um único turno do agente. Mídia/anexos são descarregados imediatamente. Comandos de controle ignoram o debounce.TTS (text-to-speech)
autocontrola auto-TTS./tts off|always|inbound|taggedsubstitui por sessão.summaryModelsubstituiagents.defaults.model.primarypara auto-summary.modelOverridesé habilitado por padrão;modelOverrides.allowProviderusafalsecomo padrão (opt-in).- Chaves de API usam como fallback
ELEVENLABS_API_KEY/XI_API_KEYeOPENAI_API_KEY. openai.baseUrlsubstitui o endpoint de TTS da OpenAI. A ordem de resolução é config, depoisOPENAI_TTS_BASE_URL, depoishttps://api.openai.com/v1.- Quando
openai.baseUrlaponta para um endpoint que não é da OpenAI, o OpenClaw o trata como um servidor TTS compatível com OpenAI e flexibiliza a validação de modelo/voz.
Talk
Padrões para o modo Talk (macOS/iOS/Android).talk.providerprecisa corresponder a uma chave emtalk.providersquando vários provedores Talk estiverem configurados.- Chaves planas legadas de Talk (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) são apenas de compatibilidade e são migradas automaticamente paratalk.providers.<provider>. - IDs de voz usam como fallback
ELEVENLABS_VOICE_IDouSAG_VOICE_ID. providers.*.apiKeyaceita strings em texto simples ou objetos SecretRef.- O fallback
ELEVENLABS_API_KEYsó se aplica quando nenhuma chave de API de Talk estiver configurada. providers.*.voiceAliasespermite que diretivas de Talk usem nomes amigáveis.silenceTimeoutMscontrola quanto tempo o modo Talk aguarda após o silêncio do usuário antes de enviar a transcrição. Quando não definido, mantém a janela padrão de pausa da plataforma (700 ms no macOS e Android, 900 ms no iOS).
Ferramentas
Perfis de ferramenta
tools.profile define uma allowlist base antes de tools.allow/tools.deny:
O onboarding local usa por padrão tools.profile: "coding" para novas configurações locais 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 |
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 de 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 | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image, image_generate, tts |
group:openclaw | Todas as ferramentas embutidas (exclui plugins de provedor) |
tools.allow / tools.deny
Política global de permitir/negar ferramentas (deny vence). Não diferencia maiúsculas de minúsculas, oferece suporte a curingas *. Aplicada mesmo quando o sandbox Docker está desabilitado.
tools.byProvider
Restringe ainda mais ferramentas para provedores ou modelos específicos. Ordem: perfil base → perfil do provedor → allow/deny.
tools.elevated
Controla acesso exec elevado fora do sandbox:
- A substituição por agente (
agents.list[].tools.elevated) só pode restringir ainda mais. /elevated on|off|ask|fullarmazena o 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 alvo exec énode).
tools.exec
tools.loopDetection
As verificações de segurança contra loops de ferramenta ficam desabilitadas por padrão. Defina enabled: true para ativar a detecção.
As configurações podem ser definidas globalmente em tools.loopDetection e substituídas por agente em agents.list[].tools.loopDetection.
historySize: máximo de histórico de chamadas de ferramenta retido para análise de loop.warningThreshold: limite de padrão repetitivo sem progresso para avisos.criticalThreshold: limite repetitivo mais alto para bloquear loops críticos.globalCircuitBreakerThreshold: limite rígido de parada para qualquer execução sem progresso.detectors.genericRepeat: avisa em chamadas repetidas da mesma ferramenta/com os mesmos argumentos.detectors.knownPollNoProgress: avisa/bloqueia ferramentas conhecidas de polling (process.poll,command_statusetc.).detectors.pingPong: avisa/bloqueia padrões alternados em par sem progresso.- Se
warningThreshold >= criticalThresholdoucriticalThreshold >= globalCircuitBreakerThreshold, a validação falha.
tools.web
tools.media
Configura o entendimento de mídia de entrada (imagem/áudio/vídeo):
Campos de entrada de modelo de mídia
Campos de entrada de modelo de mídia
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 emauth-profiles.json
type: "cli"):command: executável a ser executadoargs: args com template (oferece suporte a{{MediaPath}},{{Prompt}},{{MaxChars}}etc.)
capabilities: lista opcional (image,audio,video). Padrões:openai/anthropic/minimax→ image,google→ image+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: substituições por entrada.- Falhas usam a próxima entrada como fallback.
auth-profiles.json → variáveis de ambiente → models.providers.*.apiKey.tools.agentToAgent
tools.sessions
Controla quais sessões podem ser alvo das ferramentas de sessão (sessions_list, sessions_history, sessions_send).
Padrão: tree (sessão atual + sessões criadas por ela, como subagentes).
self: apenas a chave da sessão atual.tree: sessão atual + sessões criadas pela sessão atual (subagentes).agent: qualquer sessão pertencente ao id atual do agente (pode incluir outros usuários se você executar sessões por remetente sob o mesmo id de agente).all: qualquer sessão. Alvos entre agentes ainda exigemtools.agentToAgent.- Limite de sandbox: quando a sessão atual está em sandbox e
agents.defaults.sandbox.sessionToolsVisibility="spawned", a visibilidade é forçada paratree, mesmo setools.sessions.visibility="all".
tools.sessions_spawn
Controla o suporte a anexos inline para sessions_spawn.
- Anexos só são compatíveis com
runtime: "subagent". Runtime ACP os rejeita. - Arquivos são materializados no workspace filho em
.openclaw/attachments/<uuid>/com um.manifest.json. - O conteúdo dos anexos é redigido automaticamente da persistência da transcrição.
- Entradas base64 são validadas com verificações rígidas de alfabeto/padding e proteção de tamanho antes da decodificação.
- Permissões de arquivo são
0700para diretórios e0600para arquivos. - A limpeza segue a política
cleanup:deletesempre remove anexos;keepos retém apenas quandoretainOnSessionKeep: true.
agents.defaults.subagents
model: modelo padrão para subagentes criados. Se omitido, os subagentes herdam o modelo do chamador.allowAgents: allowlist padrão de ids de agente-alvo parasessions_spawnquando o agente solicitante não define seu própriosubagents.allowAgents(["*"]= qualquer um; padrão: apenas o mesmo agente).runTimeoutSeconds: timeout padrão (segundos) parasessions_spawnquando a chamada da ferramenta omiterunTimeoutSeconds.0significa sem timeout.- Política de ferramenta por subagente:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Provedores personalizados e base URLs
O OpenClaw usa o catálogo embutido de modelos. Adicione provedores personalizados viamodels.providers na configuração ou ~/.openclaw/agents/<agentId>/agent/models.json.
- Use
authHeader: true+headerspara necessidades de autenticação personalizadas. - Substitua a raiz de configuração do agente com
OPENCLAW_AGENT_DIR(ouPI_CODING_AGENT_DIR, um alias legado de variável de ambiente). - Precedência de mesclagem para IDs de provedor correspondentes:
- Valores não vazios de
baseUrlemmodels.jsondo agente têm precedência. - Valores não vazios de
apiKeydo agente só têm precedência quando esse provedor não é gerenciado por SecretRef no contexto atual de config/auth-profile. - Valores
apiKeyde provedor gerenciados por SecretRef são atualizados a partir de marcadores de origem (ENV_VAR_NAMEpara refs de env,secretref-managedpara refs de file/exec) em vez de persistirem segredos resolvidos. - Valores de cabeçalho de provedor gerenciados por SecretRef são atualizados a partir de marcadores de origem (
secretref-env:ENV_VAR_NAMEpara refs de env,secretref-managedpara refs de file/exec). apiKey/baseUrlvazios ou ausentes no agente usammodels.providersna configuração como fallback.contextWindow/maxTokensde modelo correspondente usam o valor mais alto 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 metadados nativos do modelo.- Use
models.mode: "replace"quando quiser que a configuração reescreva completamentemodels.json. - A persistência de marcadores é autoritativa pela origem: os marcadores são gravados a partir do snapshot de configuração da origem ativa (pré-resolução), não dos valores resolvidos dos segredos em runtime.
- Valores não vazios de
Detalhes dos campos de provedor
models.mode: comportamento do catálogo de provedores (mergeoureplace).models.providers: mapa de provedores personalizados indexado por id de provedor.models.providers.*.api: adaptador de solicitação (openai-completions,openai-responses,anthropic-messages,google-generative-aietc.).models.providers.*.apiKey: credencial do provedor (prefira SecretRef/substituição por env).models.providers.*.auth: estratégia de autenticação (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: para Ollama +openai-completions, injetaoptions.num_ctxnas solicitações (padrão:true).models.providers.*.authHeader: força transporte da credencial no cabeçalhoAuthorizationquando necessário.models.providers.*.baseUrl: base URL da API upstream.models.providers.*.headers: cabeçalhos estáticos extras para roteamento de proxy/tenant.models.providers.*.request: substituições de transporte para solicitações HTTP do provedor de modelos.request.headers: cabeçalhos extras (mesclados com os padrões do provedor). Os valores aceitam SecretRef.request.auth: substituição da estratégia de autenticação. Modos:"provider-default"(usa autenticação embutida do provedor),"authorization-bearer"(comtoken),"header"(comheaderName,value,prefixopcional).request.proxy: substituição do 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.
models.providers.*.models: entradas explícitas de catálogo de modelo do provedor.models.providers.*.models.*.contextWindow: metadados nativos de janela de contexto do modelo.models.providers.*.models.*.contextTokens: limite opcional de contexto em runtime. Use quando quiser um orçamento de contexto efetivo menor quecontextWindownativo do modelo.models.providers.*.models.*.compat.supportsDeveloperRole: dica opcional de compatibilidade. Paraapi: "openai-completions"combaseUrlnão nativa e não vazia (host diferente deapi.openai.com), o OpenClaw força isso comofalseem runtime.baseUrlvazio/omitido mantém o comportamento padrão da OpenAI.plugins.entries.amazon-bedrock.config.discovery: raiz das configurações de auto-descoberta do Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: ativa/desativa descoberta implícita.plugins.entries.amazon-bedrock.config.discovery.region: região AWS para descoberta.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filtro opcional por provider-id para descoberta direcionada.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: intervalo de polling para atualização de descoberta.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: fallback de janela de contexto para modelos descobertos.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: fallback de máximo de tokens de saída para modelos descobertos.
Exemplos de provedor
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 para Cerebras; zai/glm-4.7 para Z.AI direto.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.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. z.ai/* e z-ai/* são aliases aceitos. Atalho: openclaw onboard --auth-choice zai-api-key.- Endpoint geral:
https://api.z.ai/api/paas/v4 - Endpoint de coding (padrão):
https://api.z.ai/api/coding/paas/v4 - Para o endpoint geral, defina um provedor personalizado com a substituição de
baseUrl.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" ou openclaw onboard --auth-choice moonshot-api-key-cn.Endpoints nativos do Moonshot anunciam compatibilidade de uso de streaming no transporte compartilhado
openai-completions, e o OpenClaw agora usa recursos do endpoint em vez do id embutido do provedor.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (compatível com Anthropic)
Synthetic (compatível com Anthropic)
/v1 (o cliente Anthropic a adiciona). Atalho: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.7 (direto)
MiniMax M2.7 (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 agora usa M2.7 apenas como padrão.
No caminho de streaming compatível com Anthropic, o OpenClaw desabilita o thinking do MiniMax
por padrão, a menos que você defina thinking explicitamente. /fast on ou
params.fastMode: true reescreve MiniMax-M2.7 para
MiniMax-M2.7-highspeed.Modelos locais (LM Studio)
Modelos locais (LM Studio)
Consulte Local Models. Em resumo: execute um grande modelo local via LM Studio Responses API em hardware robusto; mantenha modelos hospedados mesclados como fallback.
Skills
allowBundled: allowlist opcional apenas para Skills empacotadas (Skills gerenciadas/workspace não são afetadas).load.extraDirs: raízes extras de Skills compartilhadas (menor precedência).install.preferBrew: quando true, prefere instaladores Homebrew quandobrewestá disponível antes de recorrer a outros tipos de instalador.install.nodeManager: preferência de gerenciador node para specsmetadata.openclaw.install(npm|pnpm|yarn|bun).entries.<skillKey>.enabled: falsedesabilita uma Skill mesmo que ela esteja empacotada/instalada.entries.<skillKey>.apiKey: campo de conveniência para Skills que declaram uma variável de ambiente primária (string em texto simples ou objeto SecretRef).
Plugins
- Carregados de
~/.openclaw/extensions,<workspace>/.openclaw/extensionseplugins.load.paths. - A descoberta aceita plugins nativos do OpenClaw, bundles Codex compatíveis e bundles Claude, incluindo bundles Claude sem manifesto no layout padrão.
- Alterações de configuração exigem reinicialização do gateway.
allow: allowlist opcional (somente plugins listados são carregados).denyvence.plugins.entries.<id>.apiKey: campo de conveniência de chave de API no nível do plugin (quando compatível com o plugin).plugins.entries.<id>.env: mapa de variáveis de ambiente com escopo do plugin.plugins.entries.<id>.hooks.allowPromptInjection: quandofalse, o núcleo bloqueiabefore_prompt_builde ignora campos legados que mutam prompt debefore_agent_start, preservandomodelOverrideeproviderOverridelegados. Aplica-se a hooks nativos de plugin e diretórios de hook suportados fornecidos por bundles.plugins.entries.<id>.subagent.allowModelOverride: confia explicitamente neste plugin para solicitar substituições deprovideremodelpor execução em runs de subagentes em segundo plano.plugins.entries.<id>.subagent.allowedModels: allowlist opcional de alvos canônicosprovider/modelpara substituições confiáveis de subagente. Use"*"apenas quando quiser intencionalmente permitir qualquer modelo.plugins.entries.<id>.config: objeto de configuração definido pelo plugin (validado pelo schema nativo do plugin OpenClaw quando disponível).plugins.entries.firecrawl.config.webFetch: configurações do provedor de web fetch do Firecrawl.apiKey: chave de API do Firecrawl (aceita SecretRef). Usa como fallbackplugins.entries.firecrawl.config.webSearch.apiKey, legadotools.web.fetch.firecrawl.apiKeyou variável de ambienteFIRECRAWL_API_KEY.baseUrl: base URL da API do Firecrawl (padrão:https://api.firecrawl.dev).onlyMainContent: extrai apenas o conteúdo principal das páginas (padrão:true).maxAgeMs: idade máxima do cache em milissegundos (padrão:172800000/ 2 dias).timeoutSeconds: timeout da solicitação de scrape em segundos (padrão:60).
plugins.entries.xai.config.xSearch: configurações de X Search do xAI (busca web do Grok).enabled: habilita o provedor X Search.model: modelo Grok a usar na busca (por exemplo"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: configurações de dreaming de memória (experimental). Consulte Dreaming para modos e limites.mode: preset de cadência de dreaming ("off","core","rem","deep"). Padrão:"off".cron: substituição opcional da expressão cron para o agendamento de dreaming.timezone: timezone para avaliação do agendamento (usaagents.defaults.userTimezonecomo fallback).limit: máximo de candidatos a promover por ciclo.minScore: limite mínimo de score ponderado para promoção.minRecallCount: limite mínimo de contagem de recordações.minUniqueQueries: número mínimo de consultas distintas.
- Plugins de bundle Claude habilitados também podem contribuir com padrões Pi embutidos de
settings.json; o OpenClaw os aplica como configurações sanitizadas do agente, não como patches brutos de configuração do OpenClaw. plugins.slots.memory: escolha o id do plugin de memória ativo, ou"none"para desabilitar plugins de memória.plugins.slots.contextEngine: escolha o id do plugin ativo de context engine; o padrão é"legacy"a menos que você instale e selecione outro engine.plugins.installs: metadados de instalação gerenciados pela CLI usados poropenclaw plugins update.- Inclui
source,spec,sourcePath,installPath,version,resolvedName,resolvedVersion,resolvedSpec,integrity,shasum,resolvedAt,installedAt. - Trate
plugins.installs.*como estado gerenciado; prefira comandos da CLI em vez de edições manuais.
- Inclui
Browser
evaluateEnabled: falsedesabilitaact:evaluateewait --fn.ssrfPolicy.dangerouslyAllowPrivateNetworkusatruecomo padrão quando não definido (modelo de rede confiável).- Defina
ssrfPolicy.dangerouslyAllowPrivateNetwork: falsepara navegação estrita em browser apenas para endereços públicos. - No modo estrito, endpoints remotos de perfil CDP (
profiles.*.cdpUrl) estão sujeitos ao mesmo bloqueio de rede privada durante verificações de alcance/descoberta. ssrfPolicy.allowPrivateNetworkcontinua compatível como alias legado.- No modo estrito, use
ssrfPolicy.hostnameAllowlistessrfPolicy.allowedHostnamespara exceções explícitas. - Perfis remotos são apenas attach-only (start/stop/reset desabilitados).
profiles.*.cdpUrlaceitahttp://,https://,ws://ewss://. Use HTTP(S) quando quiser que o OpenClaw descubra/json/version; use WS(S) quando seu provedor fornecer uma URL WebSocket direta do DevTools.- Perfis
existing-sessionsão apenas do host e usam Chrome MCP em vez de CDP. - Perfis
existing-sessionpodem definiruserDataDirpara ter como alvo um perfil específico de navegador baseado em Chromium, como Brave ou Edge. - Perfis
existing-sessionmantêm os limites atuais de rota do Chrome MCP: ações orientadas a snapshot/ref em vez de seleção por CSS-selector, hooks de upload de um único arquivo, sem substituições de timeout de diálogo, e semwait --load networkidle,responsebody, exportação para PDF, interceptação de download ou ações em lote. - Perfis locais gerenciados
openclawatribuem automaticamentecdpPortecdpUrl; definacdpUrlexplicitamente apenas para CDP remoto. - Ordem de auto-detecção: navegador padrão se for baseado em Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Serviço de controle: somente loopback (porta derivada de
gateway.port, padrão18791). extraArgsadiciona flags extras de inicialização ao Chromium local (por exemplo--disable-gpu, tamanho de janela ou flags de depuração).
UI
seamColor: cor de destaque para a UI nativa (tingimento da bolha do modo Talk etc.).assistant: substituição de identidade da UI de controle. Usa a identidade do agente ativo como fallback.
Gateway
Detalhes dos campos do Gateway
Detalhes dos campos do Gateway
mode:local(executa o gateway) ouremote(conecta a um gateway remoto). O Gateway se recusa a iniciar semlocal.port: porta multiplexada única para WS + HTTP. Precedência:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(padrão),lan(0.0.0.0),tailnet(apenas IP do Tailscale) oucustom.- Aliases legados de bind: use valores de modo bind em
gateway.bind(auto,loopback,lan,tailnet,custom), não aliases de host (0.0.0.0,127.0.0.1,localhost,::,::1). - Observação sobre Docker: o bind padrão
loopbackescuta em127.0.0.1dentro do contêiner. Com Docker bridge networking (-p 18789:18789), o tráfego chega emeth0, então o gateway fica inacessível. Use--network host, ou definabind: "lan"(oubind: "custom"comcustomBindHost: "0.0.0.0") para escutar em todas as interfaces. - Auth: obrigatória por padrão. Binds fora de loopback exigem autenticação do gateway. Na prática isso significa um token/senha compartilhado ou um proxy reverso com reconhecimento de identidade com
gateway.auth.mode: "trusted-proxy". O assistente de onboarding gera um token por padrão. - Se
gateway.auth.tokenegateway.auth.passwordestiverem ambos configurados (incluindo SecretRefs), definagateway.auth.modeexplicitamente comotokenoupassword. Fluxos de inicialização e instalação/reparo do serviço falham quando ambos estão configurados e o modo não está definido. gateway.auth.mode: "none": modo explícito sem autenticação. Use apenas para configurações locais de loopback confiáveis; isso intencionalmente não é oferecido nos prompts de onboarding.gateway.auth.mode: "trusted-proxy": delega a autenticação a um proxy reverso com reconhecimento de identidade e confia em cabeçalhos de identidade degateway.trustedProxies(consulte Trusted Proxy Auth). Esse modo espera uma origem de proxy fora de loopback; proxies reversos em loopback no mesmo host não satisfazem autenticação trusted-proxy.gateway.auth.allowTailscale: quandotrue, cabeçalhos de identidade do Tailscale Serve podem satisfazer a autenticação de Control UI/WebSocket (verificados viatailscale whois). Endpoints HTTP API não usam essa autenticação por cabeçalho do Tailscale; eles seguem o modo normal de autenticação HTTP do gateway. Esse fluxo sem token assume que o host do gateway é confiável. Usatruecomo padrão quandotailscale.mode = "serve".gateway.auth.rateLimit: limitador opcional de falhas de autenticação. Aplica-se por IP do cliente e por escopo de auth (segredo compartilhado e token de dispositivo são rastreados de forma independente). Tentativas bloqueadas retornam429+Retry-After.- No caminho assíncrono da Control UI do Tailscale Serve, tentativas com falha para o mesmo
{scope, clientIp}são serializadas antes da gravação da falha. Tentativas ruins concorrentes do mesmo cliente podem, portanto, acionar o limitador na segunda solicitação em vez de ambas passarem em paralelo como simples incompatibilidades. gateway.auth.rateLimit.exemptLoopbackusatruecomo padrão; definafalsequando quiser intencionalmente que o tráfego localhost também seja limitado (para ambientes de teste ou implantações estritas com proxy).
- No caminho assíncrono da Control UI do Tailscale Serve, tentativas com falha para o mesmo
- Tentativas de autenticação WS com origem de browser sempre são limitadas com a isenção de loopback desabilitada (defesa em profundidade contra força bruta localhost baseada em navegador).
- Em loopback, esses bloqueios de origem de browser são isolados por valor
Originnormalizado, então falhas repetidas de uma origem localhost não bloqueiam automaticamente outra origem. tailscale.mode:serve(apenas tailnet, bind em loopback) oufunnel(público, requer auth).controlUi.allowedOrigins: allowlist explícita de origem de navegador para conexões WebSocket do Gateway. Obrigatória quando clientes de navegador são esperados fora de origens loopback.controlUi.dangerouslyAllowHostHeaderOriginFallback: modo perigoso que habilita fallback de origem via Host header para implantações que dependem intencionalmente da política de origem por Host header.remote.transport:ssh(padrão) oudirect(ws/wss). Paradirect,remote.urlprecisa serws://ouwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: substituição break-glass do lado do cliente que permitews://em texto simples para IPs confiáveis de rede privada; o padrão continua sendo apenas loopback para texto simples.gateway.remote.token/.passwordsão campos de credencial do cliente remoto. Eles não configuram a autenticação do gateway por si só.gateway.push.apns.relay.baseUrl: base HTTPS URL para o relay APNs externo usado por builds oficiais/TestFlight do iOS depois que publicam registros com relay para o gateway. Essa URL precisa corresponder à URL do relay compilada na build iOS.gateway.push.apns.relay.timeoutMs: timeout de envio gateway-para-relay em milissegundos. Padrão10000.- Registros com relay são delegados a uma identidade específica de gateway. O app iOS pareado busca
gateway.identity.get, inclui essa identidade no registro de relay e encaminha uma permissão de envio com escopo de registro ao gateway. Outro gateway não pode reutilizar esse registro armazenado. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: substituições temporárias por env para a configuração de relay acima.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: escape hatch apenas para desenvolvimento para URLs HTTP de relay em loopback. URLs de relay de produção devem permanecer em HTTPS.gateway.channelHealthCheckMinutes: intervalo do monitor de saúde de canais em minutos. Defina0para desabilitar globalmente reinicializações do monitor de saúde. Padrão:5.gateway.channelStaleEventThresholdMinutes: limite de socket obsoleto em minutos. Mantenha isso maior ou igual agateway.channelHealthCheckMinutes. Padrão:30.gateway.channelMaxRestartsPerHour: máximo de reinicializações do monitor de saúde por canal/conta em uma hora móvel. Padrão:10.channels.<provider>.healthMonitor.enabled: opt-out por canal para reinicializações do monitor de saúde, mantendo o monitor global habilitado.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: substituição por conta para canais com múltiplas contas. Quando definido, tem precedência sobre a substituição no nível do canal.- Caminhos de chamada do gateway local podem usar
gateway.remote.*como fallback apenas quandogateway.auth.*não está definido. - Se
gateway.auth.token/gateway.auth.passwordestiver explicitamente configurado via SecretRef e não puder ser resolvido, a resolução falha de forma fechada (sem fallback remoto mascarando). trustedProxies: IPs de proxy reverso que terminam TLS ou injetam cabeçalhos de cliente encaminhado. Liste apenas proxies sob seu controle. Entradas loopback ainda são válidas para configurações com proxy no mesmo host/detecção local (por exemplo Tailscale Serve ou um proxy reverso local), mas elas não tornam solicitações loopback elegíveis paragateway.auth.mode: "trusted-proxy".allowRealIpFallback: quandotrue, o gateway aceitaX-Real-IPseX-Forwarded-Forestiver ausente. Padrãofalsepara comportamento fail-closed.gateway.tools.deny: nomes extras de ferramenta bloqueados para HTTPPOST /tools/invoke(estende a lista padrão de deny).gateway.tools.allow: remove nomes de ferramenta da lista padrão de deny do HTTP.
Endpoints compatíveis com OpenAI
- Chat Completions: desabilitado por padrão. Habilite com
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Hardening de entrada por URL em Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistAllowlists vazias são tratadas como não definidas; usegateway.http.endpoints.responses.files.allowUrl=falsee/ougateway.http.endpoints.responses.images.allowUrl=falsepara desabilitar busca por URL.
- Cabeçalho opcional de hardening de resposta:
gateway.http.securityHeaders.strictTransportSecurity(defina apenas para origens HTTPS sob seu controle; consulte Trusted Proxy Auth)
Isolamento de múltiplas instâncias
Execute vários gateways em um host com portas e state dirs exclusivos:--dev (usa ~/.openclaw-dev + porta 19001), --profile <name> (usa ~/.openclaw-<name>).
Consulte Multiple Gateways.
gateway.tls
enabled: habilita terminação TLS no listener do gateway (HTTPS/WSS) (padrão:false).autoGenerate: gera automaticamente um par local de cert/chave autoassinado quando arquivos explícitos não estão configurados; apenas para uso local/dev.certPath: caminho no sistema de arquivos para o arquivo de certificado TLS.keyPath: caminho no sistema de arquivos para a chave privada TLS; mantenha com permissões restritas.caPath: caminho opcional para bundle CA para verificação de cliente ou cadeias de confiança personalizadas.