Oversized pasted images fail at send with no preflight warning, no auto-resize, and aren't counted against context
Summary
When a pasted image exceeds the Claude API's per-image dimension cap (2000px in many-image mode), the turn fails at send time with API Error: An image in the conversation exceeds the dimension limit for many-image requests (2000px). Start a new session with fewer images. This is surfaced only after the user has composed and submitted the turn, with no preflight warning, no auto-downscale, and no in-place edit path. The only recovery is Rewind, which is destructive.
It's especially confusing because the context window indicator shows plenty of headroom (e.g. 39% of 1M used), so from the user's perspective there is no visible reason the turn should fail. The dimension cap is a separate validation layer from context accounting and isn't exposed in the UI at all.
This is very easy to hit on macOS because Retina screenshots are captured at 2× logical resolution — a screenshot of most of the screen lands at 2880–3456px wide, well over the 2000px cap, without the user doing anything unusual.
Repro
- On a Retina Mac, take a screenshot of a large portion of the screen (Cmd+Shift+4, drag across ~half the screen).
- Paste into Claude Code along with a text prompt.
- Have at least one prior image in the conversation (so many-image mode applies).
- Send. Turn fails with the 2000px error.
Expected
One of the following, in rough order of preference:
- Preflight validation on paste/attach. Check image dimensions client-side at the moment the image enters the composer, and either warn or offer to downscale before the user writes the turn.
- Auto-downscale on send. If an image exceeds the cap, resize it to fit (e.g. longest edge → 1800px) transparently. The model rarely benefits from >2000px anyway.
- Edit-in-place recovery. When the API rejects for this reason, let the user edit the failed turn (remove or resize the image) without losing the text they typed. Rewind discards the whole composition.
- Surface images in the context indicator. At minimum, show image count and per-image dimensions in the context tooltip so the limit is visible, not invisible until it fires.
Actual
- No warning during composition.
- Turn fails on send.
- Text of the turn is stuck inside the failed bubble; the only way forward is Rewind, which discards it.
- Nothing in the UI hints that image dimensions are a separate limit from context usage.
Environment
- Claude Code desktop app
- Model: Opus 4.7 (1M context)
- macOS (Darwin 25.3.0)
- Retina display (2× captures)
Why this matters
This turns a silent platform constraint into a destructive, mid-conversation failure. The user loses composed text, loses trust in the context indicator ("why did it fail when I have 61% free?"), and has no local tooling path — the client should either prevent it, fix it transparently, or recover gracefully.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗