openclaw config
Config helpers for non-interactive edits in openclaw.json: get/set/unset/file/schema/validate
values by path and print the active config file. Run without a subcommand to
open the configure wizard (same as openclaw configure).
Root options:
--section <section>: repeatable guided-setup section filter when you runopenclaw configwithout a subcommand
workspacemodelwebgatewaydaemonchannelspluginsskillshealth
Examples
config schema
Print the generated JSON schema for openclaw.json to stdout as JSON.
What it includes:
- The current root config schema, plus a root
$schemastring field for editor tooling - Field
titleanddescriptiondocs metadata used by the Control UI - Nested object, wildcard (
*), and array-item ([]) nodes inherit the sametitle/descriptionmetadata when matching field documentation exists anyOf/oneOf/allOfbranches inherit the same docs metadata too when matching field documentation exists- Best-effort live plugin + channel schema metadata when runtime manifests can be loaded
- A clean fallback schema even when the current config is invalid
config.schema.lookupreturns one normalized config path with a shallow schema node (title,description,type,enum,const, common bounds), matched UI hint metadata, and immediate child summaries. Use it for path-scoped drill-down in Control UI or custom clients.
Paths
Paths use dot or bracket notation:Values
Values are parsed as JSON5 when possible; otherwise they are treated as strings. Use--strict-json to require JSON5 parsing. --json remains supported as a legacy alias.
config get <path> --json prints the raw value as JSON instead of terminal-formatted text.
config set modes
openclaw config set supports four assignment styles:
- Value mode:
openclaw config set <path> <value> - SecretRef builder mode:
- Provider builder mode (
secrets.providers.<alias>path only):
- Batch mode (
--batch-jsonor--batch-file):
- SecretRef assignments are rejected on unsupported runtime-mutable surfaces (for example
hooks.token,commands.ownerDisplaySecret, Discord thread-binding webhook tokens, and WhatsApp creds JSON). See SecretRef Credential Surface.
--batch-json/--batch-file) as the source of truth.
--strict-json / --json do not change batch parsing behavior.
JSON path/value mode remains supported for both SecretRefs and providers:
Provider Builder Flags
Provider builder targets must usesecrets.providers.<alias> as the path.
Common flags:
--provider-source <env|file|exec>--provider-timeout-ms <ms>(file,exec)
--provider-source env):
--provider-allowlist <ENV_VAR>(repeatable)
--provider-source file):
--provider-path <path>(required)--provider-mode <singleValue|json>--provider-max-bytes <bytes>
--provider-source exec):
--provider-command <path>(required)--provider-arg <arg>(repeatable)--provider-no-output-timeout-ms <ms>--provider-max-output-bytes <bytes>--provider-json-only--provider-env <KEY=VALUE>(repeatable)--provider-pass-env <ENV_VAR>(repeatable)--provider-trusted-dir <path>(repeatable)--provider-allow-insecure-path--provider-allow-symlink-command
Dry run
Use--dry-run to validate changes without writing openclaw.json.
- Builder mode: runs SecretRef resolvability checks for changed refs/providers.
- JSON mode (
--strict-json,--json, or batch mode): runs schema validation plus SecretRef resolvability checks. - Policy validation also runs for known unsupported SecretRef target surfaces.
- Policy checks evaluate the full post-change config, so parent-object writes (for example setting
hooksas an object) cannot bypass unsupported-surface validation. - Exec SecretRef checks are skipped by default during dry-run to avoid command side effects.
- Use
--allow-execwith--dry-runto opt in to exec SecretRef checks (this may execute provider commands). --allow-execis dry-run only and errors if used without--dry-run.
--dry-run --json prints a machine-readable report:
ok: whether dry-run passedoperations: number of assignments evaluatedchecks: whether schema/resolvability checks ranchecks.resolvabilityComplete: whether resolvability checks ran to completion (false when exec refs are skipped)refsChecked: number of refs actually resolved during dry-runskippedExecRefs: number of exec refs skipped because--allow-execwas not seterrors: structured schema/resolvability failures whenok=false
JSON Output Shape
config schema validation failed: your post-change config shape is invalid; fix path/value or provider/ref object shape.Config policy validation failed: unsupported SecretRef usage: move that credential back to plaintext/string input and keep SecretRefs on supported surfaces only.SecretRef assignment(s) could not be resolved: referenced provider/ref currently cannot resolve (missing env var, invalid file pointer, exec provider failure, or provider/source mismatch).Dry run note: skipped <n> exec SecretRef resolvability check(s): dry-run skipped exec refs; rerun with--allow-execif you need exec resolvability validation.- For batch mode, fix failing entries and rerun
--dry-runbefore writing.
Subcommands
config file: Print the active config file path (resolved fromOPENCLAW_CONFIG_PATHor default location).