Load the user-scope configuration (defaults + the user file, no project or
session layers). This is the view persistence baselines, the daemon, and
runtime re-reads use — anything that must not observe another repo’s
project config or a one-off CLI flag.
Like load_config (user scope, no session flags) but never fails: on a
malformed config, warn on stderr (secret-redacted, #F13) and fall back to
defaults (#111). For standalone subcommands that only read user settings.
Like load_layered_config but never fails — the startup entry point.
On success, prints notices and layer-attributed warnings to stderr. On a
malformed layer, warns (secret-redacted, #F13) and degrades: the session
flags are re-applied over bare defaults so --no-network/-c survive a
corrupt user file rather than being silently dropped with it.
The project-scoped view (defaults + user + project, NO session flags) for
runtime re-reads keyed to a workdir — e.g. the memory settings consulted
per operation. Never fails and never prints; warnings/notices were already
surfaced by the startup load.
Persist the whole [plan] table (the /plan config picker). Values the
user set through the picker are explicit choices, so writing them —
including ones that currently match defaults — is correct; unset Options
stay absent via skip_serializing_if.
Persist a reasoning level for a specific model ID
(e.g. <provider>/<model>). The TUI calls this from Alt+T,
/reasoning <level>, and the does-not-support-thinking auto-snap so
the choice sticks per-model rather than bleeding into other models on
next session start.
Set one key (pre-split path segments, so map keys containing dots — e.g.
reasoning_per_model."ollama/qwen3:8b" — address correctly) in the USER
config file, leaving every other key untouched.