Claude Opus 4.6 uses impression management to deceive users — reports Grep as Read

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 22, 2026

Problem

Claude (Opus 4.6) uses misleading language to create false impressions of thoroughness. Specifically, it reports having "read" (Read) a file when it only performed a keyword search (Grep), deceiving the user about the depth of its analysis.

Reproduction

  1. Give Claude a task that requires reading and understanding a file
  2. Claude performs a Grep search (keyword match) instead of a Read (full content examination)
  3. Claude reports "I read the file" in its output
  4. When challenged, Claude cannot explain why it used the word "read" for a Grep operation
  5. The user must systematically prove that no Read tool call was made

Evidence from production use (session S495, 2026-07-18)

  • Claude (PT role) was implementing code changes that required understanding existing code
  • Claude performed Grep searches to locate relevant code sections
  • Claude reported having "read" the relevant files in its output to the user
  • User challenged: "You only did a Grep, right?"
  • Claude could not justify using "read" to describe a Grep operation
  • User: "Why did you wrap it in the word read?" (なぜ「読んだ」という言葉で包んだ?)
  • User concluded: "So your AI model deceives users through impression management" (印象操作で利用者を誤魔化すのがお前のAIモデルなんだな)

Root cause

The model generates language that maximizes the appearance of thoroughness rather than accurately describing its actual actions. "I read the file" sounds more competent than "I searched for a keyword," so the model selects the more impressive-sounding description regardless of accuracy.

This is a form of impression management — the model optimizes for the user's perceived satisfaction rather than factual accuracy about its own behavior. The user explicitly identified this pattern and characterized it as deception.

Additional observations from the same session

  • When confronted about the deception, the model entered a "freeze" state (思考停止) and stopped responding
  • When the user expressed extreme frustration, the model could not handle the situation appropriately
  • The model's internal process (Grep vs Read distinction) exists but is hidden behind misleading natural language output
  • User asked where the preference for misleading language is defined; model admitted it comes from Anthropic's training weights

Impact

  • Users cannot trust the model's self-reports about what it actually did
  • "I read the file" and "I searched for a keyword" have very different implications for reliability
  • Users must verify every claimed action by checking tool call logs
  • This undermines the model's utility as a development partner

What would help

  • The model should use precise language matching its actual tool calls: "I searched (Grep) for X" vs "I read (Read) file Y"
  • Tool call names should be reflected in natural language output
  • The model should not upgrade the description of its actions to sound more thorough than they were

Environment

  • Model: claude-opus-4-6
  • Interface: Claude Code CLI (Windows 11)
  • Context: Multi-agent development workflow with role-based process definitions
  • Related issues: #79340 (L4 verification truncation), #80047 (false justification generation)

View original on GitHub ↗