5.5 KiB
OpenClaw Configuration Reference
Reference normalized against:
https://docs.openclaw.ai/cli/confighttps://docs.openclaw.ai/gateway/configuration- Individual CLI pages for models, channels, agents, hooks, cron, security, secrets
Last verified: 2026-02-27.
Config File Location
Default state directory:
~/.openclaw
Default config file:
~/.openclaw/openclaw.json
Profile-based isolation:
--devflag →~/.openclaw-dev--profile <name>flag →~/.openclaw-<name>
CLI Config Management
Use CLI sub-commands (not flags) to manage config:
openclaw config get <key>: Read a config value.openclaw config set <key> <value>: Write a config value.openclaw config unset <key>: Remove a config value.
Interactive wizard:
openclaw configure: Full interactive config setup.
Gateway RPC config methods:
config.apply: Validate + write config + restart + wake.config.patch: Merge a partial update + restart + wake.config.get: Get current config via RPC.update.run: Run update + restart.
Strict Validation
When config fails schema validation:
- Gateway does not boot.
- Only diagnostic commands work:
openclaw doctor,openclaw logs,openclaw health,openclaw status. - Run
openclaw doctorto see exact issues. - Run
openclaw doctor --fix(or--yes) to apply repairs.
Minimal Config Example
{
"gateway": {
"bind": "127.0.0.1",
"port": 18789,
"auth": {
"token": "replace-with-strong-token"
}
},
"channels": {
"whatsapp": {
"allowFrom": ["+1234567890"],
"groups": {
"*": { "requireMention": true }
}
}
},
"agents": {
"defaults": {
"workspace": "~/.openclaw/workspace",
"model": {
"primary": "claude-3-5-sonnet-latest"
},
"imageModel": {
"primary": "gpt-4o"
}
}
},
"messages": {
"groupChat": {
"mentionPatterns": ["@openclaw"]
}
}
}
High-impact Keys
gateway.bind: Interface binding. Keep127.0.0.1unless remote access is required.gateway.port: Gateway port (default18789).gateway.auth.token: Required when binding beyond loopback.channels.*: Channel-specific policy and auth settings.channels.<name>.allowFrom: Restrict who can message the agent.channels.<name>.groups.*.requireMention: Require mention in group chats.agents.defaults.workspace: Base workspace for agent tasks.agents.defaults.model.primary: Default model used by agents.agents.defaults.imageModel.primary: Default image model.messages.groupChat.mentionPatterns: Patterns to trigger agent in group chats.commands.debug: Enable/debugslash command (defaultfalse).
Environment Variables
OpenClaw Runtime Variables
OPENCLAW_CONFIG_PATH: Override config file path.OPENCLAW_STATE_DIR: Override state directory.OPENCLAW_HOME: Override OpenClaw home directory.OPENCLAW_GATEWAY_TOKEN: Gateway token (also set by--tokenflag).OPENCLAW_GATEWAY_PASSWORD: Gateway password (also set by--passwordflag).OPENCLAW_LOAD_SHELL_ENV=1: Import shell environment variables at startup.OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR: Scope agent context.CLAUDE_WEB_SESSION_KEY/CLAUDE_WEB_COOKIE: Session keys for Claude channel.NO_COLOR=1: Disable ANSI output styling.
Wrapper Variable
OPENCLAW_WRAPPER_ALLOW_RISKY=1: Enable high-risk commands in wrapper.
Env File Loading
.envfrom CWD (if present)~/.openclaw/.env(global fallback)
Inline Environment Variables
Define env vars directly in config:
{
"env": {
"OPENROUTER_API_KEY": "sk-or-...",
"vars": { "GROQ_API_KEY": "gsk-..." }
}
}
Shell Environment Import
{
"env": {
"shellEnv": { "enabled": true, "timeoutMs": 15000 }
}
}
Also activated via OPENCLAW_LOAD_SHELL_ENV=1.
Config Value Substitution
Use ${VAR_NAME} in config values (uppercase only: [A-Z_][A-Z0-9_]*).
- Missing/empty vars throw error at load time.
- Escape with
$${VAR}for literal output. - Works inside
$includefiles. - Example:
"${BASE}/v1"→"https://api.example.com/v1"
Secret Refs
Replace plaintext secrets with structured refs:
{
"models": { "providers": { "openai": {
"apiKey": { "source": "env", "provider": "default", "id": "OPENAI_API_KEY" }
}}},
"skills": { "entries": { "my-skill": {
"apiKey": { "source": "file", "provider": "filemain", "id": "/skills/entries/my-skill/apiKey" }
}}},
"channels": { "googlechat": {
"serviceAccountRef": { "source": "exec", "provider": "vault", "id": "channels/googlechat/serviceAccount" }
}}
}
Sources: env, file, exec. Providers defined in secrets.providers config.
Use openclaw secrets configure to set up providers and map credentials interactively.
Use openclaw secrets audit to check for plaintext residues.
Config Hot Reload
Gateway watches openclaw.json for changes.
Reload modes (gateway.reload.mode):
hybrid(default): hot-apply safe fields, restart for structural changes.hot: hot-apply only.restart: full restart on any change.off: no auto-reload.
Config:
{ "gateway": { "reload": { "mode": "hybrid", "debounceMs": 300 } } }
Hot-apply fields: channels.*, web, agent, agents, models, routing, hooks, cron, session, messages, tools, browser, skills, audio, talk, ui, logging, identity, bindings.
Restart-required fields: gateway.*, discovery, canvasHost, plugins, gateway.reload, gateway.remote.