Auto-Fix vs Ask-User Findings in no-mistakes: Understanding Pipeline Decisions

In no-mistakes, auto-fix findings are applied automatically by the engine for safe, non-functional issues, while ask-user findings pause execution at the fix_review gate and require manual approval for any change affecting functional behavior or product intent.

The no-mistakes engine classifies every issue discovered during a pipeline run as a finding, with each entry carrying an action field that dictates how the repair proceeds. Understanding the distinction between auto-fix and ask-user classifications lets you predict when the CLI resolves issues silently versus when it demands human intervention. This logic is implemented across the kunchenguid/no-mistakes repository, from type definitions in internal/types/findings.go to the execution engine in internal/pipeline/steps/review.go.

Defining Auto-Fix and Ask-User Actions

Auto-Fix: Safe, Automated Repairs

The auto-fix action indicates that an issue is safe to repair automatically without human interruption. According to the contractual definition in [internal/pipeline/steps/review.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/steps/review.go#L163-L169), these are "non-functional, non-user-visible issues" that can be fixed "without any discussion about the author's intent." When a step returns only auto-fix findings, the executor enters an auto-fix loop, repeatedly invoking the repair agent until the findings disappear or the maximum retry count is reached. This behavior is verified in [internal/pipeline/executor_autofix_test.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/executor_autofix_test.go#L351-L371).

Ask-User: Human Review for Ambiguous Changes

The ask-user action marks findings that require a human decision because they touch functional requirements, product behavior, or any change that could be controversial. As defined in [internal/pipeline/steps/review.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/steps/review.go#L207-L215), even if an issue "seems obviously wrong," the pipeline defaults to asking for review when intent is unclear. If any ask-user findings remain after auto-fix rounds, the pipeline parks at the fix_review gate, displaying a "🛑 ask-user" badge in the PR summary ([internal/pipeline/steps/prsummary.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/steps/prsummary.go#L1023-L1025)) and waiting for commands like axi respond or axi approve to resume.

Source Code Implementation Details

Action Constants and Defaults

The string constants ActionAutoFix = "auto-fix" and ActionAskUser = "ask-user" are declared in [internal/types/findings.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/types/findings.go#L12-L13). The helper function actionOrDefault ensures that any finding with an empty or missing action field defaults to ask-user ([internal/types/findings.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/types/findings.go#L232-L235)), guaranteeing the pipeline never silently auto-fixes ambiguous issues.

User-Facing Documentation

The CLI help text generated from [internal/skill/skill.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/skill/skill.go#L162-L166) explicitly states that review auto-fix is disabled by default and that ask-user findings park for your decision ([internal/skill/skill.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/skill/skill.go#L310)). This aligns with the engine's safety-first approach of requiring explicit opt-in for automatic repairs.

Pipeline Execution Behavior

The Auto-Fix Loop

When a step returns exclusively auto-fix findings, the executor immediatly begins applying fixes without stopping. The loop continues until all findings are resolved or the configured retry limit is reached. Tests in [executor_autofix_test.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/executor_autofix_test.go) verify that this loop only initiates when no ask-user findings are present.

Parking at the Fix Review Gate

If ask-user findings exist, the pipeline halts at the fix_review gate. The approval flow demonstrated in [executor_approval_test.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/executor_approval_test.go#L81-L88) shows how the run remains in a pending state until explicitly approved, rejected, or edited by the user.

Practical Examples

Auto-Fix Finding JSON Structure

{
  "findings": [
    {
      "id": "lint-1",
      "severity": "error",
      "description": "missing error check",
      "action": "auto-fix"
    }
  ],
  "summary": "1 lint issue"
}

Ask-User Finding JSON Structure

{
  "findings": [
    {
      "id": "review-1",
      "severity": "warning",
      "description": "hard-coded API URL; should be configurable",
      "action": "ask-user"
    }
  ],
  "summary": "1 issue requiring review"
}

CLI Interaction Patterns


# Run pipeline; auto-fix findings resolve automatically

no-mistakes run

# Pipeline pauses with ask-user findings; manual intervention required

axi respond  # or axi approve, axi reject

Summary

  • Auto-fix applies to non-functional, mechanical, or low-risk code-quality issues that do not alter author intent, allowing the pipeline to proceed without interruption.
  • Ask-user applies to functional changes, design choices, or ambiguous issues where the pipeline cannot safely infer intent, causing the run to park at the fix_review gate.
  • Missing or empty action fields default to ask-user via the actionOrDefault helper in internal/types/findings.go, preventing silent automatic repairs.
  • The executor enters an auto-fix loop for eligible findings but parks for approval when ask-user items remain, rendering a "🛑 ask-user" badge in the PR summary.

Frequently Asked Questions

What happens if a finding has no action field specified?

The actionOrDefault function in [internal/types/findings.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/types/findings.go#L232-L235) treats empty or missing action fields as ask-user. This safety default ensures the pipeline never automatically fixes an issue unless explicitly marked as safe to do so.

Can I enable auto-fix for review findings that default to ask-user?

Yes, but it requires explicit configuration. According to the skill documentation in [internal/skill/skill.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/skill/skill.go#L162-L166), review auto-fix is disabled by default. You can adjust the auto_fix.review flag in your configuration to change this behavior, though ask-user remains the recommended default for functional changes.

How do I resume a pipeline paused at the fix_review gate?

When ask-user findings park the execution, use the axi respond command to provide feedback, or axi approve to accept the proposed changes. The approval workflow is demonstrated in [executor_approval_test.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/executor_approval_test.go#L81-L88), showing that the run only continues after explicit human action.

Where does the "🛑 ask-user" badge appear in the output?

The badge is rendered in the PR summary UI within [internal/pipeline/steps/prsummary.go](https://github.com/kunchenguid/no-mistakes/blob/main/internal/pipeline/steps/prsummary.go#L1023-L1025). This visual indicator appears alongside any findings that require manual review, making it clear which issues blocked the automatic pipeline completion.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →