Referencia de configuración
Todos los campos disponibles en~/.openclaw/openclaw.json. Para una visión general orientada a tareas, consulta Configuración.
El formato de configuración es JSON5 (se permiten comentarios y comas finales). Todos los campos son opcionales: OpenClaw usa valores predeterminados seguros cuando se omiten.
Canales
Cada canal se inicia automáticamente cuando existe su sección de configuración (a menos queenabled: false).
Acceso a MD y grupos
Todos los canales admiten políticas de MD y políticas de grupo:| Política de MD | Comportamiento |
|---|---|
pairing (predeterminada) | Los remitentes desconocidos reciben un código de pairing de un solo uso; el propietario debe aprobarlo |
allowlist | Solo remitentes en allowFrom (o en el almacén de permitidos de pairing) |
open | Permitir todos los MD entrantes (requiere allowFrom: ["*"]) |
disabled | Ignorar todos los MD entrantes |
| Política de grupo | Comportamiento |
|---|---|
allowlist (predeterminada) | Solo grupos que coinciden con la lista de permitidos configurada |
open | Omite las listas de permitidos de grupos (el control por mención sigue aplicándose) |
disabled | Bloquea todos los mensajes de grupo/sala |
channels.defaults.groupPolicy establece el valor predeterminado cuando groupPolicy de un proveedor no está configurado.
Los códigos de pairing caducan después de 1 hora. Las solicitudes pendientes de pairing de MD están limitadas a 3 por canal.
Si falta por completo un bloque de proveedor (channels.<provider> ausente), la política de grupo en tiempo de ejecución usa como alternativa allowlist (cerrado por defecto) con una advertencia al inicio.Anulaciones de modelo por canal
Usachannels.modelByChannel para fijar ID de canal específicos a un modelo. Los valores aceptan provider/model o alias de modelo configurados. La asignación de canal se aplica cuando una sesión todavía no tiene una anulación de modelo (por ejemplo, establecida mediante /model).
Valores predeterminados de canal y heartbeat
Usachannels.defaults para compartir el comportamiento de política de grupo y heartbeat entre proveedores:
channels.defaults.groupPolicy: política de grupo de respaldo cuandogroupPolicya nivel de proveedor no está configurada.channels.defaults.contextVisibility: modo predeterminado de visibilidad de contexto suplementario para todos los canales. Valores:all(predeterminado, incluye todo el contexto citado/de hilo/historial),allowlist(solo incluye contexto de remitentes permitidos),allowlist_quote(igual que allowlist, pero conserva el contexto explícito de cita/respuesta). Anulación por canal:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: incluir estados correctos de canales en la salida de heartbeat.channels.defaults.heartbeat.showAlerts: incluir estados degradados/con errores en la salida de heartbeat.channels.defaults.heartbeat.useIndicator: renderizar la salida de heartbeat en formato compacto con indicadores.
Multi-account WhatsApp
Multi-account WhatsApp
- Los comandos salientes usan de forma predeterminada la cuenta
defaultsi existe; en caso contrario, el primer ID de cuenta configurado (ordenado). channels.whatsapp.defaultAccountopcional sobrescribe esa selección predeterminada de cuenta de respaldo cuando coincide con un ID de cuenta configurado.- El directorio heredado de autenticación Baileys de una sola cuenta se migra mediante
openclaw doctorawhatsapp/default. - Anulaciones por cuenta:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token del bot:
channels.telegram.botTokenochannels.telegram.tokenFile(solo archivo normal; se rechazan enlaces simbólicos), conTELEGRAM_BOT_TOKENcomo respaldo para la cuenta predeterminada. channels.telegram.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- En configuraciones de múltiples cuentas (2 o más ID de cuenta), configura un valor predeterminado explícito (
channels.telegram.defaultAccountochannels.telegram.accounts.default) para evitar el enrutamiento por respaldo;openclaw doctormuestra una advertencia cuando falta o no es válido. configWrites: falsebloquea las escrituras de configuración iniciadas por Telegram (migraciones de ID de supergrupo,/config set|unset).- Las entradas
bindings[]de nivel superior contype: "acp"configuran enlaces ACP persistentes para temas de foros (usa el ID canónicochatId:topic:topicIdenmatch.peer.id). La semántica de los campos se comparte en Agentes ACP. - Las vistas previas de streaming de Telegram usan
sendMessage+editMessageText(funciona en chats directos y de grupo). - Política de reintento: consulta Política de reintento.
Discord
- Token:
channels.discord.token, conDISCORD_BOT_TOKENcomo respaldo para la cuenta predeterminada. - Las llamadas salientes directas que proporcionan un
tokende Discord explícito usan ese token para la llamada; la configuración de reintento/política de la cuenta sigue viniendo de la cuenta seleccionada en la instantánea activa del entorno de ejecución. channels.discord.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- Usa
user:<id>(MD) ochannel:<id>(canal del servidor) para los destinos de entrega; los ID numéricos sin prefijo se rechazan. - Los slugs de los servidores van en minúsculas con espacios reemplazados por
-; las claves de canal usan el nombre convertido en slug (sin#). Prefiere ID de servidor. - Los mensajes escritos por bots se ignoran de forma predeterminada.
allowBots: truelos habilita; usaallowBots: "mentions"para aceptar solo mensajes de bots que mencionen al bot (los mensajes propios siguen filtrados). channels.discord.guilds.<id>.ignoreOtherMentions(y las anulaciones por canal) descarta mensajes que mencionan a otro usuario o rol pero no al bot (excluyendo @everyone/@here).maxLinesPerMessage(predeterminado 17) divide mensajes altos incluso cuando están por debajo de 2000 caracteres.channels.discord.threadBindingscontrola el enrutamiento vinculado a hilos de Discord:enabled: anulación de Discord para funciones de sesión vinculadas a hilos (/focus,/unfocus,/agents,/session idle,/session max-agey entrega/enrutamiento vinculados)idleHours: anulación de Discord para desfocalización automática por inactividad en horas (0desactiva)maxAgeHours: anulación de Discord para edad máxima estricta en horas (0desactiva)spawnSubagentSessions: interruptor optativo para la creación/enlace automático de hilos desessions_spawn({ thread: true })
- Las entradas
bindings[]de nivel superior contype: "acp"configuran enlaces ACP persistentes para canales e hilos (usa el ID de canal/hilo enmatch.peer.id). La semántica de los campos se comparte en Agentes ACP. channels.discord.ui.components.accentColorestablece el color de acento para los contenedores de componentes v2 de Discord.channels.discord.voicehabilita conversaciones en canales de voz de Discord y anulaciones opcionales de auto-join + TTS.channels.discord.voice.daveEncryptionychannels.discord.voice.decryptionFailureTolerancese transfieren a las opciones DAVE de@discordjs/voice(truey24de forma predeterminada).- OpenClaw también intenta recuperar la recepción de voz saliendo y volviendo a unirse a una sesión de voz después de fallos repetidos de descifrado.
channels.discord.streaminges la clave canónica del modo de streaming. Los valores heredadosstreamModey booleanosstreamingse migran automáticamente.channels.discord.autoPresenceasigna la disponibilidad del entorno de ejecución a la presencia del bot (saludable => online, degradado => idle, agotado => dnd) y permite anulaciones opcionales del texto de estado.channels.discord.dangerouslyAllowNameMatchingvuelve a habilitar la coincidencia mutable por nombre/tag (modo de compatibilidad de emergencia).channels.discord.execApprovals: entrega nativa de aprobaciones de ejecución de Discord y autorización de aprobadores.enabled:true,falseo"auto"(predeterminado). En modo auto, las aprobaciones de ejecución se activan cuando se pueden resolver aprobadores desdeapproversocommands.ownerAllowFrom.approvers: ID de usuario de Discord autorizados para aprobar solicitudes de ejecución. Recurre acommands.ownerAllowFromcuando se omite.agentFilter: lista de permitidos opcional de ID de agente. Omítela para reenviar aprobaciones para todos los agentes.sessionFilter: patrones opcionales de clave de sesión (subcadena o regex).target: dónde enviar solicitudes de aprobación."dm"(predeterminado) las envía a los MD de aprobadores,"channel"al canal de origen,"both"a ambos. Cuando el destino incluye"channel", los botones solo pueden ser usados por aprobadores resueltos.cleanupAfterResolve: cuando estrue, elimina los MD de aprobación tras la aprobación, denegación o expiración.
off (ninguna), own (mensajes del bot, predeterminado), all (todos los mensajes), allowlist (de guilds.<id>.users en todos los mensajes).
Google Chat
- JSON de cuenta de servicio: en línea (
serviceAccount) o basado en archivo (serviceAccountFile). - También se admite SecretRef para la cuenta de servicio (
serviceAccountRef). - Variables de entorno de respaldo:
GOOGLE_CHAT_SERVICE_ACCOUNToGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Usa
spaces/<spaceId>ousers/<userId>para destinos de entrega. channels.googlechat.dangerouslyAllowNameMatchingvuelve a habilitar la coincidencia mutable por principal de correo electrónico (modo de compatibilidad de emergencia).
Slack
- Socket mode requiere tanto
botTokencomoappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENcomo respaldo de variables de entorno de la cuenta predeterminada). - HTTP mode requiere
botTokenmássigningSecret(en la raíz o por cuenta). botToken,appToken,signingSecretyuserTokenaceptan cadenas en texto plano u objetos SecretRef.- Las instantáneas de cuentas de Slack exponen campos por credencial de fuente/estado como
botTokenSource,botTokenStatus,appTokenStatusy, en HTTP mode,signingSecretStatus.configured_unavailablesignifica que la cuenta está configurada mediante SecretRef, pero la ruta actual de comando/ejecución no pudo resolver el valor del secreto. configWrites: falsebloquea las escrituras de configuración iniciadas por Slack.channels.slack.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.channels.slack.streaminges la clave canónica del modo de streaming. Los valores heredadosstreamModey booleanosstreamingse migran automáticamente.- Usa
user:<id>(MD) ochannel:<id>para destinos de entrega.
off, own (predeterminado), all, allowlist (de reactionAllowlist).
Aislamiento de sesión por hilo: thread.historyScope es por hilo (predeterminado) o compartido en el canal. thread.inheritParent copia la transcripción del canal principal a los nuevos hilos.
typingReactionañade una reacción temporal al mensaje entrante de Slack mientras se ejecuta una respuesta, y luego la elimina al completarse. Usa un shortcode de emoji de Slack como"hourglass_flowing_sand".channels.slack.execApprovals: entrega nativa de aprobaciones de ejecución de Slack y autorización de aprobadores. Mismo esquema que Discord:enabled(true/false/"auto"),approvers(ID de usuario de Slack),agentFilter,sessionFilterytarget("dm","channel"o"both").
| Grupo de acciones | Predeterminado | Notas |
|---|---|---|
| reactions | habilitado | Reaccionar + listar reacciones |
| messages | habilitado | Leer/enviar/editar/eliminar |
| pins | habilitado | Fijar/desfijar/listar |
| memberInfo | habilitado | Información de miembro |
| emojiList | habilitado | Lista de emoji personalizados |
Mattermost
Mattermost se distribuye como plugin:openclaw plugins install @openclaw/mattermost.
oncall (responde al @-mention, predeterminado), onmessage (cada mensaje), onchar (mensajes que empiezan con un prefijo disparador).
Cuando los comandos nativos de Mattermost están habilitados:
commands.callbackPathdebe ser una ruta (por ejemplo/api/channels/mattermost/command), no una URL completa.commands.callbackUrldebe resolverse al endpoint del gateway de OpenClaw y debe ser accesible desde el servidor de Mattermost.- Los callbacks nativos de slash están autenticados con los tokens por comando devueltos
por Mattermost durante el registro del slash command. Si el registro falla o no
se activa ningún comando, OpenClaw rechaza los callbacks con
Unauthorized: invalid command token. - Para hosts de callback privados/tailnet/internos, Mattermost puede requerir
que
ServiceSettings.AllowedUntrustedInternalConnectionsincluya el host/dominio del callback. Usa valores de host/dominio, no URL completas. channels.mattermost.configWrites: permitir o denegar escrituras de configuración iniciadas por Mattermost.channels.mattermost.requireMention: requerir@mentionantes de responder en canales.channels.mattermost.groups.<channelId>.requireMention: anulación por canal del control por mención ("*"para el valor predeterminado).channels.mattermost.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.
Signal
off, own (predeterminado), all, allowlist (de reactionAllowlist).
channels.signal.account: fija el inicio del canal a una identidad específica de cuenta Signal.channels.signal.configWrites: permitir o denegar escrituras de configuración iniciadas por Signal.channels.signal.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.
BlueBubbles
BlueBubbles es la ruta recomendada para iMessage (respaldada por plugin, configurada enchannels.bluebubbles).
- Rutas clave principales cubiertas aquí:
channels.bluebubbles,channels.bluebubbles.dmPolicy. channels.bluebubbles.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- Las entradas
bindings[]de nivel superior contype: "acp"pueden enlazar conversaciones de BlueBubbles a sesiones ACP persistentes. Usa un handle o cadena de destino de BlueBubbles (chat_id:*,chat_guid:*,chat_identifier:*) enmatch.peer.id. Semántica compartida de campos: Agentes ACP. - La configuración completa del canal BlueBubbles está documentada en BlueBubbles.
iMessage
OpenClaw iniciaimsg rpc (JSON-RPC sobre stdio). No requiere daemon ni puerto.
-
channels.imessage.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado. - Requiere Full Disk Access a la base de datos de Messages.
-
Prefiere destinos
chat_id:<id>. Usaimsg chats --limit 20para listar chats. -
cliPathpuede apuntar a un wrapper SSH; configuraremoteHost(hostouser@host) para obtener adjuntos por SCP. -
attachmentRootsyremoteAttachmentRootsrestringen las rutas de adjuntos entrantes (predeterminado:/Users/*/Library/Messages/Attachments). -
SCP usa verificación estricta de claves de host, así que asegúrate de que la clave del host relay ya exista en
~/.ssh/known_hosts. -
channels.imessage.configWrites: permitir o denegar escrituras de configuración iniciadas por iMessage. -
Las entradas
bindings[]de nivel superior contype: "acp"pueden enlazar conversaciones de iMessage a sesiones ACP persistentes. Usa un handle normalizado o un destino de chat explícito (chat_id:*,chat_guid:*,chat_identifier:*) enmatch.peer.id. Semántica compartida de campos: Agentes ACP.
iMessage SSH wrapper example
iMessage SSH wrapper example
Matrix
Matrix está respaldado por extensión y configurado enchannels.matrix.
- La autenticación por token usa
accessToken; la autenticación por contraseña usauserId+password. channels.matrix.proxyenruta el tráfico HTTP de Matrix mediante un proxy HTTP(S) explícito. Las cuentas con nombre pueden sobrescribirlo conchannels.matrix.accounts.<id>.proxy.channels.matrix.allowPrivateNetworkpermite homeservers privados/internos.proxyyallowPrivateNetworkson controles independientes.channels.matrix.defaultAccountselecciona la cuenta preferida en configuraciones de múltiples cuentas.channels.matrix.execApprovals: entrega nativa de aprobaciones de ejecución de Matrix y autorización de aprobadores.enabled:true,falseo"auto"(predeterminado). En modo auto, las aprobaciones de ejecución se activan cuando se pueden resolver aprobadores desdeapproversocommands.ownerAllowFrom.approvers: ID de usuario de Matrix (por ejemplo@owner:example.org) autorizados para aprobar solicitudes de ejecución.agentFilter: lista de permitidos opcional de ID de agente. Omítela para reenviar aprobaciones para todos los agentes.sessionFilter: patrones opcionales de clave de sesión (subcadena o regex).target: dónde enviar solicitudes de aprobación."dm"(predeterminado),"channel"(sala de origen) o"both".- Anulaciones por cuenta:
channels.matrix.accounts.<id>.execApprovals.
- Los sondeos de estado de Matrix y las búsquedas en directorio en vivo usan la misma política de proxy que el tráfico del entorno de ejecución.
- La configuración completa de Matrix, reglas de destino y ejemplos de configuración están documentados en Matrix.
Microsoft Teams
Microsoft Teams está respaldado por extensión y configurado enchannels.msteams.
- Rutas clave principales cubiertas aquí:
channels.msteams,channels.msteams.configWrites. - La configuración completa de Teams (credenciales, webhook, política de MD/grupos, anulaciones por equipo/por canal) está documentada en Microsoft Teams.
IRC
IRC está respaldado por extensión y configurado enchannels.irc.
- Rutas clave principales cubiertas aquí:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountopcional sobrescribe la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- La configuración completa del canal IRC (host/puerto/TLS/canales/listas de permitidos/control por mención) está documentada en IRC.
Multi-account (todos los canales)
Ejecuta múltiples cuentas por canal (cada una con su propioaccountId):
defaultse usa cuando se omiteaccountId(CLI + enrutamiento).- Los tokens de entorno solo se aplican a la cuenta default.
- La configuración base del canal se aplica a todas las cuentas salvo que se sobrescriba por cuenta.
- Usa
bindings[].match.accountIdpara enrutar cada cuenta a un agente diferente. - Si añades una cuenta que no sea predeterminada mediante
openclaw channels add(o mediante onboarding del canal) mientras sigues con una configuración de canal de nivel superior de una sola cuenta, OpenClaw primero promueve los valores de nivel superior de esa cuenta individual al mapa de cuentas del canal para que la cuenta original siga funcionando. La mayoría de los canales los mueven achannels.<channel>.accounts.default; Matrix puede conservar un destino con nombre/default existente que coincida. - Los enlaces existentes solo de canal (sin
accountId) siguen coincidiendo con la cuenta predeterminada; los enlaces con alcance de cuenta siguen siendo opcionales. openclaw doctor --fixtambién repara formas mixtas moviendo los valores de nivel superior de una sola cuenta con alcance de cuenta a la cuenta promovida elegida para ese canal. La mayoría de los canales usanaccounts.default; Matrix puede conservar un destino con nombre/default existente que coincida.
Otros canales de extensión
Muchos canales de extensión se configuran comochannels.<id> y están documentados en sus páginas dedicadas de canal (por ejemplo Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat y Twitch).
Consulta el índice completo de canales: Canales.
Control por mención en chats de grupo
Los mensajes de grupo requieren mención de forma predeterminada (mención en metadatos o patrones regex seguros). Se aplica a chats de grupo de WhatsApp, Telegram, Discord, Google Chat e iMessage. Tipos de mención:- Menciones de metadatos: @-mentions nativos de la plataforma. Se ignoran en modo self-chat de WhatsApp.
- Patrones de texto: patrones regex seguros en
agents.list[].groupChat.mentionPatterns. Los patrones no válidos y la repetición anidada insegura se ignoran. - El control por mención solo se aplica cuando la detección es posible (menciones nativas o al menos un patrón).
messages.groupChat.historyLimit establece el valor predeterminado global. Los canales pueden sobrescribirlo con channels.<channel>.historyLimit (o por cuenta). Configura 0 para desactivar.
Límites de historial de MD
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modo self-chat
Incluye tu propio número enallowFrom para habilitar el modo self-chat (ignora @-mentions nativos, solo responde a patrones de texto):
Comandos (manejo de comandos de chat)
Command details
Command details
- Los comandos de texto deben ser mensajes independientes con
/al inicio. native: "auto"activa comandos nativos para Discord/Telegram, deja Slack desactivado.- Anulación por canal:
channels.discord.commands.native(bool o"auto").falseborra comandos registrados previamente. channels.telegram.customCommandsañade entradas extra al menú del bot de Telegram.bash: truehabilita! <cmd>para el shell del host. Requieretools.elevated.enabledy que el remitente esté entools.elevated.allowFrom.<channel>.config: truehabilita/config(lee/escribeopenclaw.json). Para clienteschat.senddel gateway, las escrituras persistentes de/config set|unsettambién requierenoperator.admin;/config showde solo lectura sigue disponible para clientes operator normales con alcance de escritura.channels.<provider>.configWritescontrola mutaciones de configuración por canal (predeterminado: true).- Para canales de múltiples cuentas,
channels.<provider>.accounts.<id>.configWritestambién controla escrituras dirigidas a esa cuenta (por ejemplo/allowlist --config --account <id>o/config set channels.<provider>.accounts.<id>...). allowFromes por proveedor. Cuando está configurado, es la única fuente de autorización (las listas de permitidos/pairing del canal yuseAccessGroupsse ignoran).useAccessGroups: falsepermite que los comandos omitan las políticas de grupos de acceso cuandoallowFromno está configurado.
Valores predeterminados de agentes
agents.defaults.workspace
Predeterminado: ~/.openclaw/workspace.
agents.defaults.repoRoot
Raíz opcional del repositorio que se muestra en la línea Runtime del prompt del sistema. Si no está configurada, OpenClaw la detecta automáticamente recorriendo hacia arriba desde el espacio de trabajo.
agents.defaults.skills
Lista de permitidos predeterminada opcional de Skills para agentes que no configuran
agents.list[].skills.
- Omite
agents.defaults.skillspara que las Skills no tengan restricciones de forma predeterminada. - Omite
agents.list[].skillspara heredar los valores predeterminados. - Configura
agents.list[].skills: []para no tener Skills. - Una lista no vacía en
agents.list[].skillses el conjunto final para ese agente; no se combina con los valores predeterminados.
agents.defaults.skipBootstrap
Deshabilita la creación automática de archivos bootstrap del espacio de trabajo (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.bootstrapMaxChars
Máximo de caracteres por archivo bootstrap del espacio de trabajo antes del truncamiento. Predeterminado: 20000.
agents.defaults.bootstrapTotalMaxChars
Máximo total de caracteres inyectados entre todos los archivos bootstrap del espacio de trabajo. Predeterminado: 150000.
agents.defaults.bootstrapPromptTruncationWarning
Controla el texto de advertencia visible para el agente cuando el contexto bootstrap se trunca.
Predeterminado: "once".
"off": nunca inyecta texto de advertencia en el prompt del sistema."once": inyecta la advertencia una vez por cada firma de truncamiento única (recomendado)."always": inyecta la advertencia en cada ejecución cuando exista truncamiento.
agents.defaults.imageMaxDimensionPx
Tamaño máximo en píxeles para el lado más largo de la imagen en bloques de imagen de transcripción/herramientas antes de las llamadas al proveedor.
Predeterminado: 1200.
Los valores más bajos suelen reducir el uso de tokens de visión y el tamaño de la carga de la solicitud en ejecuciones con muchas capturas de pantalla.
Los valores más altos conservan más detalle visual.
agents.defaults.userTimezone
Zona horaria para el contexto del prompt del sistema (no para marcas de tiempo de mensajes). Usa como respaldo la zona horaria del host.
agents.defaults.timeFormat
Formato de hora en el prompt del sistema. Predeterminado: auto (preferencia del SO).
agents.defaults.model
model: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- La forma de cadena establece solo el modelo principal.
- La forma de objeto establece el principal más los modelos de failover ordenados.
imageModel: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- Lo usa la ruta de la herramienta
imagecomo su configuración de modelo de visión. - También se usa como enrutamiento de respaldo cuando el modelo seleccionado/predeterminado no puede aceptar entrada de imágenes.
- Lo usa la ruta de la herramienta
imageGenerationModel: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- Lo usa la capacidad compartida de generación de imágenes y cualquier futura superficie de herramienta/plugin que genere imágenes.
- Valores típicos:
google/gemini-3.1-flash-image-previewpara generación nativa de imágenes con Gemini,fal/fal-ai/flux/devpara fal, oopenai/gpt-image-1para OpenAI Images. - Si seleccionas directamente un proveedor/modelo, configura también la autenticación/clave de API correspondiente del proveedor (por ejemplo
GEMINI_API_KEYoGOOGLE_API_KEYparagoogle/*,OPENAI_API_KEYparaopenai/*,FAL_KEYparafal/*). - Si se omite,
image_generateaún puede inferir un valor predeterminado del proveedor respaldado por autenticación. Primero prueba el proveedor predeterminado actual y luego los proveedores restantes registrados de generación de imágenes en orden de ID de proveedor.
videoGenerationModel: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- Lo usa la capacidad compartida de generación de vídeo.
- Valores típicos:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashoqwen/wan2.7-r2v. - Configúralo explícitamente antes de usar la generación de vídeo compartida. A diferencia de
imageGenerationModel, el entorno de ejecución de generación de vídeo todavía no infiere un proveedor predeterminado. - Si seleccionas directamente un proveedor/modelo, configura también la autenticación/clave de API correspondiente del proveedor.
- El proveedor integrado de generación de vídeo de Qwen actualmente admite hasta 1 vídeo de salida, 1 imagen de entrada, 4 vídeos de entrada, 10 segundos de duración y opciones a nivel de proveedor
size,aspectRatio,resolution,audioywatermark.
pdfModel: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- Lo usa la herramienta
pdfpara el enrutamiento de modelos. - Si se omite, la herramienta PDF recurre a
imageModely luego al modelo resuelto de la sesión/predeterminado.
- Lo usa la herramienta
pdfMaxBytesMb: límite de tamaño PDF predeterminado para la herramientapdfcuando no se pasamaxBytesMbal llamar a la herramienta.pdfMaxPages: máximo predeterminado de páginas consideradas por el modo de respaldo de extracción en la herramientapdf.verboseDefault: nivel verbose predeterminado para agentes. Valores:"off","on","full". Predeterminado:"off".elevatedDefault: nivel predeterminado de salida elevada para agentes. Valores:"off","on","ask","full". Predeterminado:"on".model.primary: formatoprovider/model(por ejemploopenai/gpt-5.4). Si omites el proveedor, OpenClaw intenta primero un alias, luego una coincidencia única de proveedor configurado para ese ID de modelo exacto, y solo entonces recurre al proveedor predeterminado configurado (comportamiento heredado en desuso, así que prefiereprovider/modelexplícito). Si ese proveedor ya no expone el modelo predeterminado configurado, OpenClaw recurre al primer proveedor/modelo configurado en lugar de mostrar un valor predeterminado obsoleto de un proveedor eliminado.models: el catálogo de modelos configurado y la lista de permitidos para/model. Cada entrada puede incluiralias(atajo) yparams(específicos del proveedor, por ejemplotemperature,maxTokens,cacheRetention,context1m).params: parámetros globales predeterminados del proveedor aplicados a todos los modelos. Configúralos enagents.defaults.params(por ejemplo{ cacheRetention: "long" }).- Precedencia de combinación de
params(configuración):agents.defaults.params(base global) es sobrescrito poragents.defaults.models["provider/model"].params(por modelo), luegoagents.list[].params(ID de agente coincidente) sobrescribe por clave. Consulta Prompt Caching para más detalles. - Los escritores de configuración que mutan estos campos (por ejemplo
/models set,/models set-imagey comandos add/remove de fallback) guardan la forma canónica de objeto y conservan las listas de fallback existentes cuando es posible. maxConcurrent: máximo de ejecuciones paralelas de agentes entre sesiones (cada sesión sigue serializada). Predeterminado: 4.
agents.defaults.models):
| Alias | Modelo |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off o definas agents.defaults.models["zai/<model>"].params.thinking tú mismo.
Los modelos Z.AI habilitan tool_stream de forma predeterminada para el streaming de llamadas a herramientas. Configura agents.defaults.models["zai/<model>"].params.tool_stream en false para desactivarlo.
Los modelos Claude 4.6 de Anthropic usan adaptive thinking de forma predeterminada cuando no se establece un nivel explícito de thinking.
agents.defaults.cliBackends
Backends CLI opcionales para ejecuciones de respaldo solo de texto (sin llamadas a herramientas). Son útiles como respaldo cuando fallan los proveedores de API.
- Los backends CLI están orientados primero al texto; las herramientas siempre están deshabilitadas.
- Se admiten sesiones cuando
sessionArgestá configurado. - Se admite paso directo de imágenes cuando
imageArgacepta rutas de archivo.
agents.defaults.heartbeat
Ejecuciones periódicas de heartbeat.
every: cadena de duración (ms/s/m/h). Predeterminado:30m(autenticación con clave de API) o1h(autenticación OAuth). Configura0mpara desactivar.suppressToolErrorWarnings: cuando es true, suprime las cargas útiles de advertencia de error de herramienta durante ejecuciones de heartbeat.directPolicy: política de entrega directa/MD.allow(predeterminado) permite entrega a destinos directos.blocksuprime la entrega a destinos directos y emitereason=dm-blocked.lightContext: cuando es true, las ejecuciones de heartbeat usan contexto bootstrap liviano y conservan soloHEARTBEAT.mdde los archivos bootstrap del espacio de trabajo.isolatedSession: cuando es true, cada ejecución de heartbeat se realiza en una sesión nueva sin historial de conversación previo. Mismo patrón de aislamiento que cronsessionTarget: "isolated". Reduce el costo de tokens por heartbeat de ~100K a ~2-5K tokens.- Por agente: configura
agents.list[].heartbeat. Cuando algún agente defineheartbeat, solo esos agentes ejecutan heartbeats. - Los heartbeats ejecutan turnos completos de agente: los intervalos más cortos consumen más tokens.
agents.defaults.compaction
mode:defaultosafeguard(resumen por bloques para historiales largos). Consulta Compactación.timeoutSeconds: máximo de segundos permitidos para una sola operación de compactación antes de que OpenClaw la aborte. Predeterminado:900.identifierPolicy:strict(predeterminado),offocustom.strictantepone orientación integrada de conservación de identificadores opacos durante el resumen de compactación.identifierInstructions: texto opcional personalizado de preservación de identificadores usado cuandoidentifierPolicy=custom.postCompactionSections: nombres opcionales de secciones H2/H3 de AGENTS.md para reinyectar después de la compactación. Predeterminado:["Session Startup", "Red Lines"]; configura[]para desactivar la reinyección. Cuando no está configurado o se establece explícitamente en ese par predeterminado, también se aceptan los encabezados antiguosEvery Session/Safetycomo respaldo heredado.model: anulación opcionalprovider/model-idsolo para el resumen de compactación. Úsalo cuando la sesión principal deba mantener un modelo pero los resúmenes de compactación deban ejecutarse en otro; si no se configura, la compactación usa el modelo principal de la sesión.notifyUser: cuando estrue, envía un aviso breve al usuario cuando empieza la compactación (por ejemplo, “Compacting context…”). Está desactivado de forma predeterminada para mantener la compactación silenciosa.memoryFlush: turno agéntico silencioso antes de la compactación automática para almacenar memorias duraderas. Se omite cuando el espacio de trabajo es de solo lectura.
agents.defaults.contextPruning
Poda resultados antiguos de herramientas del contexto en memoria antes de enviarlo al LLM. No modifica el historial de sesión en disco.
cache-ttl mode behavior
cache-ttl mode behavior
mode: "cache-ttl"habilita pasadas de poda.ttlcontrola con qué frecuencia puede volver a ejecutarse la poda (después del último toque de caché).- La poda primero recorta suavemente resultados sobredimensionados de herramientas y luego vacía por completo los resultados de herramientas más antiguos si es necesario.
... en el medio.Hard-clear reemplaza todo el resultado de la herramienta por el marcador.Notas:- Los bloques de imagen nunca se recortan ni vacían.
- Las proporciones se basan en caracteres (aproximadas), no en conteos exactos de tokens.
- Si existen menos de
keepLastAssistantsmensajes del asistente, se omite la poda.
Block streaming
- Los canales que no son Telegram requieren
*.blockStreaming: trueexplícito para habilitar respuestas por bloques. - Anulaciones por canal:
channels.<channel>.blockStreamingCoalesce(y variantes por cuenta). Signal/Slack/Discord/Google Chat usanminChars: 1500de forma predeterminada. humanDelay: pausa aleatoria entre respuestas por bloques.natural= 800–2500 ms. Anulación por agente:agents.list[].humanDelay.
Indicadores de escritura
- Valores predeterminados:
instantpara chats directos/menciones,messagepara chats de grupo sin mención. - Anulaciones por sesión:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Sandboxing opcional para el agente integrado. Consulta Sandboxing para la guía completa.
Sandbox details
Sandbox details
Backend:Modo OpenShell:
docker: entorno local de Docker (predeterminado)ssh: entorno remoto genérico respaldado por SSHopenshell: entorno OpenShell
backend: "openshell", los ajustes específicos del entorno de ejecución pasan a
plugins.entries.openshell.config.Configuración del backend SSH:target: destino SSH con formatouser@host[:port]command: comando del cliente SSH (predeterminado:ssh)workspaceRoot: raíz remota absoluta usada para espacios de trabajo por alcanceidentityFile/certificateFile/knownHostsFile: archivos locales existentes pasados a OpenSSHidentityData/certificateData/knownHostsData: contenidos en línea o SecretRefs que OpenClaw materializa en archivos temporales en tiempo de ejecuciónstrictHostKeyChecking/updateHostKeys: opciones de política de claves de host de OpenSSH
identityDatatiene prioridad sobreidentityFilecertificateDatatiene prioridad sobrecertificateFileknownHostsDatatiene prioridad sobreknownHostsFile- Los valores
*Datarespaldados por SecretRef se resuelven desde la instantánea activa del entorno de secretos antes de que comience la sesión sandbox
- siembra el espacio de trabajo remoto una vez después de crear o recrear
- luego mantiene canónico el espacio de trabajo SSH remoto
- enruta
exec, las herramientas de archivos y rutas de medios por SSH - no sincroniza automáticamente cambios remotos de vuelta al host
- no admite contenedores de navegador sandbox
none: espacio de trabajo sandbox por alcance en~/.openclaw/sandboxesro: espacio de trabajo sandbox en/workspace, espacio de trabajo del agente montado como solo lectura en/agentrw: espacio de trabajo del agente montado con lectura/escritura en/workspace
session: contenedor + espacio de trabajo por sesiónagent: un contenedor + espacio de trabajo por agente (predeterminado)shared: contenedor y espacio de trabajo compartidos (sin aislamiento entre sesiones)
mirror: siembra el remoto desde el local antes de exec, sincroniza de vuelta tras exec; el espacio de trabajo local sigue siendo canónicoremote: siembra el remoto una vez cuando se crea el sandbox, luego mantiene canónico el espacio de trabajo remoto
remote, las ediciones locales del host hechas fuera de OpenClaw no se sincronizan automáticamente con el sandbox después del paso de siembra.
El transporte es SSH dentro del sandbox de OpenShell, pero el plugin posee el ciclo de vida del sandbox y la sincronización mirror opcional.setupCommand se ejecuta una vez después de crear el contenedor (mediante sh -lc). Necesita salida de red, raíz con escritura y usuario root.Los contenedores usan network: "none" de forma predeterminada: configúralo en "bridge" (o una red bridge personalizada) si el agente necesita acceso saliente.
"host" está bloqueado. "container:<id>" está bloqueado de forma predeterminada salvo que configures explícitamente
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (emergencia).Los adjuntos entrantes se preparan en media/inbound/* en el espacio de trabajo activo.docker.binds monta directorios adicionales del host; los binds globales y por agente se combinan.Navegador sandbox (sandbox.browser.enabled): Chromium + CDP en un contenedor. La URL de noVNC se inyecta en el prompt del sistema. No requiere browser.enabled en openclaw.json.
El acceso de observación noVNC usa autenticación VNC de forma predeterminada y OpenClaw emite una URL con token de corta duración (en lugar de exponer la contraseña en la URL compartida).allowHostControl: false(predeterminado) bloquea que las sesiones sandbox apunten al navegador del host.networkusaopenclaw-sandbox-browserde forma predeterminada (red bridge dedicada). Configúralo enbridgesolo cuando quieras explícitamente conectividad global del bridge.cdpSourceRangeopcionalmente restringe el ingreso a CDP en el borde del contenedor a un rango CIDR (por ejemplo172.21.0.1/32).sandbox.browser.bindsmonta directorios adicionales del host solo dentro del contenedor del navegador sandbox. Cuando se configura (incluido[]), reemplazadocker.bindspara el contenedor del navegador.- Los valores de inicio predeterminados están definidos en
scripts/sandbox-browser-entrypoint.shy ajustados para hosts con contenedores:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(habilitado por defecto)--disable-3d-apis,--disable-software-rasterizery--disable-gpuestán habilitados por defecto y pueden deshabilitarse conOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0si el uso de WebGL/3D lo requiere.OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0vuelve a habilitar extensiones si tu flujo de trabajo depende de ellas.--renderer-process-limit=2puede cambiarse conOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; configura0para usar el límite predeterminado de procesos de Chromium.- además de
--no-sandboxy--disable-setuid-sandboxcuandonoSandboxestá habilitado. - Los valores predeterminados son la línea base de la imagen del contenedor; usa una imagen de navegador personalizada con un entrypoint personalizado para cambiar los valores predeterminados del contenedor.
sandbox.docker.binds actualmente son solo para Docker.
Compila las imágenes:
agents.list (anulaciones por agente)
id: ID estable del agente (obligatorio).default: cuando se configuran varios, el primero gana (se registra advertencia). Si no se configura ninguno, la primera entrada de la lista es la predeterminada.model: la forma de cadena sobrescribe soloprimary; la forma de objeto{ primary, fallbacks }sobrescribe ambos ([]desactiva los fallbacks globales). Los trabajos cron que solo sobrescribenprimarysiguen heredando los fallbacks predeterminados salvo que configuresfallbacks: [].params: parámetros de flujo por agente combinados sobre la entrada de modelo seleccionada enagents.defaults.models. Úsalo para anulaciones específicas del agente comocacheRetention,temperatureomaxTokenssin duplicar todo el catálogo de modelos.skills: lista de permitidos opcional de Skills por agente. Si se omite, el agente heredaagents.defaults.skillscuando está configurado; una lista explícita reemplaza los valores predeterminados en lugar de combinarlos, y[]significa sin Skills.thinkingDefault: valor predeterminado opcional de thinking por agente (off | minimal | low | medium | high | xhigh | adaptive). Sobrescribeagents.defaults.thinkingDefaultpara este agente cuando no se ha establecido una anulación por mensaje o sesión.reasoningDefault: visibilidad predeterminada opcional de reasoning por agente (on | off | stream). Se aplica cuando no se ha establecido una anulación de reasoning por mensaje o sesión.fastModeDefault: valor predeterminado opcional por agente para fast mode (true | false). Se aplica cuando no se ha establecido una anulación por mensaje o sesión.runtime: descriptor opcional del entorno de ejecución por agente. Usatype: "acp"con valores predeterminadosruntime.acp(agent,backend,mode,cwd) cuando el agente deba usar por defecto sesiones de arnés ACP.identity.avatar: ruta relativa al espacio de trabajo, URLhttp(s)o URIdata:.identityderiva valores predeterminados:ackReactiondeemoji,mentionPatternsdename/emoji.subagents.allowAgents: lista de permitidos de ID de agente parasessions_spawn(["*"]= cualquiera; predeterminado: solo el mismo agente).- Protección de herencia del sandbox: si la sesión solicitante está en sandbox,
sessions_spawnrechaza destinos que se ejecutarían sin sandbox. subagents.requireAgentId: cuando es true, bloquea llamadas asessions_spawnque omitanagentId(fuerza selección explícita de perfil; predeterminado: false).
Enrutamiento multiagente
Ejecuta múltiples agentes aislados dentro de un mismo Gateway. Consulta Multi-Agent.Campos match del binding
type(opcional):routepara enrutamiento normal (si faltatype, usa route por defecto),acppara enlaces ACP persistentes de conversación.match.channel(obligatorio)match.accountId(opcional;*= cualquier cuenta; omitido = cuenta predeterminada)match.peer(opcional;{ kind: direct|group|channel, id })match.guildId/match.teamId(opcional; específicos del canal)acp(opcional; solo para entradastype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(exacto, sin peer/guild/team)match.accountId: "*"(a nivel de canal)- Agente predeterminado
bindings que coincide.
Para las entradas type: "acp", OpenClaw resuelve por identidad exacta de conversación (match.channel + cuenta + match.peer.id) y no usa el orden de niveles de route anterior.
Perfiles de acceso por agente
Full access (no sandbox)
Full access (no sandbox)
Read-only tools + workspace
Read-only tools + workspace
No filesystem access (messaging only)
No filesystem access (messaging only)
Sesión
Session field details
Session field details
scope: estrategia base de agrupación de sesión para contextos de chat de grupo.per-sender(predeterminado): cada remitente tiene una sesión aislada dentro de un contexto de canal.global: todos los participantes de un contexto de canal comparten una sola sesión (úsalo solo cuando se pretenda contexto compartido).
dmScope: cómo se agrupan los MD.main: todos los MD comparten la sesión principal.per-peer: aislar por ID de remitente entre canales.per-channel-peer: aislar por canal + remitente (recomendado para bandejas de entrada multiusuario).per-account-channel-peer: aislar por cuenta + canal + remitente (recomendado para múltiples cuentas).
identityLinks: asigna ID canónicos a peers con prefijo de proveedor para compartir sesiones entre canales.reset: política principal de reinicio.dailyreinicia a laatHouren hora local;idlereinicia trasidleMinutes. Cuando ambos están configurados, gana el que expire primero.resetByType: anulaciones por tipo (direct,group,thread). Se acepta el heredadodmcomo alias dedirect.parentForkMaxTokens: máximo detotalTokenspermitido en la sesión padre al crear una sesión de hilo bifurcada (predeterminado100000).- Si
totalTokensdel padre está por encima de este valor, OpenClaw inicia una sesión de hilo nueva en lugar de heredar el historial de la transcripción padre. - Configura
0para desactivar esta protección y permitir siempre la bifurcación desde el padre.
- Si
mainKey: campo heredado. El entorno de ejecución ahora siempre usa"main"para el bucket principal de chat directo.agentToAgent.maxPingPongTurns: máximo de turnos de respuesta entre agentes durante intercambios agente a agente (entero, rango:0–5).0desactiva el encadenamiento ping-pong.sendPolicy: coincide porchannel,chatType(direct|group|channel, con alias heredadodm),keyPrefixorawKeyPrefix. La primera denegación gana.maintenance: controles de limpieza y retención del almacén de sesiones.mode:warnsolo emite advertencias;enforceaplica la limpieza.pruneAfter: límite de antigüedad para entradas obsoletas (predeterminado30d).maxEntries: número máximo de entradas ensessions.json(predeterminado500).rotateBytes: rotasessions.jsoncuando supera este tamaño (predeterminado10mb).resetArchiveRetention: retención para archivos de transcripción*.reset.<timestamp>. De forma predeterminada usapruneAfter; configurafalsepara desactivar.maxDiskBytes: presupuesto opcional de disco para el directorio de sesiones. En modowarnregistra advertencias; en modoenforceelimina primero los artefactos/sesiones más antiguos.highWaterBytes: objetivo opcional tras la limpieza por presupuesto. De forma predeterminada usa80%demaxDiskBytes.
threadBindings: valores predeterminados globales para funciones de sesión vinculadas a hilos.enabled: interruptor maestro predeterminado (los proveedores pueden sobrescribirlo; Discord usachannels.discord.threadBindings.enabled)idleHours: desfocalización automática predeterminada por inactividad en horas (0desactiva; los proveedores pueden sobrescribir)maxAgeHours: edad máxima estricta predeterminada en horas (0desactiva; los proveedores pueden sobrescribir)
Mensajes
Prefijo de respuesta
Anulaciones por canal/cuenta:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Resolución (gana el más específico): cuenta → canal → global. "" desactiva y detiene la cascada. "auto" deriva [{identity.name}].
Variables de plantilla:
| Variable | Descripción | Ejemplo |
|---|---|---|
{model} | Nombre corto del modelo | claude-opus-4-6 |
{modelFull} | Identificador completo del modelo | anthropic/claude-opus-4-6 |
{provider} | Nombre del proveedor | anthropic |
{thinkingLevel} | Nivel actual de thinking | high, low, off |
{identity.name} | Nombre de la identidad del agente | (igual que "auto") |
{think} es un alias de {thinkingLevel}.
Reacción de confirmación
- De forma predeterminada usa
identity.emojidel agente activo o, en su defecto,"👀". Configura""para desactivar. - Anulaciones por canal:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Orden de resolución: cuenta → canal →
messages.ackReaction→ respaldo de identidad. - Alcance:
group-mentions(predeterminado),group-all,direct,all. removeAckAfterReply: elimina la confirmación tras responder en Slack, Discord y Telegram.messages.statusReactions.enabled: habilita reacciones de estado del ciclo de vida en Slack, Discord y Telegram. En Slack y Discord, si no está configurado, las reacciones de estado permanecen habilitadas cuando las reacciones de confirmación están activas. En Telegram, configúralo explícitamente entruepara habilitar reacciones de estado del ciclo de vida.
Debounce entrante
Agrupa mensajes rápidos de solo texto del mismo remitente en un solo turno de agente. Los medios/adjuntos se vacían inmediatamente. Los comandos de control omiten el debounce.TTS (texto a voz)
autocontrola el auto-TTS./tts off|always|inbound|taggedlo sobrescribe por sesión.summaryModelsobrescribeagents.defaults.model.primarypara el resumen automático.modelOverridesestá habilitado por defecto;modelOverrides.allowProviderusafalsecomo valor predeterminado (opt-in).- Las claves de API usan como respaldo
ELEVENLABS_API_KEY/XI_API_KEYyOPENAI_API_KEY. openai.baseUrlsobrescribe el endpoint de TTS de OpenAI. El orden de resolución es configuración, luegoOPENAI_TTS_BASE_URLy despuéshttps://api.openai.com/v1.- Cuando
openai.baseUrlapunta a un endpoint que no es de OpenAI, OpenClaw lo trata como un servidor TTS compatible con OpenAI y relaja la validación de modelo/voz.
Talk
Valores predeterminados para el modo Talk (macOS/iOS/Android).talk.providerdebe coincidir con una clave detalk.providerscuando se configuran varios proveedores Talk.- Las claves heredadas planas de Talk (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) son solo de compatibilidad y se migran automáticamente atalk.providers.<provider>. - Los ID de voz usan como respaldo
ELEVENLABS_VOICE_IDoSAG_VOICE_ID. providers.*.apiKeyacepta cadenas en texto plano u objetos SecretRef.- El respaldo
ELEVENLABS_API_KEYsolo se aplica cuando no hay una clave de API de Talk configurada. providers.*.voiceAliasespermite que las directivas de Talk usen nombres amigables.silenceTimeoutMscontrola cuánto espera el modo Talk después del silencio del usuario antes de enviar la transcripción. Si no se configura, conserva la ventana de pausa predeterminada de la plataforma (700 ms en macOS y Android, 900 ms en iOS).
Herramientas
Perfiles de herramientas
tools.profile establece una lista de permitidos base antes de tools.allow/tools.deny:
El onboarding local usa por defecto tools.profile: "coding" en las nuevas configuraciones locales cuando no está configurado (los perfiles explícitos existentes se conservan).
| Perfil | Incluye |
|---|---|
minimal | solo session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Sin restricciones (igual que sin configurar) |
Grupos de herramientas
| Grupo | Herramientas |
|---|---|
group:runtime | exec, process, code_execution (bash se acepta como alias de exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image, image_generate, tts |
group:openclaw | Todas las herramientas integradas (excluye plugins de proveedor) |
tools.allow / tools.deny
Política global de permitir/denegar herramientas (deny gana). No distingue mayúsculas/minúsculas y admite comodines *. Se aplica incluso cuando el sandbox Docker está desactivado.
tools.byProvider
Restringe aún más las herramientas para proveedores o modelos específicos. Orden: perfil base → perfil del proveedor → allow/deny.
tools.elevated
Controla el acceso elevado a exec fuera del sandbox:
- La anulación por agente (
agents.list[].tools.elevated) solo puede restringir aún más. /elevated on|off|ask|fullalmacena el estado por sesión; las directivas inline se aplican a un único mensaje.execelevado omite el sandbox y usa la ruta de escape configurada (gatewayde forma predeterminada, onodecuando el destino de exec esnode).
tools.exec
tools.loopDetection
Las comprobaciones de seguridad de bucles de herramientas están deshabilitadas de forma predeterminada. Configura enabled: true para activar la detección.
La configuración puede definirse globalmente en tools.loopDetection y sobrescribirse por agente en agents.list[].tools.loopDetection.
historySize: máximo historial de llamadas a herramientas conservado para análisis de bucles.warningThreshold: umbral de patrón repetitivo sin progreso para advertencias.criticalThreshold: umbral repetitivo superior para bloquear bucles críticos.globalCircuitBreakerThreshold: umbral de parada estricta para cualquier ejecución sin progreso.detectors.genericRepeat: advierte sobre llamadas repetidas a la misma herramienta/con los mismos argumentos.detectors.knownPollNoProgress: advierte/bloquea herramientas de sondeo conocidas (process.poll,command_status, etc.).detectors.pingPong: advierte/bloquea patrones alternos por pares sin progreso.- Si
warningThreshold >= criticalThresholdocriticalThreshold >= globalCircuitBreakerThreshold, la validación falla.
tools.web
tools.media
Configura el entendimiento de medios entrantes (imagen/audio/vídeo):
Media model entry fields
Media model entry fields
Entrada de proveedor (
type: "provider" u omitido):provider: ID del proveedor de API (openai,anthropic,google/gemini,groq, etc.)model: anulación del ID del modeloprofile/preferredProfile: selección de perfil deauth-profiles.json
type: "cli"):command: ejecutable que se ejecutaráargs: argumentos con plantillas (admite{{MediaPath}},{{Prompt}},{{MaxChars}}, etc.)
capabilities: lista opcional (image,audio,video). Predeterminados:openai/anthropic/minimax→ imagen,google→ imagen+audio+vídeo,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: anulaciones por entrada.- Los fallos recurren a la siguiente entrada.
auth-profiles.json → variables de entorno → models.providers.*.apiKey.tools.agentToAgent
tools.sessions
Controla qué sesiones pueden ser objetivo de las herramientas de sesión (sessions_list, sessions_history, sessions_send).
Predeterminado: tree (sesión actual + sesiones generadas por ella, como subagentes).
self: solo la clave de sesión actual.tree: sesión actual + sesiones generadas por la sesión actual (subagentes).agent: cualquier sesión que pertenezca al ID del agente actual (puede incluir otros usuarios si ejecutas sesiones por remitente bajo el mismo ID de agente).all: cualquier sesión. El direccionamiento entre agentes sigue requiriendotools.agentToAgent.- Restricción por sandbox: cuando la sesión actual está en sandbox y
agents.defaults.sandbox.sessionToolsVisibility="spawned", la visibilidad se fuerza atreeincluso sitools.sessions.visibility="all".
tools.sessions_spawn
Controla la compatibilidad de adjuntos inline para sessions_spawn.
- Los adjuntos solo son compatibles con
runtime: "subagent". ACP runtime los rechaza. - Los archivos se materializan en el espacio de trabajo hijo en
.openclaw/attachments/<uuid>/con un.manifest.json. - El contenido de los adjuntos se redacciona automáticamente de la persistencia de la transcripción.
- Las entradas base64 se validan con comprobaciones estrictas de alfabeto/relleno y una protección de tamaño antes de la decodificación.
- Los permisos de archivos son
0700para directorios y0600para archivos. - La limpieza sigue la política
cleanup:deletesiempre elimina adjuntos;keeplos conserva solo cuandoretainOnSessionKeep: true.
agents.defaults.subagents
model: modelo predeterminado para subagentes generados. Si se omite, los subagentes heredan el modelo del llamador.allowAgents: lista de permitidos predeterminada de ID de agente de destino parasessions_spawncuando el agente solicitante no configura su propiosubagents.allowAgents(["*"]= cualquiera; predeterminado: solo el mismo agente).runTimeoutSeconds: tiempo de espera predeterminado (segundos) parasessions_spawncuando la llamada a la herramienta omiterunTimeoutSeconds.0significa sin tiempo de espera.- Política de herramientas por subagente:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Proveedores personalizados y base URLs
OpenClaw usa el catálogo de modelos integrado. Añade proveedores personalizados mediantemodels.providers en la configuración o ~/.openclaw/agents/<agentId>/agent/models.json.
- Usa
authHeader: true+headerspara necesidades de autenticación personalizadas. - Sobrescribe la raíz de configuración del agente con
OPENCLAW_AGENT_DIR(oPI_CODING_AGENT_DIR, un alias heredado de variable de entorno). - Precedencia de combinación para ID de proveedor coincidentes:
- Los valores
baseUrlno vacíos demodels.jsondel agente tienen prioridad. - Los valores
apiKeyno vacíos del agente tienen prioridad solo cuando ese proveedor no está gestionado por SecretRef en el contexto actual de config/auth-profile. - Los valores
apiKeyde proveedores gestionados por SecretRef se actualizan desde marcadores de fuente (ENV_VAR_NAMEpara refs de entorno,secretref-managedpara refs file/exec) en lugar de persistir secretos resueltos. - Los valores de cabeceras de proveedores gestionados por SecretRef se actualizan desde marcadores de fuente (
secretref-env:ENV_VAR_NAMEpara refs de entorno,secretref-managedpara refs file/exec). - Los valores
apiKey/baseUrlvacíos o ausentes del agente usan como respaldomodels.providersen la configuración. contextWindow/maxTokensdel modelo coincidente usan el valor mayor entre la configuración explícita y los valores implícitos del catálogo.contextTokensdel modelo coincidente conserva un límite explícito del entorno de ejecución cuando existe; úsalo para limitar el contexto efectivo sin cambiar los metadatos nativos del modelo.- Usa
models.mode: "replace"cuando quieras que la configuración reescriba completamentemodels.json. - La persistencia de marcadores es autoritativa por fuente: los marcadores se escriben desde la instantánea activa de la configuración fuente (antes de la resolución), no desde los valores secretos resueltos del entorno de ejecución.
- Los valores
Detalles de campos del proveedor
models.mode: comportamiento del catálogo de proveedores (mergeoreplace).models.providers: mapa de proveedores personalizados con clave por ID de proveedor.models.providers.*.api: adaptador de solicitud (openai-completions,openai-responses,anthropic-messages,google-generative-ai, etc.).models.providers.*.apiKey: credencial del proveedor (prefiere SecretRef/sustitución por entorno).models.providers.*.auth: estrategia de autenticación (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: para Ollama +openai-completions, inyectaoptions.num_ctxen las solicitudes (predeterminado:true).models.providers.*.authHeader: fuerza el transporte de credenciales en la cabeceraAuthorizationcuando sea necesario.models.providers.*.baseUrl: URL base de la API upstream.models.providers.*.headers: cabeceras estáticas extra para enrutamiento de proxy/inquilino.models.providers.*.request: anulaciones de transporte para solicitudes HTTP de model-provider.request.headers: cabeceras extra (combinadas con los valores predeterminados del proveedor). Los valores aceptan SecretRef.request.auth: anulación de estrategia de autenticación. Modos:"provider-default"(usar la autenticación integrada del proveedor),"authorization-bearer"(contoken),"header"(conheaderName,value,prefixopcional).request.proxy: anulación de proxy HTTP. Modos:"env-proxy"(usar variables de entornoHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(conurl). Ambos modos aceptan un subobjetotlsopcional.request.tls: anulación TLS para conexiones directas. Campos:ca,cert,key,passphrase(todos aceptan SecretRef),serverName,insecureSkipVerify.
models.providers.*.models: entradas explícitas del catálogo de modelos del proveedor.models.providers.*.models.*.contextWindow: metadatos de ventana de contexto nativa del modelo.models.providers.*.models.*.contextTokens: límite opcional de contexto del entorno de ejecución. Úsalo cuando quieras un presupuesto de contexto efectivo menor que elcontextWindownativo del modelo.models.providers.*.models.*.compat.supportsDeveloperRole: pista opcional de compatibilidad. Paraapi: "openai-completions"con unbaseUrlno nativo y no vacío (host distinto deapi.openai.com), OpenClaw fuerza esto afalseen tiempo de ejecución. UnbaseUrlvacío/omitido mantiene el comportamiento predeterminado de OpenAI.plugins.entries.amazon-bedrock.config.discovery: raíz de la configuración de autodetección de Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: activa/desactiva la detección implícita.plugins.entries.amazon-bedrock.config.discovery.region: región AWS para detección.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filtro opcional por ID de proveedor para detección dirigida.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: intervalo de sondeo para actualizar la detección.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: ventana de contexto de respaldo para modelos detectados.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: máximo de tokens de salida de respaldo para modelos detectados.
Ejemplos de proveedores
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 directo.OpenCode
OpenCode
OPENCODE_API_KEY (o OPENCODE_ZEN_API_KEY). Usa referencias opencode/... para el catálogo Zen o opencode-go/... para el catálogo Go. Atajo: openclaw onboard --auth-choice opencode-zen o openclaw onboard --auth-choice opencode-go.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. z.ai/* y z-ai/* se aceptan como alias. Atajo: openclaw onboard --auth-choice zai-api-key.- Endpoint general:
https://api.z.ai/api/paas/v4 - Endpoint de coding (predeterminado):
https://api.z.ai/api/coding/paas/v4 - Para el endpoint general, define un proveedor personalizado con la anulación de base URL.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" o openclaw onboard --auth-choice moonshot-api-key-cn.Los endpoints nativos de Moonshot anuncian compatibilidad de uso de streaming en el transporte compartido
openai-completions, y OpenClaw ahora basa eso en las capacidades del endpoint
en lugar de solo en el ID integrado del proveedor.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (Anthropic-compatible)
Synthetic (Anthropic-compatible)
/v1 (el cliente Anthropic la añade). Atajo: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.7 (direct)
MiniMax M2.7 (direct)
MINIMAX_API_KEY. Atajos:
openclaw onboard --auth-choice minimax-global-api o
openclaw onboard --auth-choice minimax-cn-api.
El catálogo de modelos ahora usa por defecto solo M2.7.
En la ruta de streaming compatible con Anthropic, OpenClaw deshabilita thinking de MiniMax
de forma predeterminada salvo que configures thinking explícitamente tú mismo. /fast on o
params.fastMode: true reescribe MiniMax-M2.7 a
MiniMax-M2.7-highspeed.Local models (LM Studio)
Local models (LM Studio)
Consulta Modelos locales. Resumen: ejecuta un gran modelo local mediante la API Responses de LM Studio en hardware serio; mantén modelos alojados combinados para respaldo.
Skills
allowBundled: lista de permitidos opcional solo para Skills integradas (las Skills gestionadas/del espacio de trabajo no se ven afectadas).load.extraDirs: raíces compartidas extra de Skills (precedencia más baja).install.preferBrew: cuando es true, prefiere instaladores Homebrew cuandobrewestá disponible antes de recurrir a otros tipos de instalador.install.nodeManager: preferencia de instalador Node para especificacionesmetadata.openclaw.install(npm|pnpm|yarn|bun).entries.<skillKey>.enabled: falsedeshabilita una Skill incluso si está integrada/instalada.entries.<skillKey>.apiKey: campo de conveniencia para Skills que declaran una variable env principal (cadena en texto plano u objeto SecretRef).
Plugins
- Se cargan desde
~/.openclaw/extensions,<workspace>/.openclaw/extensions, además deplugins.load.paths. - El descubrimiento acepta plugins nativos de OpenClaw además de bundles compatibles de Codex y Claude, incluidos bundles de Claude sin manifest con diseño predeterminado.
- Los cambios de configuración requieren reiniciar el gateway.
allow: lista de permitidos opcional (solo cargan los plugins listados).denytiene prioridad.plugins.entries.<id>.apiKey: campo de conveniencia de clave de API a nivel de plugin (cuando el plugin lo admite).plugins.entries.<id>.env: mapa de variables de entorno con alcance del plugin.plugins.entries.<id>.hooks.allowPromptInjection: cuando esfalse, el núcleo bloqueabefore_prompt_builde ignora campos mutadores de prompt debefore_agent_startheredado, preservandomodelOverrideyproviderOverrideheredados. Se aplica a hooks de plugins nativos y a directorios de hooks aportados por bundles compatibles.plugins.entries.<id>.subagent.allowModelOverride: confía explícitamente en este plugin para solicitar anulaciones por ejecución deproviderymodelpara ejecuciones de subagentes en segundo plano.plugins.entries.<id>.subagent.allowedModels: lista de permitidos opcional de destinos canónicosprovider/modelpara anulaciones confiables de subagentes. Usa"*"solo cuando quieras intencionalmente permitir cualquier modelo.plugins.entries.<id>.config: objeto de configuración definido por el plugin (validado por el esquema nativo del plugin de OpenClaw cuando está disponible).plugins.entries.firecrawl.config.webFetch: ajustes del proveedor web-fetch Firecrawl.apiKey: clave de API de Firecrawl (acepta SecretRef). Usa como respaldoplugins.entries.firecrawl.config.webSearch.apiKey, el heredadotools.web.fetch.firecrawl.apiKeyo la variable de entornoFIRECRAWL_API_KEY.baseUrl: URL base de la API de Firecrawl (predeterminado:https://api.firecrawl.dev).onlyMainContent: extraer solo el contenido principal de las páginas (predeterminado:true).maxAgeMs: antigüedad máxima de caché en milisegundos (predeterminado:172800000/ 2 días).timeoutSeconds: tiempo de espera de la solicitud scrape en segundos (predeterminado:60).
plugins.entries.xai.config.xSearch: ajustes de xAI X Search (búsqueda web de Grok).enabled: habilita el proveedor X Search.model: modelo Grok que se usará para búsqueda (por ejemplo"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: ajustes de memory dreaming (experimental). Consulta Dreaming para modos y umbrales.mode: preajuste de cadencia de dreaming ("off","core","rem","deep"). Predeterminado:"off".cron: anulación opcional de la expresión cron para la programación de dreaming.timezone: zona horaria para evaluar la programación (usa como respaldoagents.defaults.userTimezone).limit: máximo de candidatos a promover por ciclo.minScore: umbral mínimo de puntuación ponderada para la promoción.minRecallCount: umbral mínimo de cantidad de recalls.minUniqueQueries: umbral mínimo de cantidad de consultas distintas.
- Los plugins Claude bundle habilitados también pueden aportar valores predeterminados Pi integrados desde
settings.json; OpenClaw los aplica como ajustes sanitizados del agente, no como parches sin procesar de configuración de OpenClaw. plugins.slots.memory: elige el ID del plugin de memoria activo o"none"para deshabilitar plugins de memoria.plugins.slots.contextEngine: elige el ID del motor de contexto activo; usa"legacy"de forma predeterminada salvo que instales y selecciones otro motor.plugins.installs: metadatos de instalación gestionados por CLI usados poropenclaw plugins update.- Incluye
source,spec,sourcePath,installPath,version,resolvedName,resolvedVersion,resolvedSpec,integrity,shasum,resolvedAt,installedAt. - Trata
plugins.installs.*como estado gestionado; prefiere comandos CLI a ediciones manuales.
- Incluye
Browser
evaluateEnabled: falsedeshabilitaact:evaluateywait --fn.ssrfPolicy.dangerouslyAllowPrivateNetworkusatruede forma predeterminada cuando no está configurado (modelo de red de confianza).- Configura
ssrfPolicy.dangerouslyAllowPrivateNetwork: falsepara una navegación estricta del browser solo en redes públicas. - En modo estricto, los endpoints de perfiles CDP remotos (
profiles.*.cdpUrl) están sujetos al mismo bloqueo de red privada durante las comprobaciones de alcance/detección. ssrfPolicy.allowPrivateNetworksigue siendo compatible como alias heredado.- En modo estricto, usa
ssrfPolicy.hostnameAllowlistyssrfPolicy.allowedHostnamespara excepciones explícitas. - Los perfiles remotos son solo de conexión (start/stop/reset deshabilitados).
profiles.*.cdpUrlaceptahttp://,https://,ws://ywss://. Usa HTTP(S) cuando quieras que OpenClaw descubra/json/version; usa WS(S) cuando tu proveedor te dé una URL directa de DevTools WebSocket.- Los perfiles
existing-sessionson solo del host y usan Chrome MCP en lugar de CDP. - Los perfiles
existing-sessionpueden configuraruserDataDirpara apuntar a un perfil específico de navegador basado en Chromium como Brave o Edge. - Los perfiles
existing-sessionmantienen los límites actuales de la ruta Chrome MCP: acciones basadas en snapshot/ref en lugar de selección por CSS, hooks de carga de un único archivo, sin anulaciones de tiempo de espera de diálogos, sinwait --load networkidle, y sinresponsebody, exportación PDF, interceptación de descargas ni acciones por lotes. - Los perfiles locales gestionados
openclawasignan automáticamentecdpPortycdpUrl; solo configuracdpUrlexplícitamente para CDP remoto. - Orden de autodetección: navegador predeterminado si está basado en Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Servicio de control: solo loopback (puerto derivado de
gateway.port, predeterminado18791). extraArgsañade flags extra de lanzamiento al inicio local de Chromium (por ejemplo--disable-gpu, tamaño de ventana o flags de depuración).
UI
seamColor: color de acento para la interfaz nativa (tono de la burbuja en Talk Mode, etc.).assistant: anulación de identidad de la Control UI. Usa como respaldo la identidad del agente activo.
Gateway
Gateway field details
Gateway field details
mode:local(ejecutar gateway) oremote(conectarse a un gateway remoto). El gateway se niega a iniciarse salvo que sealocal.port: puerto multiplexado único para WS + HTTP. Precedencia:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(predeterminado),lan(0.0.0.0),tailnet(solo IP Tailscale) ocustom.- Alias heredados de bind: usa valores de modo bind en
gateway.bind(auto,loopback,lan,tailnet,custom), no alias de host (0.0.0.0,127.0.0.1,localhost,::,::1). - Nota sobre Docker: el bind predeterminado
loopbackescucha en127.0.0.1dentro del contenedor. Con redes bridge de Docker (-p 18789:18789), el tráfico llega poreth0, así que el gateway no es accesible. Usa--network host, o configurabind: "lan"(obind: "custom"concustomBindHost: "0.0.0.0") para escuchar en todas las interfaces. - Auth: obligatoria por defecto. Los binds que no son loopback requieren autenticación de gateway. En la práctica eso significa un token/contraseña compartido o un proxy inverso con reconocimiento de identidad con
gateway.auth.mode: "trusted-proxy". El asistente de onboarding genera un token por defecto. - Si tanto
gateway.auth.tokencomogateway.auth.passwordestán configurados (incluidos SecretRefs), configuragateway.auth.modeexplícitamente entokenopassword. El inicio y los flujos de instalación/reparación del servicio fallan cuando ambos están configurados ymodeno está establecido. gateway.auth.mode: "none": modo explícito sin autenticación. Úsalo solo para configuraciones de loopback local de confianza; intencionalmente no se ofrece en los prompts de onboarding.gateway.auth.mode: "trusted-proxy": delega la autenticación a un proxy inverso con reconocimiento de identidad y confía en cabeceras de identidad degateway.trustedProxies(consulta Autenticación de proxy de confianza). Este modo espera una fuente de proxy no loopback; los proxies inversos loopback en el mismo host no cumplen la autenticación trusted-proxy.gateway.auth.allowTailscale: cuando estrue, las cabeceras de identidad de Tailscale Serve pueden satisfacer la autenticación de Control UI/WebSocket (verificadas mediantetailscale whois). Los endpoints de la API HTTP no usan esa autenticación de cabeceras Tailscale; siguen el modo normal de autenticación HTTP del gateway. Este flujo sin token asume que el host del gateway es de confianza. Usatruede forma predeterminada cuandotailscale.mode = "serve".gateway.auth.rateLimit: limitador opcional de autenticaciones fallidas. Se aplica por IP cliente y por alcance de autenticación (secreto compartido y device-token se rastrean de forma independiente). Los intentos bloqueados devuelven429+Retry-After.- En la ruta asíncrona de Control UI de Tailscale Serve, los intentos fallidos para el mismo
{scope, clientIp}se serializan antes de la escritura del fallo. Por tanto, intentos simultáneos incorrectos del mismo cliente pueden activar el limitador en la segunda solicitud en lugar de dejar pasar ambas como simples desajustes. gateway.auth.rateLimit.exemptLoopbackusatruede forma predeterminada; configurafalsecuando quieras intencionalmente aplicar rate limit también al tráfico localhost (para entornos de prueba o despliegues de proxy estrictos).
- En la ruta asíncrona de Control UI de Tailscale Serve, los intentos fallidos para el mismo
- Los intentos de autenticación WS originados en browser siempre se limitan con la exención de loopback deshabilitada (defensa adicional contra fuerza bruta localhost basada en browser).
- En loopback, esos bloqueos originados en localhost por browser se aíslan por valor
Originnormalizado, de modo que fallos repetidos desde un origen localhost no bloquean automáticamente otro origen distinto. tailscale.mode:serve(solo tailnet, bind loopback) ofunnel(público, requiere auth).controlUi.allowedOrigins: lista explícita de orígenes de browser permitidos para conexiones WebSocket del Gateway. Obligatoria cuando se esperan clientes browser desde orígenes no loopback.controlUi.dangerouslyAllowHostHeaderOriginFallback: modo peligroso que habilita el respaldo de origen por cabecera Host para despliegues que dependen intencionalmente de esa política.remote.transport:ssh(predeterminado) odirect(ws/wss). Paradirect,remote.urldebe serws://owss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: anulación del lado cliente de emergencia que permitews://en texto claro hacia IP privadas de confianza; el valor predeterminado sigue siendo permitir texto claro solo para loopback.gateway.remote.token/.passwordson campos de credenciales del cliente remoto. No configuran por sí solos la autenticación del gateway.gateway.push.apns.relay.baseUrl: URL base HTTPS del relay APNs externo usado por compilaciones oficiales/TestFlight de iOS después de que publiquen registros respaldados por relay en el gateway. Esta URL debe coincidir con la URL del relay compilada en la build de iOS.gateway.push.apns.relay.timeoutMs: tiempo de espera en milisegundos para envíos del gateway al relay. Predeterminado:10000.- Los registros respaldados por relay se delegan a una identidad específica del gateway. La app iOS emparejada obtiene
gateway.identity.get, incluye esa identidad en el registro del relay y reenvía una concesión de envío con alcance de registro al gateway. Otro gateway no puede reutilizar ese registro almacenado. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: anulaciones temporales por entorno para la configuración del relay anterior.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: vía de escape solo para desarrollo para URL de relay HTTP loopback. Las URL de relay de producción deben seguir usando HTTPS.gateway.channelHealthCheckMinutes: intervalo en minutos del monitor de salud de canales. Configura0para desactivar globalmente los reinicios del monitor de salud. Predeterminado:5.gateway.channelStaleEventThresholdMinutes: umbral en minutos para sockets obsoletos. Mantenlo mayor o igual quegateway.channelHealthCheckMinutes. Predeterminado:30.gateway.channelMaxRestartsPerHour: máximo de reinicios por canal/cuenta dentro de una hora móvil. Predeterminado:10.channels.<provider>.healthMonitor.enabled: exclusión por canal de los reinicios del monitor de salud mientras el monitor global sigue habilitado.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: anulación por cuenta para canales de múltiples cuentas. Cuando está configurado, tiene prioridad sobre la anulación a nivel de canal.- Las rutas locales de llamada al gateway pueden usar
gateway.remote.*como respaldo solo cuandogateway.auth.*no está configurado. - Si
gateway.auth.token/gateway.auth.passwordestá configurado explícitamente mediante SecretRef y no se resuelve, la resolución falla en modo cerrado (sin respaldo remoto que enmascare el fallo). trustedProxies: IP de proxies inversos que terminan TLS o inyectan cabeceras de cliente reenviado. Enumera solo proxies que controlas. Las entradas loopback siguen siendo válidas para configuraciones de mismo host/detección local (por ejemplo Tailscale Serve o un proxy inverso local), pero no hacen que las solicitudes loopback sean elegibles paragateway.auth.mode: "trusted-proxy".allowRealIpFallback: cuando estrue, el gateway aceptaX-Real-IPsi faltaX-Forwarded-For. Predeterminadofalsepara comportamiento cerrado por defecto.gateway.tools.deny: nombres extra de herramientas bloqueadas para HTTPPOST /tools/invoke(extiende la lista predeterminada de denegación).gateway.tools.allow: elimina nombres de herramientas de la lista predeterminada de denegación HTTP.
Endpoints compatibles con OpenAI
- Chat Completions: deshabilitado de forma predeterminada. Habilítalo con
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Endurecimiento de entradas URL en Responses:
- `