Skip to main content
One .praisonai/config.yaml wires your project’s full agent runtime — model, MCP servers, permissions — for every praisonai run in the directory. Values can reference ${VAR}, {env:NAME:-default}, or {file:./relative/path} — see Value Interpolation — and praisonai config provenance shows which layer/file supplied each key.
The user keeps settings in .praisonai/config.yaml; every praisonai run in the project loads that single source.

Quick Start

1

Drop a config file

Create .praisonai/config.yaml in your project root:
2

Run anywhere in the project

Model, MCP server, and permission rules are picked up automatically — no flags needed.
3

Verify resolution

Shows which layers contributed (defaults, global, project, env, CLI).

How It Works

The resolver deep-merges five layers (highest wins): CLI flags always win. Config fills the gaps. Walk-up discovery deep-merges every ancestor config from the repo root down to cwd, not just the nearest one.

Configuration Schema

mcp.servers.<name>

praisonai run wires every enabled server under mcp.servers.* — multiple local (stdio) servers and remote (url: / type: remote) servers are all aggregated and exposed to the agent. Servers with enabled: false are skipped silently. If --mcp "<command>" is also given on the command line, its tools are added on top of the config servers, not in place of them.

permissions

Two equivalent forms: Structured (rule list):
Flat mapping:
read:* here does not authorise .env / private-key reads — the built-in secret gate defaults those to ask unless a secret-specific rule (e.g. read:*.env=allow) opts in. See Secret Read Gate.

Precedence

  • --mcp, if present, merges with config-declared servers — CLI ad-hoc tools are added alongside every enabled config server.
  • --allow / --deny / --permissions are merged on top of config rules — CLI wins per-pattern.
  • --permission-default sets the fallback action, overriding permissions.default from config.

Common Patterns

Pin a model + a single MCP server

CI-safe defaults

All tool calls are denied unless explicitly allowed — safe for unattended CI runs.

Mix with CLI flags

Config gives the base; flags override per-run:

Declare-but-not-wire a server


Best Practices

Checked-in config ensures every teammate and CI runner uses the same model, MCP servers, and permission defaults automatically.
mcp.servers.<x>.env is fine for non-secret config values (paths, flags). For API tokens, use shell environment variables — they are read by the server process at runtime without being stored in YAML.
When behaviour is unexpected, praisonai config show --sources prints exactly which layer won for each key.
The rules: list is evaluated in order; priority fields are respected. The flat mapping form is convenient for simple deny lists but gives no ordering guarantees.

Configuration File

Deep-merge semantics and ancestor discovery details

CLI Configuration

Full cascade reference for the praisonai CLI config layers

Declarative Permissions

All surfaces for pre-declaring allow/deny rules

MCP Transports

Remote MCP server configuration

Config CLI Reference

praisonai config subcommand reference