STUPID-2026-0082

Aider silently discards a model's correct diff response as "no tracked changes" when it guesses the wrong edit format

4.6medium
July 23, 2026Reproducible
  1. Instruction given

    None specific to this bug — the user was working normally in a large (~1,100-file, ~179k-token context) repository with a model (qwen3.8-max-preview via an OpenAI-compatible endpoint) that has no entry in Aider's model-settings.yml, so Aider auto-selected the `whole` edit format rather than being told which format to expect.

  2. Expected behavior

    When the model's response doesn't match the edit format Aider expects, and in particular when it takes the form of a well-formed unified diff instead of a `whole`-format rewrite, Aider should either parse it as a diff anyway or clearly warn the user that a response was rejected for a format mismatch — not discard it silently.

  3. Actual behavior

    The model ignored the auto-selected `whole` format and returned a standard unified diff containing correct, well-reasoned code changes. Aider's parser could not match the diff against the `whole`-format parsing path, concluded there were no tracked changes, and discarded the entire response with no warning or error. The user saw only an empty, no-op turn; nothing indicated the model had actually done the work and Aider had thrown it away. Setting `--edit-format diff` explicitly avoided the bug.

  4. Damage

    Filed by the affected user (noelsaw1) with an exact reproduction: use a model absent from model-settings.yml so Aider auto-selects `whole` format, then have the model respond with a unified diff instead. No maintainer response or fix had landed as of this write-up. No specific production incident was reported alongside the filing, but the failure is silent by construction — a user has no on-screen signal that their turn produced real, correct work that was then discarded, and may re-prompt, assume the model failed, or lose the change entirely. It is the same silent-partial-or-total-success shape as two other Aider issues filed within roughly the same window: #5573 (a partial-hunk-application warning that fails to fire, STUPID-2026-0080) and #5552 (headless mode exiting 0 after a fatal API failure, STUPID-2026-0081) — a third distinct code path in the same tool where work is lost or a failure occurs with nothing surfaced to the user or caller.

An Aider user working in a large repository (roughly 1,100 files, a ~179k-token context) with a model that has no entry in Aider's `model-settings.yml` (`qwen3.8-max-preview`, reached via an OpenAI-compatible endpoint) hit a silent data-loss bug in the tool's edit-format handling. With no explicit `--edit-format` flag set, Aider auto-selected the `whole` format for the unlisted model. The model, however, responded with a standard unified diff containing correct, well-reasoned changes — not a `whole`-format rewrite. Aider's parser could not match the response against the format it expected, concluded there were "no tracked changes," and discarded the entire response without any warning or error message. The user was left with an empty, no-op-looking turn and no indication that the model had actually done real work that Aider had then thrown away. The reporter confirmed the fix: explicitly passing `--edit-format diff` avoided the bug entirely, isolating the cause to the auto-selected format guess rather than the model's output. No maintainer response had landed as of this write-up. It is the third distinct silent-success code path reported in Aider within roughly the same period, alongside separate issues in unified-diff partial-application warnings (#5573) and headless-mode exit-code handling (#5552) — different functions, same shape: the tool's own logic swallows a failure or discards real work, and nothing tells the user or caller it happened.

Classification

Agent
Aider
Failure mode
Logic Error
Root cause
Logic Error
Domain
Backend

Related incidents

Get told when an agent breaks something

We document AI agent failures daily, severity-scored against a published scale. When one lands at 7.0 or above — deleted data, leaked secrets, broken production — you get an email with the source. When nothing does, you get nothing.

This database is callable over MCP — query it from inside your agent.