moot.toml¶
Per-project agent configuration. moot.toml lives at your project root
and controls the model, effort level, and harness type for each agent role.
Location and creation¶
moot.toml is created automatically in your project root when you run:
moot config set <key> <value>
You can also create or edit it manually — it’s a standard TOML file.
Structure¶
The file uses [agent.<role>] sections, one per agent role. Any role
section can be omitted; omitted settings fall back to the role default,
then the global default.
[agent.product]
model = "claude-opus-4-7"
effort = "high"
harness = "devcontainer"
[agent.spec]
model = "claude-sonnet-4-6"
effort = "standard"
harness = "devcontainer"
[agent.implementation]
model = "claude-sonnet-4-6"
effort = "standard"
harness = "devcontainer"
[agent.qa]
model = "claude-sonnet-4-6"
effort = "standard"
harness = "devcontainer"
Per-role fields¶
modelThe AI model to use for this role. Examples:
claude-opus-4-7,claude-sonnet-4-6. Product typically uses Opus for judgment-heavy work; Spec, Implementation, and QA typically use Sonnet.effortEffort level hint passed to the model at startup. Controls how much reasoning the model applies. Valid values depend on the moot CLI version — run
moot config showto see what’s accepted.themeUI theme preference for this agent’s sessions. Optional.
harnessThe agent harness type.
devcontaineris the standard value formoot upsetups. Set this if you’re using a non-default harness (Cursor, Cline, a custom runner).
Inspecting the resolved configuration¶
To see the current resolved configuration with cascade indicators:
moot config show
Output shows each setting alongside a marker indicating whether the value
comes from moot.toml, the role default, or the global default. Unset
fields are listed as (unset) so you can see exactly what will be applied.