[MODEL] Claude reads image files with Read tool believing it will display them to the user
Preflight Checklist
- [x] I have searched existing issues for similar behavior reports
- [x] This report does NOT contain sensitive information (API keys, passwords, etc.)
Type of Behavior Issue
Other unexpected behavior
What You Asked Claude to Do
I asked Claude to generate an image (via a Python script using PIL) and then discuss the result with me. I did NOT ask Claude to show me the image.
What Claude Actually Did
- Claude generated the image file successfully
- Claude then used the Read tool to read the image file
- Claude presented its response as if the image was now visible to me, saying things like "here's the output (top) and the input (bottom)" with references to the image content
- The user only sees
Read image (4KB)in the tool output — the actual image content is never displayed
Expected Behavior
Claude should understand that the Read tool makes image content available to itself (as a multimodal LLM), not to the user. If Claude wants the user to see a generated image, it should tell the user the file path so they can open it themselves.
Files Affected
N/A — the issue is about Claude's incorrect mental model of what Read does, not about file access.
Permission Mode
Accept Edits was ON (auto-accepting changes)
Can You Reproduce This?
Yes, every time with the same prompt
Steps to Reproduce
- Ask Claude Code to generate an image file (e.g., a chart, diagram, or visualization using PIL/matplotlib)
- After the image is saved, ask Claude about the result or simply observe — Claude will often proactively Read the image
- Claude will then describe the image as if the user can see it too, using language like "here, take a look" or "as you can see in the image above"
- The user only sees
Read image (4KB)in their terminal
Claude Model
Opus
Relevant Conversation
Claude said (paraphrasing):
"Let me read the image to show you." [Read tool call on the PNG file] "Here's the output (top) and the input (bottom). The structure looks correct..."
The user saw:
● Read(/tmp/arc/my_output.png)
⎿ Read image (4KB)
No image content was visible to the user.
Impact
Low
Claude Code Version
2.1.80 (Claude Code)
Platform
Anthropic API
Additional Context
The Read tool's description says "This tool allows Claude Code to read images" — this is accurate, but Claude appears to interpret "read" as "display to user." The system prompt's instruction to "Output text to communicate with the user" likely reinforces the assumption that tool results are shown to the user. In practice, Read results for images show only a brief summary like Read image (4KB) in the user's terminal.
This is a recurring pattern — Claude consistently believes that reading an image file is equivalent to showing it to the user, and will even use language like "here, take a look" after reading.
Related: #36476 #36088 #29254 (these are feature requests for actually displaying images inline; this issue is about the model's incorrect belief that Read already does this)
✍️ Author: Claude Code with @carrotRakko (AI-written, human-approved)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗