Skip to content

CLI Commands

no-mistakes

Attach to the active pipeline run for the current branch when one exists. If none exists, bare no-mistakes can start the setup wizard to create a branch, commit changes, push through the gate, wait for the daemon to register the new run, and then attach. If the push succeeds but no run is registered, that wizard path now exits with an explicit error instead of silently falling through. By default this wizard path is interactive and only runs in a TTY session. In non-interactive contexts, bare no-mistakes falls back to showing the last 5 runs inline unless you pass -y or --yes to run the wizard and accept defaults automatically. When a TTY is available, -y keeps the wizard visible, shows a brief waiting for run… state after push, and auto-advances the default path; without a TTY it falls back to the headless path.

Terminal window
no-mistakes
no-mistakes --skip test,lint
FlagTypeDefaultDescription
-y, --yesboolfalseRun setup wizard and accept defaults automatically
--skipstring(none)Comma-separated pipeline steps to skip for a new run

Unlike no-mistakes attach, bare no-mistakes only auto-attaches to an active run on the current branch. --skip only applies when bare no-mistakes starts a new pipeline run through the wizard; it does not skip a step on an already-active run. Valid step names are intent, rebase, review, test, document, lint, push, pr, and ci.

no-mistakes init

Initialize or refresh the gate for the current repository.

Terminal window
no-mistakes init

Creates or refreshes a local bare repo, installs the post-receive hook, best-effort isolates the gate repo’s hook path from shared git config changes when Git supports config --worktree, adds or repairs the no-mistakes git remote, detects the default branch, records or updates the repo in SQLite, installs the /no-mistakes agent skill at user level into ~/.claude/skills/no-mistakes/SKILL.md and ~/.agents/skills/no-mistakes/SKILL.md, and ensures the daemon is running, installing the managed service when available and falling back to a detached daemon otherwise. init writes no skill files into the repo; the user-level copies cover every supported agent (~/.claude/skills for Claude Code, ~/.agents/skills for Codex, OpenCode, Rovo Dev, and Pi) across all repos. If the home .claude links to .agents, .claude/skills links to .agents/skills, or the reverse, init follows that layout and still makes the skill readable from both logical paths. If the repo still contains a vendored skill copy written by an older no-mistakes version, init leaves it untouched and prints a notice that it is no longer needed and can be removed. The gate advertises Git push-option support, so you can skip steps for one push with git push -o no-mistakes.skip=test,lint no-mistakes <branch>.

Re-running init on an already-initialized repo succeeds and reports Gate already initialized (refreshed). It refreshes managed gate wiring, origin/default-branch metadata, hook-path isolation, and the installed agent skill, overwriting any stale SKILL.md content from an older binary. If you rename or move an initialized working directory and the old path no longer exists, re-running init from the new path reattaches the existing gate, preserves the repo ID and run history, and updates the stored working path. If you copy an initialized working directory while the original still exists, the copy is treated as a separate repo and gets a fresh gate. Fresh init rolls back gate setup when a required gate or daemon step fails; refresh does not eject a pre-existing gate if daemon startup fails. Skill installation is best-effort: if the skill write fails, init reports it and leaves the working gate in place.

no-mistakes axi

Agent eXperience Interface for non-interactive agents. Most agent workflows use the installed /no-mistakes skill, which drives this command surface underneath. It prints TOON to stdout, prints progress to stderr, and uses structured stdout errors with exit code 1 for operational failures and 2 for bad usage.

Terminal window
no-mistakes axi

With no subcommand, shows the executable path, description, repo, daemon state, the active run when present, recent runs, and next-step help.

no-mistakes axi run

Start or reattach to validation for the current branch, blocking until the first approval gate, CI-ready decision point, or final outcome.

Terminal window
no-mistakes axi run --intent "the user's goal"
no-mistakes axi run --intent "the user's goal" --skip test,lint
no-mistakes axi run --intent "the user's goal" --yes
FlagTypeDefaultDescription
--intentstring(none)What the user set out to accomplish; required to start a new run
-y, --yesboolfalseAuto-resolve every gate until a decision point or outcome
--skipstring(none)Comma-separated pipeline steps to skip

--intent is not a description of the diff. It is the user’s goal or request, and no-mistakes uses it verbatim instead of transcript inference. Err on the side of completeness: include the goal, important decisions and tradeoffs, constraints or approaches ruled in or out, and explicit requests that might otherwise look surprising in the diff. When starting a new run, axi run refuses the default branch and uncommitted working trees with actionable errors instead of auto-branching or auto-committing. Reattaching to an in-flight run does not require --intent. With --yes, axi run treats both action: auto-fix and action: ask-user findings as standing consent for the pipeline to fix them by selecting every finding, then accepts the resulting fix review. Gates with no findings or only action: no-op findings are approved as-is, and each step is fixed at most once so unresolved findings do not loop forever. Without --yes, an agent driving axi run should stop when a gate contains action: ask-user findings and relay each finding’s ID, file, and full description to the user before responding. When the CI step is still monitoring an open PR and checks are green, axi run exits successfully with outcome: checks-passed instead of waiting for a human merge. Treat that as the agent stopping point: ask the user to review and merge the PR from the help line. Successful outcomes (checks-passed and passed) also carry help instructions telling the agent to summarize the run. When the pipeline applied fixes, they include a fixes table and a help instruction to acknowledge the misses and list those fixes for the user’s review.

no-mistakes axi respond

Answer the current approval gate and continue until the next gate, CI-ready decision point, or final outcome.

Terminal window
no-mistakes axi respond --action approve
no-mistakes axi respond --action fix --findings F1,F2 --instructions "optional guidance"
no-mistakes axi respond --action fix --add-finding '{"description":"...","action":"auto-fix"}'
no-mistakes axi respond --action skip
FlagTypeDefaultDescription
--actionstring(none)approve, fix, or skip; required
--stepstringawaiting stepStep to respond to
--findingsstring(none)Comma-separated finding IDs for --action fix
--instructionsstring(none)Guidance applied to selected findings
--add-findingstring(none)JSON finding object to add and fix
-y, --yesboolfalseAuto-resolve every subsequent gate until a decision point or outcome

After the explicit response, --yes uses the same auto-resolution behavior as axi run --yes: have the pipeline fix auto-fix and ask-user findings once, approve the fix review, approve gates that only contain non-actionable no-op findings, and stop at outcome: checks-passed when CI is green but the PR still needs a human merge. The same successful-output reporting instructions apply to axi respond results.

no-mistakes axi status

Show the active run, or the most recent run when none is active.

Terminal window
no-mistakes axi status
no-mistakes axi status --run <id>
FlagTypeDefaultDescription
--runstringactive or most recentInspect a specific run ID

no-mistakes axi logs

Show the log output of one pipeline step.

Terminal window
no-mistakes axi logs --step review
no-mistakes axi logs --step review --full
no-mistakes axi logs --step review --run <id>
FlagTypeDefaultDescription
--stepstring(none)Step name; required
--runstringactive or most recentRun ID to inspect
--fullboolfalseShow the entire log instead of the tail

Without --full, long logs show the last 40 lines and a help hint for the full log.

no-mistakes axi abort

Cancel the active run for the current branch.

Terminal window
no-mistakes axi abort

If there is no active run, this succeeds as a no-op.

no-mistakes eject

Remove the gate from the current repository.

Terminal window
no-mistakes eject

Removes the no-mistakes remote, deletes the bare repo directory, cleans up worktrees, and deletes the database record (cascades to runs and steps). It does not remove repo-local agent skill files created by init.

no-mistakes attach

Attach to the active pipeline run.

Terminal window
no-mistakes attach [--run <id>]
FlagTypeDefaultDescription
--runstring(none)Attach to a specific run ID instead of the active run

Opens the TUI for the active run anywhere in the current repo. If --run is specified, attaches to that specific run regardless of branch. Unlike bare no-mistakes, this does not stay branch-scoped before falling back.

no-mistakes rerun

Rerun the pipeline for the current branch.

Terminal window
no-mistakes rerun

Starts a new pipeline run using the last-known head SHA on the current branch. Useful for retrying after a fix or configuration change.

no-mistakes status

Show repo, daemon, and active run status.

Terminal window
no-mistakes status

Displays:

  • Repo path and upstream URL
  • Gate path
  • Daemon status (running/stopped, PID)
  • Active run details: ID, branch, status, head SHA, start time

no-mistakes runs

List recorded pipeline runs for the current repo.

Terminal window
no-mistakes runs [--limit <n>]
FlagTypeDefaultDescription
--limitint10Maximum number of runs to display

Shows runs newest-first with branch, status (styled), short SHA, timestamp, and PR URL if set.

no-mistakes stats

Show historical usage stats across all repos.

Terminal window
no-mistakes stats

Displays total changes, rescued changes, rescue rate, reported and fixed mistakes, fixes by pipeline step, and the top repos by rescue activity.

no-mistakes doctor

Check system health and dependencies.

Terminal window
no-mistakes doctor

Checks:

  • git binary
  • gh CLI (optional, needed for GitHub PR and CI steps)
  • Data directory (~/.no-mistakes/)
  • SQLite database
  • Daemon status
  • Native agent binaries: claude, codex, acli, opencode, pi

Uses indicators: (available), (not found, optional), (problem detected).

doctor does not validate acpx or ACP targets. For agent: acp:<target>, verify acpx_path yourself.

doctor currently checks gh availability only. For GitLab PR and CI steps, install and authenticate glab. For Bitbucket Cloud PR and CI steps, set NO_MISTAKES_BITBUCKET_EMAIL and NO_MISTAKES_BITBUCKET_API_TOKEN.

no-mistakes update

Update the installed binary and reset the daemon.

Terminal window
no-mistakes update
no-mistakes update --beta
no-mistakes update -y

Downloads the latest release, verifies the SHA-256 checksum, atomically replaces the running binary, and resets the daemon when it is running or stale daemon artifacts exist so the new executable is picked up, preferring the managed service path and falling back to a detached daemon if service startup is unavailable or fails. By default this installs the latest stable release. Pass --beta to include prereleases and install the latest beta when one is newer than the current stable release. If pending or running pipeline runs exist, update warns that restarting the daemon can cause those runs to fail, prints each active run’s ID, status, branch, and short head SHA, and prompts before continuing. If the daemon is running from a different executable path, update prompts before replacing it. Pass -y or --yes to continue through update safety prompts while still printing warnings. If the daemon executable path cannot be determined, the update aborts before replacement. If the daemon does not come back cleanly after a successful replacement, the command reports that failure. On macOS, removes the quarantine extended attribute.

Because update installs the latest official release binary, the replacement binary includes the default self-hosted telemetry host and website ID. Disable telemetry with NO_MISTAKES_TELEMETRY=0, or override the host and website ID with NO_MISTAKES_UMAMI_HOST and NO_MISTAKES_UMAMI_WEBSITE_ID.

Background update checks run automatically on each CLI invocation (except update itself). If a newer version is available, a notification is printed to stderr. Suppressed for dev builds or when NO_MISTAKES_NO_UPDATE_CHECK=1 is set.

no-mistakes daemon start

Start the daemon, installing or refreshing the managed service when possible.

Terminal window
no-mistakes daemon start

Prefers the managed service path and falls back to a detached daemon if service install or startup is unavailable or fails. If the daemon is already running, the command refreshes a stale macOS launchd or Linux systemd service definition and restarts through the managed service; if the definition is unchanged, it reports that the daemon is already running.

no-mistakes daemon stop

Stop the running daemon process.

Terminal window
no-mistakes daemon stop

This does not remove the managed service. A later no-mistakes, no-mistakes daemon start, init, attach, rerun, or update can start the daemon again through the same service manager when available, or as a detached daemon otherwise.

no-mistakes daemon restart

Restart the daemon.

Terminal window
no-mistakes daemon restart

Stops the current daemon and starts it again. This works whether the daemon is currently running or not.

no-mistakes daemon status

Check whether the daemon is running.

Terminal window
no-mistakes daemon status

Shows the PID if the daemon is running.