~/.fabro/settings.toml. The file is optional. If it does not exist, Fabro falls back to built-in defaults.
The CLI and server each read the sections relevant to their own process. On a remote deployment, the CLI machine and the server machine each have their own settings.toml.
Fabro only reads
settings.toml. Older cli.toml, user.toml, and server.toml filenames are no longer part of the supported config surface.File location
The default path is~/.fabro/settings.toml.
Use fabro server start --config /path/to/settings.toml if the server should read a different file.
Schema version
Every Fabro config file must declare its schema version with a top-level_version key:
settings.toml
_version are treated as version 1. The legacy top-level version key is no longer accepted and raises a targeted rename hint.
Who reads what
settings.toml uses the same schema as .fabro/project.toml and workflow.toml, but each process only reads the fields it understands. The top-level schema is strictly namespaced — the only allowed domains are [project], [workflow], [run], [cli], [server], and [features].
[cli.*] and [server.*] stanzas are owner-specific: they are only consumed from ~/.fabro/settings.toml (plus process-local flags and env overrides). The same stanzas in .fabro/project.toml or workflow.toml remain schema-valid but runtime-inert.
See Server Configuration for the server-owned sections.
Precedence
Shared layered domains ([project], [workflow], [run], [features]) use this override order:
- CLI flags — always win
- Environment overrides — Fabro-defined override channels
workflow.toml— per-workflow overrides.fabro/project.toml— project defaults~/.fabro/settings.toml— machine defaults- Built-in defaults
[cli.*], [server.*]) use a narrower trust boundary — only CLI flags, env overrides, ~/.fabro/settings.toml, and built-in defaults apply.
Full example
settings.toml
[cli.updates]
Controls whether Fabro runs a daily background check for new releases. The check runs during run, exec, init, and install commands and prints a notice to stderr when a newer version is available.
settings.toml
The
--no-upgrade-check CLI flag overrides this for a single invocation. See fabro upgrade for manual upgrades.
[cli.output]
Generic CLI output defaults.
settings.toml
The
-v / --verbose CLI flag always takes effect regardless of this setting.
[cli.exec] section
Defaults for fabro exec sessions.
settings.toml
[cli.exec.model] selects the default LLM for exec:
[cli.exec.agent] controls agent behavior during exec:
Permission levels
read-only— auto-approves read tools (read_file,grep,glob,list_dir) and subagent toolsread-write— adds write tools (write_file,edit_file,apply_patch)full— allows all tools including shell commands
--auto-approve).
[run.model] section
Defaults for workflow model selection in commands like fabro run and fabro preflight.
settings.toml
Use
[cli.exec.model] to configure provider and model for fabro exec. Use [run.model] for workflow-oriented defaults.[cli.logging] section
Configure the default CLI log level. Precedence: FABRO_LOG env var > --debug flag > [cli.logging].level > "info".
settings.toml
Server-side logging is a separate namespace at
[server.logging].
[run.git.author]
Customize the git author identity used for checkpoint commits.
settings.toml
[cli.target] section
Connection info for commands that target a remote Fabro server.
settings.toml
fabro model uses [cli.target] by default when no explicit --storage-dir is passed. An explicit --server flag overrides the configured target:
http(s)://... target is always remote-by-contract. Fabro does not derive auth for that target from a local storage dir, an active local daemon record, or ~/.fabro/dev-token. Use CLI OAuth (fabro auth login --server ...) or an explicit FABRO_DEV_TOKEN when you need remote auth.
fabro auth login only works with type = "http" targets. Unix-socket targets use the local dev-token flow instead of browser OAuth. Plain http://... targets are supported for local or trusted deployments; operators remain responsible for providing HTTPS anywhere real credentials cross an untrusted network.
fabro exec does not automatically use [cli.target]. It only routes model traffic through a Fabro server when you pass --server for that invocation.
[run.pull_request]
Enable auto-PR globally so workflows open a GitHub pull request on successful completion.
settings.toml
Precedence:
workflow.toml > .fabro/project.toml > ~/.fabro/settings.toml > built-in default (false).
[run.agent.mcps] section
Configure MCP servers to connect to during agent-driven runs. Each server is a named TOML table under [run.agent.mcps]. For fabro exec-only MCPs, use [cli.exec.agent.mcps.*] with the same shape.
Stdio transport
Spawn a local process and communicate over stdin/stdout:settings.toml
HTTP transport
Connect to a remote MCP server over Streamable HTTP:settings.toml
Sandbox transport
Run an MCP server inside the workflow’s sandbox and connect via preview URL. Only available with remote sandbox providers (Daytona) that support port previews. Typically configured inworkflow.toml rather than settings.toml:
workflow.toml
See MCP — Sandbox transport for how Fabro launches and connects to sandbox MCP servers.