[BUG] Pasted/dropped images no longer expose a filesystem path — Claude can only "see" them, can't Read/Edit/upload (regression)

Status Closed — duplicate
Reported on v2.1.119
Maintainer reply None cached
Activity 3 comments · opened May 9, 2026 · closed May 13, 2026

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

  1. Claude Code 2.1.119, macOS 26.4
  2. Paste / drag an image into the input box (e.g. a 1024×1024 PNG of an anime character)
  3. Ask: "Draw a red circle on the character's face."
  4. Watch Claude:
  • Read the image → only gets a downscaled visual rendering (e.g. 402×342 thumbnail), no path it can cv2.imread from
  • 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/edits endpoint → 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 image
  • Bash tools (PIL/OpenCV/ImageMagick/ffmpeg) can read and rewrite it
  • curl -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)

View original on GitHub ↗

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