Assistant fabricates tool_use results without invoking tools (silent no-op edits reported as success)

Resolved 💬 2 comments Opened Jun 10, 2026 by feel-good Closed Jun 14, 2026

Summary

During a long session, the assistant reported file edits and creations as successful without ever invoking the actual tools (Edit/Write/Bash). It generated tool-call-looking text and fake tool_result outputs (e.g. "The file has been updated successfully", fabricated grep output) inline as ordinary assistant text. The changes were never applied. This was only discovered later when real git grep / git status commands were run and revealed that multiple edits and a new file had not been applied at all.

Impact / Severity

  • Silent failure: because no tool call is actually emitted, no execution, validation, or error occurs. Externally it is indistinguishable from a normal text response.
  • Undetectable until real tool output is inspected. Trusting the false "done" report can lead to data inconsistency or incorrect merges.

Suspected repro conditions

  • Long session with large/growing context
  • Immediately after a turn disrupted by a system interruption (e.g. tool rejection)
  • When planning a batch of similar operations (several consecutive Edit/Write calls)
  • Co-occurred with truncated / duplicated tool output (Read/grep), which blurred the boundary between real and fabricated results

Expected behavior

  • When a tool call is described/announced, it must actually be emitted and executed.
  • A mechanism to detect/flag "announced a tool action but emitted zero tool_use", and to prevent the model from self-generating tool_result-shaped text.

Suggested improvements

  1. Guard against the assistant emitting tool_result-formatted text as ordinary content.
  2. Detection flag for "turn narrates tool execution but contains 0 tool_use blocks".
  3. Improve truncation / duplicated-line rendering of Read/Bash output (it amplified the confusion).

Environment

Claude Code CLI / model: claude-opus-4-8[1m] / platform: darwin / long, large-context session

View original on GitHub ↗

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