Settings files and merge order
Settings are resolved by merging two files in order. Later files win on any key that appears in both.| Step | File | Purpose |
|---|---|---|
| 1 | .bot/settings/settings.default.json | Team-wide defaults. Checked into version control. Edit this to change defaults for everyone on the project. |
| 2 | .bot/.control/settings.json | User-local overrides. Gitignored. Create or edit this file to override settings on your machine without affecting teammates. |
The Settings tab in the web dashboard writes to
.bot/.control/settings.json, so any change made in the UI is automatically local-only.Root-level settings
Unique identifier for this project instance. Auto-generated on first run if
null. Used to correlate telemetry and mothership sync.Name of the active workflow. Set automatically when you run
dotbot init -Workflow <name>.The AI provider to use. One of
claude, codex, or gemini. Change this in the Settings tab or by editing .bot/.control/settings.json.Override the provider’s default permission mode. Valid values depend on the provider:
- claude:
bypass,auto - codex:
bypass,full-auto - gemini:
yolo,auto-edit
null, the provider’s configured default is used.analysis object
Controls the pre-flight analysis phase that runs before each AI task. The analysis phase reads the task, explores the codebase, resolves questions, and produces a context package consumed by the implementation phase.
When
true, task-split proposals generated by the analysis phase are automatically approved without human review.Effort size at which the analysis phase proposes splitting a task. One of
XS, S, M, L, XL. Tasks estimated at or above this effort trigger a split proposal.Hours before an unanswered analysis-phase question is automatically skipped.
null means no timeout.Analysis scheduling mode.
on-demand runs analysis only when a task reaches the front of the queue.Model alias used for analysis. Can be overridden per-task. Aliases are resolved against the active provider’s model map (e.g.
Opus → claude-opus-4-5 for Claude).execution object
Controls the implementation (execution) phase — the phase where the AI agent carries out the work described in a task.
Model alias used during task execution. Can be overridden per-task via the
model field in task_create.Maximum number of tasks that run in parallel within a single workflow. Increase this to shorten wall-clock time when tasks are independent. Each concurrent task runs in its own git worktree.
editor object
Configures IDE integration launched after task commits.
IDE to open after a task completes.
off disables IDE integration. Other values (e.g. cursor, vscode) map to known IDE launch commands.Custom shell command to invoke when
editor.name is set to custom.costs object
Parameters used to estimate time-savings and AI spend in the dashboard’s cost report. These settings affect display only — they do not change runtime behaviour.
Developer hourly rate in the configured currency. Used to calculate estimated human time cost.
Average AI token cost per completed task (in the configured currency). Used for cost projection.
Multiplier representing how much faster AI completes a task compared to a human. Used in time-savings calculations.
ISO 4217 currency code for cost display (e.g.
USD, EUR, GBP).operations object
Low-level runtime behaviour for file I/O. These settings rarely need adjustment unless you are running dotbot on a filesystem with high lock contention.
Number of retry attempts for file operations that fail due to transient lock contention.
Base delay in milliseconds between file retry attempts. Actual delay uses exponential backoff.
logging object
Controls log output verbosity and retention.
Minimum log level written to the terminal. One of
Debug, Info, Warning, Error.Minimum log level written to log files in
.bot/.control/logs/.Number of days to retain log files before automatic deletion.
Maximum size in megabytes for a single log file before it is rotated.
mothership object
Configures the central notification and sync server. This is an optional enterprise feature that lets dotbot push task updates and pending questions to a shared server, and receive answers via polling — enabling human-in-the-loop workflows across distributed teams.
When
true, dotbot pushes task updates, questions, and status to the configured server.Base URL of the mothership server (e.g.
https://dotbot.example.com).API key for authenticating with the mothership server. Store this in
.bot/.control/settings.json, not in settings.default.json.Notification channel for human-in-the-loop questions. One of
teams, email, jira.List of recipient addresses or IDs for notifications (emails, Teams UPNs, Jira user IDs).
Project display name used in notification messages.
Short project description included in notification context.
How often (in seconds) dotbot polls the mothership server for answers to pending questions.
When
true, task state changes are synced to the mothership server.When
true, pending questions are pushed to the mothership and answers are pulled via polling.Full default settings file
This is the completesettings.default.json as shipped with a new dotbot installation. Copy this as a starting point and override only the values you need.