Configuración
Todas las opciones de configuración para ~/.openclaw/openclaw.json con ejemplos
OpenClaw lee una configuración JSON5 opcional de ~/.openclaw/openclaw.json (comentarios + comas finales permitidos).
Si falta el archivo, OpenClaw usa valores predeterminados seguros. Usualmente solo necesitas una config para:
- restringir quién puede activar el bot (
channels.whatsapp.allowFrom,channels.telegram.allowFrom, etc.) - controlar listas permitidas de grupos + comportamiento de mención (
channels.whatsapp.groups,channels.telegram.groups,channels.discord.guilds,agents.list[].groupChat) - personalizar prefijos de mensajes (
messages) - establecer el workspace del agente (
agents.defaults.workspaceoagents.list[].workspace)
Nota
Archivo de Configuración
El archivo de config es ~/.openclaw/openclaw.json y usa JSON5 (no JSON estricto).
Para cambios pequeños, prefiere actualizaciones incrementales (ej., config.patch) sobre reemplazo completo.
Validación estricta de config
OpenClaw solo acepta configuraciones que coinciden completamente con el schema. Claves desconocidas, tipos malformados o valores inválidos causan que el Gateway se niegue a iniciar por seguridad.
Cuando la validación falla:
- El Gateway no arranca.
- Solo comandos de diagnóstico son permitidos (por ejemplo:
openclaw doctor,openclaw logs,openclaw health,openclaw status). - Ejecuta
openclaw doctorpara ver los problemas exactos. - Ejecuta
openclaw doctor --fix(o--yes) para aplicar migraciones/reparaciones.
Doctor nunca escribe cambios a menos que explícitamente optes por --fix/--yes.
Schema + hints de UI
El Gateway expone una representación JSON Schema de la config vía config.schema para editores UI.
El UI de Control renderiza un formulario desde este schema, con un editor **Raw JSON** como escape.
Plugins pueden registrar schema + hints de UI (etiquetas, agrupación, campos sensibles) para que clientes puedan renderizar mejores formularios sin hard-codificar conocimiento de config.
Aplicar + reiniciar (RPC)
Usa config.apply para validar + escribir la config completa y reiniciar el Gateway en un paso.
Advertencia: config.apply reemplaza la config completa. Si quieres cambiar solo algunas claves, usa config.patch o openclaw config set. Mantén un backup de ~/.openclaw/openclaw.json.
Parámetros:
raw(string) — payload JSON5 para la config completabaseHash(opcional) — hash de config deconfig.get(requerido cuando ya existe una config)sessionKey(opcional) — clave de última sesión activa para el ping de wake-upnote(opcional) — nota para incluir en el centinela de reiniciorestartDelayMs(opcional) — delay antes de reiniciar (predeterminado 2000)
Ejemplo (vía gateway call):
openclaw gateway call config.get --params '{}' # capture payload.hash
openclaw gateway call config.apply --params '{
"raw": "{\n agents: { defaults: { workspace: \"~/.openclaw/workspace\" } }\n}\n",
"baseHash": "<hash-from-config.get>",
"sessionKey": "agent:main:whatsapp:dm:+15555550123",
"restartDelayMs": 1000
}'Actualizaciones parciales (RPC)
Usa config.patch para fusionar una actualización parcial en la config existente sin sobrescribir claves no relacionadas. Aplica semántica de JSON merge patch:
Semántica de merge patch:
- ReferenceGatewayConfigurationPage.steps.patch.semantics.objectMerge
- ReferenceGatewayConfigurationPage.steps.patch.semantics.nullDeletes
- ReferenceGatewayConfigurationPage.steps.patch.semantics.arrayReplace
ReferenceGatewayConfigurationPage.steps.patch.paramsTitle
- ReferenceGatewayConfigurationPage.steps.patch.params.raw
- ReferenceGatewayConfigurationPage.steps.patch.params.baseHash
- ReferenceGatewayConfigurationPage.steps.patch.params.sessionKey
- ReferenceGatewayConfigurationPage.steps.patch.params.note
- ReferenceGatewayConfigurationPage.steps.patch.params.restartDelayMs
ReferenceGatewayConfigurationPage.steps.patch.exampleTitle
openclaw gateway call config.get --params '{}' # capture payload.hash
openclaw gateway call config.patch --params '{
"raw": "{\n channels: { telegram: { groups: { \"*\": { requireMention: false } } } }\n}\n",
"baseHash": "<hash-from-config.get>",
"sessionKey": "agent:main:whatsapp:dm:+15555550123",
"restartDelayMs": 1000
}'Config mínima (punto de partida recomendado)
Establece el workspace y restringe DMs de WhatsApp a una allowlist:
{
agents: { defaults: { workspace: "~/.openclaw/workspace" } },
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}Includes de Config (<code>$include</code>)
Divide tu config en múltiples archivos usando la directiva $include. Esto es útil para:
- Organizar configs grandes (ej., definiciones de agente por cliente)
- Compartir ajustes comunes entre entornos
- Mantener configs sensibles separadas
Ejemplo:
// ~/.openclaw/openclaw.json
{
gateway: { port: 18789 },
agents: { $include: "./agents.json5" },
broadcast: { $include: ["./clients/mueller.json5", "./clients/schmidt.json5"] },
}Vars de entorno + .env
OpenClaw lee vars de entorno del proceso padre (shell, launchd/systemd, CI, etc.). Adicionalmente, carga:
.envdesde el directorio de trabajo actual (si existe)~/.openclaw/.env(aka$OPENCLAW_STATE_DIR/.env) como fallback global.- Ningún archivo .env anula vars de entorno existentes.
También puedes proporcionar vars de entorno inline en config. Estas solo se aplican si al proceso le falta la clave (misma regla de no-anulación):
{
env: {
OPENROUTER_API_KEY: "sk-or-...",
vars: { GROQ_API_KEY: "gsk-..." },
},
}Ver [/environment](/environment) para precedencia completa y fuentes.
Sustitución de vars de entorno en config
ReferenceGatewayConfigurationPage.steps.envSubstitution.p1
{
gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },
models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },
}Reglas:
- Solo nombres de var de entorno en mayúsculas coinciden:
[A-Z_][A-Z0-9_]* - Vars de entorno faltantes o vacías lanzan error al cargar config
- ReferenceGatewayConfigurationPage.steps.envSubstitution.rules.escape
- Funciona con
$include(archivos incluidos también reciben sustitución)
Almacenamiento de auth (OAuth + claves API)
OpenClaw almacena perfiles de auth por agente (OAuth + claves API) en:
- Archivo primario:
<agentDir>/auth-profiles.json - Import legacy:
$OPENCLAW_STATE_DIR/credentials/oauth.json - El directorio de agente puede anularse vía
OPENCLAW_AGENT_DIR(preferido) oPI_CODING_AGENT_DIR(legacy).
Ver también: [/concepts/oauth](/concepts/oauth)
Tips de seguridad
- Respalda
~/.openclaw/openclaw.jsonantes de cambios mayores. - Usa redacción de logging para evitar filtrar secretos (
logging.redactSensitive). - Para configuraciones multi-agente, usa políticas de sandbox/tools por agente. Ver [Multi-agent sandbox y tools](/concepts/sandbox#multi-agent).