Skip to content

Doctor/configure commands re-inject raw API keys into config file #11466

@jasonrcox

Description

@jasonrcox

Description

Running openclaw doctor (or processes that trigger doctor internally) can re-inject raw API key values directly into openclaw.json, replacing ${ENV_VAR} references with the resolved plaintext secrets.

Problem

The config file supports environment variable substitution (e.g. ${GOOGLE_API_KEY}), and secrets are intended to live in ~/.openclaw/.env. However, when the doctor process runs — either explicitly or as part of config validation — it can write the resolved (plaintext) values back into the config JSON.

This means:

  • Secrets end up in plaintext in openclaw.json
  • The config file becomes unsafe to share, back up, or commit
  • Users who carefully set up ${VAR} references find them silently replaced with raw keys

Expected Behavior

  • Doctor/configure should never resolve ${ENV_VAR} references when writing config back to disk
  • If a config value contains an env var reference, it should be preserved as-is in the written file
  • Validation should resolve vars in-memory only, not persist the resolved values

Environment

  • OpenClaw version: 2026.2.6-3
  • OS: macOS (arm64)

Workaround

Avoid running openclaw doctor or openclaw configure if your config uses ${ENV_VAR} references for secrets. If accidentally run, manually restore the env var references from a backup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions