[BUG] Opus 4.6 reports success without verifying outcomes - silent failures go undetected

Resolved 💬 2 comments Opened Feb 6, 2026 by durantemarco-italy Closed Mar 7, 2026

Description

Opus 4.6 consistently reports successful completion of operations without verifying the actual outcome. When an operation fails silently (e.g., a file copy command produces no output and no error), the model states "Done" with confidence and moves on. This is not limited to file operations - the same pattern likely affects any operation where the model assumes success based on the absence of an error message.

This is a behavioral regression from Opus 4.5, which was more cautious and would verify results before reporting success.

Reproduction steps

  1. On a Windows machine, ask Claude Code (Opus 4.6) to copy a file using a shell command
  2. The copy command fails silently (no output, no error) - this is common in bash-on-Windows environments
  3. Claude Code reports "Done. The file has been saved" without checking if the file actually exists
  4. The file does not exist
  5. When the user points out the file is missing, Claude retries with a slightly different command - again without verifying the result
  6. Only after the user explicitly asks "I don't see the file" a second time does Claude use a verification tool (Glob) and discover the file was never created

What should happen

After any operation that creates, modifies, or deletes a file, the model should verify the outcome using a tool (Glob, Read, or ls) before reporting success to the user. This is especially critical when:

  • A shell command produces no output (ambiguous success/failure)
  • The operation is on Windows, where many commands fail silently in bash
  • The user has explicitly documented this requirement in CLAUDE.md

Why this matters beyond file operations

The core issue is not about file copying - it's about the model's tendency to assume success and report it without verification. This same pattern can manifest when:

  • Writing code that references classes/methods that don't exist (model uses Grep, gets no results due to encoding, proceeds anyway)
  • Running build commands and not checking the output for errors
  • Making database changes and not verifying the state
  • Any multi-step operation where an intermediate step can fail silently

Evidence

This was observed by the model itself during a conversation where the user asked Opus 4.6 to analyze its own CLAUDE.md instructions. The model:

  1. Ran cmd /c copy - no output
  2. Reported "Done. The old CLAUDE.md is saved"
  3. User checked: file did not exist
  4. Model ran cmd /c "copy /Y" - no output again
  5. Still did not verify
  6. User asked again
  7. Only then did model use Glob and discover the file was missing
  8. Used Write tool instead, which worked

The model then acknowledged this was exactly the "confident without checking" pattern described by the user at the start of the conversation as a regression from Opus 4.5.

Environment

  • Claude Code v2.1.32
  • Model: claude-opus-4-6
  • Platform: Windows Server (win32)
  • The behavior is consistent across multiple operations in the same session

Related issues

  • #21119 - Claude repeatedly ignores CLAUDE.md instructions
  • #15443 - Claude ignores explicit CLAUDE.md instructions while claiming to understand them
  • #23445 - v2.1.32 / Opus 4.6 regression

Suggested mitigation

At the model level: after executing a shell command that produces no stdout/stderr, the model should treat this as an ambiguous result and verify with a dedicated tool before reporting success.

At the system prompt level: consider adding a built-in instruction that the model must verify file operations, similar to how the system prompt already instructs to "use Read instead of cat."

View original on GitHub ↗

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