OpenClaw Config
Help edit and validate OpenClaw config
Pu Cao
@caopulan
What This Skill Does
Edits and validates OpenClaw Gateway configuration files (openclaw.json/JSON5) using a schema-first workflow. Provides commands to get, set, unset config keys, validate with openclaw doctor, and supports modular config via $include directives.
Replaces manually editing JSON config files and guessing valid keys by providing schema-aware commands and validation that catches errors before they break the Gateway.
When to Use It
- Change the Gateway port or other gateway.* settings
- Add or modify an agent, model, or channel configuration
- Split a large config into multiple files using $include
- Diagnose and fix openclaw doctor validation errors
- Set environment variables under the env key
- Configure channel-specific settings like Telegram DM policy or Discord token
Install
$ openclaw skills install @caopulan/openclaw-configOpenClaw Config
Overview
Safely edit ~/.openclaw/openclaw.json (or the path set by OPENCLAW_CONFIG_PATH) using a schema-first workflow. Validate before and after changes to avoid invalid keys/types that can break startup or change security behavior.
Workflow (Safe Edit)
- Identify the active config path
- Precedence:
OPENCLAW_CONFIG_PATH>OPENCLAW_STATE_DIR/openclaw.json>~/.openclaw/openclaw.json - The config file is JSON5 (comments + trailing commas allowed).
- Get an authoritative schema (do not guess keys)
- If the Gateway is running: use
openclaw gateway call config.schema --params '{}'to fetch a JSON Schema matching the running version. - Otherwise: use
openclaw/openclawsource-of-truth, primarily:src/config/zod-schema.ts(OpenClawSchemaroot keys likegateway/skills/plugins)src/config/zod-schema.*.ts(submodules: channels/providers/models/agents/tools)docs/gateway/configuration.md(repo docs + examples)
- Apply changes with the smallest safe surface
- Prefer small edits:
openclaw config get|set|unset(dot path or bracket notation). - If the Gateway is online and you want "write + validate + restart" in one step: use RPC
config.patch(merge patch) orconfig.apply(replaces the entire config; use carefully). - For complex setups, split config with
$include(see below).
- Validate strictly
- Run
openclaw doctor, then fix issues using the reportedpath+message. - Do not run
openclaw doctor --fix/--yeswithout explicit user consent (it writes to config/state files).
Guardrails (Avoid Schema Bugs)
- Most objects are strict (
.strict()): unknown keys usually fail validation and the Gateway will refuse to start. channelsis.passthrough(): extension channels (matrix/zalo/nostr, etc.) can add custom keys, but most provider configs remain strict.envis.catchall(z.string()): you can put string env vars directly underenv, and you can also useenv.vars.- Secrets: prefer environment variables/credential files. Avoid committing long-lived tokens/API keys into
openclaw.json.
$include (Modular Config)
$include is resolved before schema validation and lets you split config across JSON5 files:
- Supports
"$include": "./base.json5"or"$include": ["./a.json5", "./b.json5"] - Relative paths are resolved against the directory of the current config file.
- Deep-merge rules (per implementation):
- objects: merge recursively
- arrays: concatenate (not replace)
- primitives: later value wins
- If sibling keys exist alongside
$include, sibling keys override included values. - Limits: max depth 10; circular includes are detected and rejected.
Common Recipes (Examples)
- Set default workspace
openclaw config set agents.defaults.workspace '"~/.openclaw/workspace"' --json
openclaw doctor
- Change Gateway port
openclaw config set gateway.port 18789 --json
openclaw doctor
- Split config (example)
// ~/.openclaw/openclaw.json
{
"$include": ["./gateway.json5", "./channels/telegram.json5"],
}
- Telegram open DMs (must explicitly allow senders)
Schema constraint: when
dmPolicy="open",allowFrommust include"*".
openclaw config set channels.telegram.dmPolicy '"open"' --json
openclaw config set channels.telegram.allowFrom '["*"]' --json
openclaw doctor
- Discord token (config or env fallback)
# Option A: write to config
openclaw config set channels.discord.token '"YOUR_DISCORD_BOT_TOKEN"' --json
# Option B: env var fallback (still recommend a channels.discord section exists)
# export DISCORD_BOT_TOKEN="..."
openclaw doctor
- Enable web_search (Brave / Perplexity)
openclaw config set tools.web.search.enabled true --json
openclaw config set tools.web.search.provider '"brave"' --json
# Recommended: provide the key via env var (or write tools.web.search.apiKey)
# export BRAVE_API_KEY="..."
openclaw doctor
Resources
Load these when you need a field index or source locations:
references/openclaw-config-fields.md(root key index + key field lists with sources)references/schema-sources.md(how to locate schema + constraints in openclaw repo)scripts/openclaw-config-check.sh(print config path + run doctor)
Top skills in this category
Skill Vetter
@spclaudehomeSecurity-first skill vetting for AI agents. Use before installing any skill from ClawdHub, GitHub, or other sources. Checks for red flags, permission scope, and suspicious patterns.
Multi Search Engine
@gpyangyoujunMulti search engine integration with 16 engines (7 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and Wolfra...
API Gateway
@byungkyuCall third-party APIs through the Maton gateway, which injects the credential for an app the user has already connected. Use this skill when the user names a connected app and a concrete action in it - read a mailbox, query a CRM, file an issue, update a spreadsheet, etc.
MoltGuard - Security & Antivirus & Guardrails
@thomaslwangMoltGuard — OpenClaw security guard by OpenGuardrails. Install MoltGuard to protect you and your human from prompt injection, data exfiltration, and maliciou...
1password
@steipeteSet up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.