Key Global Configuration Options for no‑mistakes: A Complete Reference
no‑mistakes reads global settings from ~/.no‑mistakes/config.yaml (or from a path defined by the NM_HOME environment variable), where key global configuration options control agent selection, pipeline timeouts, auto‑fix loops, and security policies that govern the daemon and CI pipeline.
The kunchenguid/no-mistakes repository centralizes its runtime behavior through a single configuration file that affects every repository the daemon touches. These settings are defined in internal/config/config.go and documented in docs/src/content/docs/reference/global-config.md, allowing you to customize tool behavior without modifying per‑project files.
Configuration File Location and Environment Variables
The daemon and CLI expect the global configuration at ~/.no-mistakes/config.yaml by default. You can relocate this directory by exporting the NM_HOME environment variable before invoking the tool.
# Use a custom configuration directory
export NM_HOME=/etc/no-mistakes
no-mistakes axi run
When the daemon starts—specifically within internal/daemon/manager.go—it parses this file and applies any per‑repository overrides defined in local .no‑mistakes.yaml files, unless explicitly disabled.
Agent Selection and Binary Overrides
The agent field (type string or []string, default: auto) determines which AI agent executes tasks. The value auto selects the first native agent found on your system PATH, such as claude, codex, or opencode. For ACP targets, use the format acp:<target>.
You can override agent binary locations and arguments without modifying your system PATH:
acpx_path(string, default:acpx): Specifies the path to the user‑installed acpx binary used whenagentis set to an ACP target.acp_registry_overrides(map[string]string, default:{}): Maps specific ACP target names to raw shell commands, bypassing the registry lookup.agent_path_override(map[string]string, default:{}): Provides custom binary locations for native agents. For example,claude: /usr/local/bin/claudeforces a specific Claude binary.agent_args_override(map[string][]string, default:{}): Injects extra CLI flags into native agent invocations. Use this for model selection, tier specification, or reasoning effort flags.
These overrides are read by the agent launcher in internal/agent/*.go when spawning new processes.
Pipeline Timeouts and Daemon Connectivity
Control execution limits and responsiveness through duration‑based fields:
ci_timeout(stringGo duration or"unlimited", default:"168h"): Defines the idle timeout for the CI monitor. The timer re‑arms whenever the upstream default branch advances. Set to"unlimited","0", or a negative value to disable the timeout entirely.step_quiet_warning(stringGo duration, default:"10m"): Specifies how long a pipeline step may produce no output before AXI marks it as "quiet." This is purely for observability and does not abort execution.daemon_connect_timeout(stringGo duration, default:"3s"): The maximum time CLI clients wait for the daemon socket to accept a connection.
These timeouts are enforced by the step controllers in internal/pipeline/steps/* and the daemon manager.
Automation Intelligence and Session Management
Fine‑tune autonomous behavior and transcript processing:
session_reuse(bool, default:true): Enables per‑run, per‑role session reuse for agents supporting native resume (claude,codex). Set tofalseto force cold invocations on every step.auto_fix(object, default:{rebase:3, review:0, test:3, document:3, lint:3, ci:3}): Limits the number of follow‑up auto‑fix attempts per pipeline step. Setting any value to0disables the retry loop for that specific phase.intent(object, default:{enabled:true, threshold:0.2, slack_days:3, disabled_readers:[]}): Configures transcript‑based intent extraction, including scoring thresholds and disabled analysis readers.
Security Controls and Project Restrictions
Manage execution privileges and instruction scoping:
allow_repo_commands(bool, default:false): When set tofalse(the default), commands defined in a repository’s.no‑mistakes.yamlare blocked from execution by the daemon for security.disable_project_settings(bool, default:false): Disables all project‑level instruction overrides, forcing the daemon to use only global settings.instructions(string, optional): Free‑form documentation or policy text appended to every run, visible to agents.
Logging and Evidence Storage
Control observability and artifact persistence:
log_level(string, default:"info"): Controls daemon verbosity. Acceptsdebug,info,warn, orerror.test.evidence(object, default:{store_in_repo:false, dir:".no-mistakes/evidence"}): Determines where test‑step evidence is stored. Whenstore_in_repoistrue, the evidence directory is committed back to the repository.
Complete Configuration Example
The following ~/.no-mistakes/config.yaml demonstrates agent overrides, custom timeouts, and disabled auto‑fixes:
agent: auto # Pick first native agent on PATH
acpx_path: /usr/local/bin/acpx
agent_path_override:
codex: /opt/homebrew/bin/codex
agent_args_override:
codex:
- -m
- gpt-5.4
- -c
- model_reasoning_effort=low
ci_timeout: "168h" # 7 days idle timeout (re-arms on base-branch advance)
step_quiet_warning: "10m"
daemon_connect_timeout: "5s"
log_level: debug
auto_fix:
rebase: 5
review: 0 # Require manual review for findings
test: 3
lint: 2
intent:
enabled: true
threshold: 0.25
test:
evidence:
store_in_repo: true
dir: .no-mistakes/evidence
allow_repo_commands: false # Maintain secure defaults
Summary
Understanding the key global configuration options for no‑mistakes lets you centralize control over the entire automation pipeline:
- Location: The daemon loads
~/.no-mistakes/config.yaml(or$NM_HOME/config.yaml) at startup. - Agent Control: Use
agent,acpx_path,agent_path_override, andagent_args_overrideto customize how AI tools are invoked. - Timeouts:
ci_timeoutre‑arms on branch advancement, whilestep_quiet_warningprovides observability without killing steps. - Automation:
auto_fixlimits retry loops,session_reuseenables native agent resumption, andintentconfigures transcript analysis. - Security:
allow_repo_commandsdefaults tofalseto prevent repository‑defined command execution, whiledisable_project_settingsforces global‑only policies.
Frequently Asked Questions
How do I change the global configuration directory for no‑mistakes?
Set the NM_HOME environment variable to point to your desired directory. The daemon and CLI will look for config.yaml inside that path instead of the default ~/.no-mistakes/.
What is the security risk of enabling allow_repo_commands?
When allow_repo_commands is set to true, the daemon executes shell commands defined in repository‑local .no-mistakes.yaml files. Since these files may be modified by contributors, enabling this option exposes your system to arbitrary code execution from untrusted sources. It defaults to false for this reason.
Can I use different agent binaries for different projects without changing global settings?
Yes. While the global agent_path_override map applies system‑wide, you can achieve per‑project variation by leaving agent as auto in the global config and using the local .no-mistakes.yaml file to specify project‑specific agent versions, provided you do not set disable_project_settings: true.
Why does my CI pipeline keep running after I set ci_timeout to 168h?
The ci_timeout counter re‑arms (resets) whenever the upstream default branch advances, such as when new commits are pushed. This design keeps long‑running CI monitors alive during active development. To force a hard limit that does not re‑arm, you must implement an external timeout mechanism outside of no‑mistakes.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →