Oversized image (>2000px) in conversation history permanently blocks session until /compact
Resolved 💬 4 comments Opened Apr 11, 2026 by neoncapy Closed Apr 15, 2026
Summary
Once a tool result (e.g. Read of a PNG) places an image in conversation history whose width or height exceeds 2000 px, every subsequent model turn fails with:
An image in the conversation exceeds the dimension limit for many-image requests (2000px). Run /compact to remove old images from context, or start a new session.
The session is effectively terminated for that working state, regardless of how much context budget remains.
Actual behavior
- The Read tool is allowed to ingest an image larger than 2000 px on either axis.
- The first model turn after ingestion fails with the above error.
- Every further turn continues to fail with the same error until the user runs /compact (which wipes in-flight conversational state) or opens a new session.
- The block is applied retroactively across the whole history, not just the current turn, even when plenty of context budget remains.
Expected behavior
One or more of:
- The Read tool should refuse to ingest images that would exceed the vision API limit, returning an actionable error at ingestion time rather than a session-wide block on the next turn.
- The harness should auto-downsample oversized images before attaching them to the model turn.
- There should be a way to evict just the offending image from history without wiping the rest of the conversation.
Reproduction
- Start a session with non-trivial task state (plans, long history).
- Use the Read tool on any image whose width or height exceeds 2000 px (e.g. a plot exported at 300 DPI and 8 in wide = 2400 px — a very common default).
- Issue any further prompt.
- Every subsequent turn fails with the dimension-limit error.
Impact
- Iterating on image output is a common workflow: render a figure, inspect it, adjust code, re-render. Default render sizes routinely exceed 2000 px on one axis, so users hit this mid-iteration.
- /compact is not a real recovery path — it discards the in-flight state that contains the plan, tool history, and intermediate reasoning. In long sessions, the cost of losing that state is high.
- The only robust workaround is to always downsample before Read, which users should not have to think about.
Environment
- Claude Code, recent version
- macOS
- PNG produced by common plot tooling at 300 DPI (2400 x 1800)
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗