config command manages layered CLI defaults — global, project, environment, and runtime flags merged into one resolved config.
Quick Start
1
Set a default model
2
Verify resolution
Usage
Commands
show
When
mcp or permissions are set in any config layer, praisonai config show includes those sections in the output.validate
Validates discovered config files against the schema, catching typos with difflib-based suggestions.
sources
provenance
defaults / global / project / environment / cli), and the absolute path of the file that supplied it ((runtime) for env / CLI / built-in defaults).
Reach for this when praisonai config show returns a value you did not expect and you need to find which file set it.
Single key, text output:
--json flag):
1 with Key not found: <key>.
set / get / reset / path
praisonai config set / praisonai config reset write TOML to the canonical ~/.praisonai/config.toml. Both the canonical home and the config.yaml written by setup / init honour PRAISONAI_HOME — see CLI Home Root.
Strict Validation
Unknown or mistyped keys are reported with the closest valid match. By default they are warnings — your valid keys still apply. Opt into strict mode to fail-fast.ResolvedConfig), so nested mistakes like agent.temprature surface instead of being silently dropped.
Configuration File
Primary format is YAML at~/.praisonai/config.yaml (global) or ./.praisonai/config.yaml (project):
Model lives under
agent.model, not at the top level. See CLI Configuration for the full schema.Project discovery
Fromcwd, the resolver walks up to the git root or $HOME (whichever comes first) searching:
.praisonai/config.yaml.praisonai/config.ymlpraisonai.yaml/praisonai.yml(canonical project-root config, added in PR #3422)praison.yaml/praison.yml(legacy fallback, discovered for backward compat).praison/config.toml(legacy global; loaded exclusively asglobal:when at$HOME)
$HOME the legacy .praison/config.toml name is skipped — it is loaded exactly once as global: by the global loader (see Walk-up Boundaries).
Value Interpolation
Every value in every discovered config file is interpolated at load time, so secrets and reused prompt bodies can live outside your tracked config.
All four in one file:
${VAR} and {env:VAR} with no default are preserved as-is when the variable is unset — the directive stays visible in praisonai config show so a typo doesn’t silently become an empty string.From Python
agent.* Schema
Store API keys via env vars or
praisonai auth — api_key is never written to YAML.
Editor autocomplete:
praisonai init writes a # yaml-language-server: $schema=... pointer to config.schema.json. VS Code (YAML extension) and other LSP editors validate against the published schema.mcp.servers.<name> Schema
permissions.* Schema
Environment Variables
Legacy Formats
Legacy paths still work and are migrated on read:
TOML
[rules], [output], [mcp], [traces], and [session] sections remain valid in legacy files. New projects should use YAML.
The CLI wrapper now roots sessions, traces, logs, cache, and state under the canonical
~/.praisonai/ home (override with PRAISONAI_HOME). The legacy ~/.praison/config.toml is read-only: writers (config set, reset) always land on the canonical path, so an update never mutates the legacy file — migration is one-way.See Also
- Single-Source Config — Model + MCP + permissions in one file
- CLI Configuration — feature guide with diagrams and best practices
- Declarative Permissions — all permission surfaces
- Profile — Performance profiling
- Environment — Environment diagnostics

