Referência de configuração
Referência principal de configuração para~/.openclaw/openclaw.json. Para uma visão geral orientada a tarefas, consulte Configuration.
Esta página cobre as principais superfícies de configuração do OpenClaw e aponta para links externos quando um subsistema tem sua própria referência mais detalhada. Ela não tenta embutir, em uma única página, todos os catálogos de comandos pertencentes a canais/plugins nem todos os ajustes profundos de memória/QMD.
Fonte da verdade no código:
openclaw config schemaimprime o JSON Schema em tempo real usado para validação e para a Control UI, com metadados de bundled/plugin/channel mesclados quando disponíveisconfig.schema.lookupretorna um nó do schema com escopo de caminho para ferramentas de inspeção detalhadapnpm config:docs:check/pnpm config:docs:genvalidam o hash de baseline da documentação de configuração em relação à superfície atual do schema
- Referência de configuração de memória para
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationse configuração de Dreaming emplugins.entries.memory-core.config.dreaming - Comandos de barra para o catálogo atual de comandos internos + bundled
- páginas do canal/plugin proprietário para superfícies de comando específicas de cada canal
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 de pareamento único; o proprietário deve aprovar |
allowlist | Somente remetentes em allowFrom (ou armazenamento de permissões pareadas) |
open | Permitir todas as DMs recebidas (requer allowFrom: ["*"]) |
disabled | Ignorar todas as DMs recebidas |
| Política de grupo | Comportamento |
|---|---|
allowlist (padrão) | Somente grupos que correspondem à lista de permissões configurada |
open | Ignorar listas de permissões de grupo (o bloqueio por menção ainda se aplica) |
disabled | Bloquear todas as mensagens de grupo/sala |
channels.defaults.groupPolicy define o padrão quando groupPolicy de um provedor não está definido.
Os códigos de pareamento expiram após 1 hora. As solicitações pendentes de pareamento por DM são limitadas a 3 por canal.
Se um bloco de provedor estiver totalmente ausente (channels.<provider> ausente), a política de grupo em tempo de execução recorre a allowlist (fail-closed), com um aviso na inicialização.Substituições de modelo por canal
Usechannels.modelByChannel para fixar IDs de canais específicos a um modelo. Os valores aceitam provider/model ou aliases de modelo configurados. O mapeamento do canal é aplicado quando uma sessão ainda não tem uma substituição de modelo (por exemplo, definida por /model).
Padrões de canal e Heartbeat
Usechannels.defaults para o comportamento compartilhado de política de grupo e 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 de citação/thread/histórico),allowlist(inclui contexto apenas de remetentes na lista de permissões),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 uma saída de Heartbeat compacta no estilo indicador.
WhatsApp com várias contas
WhatsApp com várias contas
- Os comandos de saída usam por padrão a conta
default, se presente; caso contrário, o primeiro ID de conta configurado (ordenado). - O opcional
channels.whatsapp.defaultAccountsubstitui essa seleção de conta padrão de fallback quando corresponde a um ID de conta configurado. - O diretório de autenticação legado de conta única do Baileys é 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. - O opcional
channels.telegram.defaultAccountsubstitui a seleção de conta padrão quando corresponde a um ID de conta configurado. - Em configurações com várias contas (2+ IDs de conta), defina um padrão explícito (
channels.telegram.defaultAccountouchannels.telegram.accounts.default) para evitar roteamento por fallback;openclaw doctoremite um aviso 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 de nível superior
bindings[]comtype: "acp"configuram vínculos persistentes de ACP para tópicos de fórum (use o formato canônicochatId:topic:topicIdemmatch.peer.id). A semântica dos campos é compartilhada em ACP Agents. - As prévias de streaming do Telegram usam
sendMessage+editMessageText(funciona em chats diretos e em grupo). - Política de retry: consulte Política de retry.
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; as configurações de retry/política da conta ainda vêm da conta selecionada no snapshot ativo em tempo de execução. - O opcional
channels.discord.defaultAccountsubstitui a seleção de conta padrão quando corresponde a um ID de conta configurado. - Use
user:<id>(DM) ouchannel:<id>(canal de guild) para alvos de entrega; IDs numéricos sem prefixo são rejeitados. - Os slugs de guild são em minúsculas com espaços substituídos por
-; as chaves de canal usam o nome em slug (sem#). Prefira IDs de guild. - Mensagens criadas por bots são ignoradas por padrão.
allowBots: trueas habilita; useallowBots: "mentions"para aceitar apenas mensagens de bots que mencionem o bot (mensagens do próprio bot continuam filtradas). channels.discord.guilds.<id>.ignoreOtherMentions(e substituições no nível do canal) descarta mensagens que mencionam outro usuário ou cargo, mas não o bot (excluindo @everyone/@here).maxLinesPerMessage(padrão 17) divide mensagens altas mesmo quando estão 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 (0desativa)maxAgeHours: substituição do Discord para idade máxima rígida em horas (0desativa)spawnSubagentSessions: chave de ativação para criação/vinculação automática de thread emsessions_spawn({ thread: true })
- Entradas de nível superior
bindings[]comtype: "acp"configuram vínculos persistentes de ACP para canais e threads (use o ID do 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 de componentes v2 do Discord.channels.discord.voicehabilita conversas em canais de voz do Discord e substituições opcionais de entrada automática + TTS.channels.discord.voice.daveEncryptionechannels.discord.voice.decryptionFailureTolerancesão repassados para as opções DAVE de@discordjs/voice(truee24por padrão).- O OpenClaw também tenta recuperar o recebimento de voz saindo e entrando novamente 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 tempo de execução para a presença do bot (healthy => online, degraded => idle, exhausted => dnd) e permite substituições opcionais de texto de status.channels.discord.dangerouslyAllowNameMatchingreabilita a correspondência mutável por nome/tag (modo de compatibilidade break-glass).channels.discord.execApprovals: entrega nativa do Discord para aprovações de execução e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo automático, as aprovações de execução são ativadas quando os aprovadores podem ser resolvidos a partir deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário do Discord autorizados a aprovar solicitações de execução. Usacommands.ownerAllowFromcomo fallback quando omitido.agentFilter: lista de permissões opcional de IDs de agentes. Omita para encaminhar aprovações para todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: onde enviar os prompts de aprovação."dm"(padrão) envia para as DMs dos aprovadores,"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 as DMs de aprovação após aprovação, recusa 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: embutido (
serviceAccount) ou baseado em arquivo (serviceAccountFile). - SecretRef da conta de serviço também é compatível (
serviceAccountRef). - Fallbacks por variável de ambiente:
GOOGLE_CHAT_SERVICE_ACCOUNTouGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Use
spaces/<spaceId>ouusers/<userId>para alvos de entrega. channels.googlechat.dangerouslyAllowNameMatchingreabilita a 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 variável de ambiente 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 conseguiu resolver o valor do segredo. configWrites: falsebloqueia gravações de configuração iniciadas pelo Slack.- O opcional
channels.slack.defaultAccountsubstitui a seleção de conta padrão quando corresponde a um ID de conta configurado. channels.slack.streaming.modeé a chave canônica do modo de streaming do Slack.channels.slack.streaming.nativeTransportcontrola o transporte nativo de streaming do Slack. Os valores legadosstreamMode, booleanosstreamingenativeStreamingsão migrados automaticamente.- Use
user:<id>(DM) ouchannel:<id>para alvos de entrega.
off, own (padrão), all, allowlist (de reactionAllowlist).
Isolamento de sessão por thread: thread.historyScope é por thread (padrão) ou compartilhado pelo canal. thread.inheritParent copia a transcrição do canal pai para novas threads.
- O streaming nativo do Slack mais o status de thread no estilo “is typing…” do assistente do Slack requerem um alvo de resposta em thread. DMs de nível superior ficam fora de thread por padrão, então usam
typingReactionou entrega normal em vez da prévia no estilo thread. typingReactionadiciona uma reação temporária à mensagem recebida no Slack enquanto uma resposta está em execução e a remove quando termina. Use um shortcode de emoji do Slack como"hourglass_flowing_sand".channels.slack.execApprovals: entrega nativa do Slack para aprovações de execução 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 | ativado | Reagir + listar reações |
| messages | ativado | Ler/enviar/editar/excluir |
| pins | ativado | Fixar/desafixar/listar |
| memberInfo | ativado | Informações do membro |
| emojiList | ativado | Lista de emojis personalizados |
Mattermost
O Mattermost é distribuído como Plugin:openclaw plugins install @openclaw/mattermost.
oncall (responde em @mention, padrão), onmessage (toda mensagem), onchar (mensagens que começam com prefixo de gatilho).
Quando os 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 a partir do servidor Mattermost.- Callbacks nativos de slash são autenticados com os tokens por comando retornados pelo Mattermost durante o registro do comando de barra. Se o registro falhar ou nenhum comando for ativado, o OpenClaw rejeitará callbacks com
Unauthorized: invalid command token. - Para hosts de callback privados/tailnet/internos, 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 bloqueio por menção por canal ("*"para padrão).- O opcional
channels.mattermost.defaultAccountsubstitui a seleção de conta padrão 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 a uma identidade específica de conta Signal.channels.signal.configWrites: permite ou nega gravações de configuração iniciadas pelo Signal.- O opcional
channels.signal.defaultAccountsubstitui a seleção de conta padrão 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. - O opcional
channels.bluebubbles.defaultAccountsubstitui a seleção de conta padrão quando corresponde a um ID de conta configurado. - Entradas de nível superior
bindings[]comtype: "acp"podem vincular conversas do BlueBubbles a sessões persistentes de ACP. Use um identificador ou string de alvo do BlueBubbles (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 iniciaimsg rpc (JSON-RPC por stdio). Nenhum daemon ou porta é necessário.
-
O opcional
channels.imessage.defaultAccountsubstitui a seleção de conta padrão quando corresponde a um ID de conta configurado. - Requer Acesso Total ao Disco ao banco de dados do Messages.
-
Prefira alvos
chat_id:<id>. Useimsg chats --limit 20para listar conversas. -
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). -
O SCP usa verificação estrita de chave do host, então garanta que a chave do host de retransmissão já exista em
~/.ssh/known_hosts. -
channels.imessage.configWrites: permite ou nega gravações de configuração iniciadas pelo iMessage. -
Entradas de nível superior
bindings[]comtype: "acp"podem vincular conversas do iMessage a sessões persistentes de ACP. Use um identificador normalizado ou alvo explícito de conversa (chat_id:*,chat_guid:*,chat_identifier:*) emmatch.peer.id. Semântica compartilhada dos campos: ACP Agents.
Exemplo de wrapper SSH do iMessage
Exemplo de wrapper SSH do iMessage
Matrix
O Matrix é baseado em extensão e configurado emchannels.matrix.
- A autenticação por token usa
accessToken; a autenticação por senha usauserId+password. channels.matrix.proxyroteia o tráfego HTTP do Matrix por um proxy HTTP(S) explícito. Contas nomeadas podem substituí-lo comchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkpermite homeservers privados/internos.proxye essa ativação de rede são controles independentes.channels.matrix.defaultAccountseleciona a conta preferida em configurações com várias contas.channels.matrix.autoJoinusaoffpor padrão, então salas convidadas e novos convites em estilo DM são ignorados até que você definaautoJoin: "allowlist"comautoJoinAllowlistouautoJoin: "always".channels.matrix.execApprovals: entrega nativa do Matrix para aprovações de execução e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo automático, as aprovações de execução são ativadas quando os aprovadores podem ser resolvidos a partir deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário Matrix (por exemplo@owner:example.org) autorizados a aprovar solicitações de execução.agentFilter: lista de permissões opcional de IDs de agentes. Omita para encaminhar aprovações para todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: onde enviar os prompts de aprovação."dm"(padrão),"channel"(sala de origem) ou"both".- Substituições por conta:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopecontrola como DMs do Matrix são agrupadas em sessões:per-user(padrão) compartilha por peer roteado, enquantoper-roomisola cada sala de DM.- Sondas de status do Matrix e pesquisas de diretório ao vivo usam a mesma política de proxy do tráfego de runtime.
- A configuração completa do Matrix, regras de direcionamento e exemplos de configuração estão documentados em Matrix.
Microsoft Teams
O 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 equipe/por canal) está documentada em Microsoft Teams.
IRC
O 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.*. - O opcional
channels.irc.defaultAccountsubstitui a seleção de conta padrão quando corresponde a um ID de conta configurado. - A configuração completa do canal IRC (host/porta/TLS/canais/listas de permissões/bloqueio por menção) está documentada em IRC.
Várias contas (todos os canais)
Execute várias contas por canal (cada uma com seu próprioaccountId):
defaulté usado quandoaccountIdé omitido (CLI + roteamento).- Tokens de ambiente se aplicam apenas à conta default.
- As configurações básicas 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 no nível superior, o OpenClaw primeiro promove os valores de conta única no 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; o Matrix pode preservar um alvo nomeado/padrão correspondente já existente. - Os vínculos existentes apenas de canal (sem
accountId) continuam correspondendo à conta padrão; vínculos com escopo de conta continuam opcionais. openclaw doctor --fixtambém corrige formatos mistos movendo valores de conta única no nível superior com escopo de conta para a conta promovida escolhida para esse canal. A maioria dos canais usaaccounts.default; o Matrix pode preservar um alvo nomeado/padrão correspondente já existente.
Outros canais de extensão
Muitos canais de extensão são configurados comochannels.<id> e documentados em suas páginas dedicadas de canal (por exemplo Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch).
Consulte o índice completo de canais: Channels.
Bloqueio por menção em conversas de grupo
Mensagens de grupo usam exigir menção por padrão (menção por metadados ou padrões regex seguros). Aplica-se a conversas 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 conversa 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 bloqueio 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. Os canais podem substituir com channels.<channel>.historyLimit (ou por conta). Defina 0 para desativar.
Limites de histórico de DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modo de conversa consigo mesmo
Inclua seu próprio número emallowFrom para habilitar o modo de conversa consigo mesmo (ignora @-mentions nativas, responde apenas a padrões de texto):
Comandos (tratamento de comandos de chat)
Detalhes dos comandos
Detalhes dos comandos
- Este bloco configura superfícies de comando. Para o catálogo atual de comandos internos + bundled, consulte Comandos de barra.
- Esta página é uma referência de chaves de configuração, não o catálogo completo de comandos. Comandos pertencentes a canais/plugins como QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phonee Talk/voiceestão documentados em suas páginas de canal/plugin, além de Comandos de barra. - Comandos de texto devem ser mensagens independentes com
/no início. native: "auto"ativa comandos nativos para Discord/Telegram e deixa o Slack desativado.nativeSkills: "auto"ativa comandos nativos de Skills para Discord/Telegram e deixa o Slack desativado.- Substituição por canal:
channels.discord.commands.native(bool ou"auto").falselimpa comandos registrados anteriormente. - Substitua o registro nativo de Skills por canal com
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsadiciona entradas extras ao menu do bot do Telegram.bash: truehabilita! <cmd>para o 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 normais de operador com escopo de gravação.mcp: truehabilita/mcppara a configuração de servidor MCP gerenciada pelo OpenClaw emmcp.servers.plugins: truehabilita/pluginspara descoberta de Plugin, instalação e controles de ativação/desativação.channels.<provider>.configWritescontrola mutações de configuração por canal (padrão: true).- Para canais com várias contas,
channels.<provider>.accounts.<id>.configWritestambém controla gravações que têm essa conta como alvo (por exemplo/allowlist --config --account <id>ou/config set channels.<provider>.accounts.<id>...). restart: falsedesativa/restarte ações da ferramenta de reinicialização do gateway. Padrão:true.ownerAllowFromé a lista explícita de permissões do proprietário para comandos/ferramentas exclusivos do proprietário. Ela é separada deallowFrom.ownerDisplay: "hash"aplica hash aos IDs do proprietário no prompt do sistema. DefinaownerDisplaySecretpara controlar o hash.allowFromé por provedor. Quando definido, é a única fonte de autorização (listas de permissões/pareamento do canal euseAccessGroupssão ignorados).useAccessGroups: falsepermite que comandos ignorem políticas de grupos de acesso quandoallowFromnão está definido.- Mapa da documentação de comandos:
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 subindo a partir do workspace.
agents.defaults.skills
Lista opcional padrão de permissões 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 Skills. - 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
Desativa 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.contextInjection
Controla quando os arquivos bootstrap do workspace são injetados no prompt do sistema. Padrão: "always".
"continuation-skip": turnos seguros de continuação (após uma resposta concluída do assistente) ignoram a reinjeção do bootstrap do workspace, reduzindo o tamanho do prompt. Execuções de Heartbeat e novas tentativas após Compaction ainda recriam o contexto.
agents.defaults.bootstrapMaxChars
Máximo de caracteres por arquivo bootstrap do workspace antes do truncamento. Padrão: 12000.
agents.defaults.bootstrapTotalMaxChars
Máximo total de caracteres injetados em todos os arquivos bootstrap do workspace. Padrão: 60000.
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 o aviso em toda execução quando houver truncamento.
Mapa de propriedade do orçamento de contexto
O OpenClaw tem vários orçamentos de prompt/contexto de alto volume, e eles são intencionalmente divididos por subsistema em vez de passarem todos por um único ajuste genérico.agents.defaults.bootstrapMaxChars/agents.defaults.bootstrapTotalMaxChars: injeção normal de bootstrap do workspace.agents.defaults.startupContext.*: prelúdio de inicialização único de/newe/reset, incluindo arquivos recentesmemory/*.mddiários.skills.limits.*: a lista compacta de Skills injetada no prompt do sistema.agents.defaults.contextLimits.*: trechos limitados em runtime e blocos injetados pertencentes ao runtime.memory.qmd.limits.*: dimensionamento de snippets e injeção de busca de memória indexada.
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextLimits.*
agents.defaults.startupContext
Controla o prelúdio de inicialização do primeiro turno injetado em execuções
simples de /new e /reset.
agents.defaults.contextLimits
Padrões compartilhados para superfícies de contexto limitadas em runtime.
memoryGetMaxChars: limite padrão de trecho dememory_getantes que metadados de truncamento e aviso de continuação sejam adicionados.memoryGetDefaultLines: janela padrão de linhas dememory_getquandolinesé omitido.toolResultMaxChars: limite em tempo real de resultado de ferramenta usado para resultados persistidos e recuperação de overflow.postCompactionMaxChars: limite de trecho de AGENTS.md usado durante a injeção de atualização pós-Compaction.
agents.list[].contextLimits
Substituição por agente para os ajustes compartilhados de contextLimits. Campos omitidos herdam
de agents.defaults.contextLimits.
skills.limits.maxSkillsPromptChars
Limite global para a lista compacta de Skills injetada no prompt do sistema. Isso
não afeta a leitura de arquivos SKILL.md sob demanda.
agents.list[].skillsLimits.maxSkillsPromptChars
Substituição por agente para o orçamento de prompt de Skills.
agents.defaults.imageMaxDimensionPx
Tamanho máximo em pixels do lado mais longo da imagem em blocos de imagem de transcript/ferramenta antes de chamadas ao provedor.
Padrão: 1200.
Valores menores geralmente reduzem o uso de tokens de visão e o tamanho da carga da solicitação em execuções com muitas capturas de tela.
Valores maiores preservam mais detalhes visuais.
agents.defaults.userTimezone
Fuso horário para o contexto do prompt do sistema (não os timestamps das mensagens). Usa o fuso horário do host como fallback.
agents.defaults.timeFormat
Formato de hora no prompt do sistema. Padrão: auto (preferência do SO).
agents.defaults.model
model: aceita uma string ("provider/model") ou um objeto ({ primary, fallbacks }).- A forma string define apenas o modelo principal.
- A forma objeto define o principal mais modelos ordenados de failover.
imageModel: aceita uma string ("provider/model") ou um objeto ({ primary, fallbacks }).- Usado pelo caminho da ferramenta
imagecomo sua configuração de 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 uma string ("provider/model") ou um objeto ({ primary, fallbacks }).- Usado pela capacidade compartilhada de geração de imagem e por 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, depois os provedores restantes de geração de imagem registrados na ordem do ID do provedor.
musicGenerationModel: aceita uma string ("provider/model") ou um objeto ({ primary, fallbacks }).- Usado pela capacidade compartilhada de geração de música e pela ferramenta interna
music_generate. - Valores típicos:
google/lyria-3-clip-preview,google/lyria-3-pro-previewouminimax/music-2.5+. - Se omitido,
music_generateainda pode inferir um padrão de provedor com autenticação. Ele tenta primeiro o provedor padrão atual, depois os provedores restantes de geração de música registrados na ordem do ID do provedor. - Se você selecionar diretamente um provider/model, configure também a autenticação/chave de API correspondente do provedor.
- Usado pela capacidade compartilhada de geração de música e pela ferramenta interna
videoGenerationModel: aceita uma string ("provider/model") ou um objeto ({ primary, fallbacks }).- Usado pela capacidade compartilhada de geração de vídeo e pela ferramenta interna
video_generate. - Valores típicos:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashouqwen/wan2.7-r2v. - Se omitido,
video_generateainda pode inferir um padrão de provedor com autenticação. Ele tenta primeiro o provedor padrão atual, depois os provedores restantes de geração de vídeo registrados na ordem do ID do provedor. - Se você selecionar diretamente um provider/model, configure também a autenticação/chave de API correspondente do provedor.
- O provedor bundled de geração de vídeo Qwen oferece suporte a 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.
- Usado pela capacidade compartilhada de geração de vídeo e pela ferramenta interna
pdfModel: aceita uma string ("provider/model") ou um objeto ({ primary, fallbacks }).- Usado pela ferramenta
pdfpara roteamento de modelo. - Se omitido, a ferramenta PDF recorre a
imageModele depois ao modelo padrão/de sessã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 verbose padrão 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 primeiro tenta um alias, depois uma correspondência exclusiva de provedor configurado para esse ID de modelo exato e só então recorre ao provedor padrão configurado (comportamento de compatibilidade obsoleto, então prefiraprovider/modelexplícito). Se esse provedor não expuser mais o modelo padrão configurado, o OpenClaw recorre ao primeiro provider/model configurado em vez de expor um padrão obsoleto de provedor removido.models: o catálogo de modelos configurado e a lista de permissões 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(configuração):agents.defaults.params(base global) é substituído poragents.defaults.models["provider/model"].params(por modelo), entãoagents.list[].params(ID do agente correspondente) substitui por chave. Consulte Prompt Caching para detalhes. embeddedHarness: política padrão do runtime incorporado de baixo nível do agente. Useruntime: "auto"para permitir que harnesses de Plugin registrados assumam modelos compatíveis,runtime: "pi"para forçar o harness PI interno, ou um ID de harness registrado comoruntime: "codex". Definafallback: "none"para desativar o fallback automático para PI.- Gravadores 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 agentes entre sessões (cada sessão ainda é serializada). Padrão: 4.
agents.defaults.embeddedHarness
embeddedHarness controla qual executor de baixo nível executa turnos de agentes incorporados.
A maioria das implantações deve manter o padrão { runtime: "auto", fallback: "pi" }.
Use isso quando um Plugin confiável fornecer um harness nativo, como o harness bundled
Codex app-server.
runtime:"auto","pi"ou um ID de harness de Plugin registrado. O Plugin bundled Codex registracodex.fallback:"pi"ou"none"."pi"mantém o harness PI interno como fallback de compatibilidade."none"faz com que a seleção ausente ou não compatível de harness de Plugin falhe em vez de usar PI silenciosamente.- Substituições por ambiente:
OPENCLAW_AGENT_RUNTIME=<id|auto|pi>substituiruntime;OPENCLAW_AGENT_HARNESS_FALLBACK=nonedesativa o fallback para PI nesse processo. - Para implantações somente Codex, defina
model: "codex/gpt-5.4",embeddedHarness.runtime: "codex"eembeddedHarness.fallback: "none". - Isso controla apenas o harness de chat incorporado. Geração de mídia, visão, PDF, música, vídeo e TTS ainda usam suas configurações de provider/model.
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 configure agents.defaults.models["zai/<model>"].params.thinking por conta própria.
Modelos Z.AI ativam tool_stream por padrão para streaming de chamadas de ferramenta. Defina agents.defaults.models["zai/<model>"].params.tool_stream como false para desativá-lo.
Modelos Claude 4.6 da Anthropic usam adaptive como padrão para thinking quando nenhum nível explícito é definido.
agents.defaults.cliBackends
Backends CLI opcionais para execuções de fallback somente texto (sem chamadas de ferramenta). Úteis como backup quando provedores de API falham.
- Backends CLI são voltados principalmente para texto; ferramentas sempre ficam desativadas.
- Sessões são compatíveis quando
sessionArgestá definido. - Pass-through de imagem é compatível quando
imageArgaceita caminhos de arquivo.
agents.defaults.systemPromptOverride
Substitui todo o prompt do sistema montado pelo OpenClaw por uma string fixa. Defina no nível padrão (agents.defaults.systemPromptOverride) ou por agente (agents.list[].systemPromptOverride). Valores por agente têm precedência; um valor vazio ou apenas com espaços em branco é ignorado. Útil para experimentos controlados de prompt.
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 desativar.includeSystemPromptSection: quando false, omite a seção Heartbeat do prompt do sistema e ignora a injeção deHEARTBEAT.mdno contexto bootstrap. Padrão:true.suppressToolErrorWarnings: quando true, suprime cargas de aviso de erro de ferramenta durante execuções de Heartbeat.timeoutSeconds: tempo máximo em segundos permitido para um turno de agente de Heartbeat antes de ser abortado. Deixe sem definir para usaragents.defaults.timeoutSeconds.directPolicy: política de entrega direta/DM.allow(padrão) permite entrega a alvo direto.blocksuprime entrega a 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 prévio de conversa. Mesmo padrão de isolamento de CronsessionTarget: "isolated". Reduz o custo de tokens por Heartbeat de ~100K para ~2-5K tokens.- Por agente: defina
agents.list[].heartbeat. Quando qualquer agente defineheartbeat, somente esses agentes executam Heartbeat. - Heartbeats executam turnos completos de agente — intervalos mais curtos consomem mais tokens.
agents.defaults.compaction
mode:defaultousafeguard(resumo em partes para históricos longos). Consulte Compaction.provider: ID de um Plugin de provedor de Compaction registrado. Quando definido,summarize()do provedor é chamado em vez do resumo LLM interno. Em caso de falha, recorre ao interno. Definir um provedor forçamode: "safeguard". Consulte Compaction.timeoutSeconds: máximo de segundos permitidos para uma única operação de Compaction antes que o OpenClaw a interrompa. Padrão:900.identifierPolicy:strict(padrão),offoucustom.strictadiciona instruções internas de preservação de identificadores opacos durante o resumo de Compaction.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 Compaction. O padrão é["Session Startup", "Red Lines"]; defina[]para desativar a reinjeção. Quando não definido ou explicitamente definido para esse par padrão, cabeçalhos antigosEvery Session/Safetytambém são aceitos como fallback legado.model: substituição opcional deprovider/model-idapenas para resumo de Compaction. Use isso quando a sessão principal deve manter um modelo, mas os resumos de Compaction devem executar em outro; quando não definido, a Compaction usa o modelo principal da sessão.notifyUser: quandotrue, envia um breve aviso ao usuário quando a Compaction começa (por exemplo, “Compactando contexto…”). Desativado por padrão para manter a Compaction silenciosa.memoryFlush: turno agentic silencioso antes da auto-Compaction para armazenar memórias duráveis. Ignorado quando o workspace é somente leitura.
agents.defaults.contextPruning
Remove resultados antigos de ferramentas 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 poda.ttlcontrola com que frequência a poda pode ser executada novamente (após o último toque no cache).- A poda primeiro faz um corte suave em resultados de ferramentas superdimensionados e depois limpa completamente resultados mais antigos, se necessário.
... no meio.Limpeza completa substitui todo o resultado da ferramenta pelo placeholder.Observações:- Blocos de imagem nunca são cortados/limpos.
- As proporções são baseadas em caracteres (aproximadas), não em contagens exatas de tokens.
- Se existirem menos de
keepLastAssistantsmensagens do assistente, a poda é ignorada.
Streaming em blocos
- 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 conversas diretas/menções,messagepara conversas em grupo sem menção. - Substituições por sessão:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Sandbox opcional para o agente incorporado. Consulte Sandboxing para o guia completo.
Detalhes do sandbox
Detalhes do sandbox
Backend:Modo OpenShell:
docker: runtime Docker local (padrão)ssh: runtime remoto genérico baseado em SSHopenshell: runtime OpenShell
backend: "openshell" é selecionado, as configurações específicas do runtime vão para
plugins.entries.openshell.config.Configuração do backend SSH:target: destino 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 embutido ou SecretRefs que o OpenClaw materializa em arquivos temporários em runtimestrictHostKeyChecking/updateHostKeys: ajustes de política de chave de host do OpenSSH
identityDataprevalece sobreidentityFilecertificateDataprevalece sobrecertificateFileknownHostsDataprevalece sobreknownHostsFile- Valores
*Databaseados em SecretRef são resolvidos a partir do snapshot ativo do runtime de segredos antes do início da sessão do sandbox
- 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 mudanças remotas de volta para o host
- não oferece suporte a contêineres de navegador no sandbox
none: workspace do sandbox por escopo em~/.openclaw/sandboxesro: workspace do sandbox em/workspace, workspace do agente montado como somente leitura em/agentrw: workspace do agente montado em 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 deexec, sincroniza de volta apósexec; o workspace local continua sendo o canônicoremote: inicializa o remoto uma vez quando o sandbox é criado e 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 controla o ciclo de vida do sandbox e a sincronização opcional de espelho.setupCommand é executado uma vez após a criação do contêiner (via sh -lc). Precisa de saída de rede, raiz gravável e usuário root.Os contêineres usam network: "none" por padrão — defina como "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; montagens globais e por agente são mescladas.Navegador em sandbox (sandbox.browser.enabled): Chromium + CDP em um contêiner. URL do noVNC injetada no prompt do sistema. Não requer browser.enabled em openclaw.json.
O acesso de observador no 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.networkusaopenclaw-sandbox-browserpor padrão (rede bridge dedicada). Defina comobridgeapenas quando você quiser explicitamente conectividade global de bridge.cdpSourceRangerestringe opcionalmente a entrada de 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 (incluindo[]), substituidocker.bindspara o contêiner do navegador.- Os padrões de inicialização são definidos em
scripts/sandbox-browser-entrypoint.she ajustados para hosts com contêiner:--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(ativado por padrão)--disable-3d-apis,--disable-software-rasterizere--disable-gpusão ativados por padrão e podem ser desativados comOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0se o uso de WebGL/3D exigir isso.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 de processos padrão do Chromium.- mais
--no-sandboxe--disable-setuid-sandboxquandonoSandboxestiver ativado. - 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 os padrões do contêiner.
sandbox.docker.binds 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 prevalece (aviso registrado). Se nenhum for definido, a primeira entrada da lista é o padrão.model: a forma string substitui apenasprimary; a forma objeto{ primary, fallbacks }substitui ambos ([]desativa fallbacks globais). Jobs Cron que substituem apenasprimaryainda herdam os 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 isto para substituições específicas do agente, comocacheRetention,temperatureoumaxTokens, sem duplicar todo o catálogo de modelos.skills: lista opcional de permissões de Skills por agente. Se omitida, o agente herdaagents.defaults.skillsquando definido; uma lista explícita substitui os padrões em vez de mesclar, e[]significa nenhuma Skills.thinkingDefault: nível thinking padrão opcional por agente (off | minimal | low | medium | high | xhigh | adaptive). Substituiagents.defaults.thinkingDefaultpara este agente quando nenhuma substituição por mensagem ou sessão estiver definida.reasoningDefault: visibilidade reasoning padrão opcional por agente (on | off | stream). Aplica-se quando nenhuma substituição de reasoning por mensagem ou sessão estiver definida.fastModeDefault: padrão opcional por agente para modo rápido (true | false). Aplica-se quando nenhuma substituição de modo rápido por mensagem ou sessão estiver definida.embeddedHarness: substituição opcional por agente para a política de harness de baixo nível. Use{ runtime: "codex", fallback: "none" }para tornar um agente exclusivo do Codex enquanto outros agentes mantêm o fallback PI padrão.runtime: descritor opcional de runtime por agente. Usetype: "acp"com padrões deruntime.acp(agent,backend,mode,cwd) quando o agente deve usar sessões de harness ACP por padrão.identity.avatar: caminho relativo ao workspace, URLhttp(s)ou URIdata:.identityderiva padrões:ackReactiondeemoji,mentionPatternsdename/emoji.subagents.allowAgents: lista de permissões de IDs de agentes parasessions_spawn(["*"]= qualquer; 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 chamadassessions_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 assume route),acppara vínculos 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ífico do canal)acp(opcional; apenas para entradastype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(exato, sem peer/guild/team)match.accountId: "*"(em todo o canal)- Agente padrão
bindings prevalece.
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 binding de rota acima.
Perfis de acesso por agente
Acesso total (sem sandbox)
Acesso total (sem sandbox)
Ferramentas + workspace somente leitura
Ferramentas + workspace somente leitura
Sem acesso ao sistema de arquivos (somente mensagens)
Sem acesso ao sistema de arquivos (somente mensagens)
Sessão
Detalhes dos campos de sessão
Detalhes dos campos de sessão
scope: estratégia base de agrupamento de sessões para contextos de conversa 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 o contexto compartilhado for intencional).
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 com vários usuários).per-account-channel-peer: isola por conta + canal + remetente (recomendado para várias contas).
identityLinks: mapeia IDs canônicos para peers com prefixo de provedor para compartilhamento de sessão entre canais.reset: política principal de redefinição.dailyredefine ematHourno horário local;idleredefine apósidleMinutes. Quando ambos estão configurados, o que expirar primeiro prevalece.resetByType: substituições por tipo (direct,group,thread). O legadodmé aceito como alias paradirect.parentForkMaxTokens:totalTokensmáximo permitido na sessão pai ao criar uma sessão de thread bifurcada (padrão100000).- Se
totalTokensda sessão 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 desativar essa proteção e sempre permitir bifurcação da sessão pai.
- Se
mainKey: campo legado. O runtime sempre usa"main"para o bucket principal de chat direto.agentToAgent.maxPingPongTurns: número máximo de turnos de resposta entre agentes durante trocas entre agentes (inteiro, intervalo:0–5).0desativa o encadeamento ping-pong.sendPolicy: correspondência porchannel,chatType(direct|group|channel, com alias legadodm),keyPrefixourawKeyPrefix. A primeira negação prevalece.maintenance: controles de limpeza + retenção do armazenamento de sessões.mode:warnemite apenas avisos;enforceaplica a limpeza.pruneAfter: limite 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 transcrição*.reset.<timestamp>. UsapruneAfterpor padrão; definafalsepara desativar.maxDiskBytes: orçamento opcional de disco para o diretório de sessões. No modowarn, registra avisos; no modoenforce, remove primeiro os artefatos/sessões mais antigos.highWaterBytes: alvo opcional após a limpeza do orçamento. O padrão é80%demaxDiskBytes.
threadBindings: padrões globais para recursos de sessão vinculados a thread.enabled: chave mestre padrão (provedores podem substituir; o Discord usachannels.discord.threadBindings.enabled)idleHours: desfoco automático padrão por inatividade em horas (0desativa; provedores podem substituir)maxAgeHours: idade máxima rígida padrão em horas (0desativa; provedores podem substituir)
Mensagens
Prefixo de resposta
Substituições por canal/conta:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Resolução (a mais específica prevalece): conta → canal → global. "" desativa 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 de identidade do agente | (igual a "auto") |
{think} é um alias de {thinkingLevel}.
Reação de confirmação
- Usa por padrão
identity.emojido agente ativo; caso contrário,"👀". Defina""para desativar. - 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 a confirmação após a resposta no Slack, Discord e Telegram.messages.statusReactions.enabled: habilita reações de status do ciclo de vida no Slack, Discord e Telegram. No Slack e no Discord, se não estiver definido, mantém reações de status habilitadas quando reações de confirmação 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 de texto do mesmo remetente em um único turno do agente. Mídia/anexos são descarregados imediatamente. Comandos de controle ignoram o debounce.TTS (texto para fala)
autocontrola o modo padrão de auto-TTS:off,always,inboundoutagged./tts on|offpode substituir preferências locais, e/tts statusmostra o estado efetivo.summaryModelsubstituiagents.defaults.model.primarypara resumo automático.modelOverridesé habilitado por padrão;modelOverrides.allowProviderusafalsepor padrão (opt-in).- As chaves de API usam
ELEVENLABS_API_KEY/XI_API_KEYeOPENAI_API_KEYcomo fallback. openai.baseUrlsubstitui o endpoint TTS do OpenAI. A ordem de resolução é configuração, 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.providerdeve corresponder a uma chave emtalk.providersquando vários provedores de Talk estiverem configurados.- Chaves legadas planas de Talk (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) são apenas para compatibilidade e são migradas automaticamente paratalk.providers.<provider>. - IDs de voz usam
ELEVENLABS_VOICE_IDouSAG_VOICE_IDcomo fallback. providers.*.apiKeyaceita strings em texto simples ou objetos SecretRef.- O fallback
ELEVENLABS_API_KEYse aplica apenas quando nenhuma chave de API de Talk está configurada. providers.*.voiceAliasespermite que diretivas de Talk usem nomes amigáveis.silenceTimeoutMscontrola quanto tempo o modo Talk espera após o silêncio do usuário antes de enviar a transcrição. Se não estiver definido, mantém a janela de pausa padrão da plataforma (700 ms no macOS e Android, 900 ms no iOS).
Ferramentas
Perfis de ferramentas
tools.profile define uma lista base de permissões antes de tools.allow/tools.deny:
O onboarding local define novas configurações locais por padrão como tools.profile: "coding" quando não definido (perfis explícitos existentes são preservados).
| Perfil | Inclui |
|---|---|
minimal | somente session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, 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 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, video_generate, tts |
group:openclaw | Todas as ferramentas internas (exclui plugins de provedor) |
tools.allow / tools.deny
Política global de permitir/negar ferramentas (negação prevalece). Não diferencia maiúsculas de minúsculas, oferece suporte a curingas *. Aplicada mesmo quando o sandbox Docker está desativado.
tools.byProvider
Restringe ainda mais ferramentas para provedores ou modelos específicos. Ordem: perfil base → perfil do provedor → permitir/negar.
tools.elevated
Controla acesso elevado de exec 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 de execução énode).
tools.exec
tools.loopDetection
As verificações de segurança de loop de ferramenta são desativadas 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 mantido 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 de interrupção rígida para qualquer execução sem progresso.detectors.genericRepeat: avisa sobre chamadas repetidas da mesma ferramenta/com os mesmos argumentos.detectors.knownPollNoProgress: avisa/bloqueia ferramentas de polling conhecidas (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 recebida (imagem/áudio/vídeo):
Campos de entrada do modelo de mídia
Campos de entrada do 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 de ID de modeloprofile/preferredProfile: seleção de perfil emauth-profiles.json
type: "cli"):command: executável a ser executadoargs: argumentos com template (compatível com{{MediaPath}},{{Prompt}},{{MaxChars}}etc.)
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.- Falhas recorrem à próxima entrada.
auth-profiles.json → variáveis de ambiente → models.providers.*.apiKey.Campos de conclusão assíncrona:asyncCompletion.directSend: quandotrue, tarefas assíncronas concluídas demusic_generateevideo_generatetentam primeiro entrega direta no canal. Padrão:false(caminho legado de despertar da sessão solicitante/entrega pelo modelo).
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 geradas por ela, como subagentes).
self: apenas 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.- Limitação por sandbox: quando a sessão atual está em sandbox e
agents.defaults.sandbox.sessionToolsVisibility="spawned", a visibilidade é forçada paratreemesmo setools.sessions.visibility="all".
tools.sessions_spawn
Controla o suporte a anexos inline para sessions_spawn.
- Anexos são compatíveis apenas com
runtime: "subagent". O runtime ACP os rejeita. - Os arquivos são materializados no workspace filho em
.openclaw/attachments/<uuid>/com um.manifest.json. - O conteúdo do anexo é 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 arquivo são
0700para diretórios e0600para arquivos. - A limpeza segue a política
cleanup:deletesempre remove anexos;keepos mantém somente quandoretainOnSessionKeep: true.
tools.experimental
Sinalizadores experimentais de ferramentas internas. Padrão desativado, a menos que uma regra de ativação automática rígida agentic do GPT-5 se aplique.
planTool: habilita a ferramenta estruturada experimentalupdate_planpara acompanhamento de trabalho não trivial em várias etapas.- Padrão:
false, a menos queagents.defaults.embeddedPi.executionContract(ou uma substituição por agente) esteja definido como"strict-agentic"para uma execução da família GPT-5 da OpenAI ou OpenAI Codex. Definatruepara forçar a ativação da ferramenta fora desse escopo, oufalsepara mantê-la desativada mesmo para 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 trabalho substancial 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: lista de permissões padrão de IDs de agentes de destino parasessions_spawnquando o agente solicitante não define seu própriosubagents.allowAgents(["*"]= qualquer; 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 URLs base
O OpenClaw usa o catálogo interno 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 prevalecem. - Valores não vazios de
apiKeydo agente prevalecem apenas quando esse provedor não é gerenciado por SecretRef no contexto atual de configuração/perfil de autenticação. - Valores
apiKeyde provedores gerenciados por SecretRef são atualizados a partir de 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 provedores gerenciados por SecretRef são atualizados a partir de marcadores de origem (
secretref-env:ENV_VAR_NAMEpara refs de ambiente,secretref-managedpara refs de arquivo/exec). apiKey/baseUrlvazios ou ausentes no agente recorrem amodels.providersna configuração.contextWindow/maxTokensde modelo correspondentes 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 os metadados nativos do modelo.- Use
models.mode: "replace"quando quiser que a configuração reescreva totalmentemodels.json. - A persistência de marcadores é autoritativa à origem: os marcadores são gravados a partir do snapshot ativo da configuração de origem (pré-resolução), não a partir de valores secretos resolvidos em runtime.
- Valores não vazios de
Detalhes dos campos do 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 requisição (openai-completions,openai-responses,anthropic-messages,google-generative-aietc.).models.providers.*.apiKey: credencial do provedor (prefira SecretRef/substituição por ambiente).models.providers.*.auth: estratégia de autenticação (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: para Ollama +openai-completions, injetaoptions.num_ctxnas requisiçõ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.models.providers.*.request: substituições de transporte para requisiçõ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 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 TLS para conexões diretas. Campos:ca,cert,key,passphrase(todos aceitam SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: quandotrue, permite HTTPS parabaseUrlquando o DNS resolve para faixas privadas, CGNAT ou similares, por meio da proteção SSRF de fetch HTTP do provedor (opt-in do operador para endpoints OpenAI-compatíveis auto-hospedados confiáveis). O WebSocket usa o mesmorequestpara cabeçalhos/TLS, mas não essa proteção SSRF de fetch. Padrãofalse.
models.providers.*.models: entradas explícitas do catálogo de modelos do provedor.models.providers.*.models.*.contextWindow: metadados nativos da janela de contexto do modelo.models.providers.*.models.*.contextTokens: limite opcional de contexto em runtime. Use isso quando quiser um orçamento efetivo de contexto menor quecontextWindownativo do modelo.models.providers.*.models.*.compat.supportsDeveloperRole: dica opcional de compatibilidade. Paraapi: "openai-completions"combaseUrlnão nativo não vazio (host diferente deapi.openai.com), o OpenClaw força isso 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 OpenAI-compatíveis que aceitam somente string. Quandotrue, o OpenClaw transforma arraysmessages[].contentde texto puro em strings simples antes de enviar a requisição.plugins.entries.amazon-bedrock.config.discovery: raiz das configurações de descoberta automática do Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: liga/desliga a 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 ID de provedor 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 de fallback para modelos descobertos.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: máximo de tokens de saída de fallback para modelos descobertos.
Exemplos de provedores
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 referências opencode/... para o catálogo Zen ou referências 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 código (padrão):
https://api.z.ai/api/coding/paas/v4 - Para o endpoint geral, defina um provedor personalizado com substituição de URL base.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" ou openclaw onboard --auth-choice moonshot-api-key-cn.Os endpoints nativos da Moonshot anunciam compatibilidade de uso de streaming no transporte compartilhado
openai-completions, e o OpenClaw baseia isso nas capacidades do endpoint
em vez de apenas no ID interno 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 acrescenta). 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 usa por padrão apenas M2.7.
No caminho de streaming compatível com Anthropic, o OpenClaw desativa 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 Modelos locais. Resumindo: execute um modelo local grande via API Responses do LM Studio em hardware robusto; mantenha modelos hospedados mesclados para fallback.
Skills
allowBundled: lista opcional de permissões apenas para Skills bundled (Skills gerenciadas/do workspace não são afetadas).load.extraDirs: raízes extras compartilhadas de Skills (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: falsedesativa uma Skill mesmo se estiver bundled/instalada.entries.<skillKey>.apiKey: conveniência para Skills que declaram uma variável de ambiente primária (string em texto simples ou objeto SecretRef).
Plugins
- Carregado de
~/.openclaw/extensions,<workspace>/.openclaw/extensions, além deplugins.load.paths. - A descoberta aceita plugins nativos do OpenClaw, além de bundles compatíveis do Codex e bundles do Claude, incluindo bundles do Claude sem manifesto no layout padrão.
- Mudanças de configuração exigem reinicialização do gateway.
allow: lista opcional de permissões (somente os plugins listados são carregados).denyprevalece.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 core bloqueiabefore_prompt_builde ignora campos de mutação de prompt do legadobefore_agent_start, enquanto preservamodelOverrideeproviderOverridelegados. Aplica-se a hooks de plugins nativos e diretórios de hook fornecidos por bundle compatíveis.plugins.entries.<id>.subagent.allowModelOverride: confia explicitamente neste plugin para solicitar substituições por execução deprovideremodelpara execuções em segundo plano de subagentes.plugins.entries.<id>.subagent.allowedModels: lista opcional de permissões de alvos canônicosprovider/modelpara substituições confiáveis de subagentes. Use"*"apenas quando quiser intencionalmente permitir qualquer modelo.plugins.entries.<id>.config: objeto de configuração definido pelo plugin (validado pelo schema de plugin nativo do OpenClaw quando disponível).plugins.entries.firecrawl.config.webFetch: configurações do provedor de busca web Firecrawl.apiKey: chave de API do Firecrawl (aceita SecretRef). Usa como fallbackplugins.entries.firecrawl.config.webSearch.apiKey, o legadotools.web.fetch.firecrawl.apiKeyou a variável de ambienteFIRECRAWL_API_KEY.baseUrl: URL base da API Firecrawl (padrão:https://api.firecrawl.dev).onlyMainContent: extrai somente 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 requisição de scraping em segundos (padrão:60).
plugins.entries.xai.config.xSearch: configurações do X Search da xAI (busca web do Grok).enabled: habilita o provedor X Search.model: modelo Grok a usar para busca (por exemplo"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: configurações de dreaming de memória. Consulte Dreaming para fases e limites.enabled: chave mestre de dreaming (padrãofalse).frequency: cadência Cron para cada varredura completa de dreaming ("0 3 * * *"por padrão).- política de fase e limites são detalhes de implementação (não são chaves de configuração voltadas ao usuário).
- A configuração completa de memória está em Referência de configuração de memória:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Plugins de bundle do Claude habilitados também podem contribuir com padrões embutidos de Pi a partir de
settings.json; o OpenClaw os aplica como configurações de agente sanitizadas, não como patches brutos da configuração do OpenClaw. plugins.slots.memory: escolhe o ID do plugin de memória ativo ou"none"para desativar plugins de memória.plugins.slots.contextEngine: escolhe o ID do plugin ativo de engine de contexto; usa"legacy"por padrão, 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
Navegador
evaluateEnabled: falsedesativaact:evaluateewait --fn.ssrfPolicy.dangerouslyAllowPrivateNetworkfica desativado quando não definido, então a navegação do navegador permanece estrita por padrão.- Defina
ssrfPolicy.dangerouslyAllowPrivateNetwork: trueapenas quando você confiar intencionalmente na navegação do navegador em rede privada. - 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 somente de anexação (iniciar/parar/redefinir desativado).
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-sessionusam Chrome MCP em vez de CDP e podem se anexar no host selecionado ou por meio de um Node de navegador conectado. - 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 dirigidas por snapshot/ref em vez de direcionamento por seletor CSS, hooks de upload de arquivo único, sem substituições de timeout de diálogo, semwait --load networkidle, e semresponsebody, exportação de PDF, interceptação de download ou ações em lote. - Perfis locais gerenciados
openclawatribuem automaticamentecdpPortecdpUrl; definacdpUrlexplicitamente apenas para CDP remoto. - Ordem de detecção automática: 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). extraArgsacrescenta flags extras de inicialização ao Chromium local (por exemplo--disable-gpu, dimensionamento de janela ou flags de depuração).
UI
seamColor: cor de destaque para o chrome da UI do app nativo (tom da bolha do Modo Talk etc.).assistant: substituição de identidade da Control UI. 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 a menos que esteja emlocal.port: porta única multiplexada para WS + HTTP. Precedência:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(padrão),lan(0.0.0.0),tailnet(somente IP do Tailscale) oucustom.- Aliases legados de bind: use valores de modo de 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 rede bridge do Docker (-p 18789:18789), o tráfego chega emeth0, então o gateway fica inacessível. Use--network hostou definabind: "lan"(oubind: "custom"comcustomBindHost: "0.0.0.0") para escutar em todas as interfaces. - Auth: exigida 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 configurados ao mesmo tempo (incluindo SecretRefs), definagateway.auth.modeexplicitamente comotokenoupassword. Fluxos de inicialização e de 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 em configurações confiáveis de loopback local; 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 de loopback no mesmo host não satisfazem a autenticação trusted-proxy.gateway.auth.allowTailscale: quandotrue, cabeçalhos de identidade do Tailscale Serve podem satisfazer a autenticação da Control UI/WebSocket (verificados viatailscale whois). Endpoints da API HTTP 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. Usatruepor padrão quandotailscale.mode = "serve".gateway.auth.rateLimit: limitador opcional de falhas de autenticação. Aplica-se por IP de cliente e por escopo de autenticação (segredo compartilhado e token de dispositivo são rastreados independentemente). Tentativas bloqueadas retornam429+Retry-After.- No caminho assíncrono da Control UI do Tailscale Serve, tentativas falhas para o mesmo
{scope, clientIp}são serializadas antes do registro da falha. Assim, tentativas ruins concorrentes do mesmo cliente podem disparar o limitador na segunda requisição em vez de ambas passarem em corrida como simples incompatibilidades. gateway.auth.rateLimit.exemptLoopbackusatruepor padrão; definafalsequando quiser intencionalmente limitar também o tráfego localhost (para ambientes de teste ou implantações estritas com proxy).
- No caminho assíncrono da Control UI do Tailscale Serve, tentativas falhas para o mesmo
- Tentativas de autenticação WS originadas do navegador são sempre limitadas com a isenção de loopback desativada (defesa em profundidade contra força bruta em localhost a partir do navegador).
- Em loopback, esses bloqueios de origem do navegador são isolados por valor
Originnormalizado, então falhas repetidas de uma origem localhost não bloqueiam automaticamente uma origem diferente. tailscale.mode:serve(somente tailnet, bind loopback) oufunnel(público, requer auth).controlUi.allowedOrigins: lista explícita de permissões de origem do navegador para conexões WebSocket do Gateway. Obrigatória quando clientes do navegador são esperados de origens fora de loopback.controlUi.dangerouslyAllowHostHeaderOriginFallback: modo perigoso que habilita fallback de origem por cabeçalho Host para implantações que dependem intencionalmente de política de origem baseada em Host.remote.transport:ssh(padrão) oudirect(ws/wss). Paradirect,remote.urldeve serws://ouwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: substituição break-glass no lado do cliente que permitews://em texto simples para IPs confiáveis de rede privada; o padrão continua sendo somente loopback para texto simples.gateway.remote.token/.passwordsão campos de credenciais do cliente remoto. Eles não configuram a autenticação do gateway por si só.gateway.push.apns.relay.baseUrl: URL base HTTPS para o relay APNs externo usado por builds oficiais/TestFlight do iOS depois que publicam registros baseados em relay no gateway. Essa URL deve corresponder à URL do relay compilada no build do iOS.gateway.push.apns.relay.timeoutMs: timeout em milissegundos para envio do gateway ao relay. Padrão:10000.- Registros baseados em relay são delegados a uma identidade específica de gateway. O app iOS pareado busca
gateway.identity.get, inclui essa identidade no registro do relay e encaminha ao gateway uma concessão de envio com escopo do registro. Outro gateway não pode reutilizar esse registro armazenado. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: substituições temporárias por ambiente para a configuração de relay acima.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: escape hatch somente 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 desativar 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 contínua. 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 várias contas. Quando definido, tem precedência sobre a substituição no nível do canal.- Caminhos locais de chamada do gateway podem usar
gateway.remote.*como fallback somente quandogateway.auth.*não está definido. - Se
gateway.auth.token/gateway.auth.passwordestiver configurado explicitamente via SecretRef e não for resolvido, a resolução falha em modo fechado (sem fallback remoto mascarando). trustedProxies: IPs de proxies reversos que encerram TLS ou injetam cabeçalhos do cliente encaminhado. Liste apenas proxies sob seu controle. Entradas de loopback ainda são válidas para configurações de proxy local/detecção local no mesmo host (por exemplo Tailscale Serve ou um proxy reverso local), mas não tornam requisições de 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 ferramentas bloqueados para HTTPPOST /tools/invoke(estende a lista padrão de negação).gateway.tools.allow: remove nomes de ferramentas da lista padrão de negação HTTP.
Endpoints compatíveis com OpenAI
- Chat Completions: desativado por padrão. Habilite com
gateway.http.endpoints.chatCompletions.enabled: true. - API Responses:
gateway.http.endpoints.responses.enabled. - Endurecimento de entrada de URL em Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistListas de permissões vazias são tratadas como não definidas; usegateway.http.endpoints.responses.files.allowUrl=falsee/ougateway.http.endpoints.responses.images.allowUrl=falsepara desativar busca por URL.
- Cabeçalho opcional de endurecimento de resposta:
gateway.http.securityHeaders.strictTransportSecurity(defina apenas para origens HTTPS sob seu controle; consulte Trusted Proxy Auth)
Isolamento de várias instâncias
Execute vários gateways em um host com portas e diretórios de estado exclusivos:--dev (usa ~/.openclaw-dev + porta 19001), --profile <name> (usa ~/.openclaw-<name>).
Consulte Multiple Gateways.
gateway.tls
enabled: habilita encerramento TLS no listener do gateway (HTTPS/WSS) (padrão:false).autoGenerate: gera automaticamente um par local de certificado/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 o arquivo de chave privada TLS; mantenha permissões restritas.caPath: caminho opcional para bundle de CA para verificação de cliente ou cadeias de confiança personalizadas.
gateway.reload
mode: controla como edições de configuração são aplicadas em runtime."off": ignora edições em tempo real; mudanças exigem reinicialização explícita."restart": sempre reinicia o processo do gateway ao mudar a configuração."hot": aplica mudanças no processo sem reiniciar."hybrid"(padrão): tenta hot reload primeiro; recorre à reinicialização se necessário.
debounceMs: janela de debounce em ms antes de aplicar mudanças de configuração (inteiro não negativo).deferralTimeoutMs: tempo máximo em ms para esperar operações em andamento antes de forçar uma reinicialização (padrão:300000= 5 minutos).
Hooks
Authorization: Bearer <token> ou x-openclaw-token: <token>.
Tokens de hook em query string são rejeitados.
Observações de validação e segurança:
hooks.enabled=trueexigehooks.tokennão vazio.hooks.tokendeve ser diferente degateway.auth.token; reutilizar o token do Gateway é rejeitado.hooks.pathnão pode ser/; use um subcaminho dedicado como/hooks.- Se
hooks.allowRequestSessionKey=true, restrinjahooks.allowedSessionKeyPrefixes(por exemplo["hook:"]).
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeyda carga da requisição é aceito apenas quandohooks.allowRequestSessionKey=true(padrão:false).
POST /hooks/<name>→ resolvido viahooks.mappings
Detalhes de mapeamento
Detalhes de mapeamento
match.pathcorresponde ao subcaminho após/hooks(por exemplo/hooks/gmail→gmail).match.sourcecorresponde a um campo da carga para caminhos genéricos.- Templates como
{{messages[0].subject}}leem da carga. transformpode apontar para um módulo JS/TS que retorna uma ação de hook.transform.moduledeve ser um caminho relativo e permanecer dentro dehooks.transformsDir(caminhos absolutos e travessia são rejeitados).
agentIdroteia para um agente específico; IDs desconhecidos recorrem ao padrão.allowedAgentIds: restringe roteamento explícito (*ou omitido = permite todos,[]= nega todos).defaultSessionKey: chave de sessão fixa opcional para execuções de agente por hook semsessionKeyexplícito.allowRequestSessionKey: permite que chamadores de/hooks/agentdefinamsessionKey(padrão:false).allowedSessionKeyPrefixes: lista opcional de permissões de prefixo para valores explícitos desessionKey(requisição + mapeamento), por exemplo["hook:"].deliver: trueenvia a resposta final para um canal;channelusalastpor padrão.modelsubstitui o LLM para esta execução de hook (deve ser permitido se o catálogo de modelos estiver definido).
Integração com Gmail
- O Gateway inicia automaticamente
gog gmail watch servena inicialização quando configurado. DefinaOPENCLAW_SKIP_GMAIL_WATCHER=1para desativar. - Não execute um
gog gmail watch serveseparado junto com o Gateway.
Canvas host
- Serve HTML/CSS/JS editáveis pelo agente e A2UI por HTTP sob a porta do Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Somente local: mantenha
gateway.bind: "loopback"(padrão). - Binds fora de loopback: rotas do canvas exigem autenticação do Gateway (token/senha/trusted-proxy), igual a outras superfícies HTTP do Gateway.
- Node WebViews normalmente não enviam cabeçalhos de autenticação; depois que um node é pareado e conectado, o Gateway anuncia URLs de capacidade com escopo de node para acesso a canvas/A2UI.
- URLs de capacidade são vinculadas à sessão WS ativa do node e expiram rapidamente. Não é usado fallback baseado em IP.
- Injeta cliente de live reload no HTML servido.
- Cria automaticamente um
index.htmlinicial quando vazio. - Também serve A2UI em
/__openclaw__/a2ui/. - Alterações exigem reinicialização do gateway.
- Desative live reload para diretórios grandes ou erros
EMFILE.
Descoberta
mDNS (Bonjour)
minimal(padrão): omitecliPath+sshPortdos registros TXT.full: incluicliPath+sshPort.- O hostname usa
openclawpor padrão. Substitua comOPENCLAW_MDNS_HOSTNAME.
Wide-area (DNS-SD)
~/.openclaw/dns/. Para descoberta entre redes, combine com um servidor DNS (CoreDNS recomendado) + DNS dividido do Tailscale.
Configuração: openclaw dns setup --apply.
Ambiente
env (variáveis de ambiente inline)
- Variáveis de ambiente inline são aplicadas apenas se o ambiente do processo não tiver a chave.
- Arquivos
.env:.envdo CWD +~/.openclaw/.env(nenhum substitui variáveis existentes). shellEnv: importa chaves esperadas ausentes do perfil do seu shell de login.- Consulte Environment para a precedência completa.
Substituição de variável de ambiente
Faça referência a variáveis de ambiente em qualquer string de configuração com${VAR_NAME}:
- Apenas nomes em maiúsculas são reconhecidos:
[A-Z_][A-Z0-9_]*. - Variáveis ausentes/vazias geram erro no carregamento da configuração.
- Escape com
$${VAR}para um literal${VAR}. - Funciona com
$include.
Segredos
Referências de segredos são aditivas: valores em texto simples ainda funcionam.SecretRef
Use um formato único de objeto:
- padrão de
provider:^[a-z][a-z0-9_-]{0,63}$ - padrão de id para
source: "env":^[A-Z][A-Z0-9_]{0,127}$ - id para
source: "file": ponteiro JSON absoluto (por exemplo"/providers/openai/apiKey") - padrão de id para
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - IDs de
source: "exec"não devem conter segmentos de caminho delimitados por/iguais a.ou..(por exemploa/../bé rejeitado)
Superfície de credenciais compatível
- Matriz canônica: Superfície de credenciais SecretRef
secrets applytem como alvo caminhos de credenciais compatíveis emopenclaw.json.- Referências de
auth-profiles.jsonestão incluídas na resolução de runtime e na cobertura de auditoria.
Configuração de provedores de segredos
- O provedor
fileé compatível commode: "json"emode: "singleValue"(iddeve ser"value"no modo singleValue). - O provedor
execexige um caminhocommandabsoluto e usa cargas de protocolo em stdin/stdout. - Por padrão, caminhos de comando com symlink são rejeitados. Defina
allowSymlinkCommand: truepara permitir caminhos com symlink enquanto valida o caminho do destino resolvido. - Se
trustedDirsestiver configurado, a verificação de diretório confiável se aplica ao caminho do destino resolvido. - O ambiente do processo filho de
execé mínimo por padrão; passe explicitamente as variáveis necessárias compassEnv. - Referências de segredos são resolvidas no momento da ativação em um snapshot em memória, depois os caminhos de requisição leem apenas esse snapshot.
- A filtragem de superfície ativa se aplica durante a ativação: referências não resolvidas em superfícies habilitadas falham a inicialização/reload, enquanto superfícies inativas são ignoradas com diagnósticos.
Armazenamento de autenticação
- Perfis por agente são armazenados em
<agentDir>/auth-profiles.json. auth-profiles.jsoné compatível com referências em nível de valor (keyRefparaapi_key,tokenRefparatoken) para modos estáticos de credencial.- Perfis em modo OAuth (
auth.profiles.<id>.mode = "oauth") não oferecem suporte a credenciais de perfil de autenticação baseadas em SecretRef. - Credenciais estáticas de runtime vêm de snapshots em memória já resolvidos; entradas estáticas legadas de
auth.jsonsão removidas quando descobertas. - Importações legadas de OAuth de
~/.openclaw/credentials/oauth.json. - Consulte OAuth.
- Comportamento do runtime de segredos e ferramentas
audit/configure/apply: Gerenciamento de segredos.
auth.cooldowns
billingBackoffHours: backoff base em horas quando um perfil falha por erros reais de cobrança/crédito insuficiente (padrão:5). Texto explícito de cobrança ainda pode cair aqui mesmo em respostas401/403, mas correspondências de texto específicas do provedor continuam limitadas ao provedor ao qual pertencem (por exemplo OpenRouterKey limit exceeded). Mensagens402de janela de uso ou de limite de gasto de organização/workspace que são passíveis de nova tentativa permanecem no caminhorate_limit.billingBackoffHoursByProvider: substituições opcionais por provedor para horas de backoff de cobrança.billingMaxHours: limite máximo em horas para crescimento exponencial do backoff de cobrança (padrão:24).authPermanentBackoffMinutes: backoff base em minutos para falhasauth_permanentde alta confiança (padrão:10).authPermanentMaxMinutes: limite máximo em minutos para crescimento do backoff deauth_permanent(padrão:60).failureWindowHours: janela contínua em horas usada para contadores de backoff (padrão:24).overloadedProfileRotations: máximo de rotações de auth-profile do mesmo provedor para erros de sobrecarga antes de mudar para fallback de modelo (padrão:1). Formatos de provedor ocupado comoModelNotReadyExceptioncaem aqui.overloadedBackoffMs: atraso fixo antes de tentar novamente uma rotação de provedor/perfil sobrecarregado (padrão:0).rateLimitedProfileRotations: máximo de rotações de auth-profile do mesmo provedor para erros de limite de taxa antes de mudar para fallback de modelo (padrão:1). Esse grupo de limite de taxa inclui textos típicos de provedores comoToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceedederesource exhausted.
Logging
- Arquivo de log padrão:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Defina
logging.filepara um caminho estável. consoleLevelsobe paradebugcom--verbose.maxFileBytes: tamanho máximo do arquivo de log em bytes antes que gravações sejam suprimidas (inteiro positivo; padrão:524288000= 500 MB). Use rotação externa de logs para implantações de produção.
Diagnósticos
enabled: chave mestre para saída de instrumentação (padrão:true).flags: array de strings de flag que habilitam saída de log direcionada (compatível com curingas como"telegram.*"ou"*").stuckSessionWarnMs: limite de idade em ms para emitir avisos de sessão travada enquanto uma sessão permanece em estado de processamento.otel.enabled: habilita o pipeline de exportação OpenTelemetry (padrão:false).otel.endpoint: URL do coletor para exportação OTel.otel.protocol:"http/protobuf"(padrão) ou"grpc".otel.headers: cabeçalhos extras de metadados HTTP/gRPC enviados com requisições de exportação OTel.otel.serviceName: nome do serviço para atributos de recurso.otel.traces/otel.metrics/otel.logs: habilitam exportação de traces, métricas ou logs.otel.sampleRate: taxa de amostragem de traces0–1.otel.flushIntervalMs: intervalo periódico em ms para flush de telemetria.cacheTrace.enabled: registra snapshots de rastreamento de cache para execuções incorporadas (padrão:false).cacheTrace.filePath: caminho de saída para o JSONL de rastreamento de cache (padrão:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: controlam o que é incluído na saída de rastreamento de cache (todos usamtruepor padrão).
Atualização
channel: canal de release para instalações npm/git —"stable","beta"ou"dev".checkOnStart: verifica atualizações npm quando o gateway inicia (padrão:true).auto.enabled: habilita atualização automática em segundo plano para instalações de pacote (padrão:false).auto.stableDelayHours: atraso mínimo em horas antes da aplicação automática no canal estável (padrão:6; máximo:168).auto.stableJitterHours: janela extra em horas para distribuir o rollout do canal estável (padrão:12; máximo:168).auto.betaCheckIntervalHours: frequência em horas das verificações do canal beta (padrão:1; máximo:24).
ACP
enabled: feature gate global do ACP (padrão:false).dispatch.enabled: gate independente para despacho de turnos de sessão ACP (padrão:true). Definafalsepara manter comandos ACP disponíveis enquanto bloqueia a execução.backend: ID padrão de backend de runtime ACP (deve corresponder a um Plugin de runtime ACP registrado).defaultAgent: ID de agente ACP de fallback quando spawns não especificam um alvo explícito.allowedAgents: lista de permissões de IDs de agentes permitidos para sessões de runtime ACP; vazio significa sem restrição adicional.maxConcurrentSessions: máximo de sessões ACP ativas simultaneamente.stream.coalesceIdleMs: janela de flush ocioso em ms para texto em streaming.stream.maxChunkChars: tamanho máximo do chunk antes de dividir a projeção do bloco em streaming.stream.repeatSuppression: suprime linhas repetidas de status/ferramenta por turno (padrão:true).stream.deliveryMode:"live"transmite incrementalmente;"final_only"mantém em buffer até eventos terminais do turno.stream.hiddenBoundarySeparator: separador antes do texto visível após eventos ocultos de ferramenta (padrão:"paragraph").stream.maxOutputChars: máximo de caracteres de saída do assistente projetados por turno ACP.stream.maxSessionUpdateChars: máximo de caracteres para linhas projetadas de status/atualização ACP.stream.tagVisibility: registro de nomes de tags para substituições booleanas de visibilidade em eventos transmitidos.runtime.ttlMinutes: TTL ocioso em minutos para workers de sessão ACP antes de elegibilidade para limpeza.runtime.installCommand: comando de instalação opcional a ser executado ao inicializar um ambiente de runtime ACP.
CLI
cli.banner.taglineModecontrola o estilo da tagline do banner:"random"(padrão): taglines rotativas engraçadas/sazonais."default": tagline neutra fixa (All your chats, one OpenClaw.)."off": sem texto de tagline (o título/versão do banner ainda é exibido).
- Para ocultar o banner inteiro (não apenas as taglines), defina a variável de ambiente
OPENCLAW_HIDE_BANNER=1.
Wizard
Metadados gravados por fluxos de configuração guiada da CLI (onboard, configure, doctor):
Identidade
Consulte os campos de identidade deagents.list em Padrões do agente.
Bridge (legado, removido)
As compilações atuais não incluem mais a bridge TCP. Nodes se conectam pelo WebSocket do Gateway. Chavesbridge.* não fazem mais parte do schema de configuração (a validação falha até serem removidas; openclaw doctor --fix pode remover chaves desconhecidas).
Configuração legada de bridge (referência histórica)
Configuração legada de bridge (referência histórica)
Cron
sessionRetention: por quanto tempo manter sessões concluídas de execuções Cron isoladas antes de removê-las desessions.json. Também controla a limpeza de transcrições arquivadas excluídas do Cron. Padrão:24h; definafalsepara desativar.runLog.maxBytes: tamanho máximo por arquivo de log de execução (cron/runs/<jobId>.jsonl) antes da poda. Padrão:2_000_000bytes.runLog.keepLines: linhas mais recentes mantidas quando a poda do log de execução é disparada. Padrão:2000.webhookToken: token bearer usado para entrega POST de Webhook do Cron (delivery.mode = "webhook"); se omitido, nenhum cabeçalho de autenticação é enviado.webhook: URL de Webhook legada obsoleta (http/https) usada apenas para jobs armazenados que ainda têmnotify: true.
cron.retry
maxAttempts: máximo de tentativas para jobs únicos em erros transitórios (padrão:3; intervalo:0–10).backoffMs: array de atrasos de backoff em ms para cada tentativa (padrão:[30000, 60000, 300000]; 1–10 entradas).retryOn: tipos de erro que disparam nova tentativa —"rate_limit","overloaded","network","timeout","server_error". Omita para tentar novamente todos os tipos transitórios.
cron.failureAlert
enabled: habilita alertas de falha para jobs Cron (padrão:false).after: falhas consecutivas antes de disparar um alerta (inteiro positivo, mín.:1).cooldownMs: milissegundos mínimos entre alertas repetidos para o mesmo job (inteiro não negativo).mode: modo de entrega —"announce"envia por mensagem de canal;"webhook"faz POST para o Webhook configurado.accountId: ID opcional de conta ou canal para delimitar a entrega do alerta.
cron.failureDestination
- Destino padrão para notificações de falha de Cron em todos os jobs.
mode:"announce"ou"webhook"; usa"announce"por padrão quando existem dados de destino suficientes.channel: substituição de canal para entregaannounce."last"reutiliza o último canal de entrega conhecido.to: alvo explícito deannounceou URL de Webhook. Obrigatório para o modo Webhook.accountId: substituição opcional de conta para entrega.delivery.failureDestinationpor job substitui esse padrão global.- Quando não há destino de falha global nem por job, jobs que já entregam via
announcerecorrem a esse alvo principal deannounceem caso de falha. delivery.failureDestinationé compatível apenas com jobssessionTarget="isolated", a menos quedelivery.modeprincipal do job seja"webhook".
Variáveis de template do modelo de mídia
Placeholders de template expandidos emtools.media.models[].args:
| Variável | Descrição |
|---|---|
{{Body}} | Corpo completo da mensagem recebida |
{{RawBody}} | Corpo bruto (sem wrappers de histórico/remetente) |
{{BodyStripped}} | Corpo com menções de grupo removidas |
{{From}} | Identificador do remetente |
{{To}} | Identificador de destino |
{{MessageSid}} | ID da mensagem do canal |
{{SessionId}} | UUID da sessão atual |
{{IsNewSession}} | "true" quando uma nova sessão é criada |
{{MediaUrl}} | pseudo-URL da mídia recebida |
{{MediaPath}} | caminho local da mídia |
{{MediaType}} | tipo de mídia (image/audio/document/…) |
{{Transcript}} | transcrição do áudio |
{{Prompt}} | prompt de mídia resolvido para entradas CLI |
{{MaxChars}} | máximo de caracteres de saída resolvido para entradas CLI |
{{ChatType}} | "direct" ou "group" |
{{GroupSubject}} | assunto do grupo (melhor esforço) |
{{GroupMembers}} | prévia de membros do grupo (melhor esforço) |
{{SenderName}} | nome de exibição do remetente (melhor esforço) |
{{SenderE164}} | número de telefone do remetente (melhor esforço) |
{{Provider}} | dica de provedor (whatsapp, telegram, discord etc.) |
Inclusões de configuração ($include)
Divida a configuração em vários arquivos:
- Arquivo único: substitui o objeto que o contém.
- Array de arquivos: mesclado profundamente em ordem (os posteriores substituem os anteriores).
- Chaves irmãs: mescladas após as inclusões (substituem valores incluídos).
- Inclusões aninhadas: até 10 níveis de profundidade.
- Caminhos: resolvidos em relação ao arquivo que inclui, mas devem permanecer dentro do diretório de configuração de nível superior (
dirnamedeopenclaw.json). Formas absolutas/../são permitidas apenas quando ainda são resolvidas dentro desse limite. - Erros: mensagens claras para arquivos ausentes, erros de parse e inclusões circulares.
Relacionado: Configuration · Exemplos de configuração · Doctor