# Key Global Configuration Options for no‑mistakes: A Complete Reference

> Discover no-mistakes global configuration options for agent selection, timeouts, auto-fix loops, and security policies. Master your daemon and CI pipeline settings.

- Repository: [Kun Chen/no-mistakes](https://github.com/kunchenguid/no-mistakes)
- Tags: api-reference
- Published: 2026-07-14

---

**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`](https://github.com/kunchenguid/no-mistakes/blob/main/internal/config/config.go) and documented in [`docs/src/content/docs/reference/global-config.md`](https://github.com/kunchenguid/no-mistakes/blob/main/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.

```bash

# 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`](https://github.com/kunchenguid/no-mistakes/blob/main/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 when `agent` is 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/claude` forces 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`** (`string` Go 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`** (`string` Go 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`** (`string` Go 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 to `false` to 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 to `0` disables 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 to `false` (the default), commands defined in a repository’s `.no‑mistakes.yaml` are 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. Accepts `debug`, `info`, `warn`, or `error`.
- **`test.evidence`** (object, default: `{store_in_repo:false, dir:".no-mistakes/evidence"}`): Determines where test‑step evidence is stored. When `store_in_repo` is `true`, 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:

```yaml
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`, and `agent_args_override` to customize how AI tools are invoked.
- **Timeouts**: `ci_timeout` re‑arms on branch advancement, while `step_quiet_warning` provides observability without killing steps.
- **Automation**: `auto_fix` limits retry loops, `session_reuse` enables native agent resumption, and `intent` configures transcript analysis.
- **Security**: `allow_repo_commands` defaults to `false` to prevent repository‑defined command execution, while `disable_project_settings` forces 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`](https://github.com/kunchenguid/no-mistakes/blob/main/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`](https://github.com/kunchenguid/no-mistakes/blob/main/.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`](https://github.com/kunchenguid/no-mistakes/blob/main/.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.