[BUG] Pasted/dropped images no longer expose a filesystem path — Claude can only "see" them, can't Read/Edit/upload (regression)
Summary
When the user pastes or drags an image into the Claude Code input, the image is now passed in vision-only mode — Claude receives the pixels in its multimodal context but no filesystem path is exposed (not in the prompt, not in env, not in any TempDir Claude can list).
This is a regression. In earlier versions, the dropped/pasted image was saved to a session-local temp directory and Claude could read/operate on the bytes (Read, PIL via Bash, curl -F image=@path for multipart uploads, etc.). With current behavior, every workflow that requires the actual bytes is broken.
Steps to Reproduce
- Claude Code 2.1.119, macOS 26.4
- Paste / drag an image into the input box (e.g. a 1024×1024 PNG of an anime character)
- Ask: "Draw a red circle on the character's face."
- Watch Claude:
Readthe image → only gets a downscaled visual rendering (e.g. 402×342 thumbnail), no path it cancv2.imreadfrom- Try
find ~/Downloads /tmp /var/folders -mmin -10 -name '*.png'→ the image is nowhere on disk - Try to
curl -F image=@<path>to an OpenAI-compatible/v1/images/editsendpoint → no path exists
The only way to actually edit / upload / process the bytes is for the user to manually save the file to disk first and then tell Claude the path. That defeats the point of drag-and-drop.
Expected Behavior
The pasted/dropped image should be persisted to a session-scoped temp dir (e.g. ~/.claude/projects/<slug>/attachments/<msg-id>/<n>.png) and the path should be made available to Claude as part of the message context, so:
Read <path>returns the actual bytes / full-resolution imageBashtools (PIL/OpenCV/ImageMagick/ffmpeg) can read and rewrite itcurl -F image=@<path>works for multipart uploads to image-edit / vision APIs
Actual Behavior
- Image is only available as a vision token in Claude's context
- No path is exposed; nothing is written to \
~/Downloads\, \/tmp\, \/private/var/folders/**/T\, \~/.claude/projects/**/\, or anywhere else discoverable - \
Read\on guessed paths returns unrelated files (because Claude has to guess from \~/Downloads\mtimes and ends up reading the wrong PNG — a real failure mode that just bit me)
Workarounds
- Tell the user to save the image to disk first and paste the path in plain text — but most users don't expect this; drag-and-drop visibly attaches the image and they assume Claude has the file
Impact
This breaks an entire class of "act on the user's image" workflows that used to just work:
- "Annotate this screenshot" / "draw an arrow on X" / "redact the face"
- "Send this image to my image-edit API as a reference for img2img"
- "Run OCR / object detection on this photo"
- "Convert / crop / compress this image"
Environment
- Claude Code version: 2.1.119
- OS: macOS 26.4 (Build 25E246)
- Platform: Darwin (Apple Silicon)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗