Preflight
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:
-
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.
-
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.
-
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.
-
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.
-
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:
- Re-read the prior tool output column-by-column (use narrow
SELECT col::text AS col queries instead of wide SELECTs when precision matters).
- Re-read its own code before blaming state (rebuild / cache / stale binary / "something in the environment").
- Treat "please re-test" as a last resort, not a first-line recovery.
- Apply instruction scope literally: "do not delete admins" means every admin-flavored user, not only rows with
IsPlatformAdmin=true.
- 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)
- Long session (4+ hours) with heavy DB-query and file-edit tool use
- Ask the model a question whose answer depends on carefully parsing a wide tab-separated tool result
- The model will often pattern-match the first few columns and miscount the rest
- 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
Preflight
modellabelType 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:
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.
Guessed at enum values from database integers without reading the enum definition in code. Claimed
Category = 1was the registration form because of a vague contextual hint (PatientIntakein a nearby code snippet), when the actual enum placed registration at a different ordinal. Repeated this pattern a second time withGender = 'Other'— assumed the enum supported it, added a new value, reverted only after the user pushed back.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.
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.
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:
SELECT col::text AS colqueries instead of wide SELECTs when precision matters).IsPlatformAdmin=true.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)
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