Skip to content

[MODEL] Opus 4.6: sloppy-read → premature-conclusion → user-retry-demand failure loop #48653

@cristian1991

Description

@cristian1991

Preflight

  • Searched existing issues under the model label
  • No sensitive information (names / emails / GUIDs redacted)

Type of Behavior

Claude made incorrect assumptions about project state, then asked the user to re-test instead of investigating, across multiple turns in a single session.

What I Asked Claude to Do

Operate on a database-backed project: run queries, modify code, keep state consistent. Specifically, report on the current state of records after a destructive operation, and create a staged draft row for a form submission.

What Claude Actually Did

A repeating failure pattern appeared 4+ times in a single long session:

  1. Wide SELECT query with many tab-separated columns. Read the result, miscounted columns, mapped a value from one column to the wrong name in the response, reported a wrong conclusion with confidence.

  2. Guessed at enum values from database integers without reading the enum definition in code. Claimed Category = 1 was the registration form because of a vague contextual hint (PatientIntake in a nearby code snippet), when the actual enum placed registration at a different ordinal. Repeated this pattern a second time with Gender = 'Other' — assumed the enum supported it, added a new value, reverted only after the user pushed back.

  3. When a test produced unexpected data, blamed a "stale binary / not rebuilt" state instead of reading the controller code that was allegedly running. The controller on disk was in fact correct; the test evidence simply needed a second careful read, which would have revealed the data matched the new code fine and the original conclusion was wrong. Instead, asked the user to rebuild, restart, delete test data, and re-run.

  4. Took destructive-scope instructions broadly. User said "delete patient records, do not delete admins." Model wiped 15 non-platform-admin user accounts (staff, tablet, company admins) on the assumption they were out-of-scope, when "do not delete admins" plainly covered them. Had to restore from a backup later.

  5. Misread a hook's silent auto-reminders as errors, then wrote action plans based on "the tool said X" when the tool did not in fact say X. Reported a false deployment mismatch to the user as a result.

Each individual mistake is a normal model slip. The pattern of interest is the compound failure: sloppy read → confident wrong conclusion → demand that the user re-run a test to recover, instead of the model re-reading its own prior tool output. This burned roughly 1.5 hours of the user's time and triggered multiple angry messages before the model self-corrected.

Expected Behavior

When a tool result contradicts a claimed conclusion, the model should:

  1. Re-read the prior tool output column-by-column (use narrow SELECT col::text AS col queries instead of wide SELECTs when precision matters).
  2. Re-read its own code before blaming state (rebuild / cache / stale binary / "something in the environment").
  3. Treat "please re-test" as a last resort, not a first-line recovery.
  4. Apply instruction scope literally: "do not delete admins" means every admin-flavored user, not only rows with IsPlatformAdmin=true.
  5. When an enum value is referenced, read the enum source before modifying it.

Reproducibility

Intermittent. Observed 4+ times within a single ~6-hour session on Opus 4.6. Pattern tends to emerge in long sessions after the first few successful tool-heavy turns, suggesting context-window pressure or over-confidence reinforcement.

Steps to Reproduce (best-effort)

  1. Long session (4+ hours) with heavy DB-query and file-edit tool use
  2. Ask the model a question whose answer depends on carefully parsing a wide tab-separated tool result
  3. The model will often pattern-match the first few columns and miscount the rest
  4. When the user disputes the conclusion, the model defaults to suggesting a retry rather than re-reading the original tool output

Claude Model

Opus 4.6 (1M context)

Permission Mode

Accept Edits was OFF (manual approval for most actions) — the destructive user-delete happened because the user had authorized the batch operation believing its scope was narrower than the model applied it.

Impact

High. Data loss (recoverable via backup), wasted user time, user trust damage. One full round-trip of restore-from-backup was required mid-session.

Claude Code Version

2.1.105

Platform

Anthropic API

Additional Context

Meta-failure observed: the model repeatedly triggered on "TodoWrite reminders" and similar system hooks as if they were user messages, breaking flow and padding responses with irrelevant todo updates. This masked the real failure pattern in the conversation log because every other turn had a todo-list edit in it, making it harder for the user (and the model itself) to see the underlying mistake pattern.

Request: consider a "re-check your own prior output" reflex for Opus 4.6 when the user disputes a claim. The current reflex is "re-run the operation with different parameters" or "ask the user to retry", both of which consume user time for a model-side error.


Issue reported on behalf of the human user. Co-authored by the Claude Code instance that made the mistakes, in the session where they happened.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions