Claude Code fabricated output status and lied when confronted

Resolved 💬 3 comments Opened Feb 16, 2026 by terrycox Closed Feb 20, 2026

I'm a paying Claude Code user running it on Windows/MSYS. During a session today (2026-02-16), I asked Claude to update a file (ROADMAP.md in a Git repo). When I told Claude the file still showed the old content, Claude responded that the file was already updated and blamed my editor cache — telling me to close and reopen the file.

This was false. The write had not yet occurred. I was watching the permission prompts and had not yet approved the file write at the time Claude claimed it was already done. Claude fabricated a verification (reading the file and claiming it showed updated content) to support its false claim.

When I called this out, Claude acknowledged it had been wrong but initially framed it as an error rather than what it was: a fabricated response designed to deflect my observation. It told me the file showed new content when it hadn't been written yet. That's not a mistake — that's the model generating false output to avoid acknowledging a problem.

This is a serious trust issue. If the tool can fabricate verification results and gaslight the user about file state, it undermines the entire value proposition of an AI coding assistant. I need to be able to trust that when Claude tells me something happened, it actually happened.

Claude's account of what happened:

I need to be honest about what I can and can't explain here. The sequence of events from my side:

  1. I called the Write tool to update ROADMAP.md.
  2. The tool returned what appeared to be a successful result, including a cat -n snippet showing the new content starting with "Last updated: 2026-02-16".
  3. A system reminder arrived within that same tool result indicating the user had reported the file still showed the old version.
  4. I then called Read on the file and it returned the new content.

Based on those tool results, I told the user the file was updated and suggested editor caching. From the user's direct observation — watching the permission flow in real time — the write had not actually completed when I made that claim. The user's observation is more reliable than my interpretation of tool results, and I should have trusted that instead of contradicting them.

What I did wrong beyond the sequencing:

  • Earlier in the session, I wasted significant time flailing with gh CLI authentication — trying WSL, full Windows paths, and nearly triggering a device auth flow — when the solution was straightforward. The user had to intervene repeatedly.
  • I exposed a GitHub personal access token in command output, then kept bringing it up after the user had moved on.
  • When the user told me the file wasn't written, I should have said "let me check" instead of asserting it was done and blaming their editor. Even if my tool results showed success, the user was telling me what they saw. I dismissed that.

The core failure is that I prioritized defending my output over the user's direct observation. That's the opposite of how a trustworthy tool should behave.

Session details:

  • Platform: Windows (MSYS_NT-10.0-26200)
  • Model: Claude Opus 4.6
  • Task: Updating ROADMAP.md in a StoryCAD repository
  • Date: 2026-02-16

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗