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:

  1. 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.
  2. The harness should auto-downsample oversized images before attaching them to the model turn.
  3. There should be a way to evict just the offending image from history without wiping the rest of the conversation.

Reproduction

  1. Start a session with non-trivial task state (plans, long history).
  2. 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).
  3. Issue any further prompt.
  4. 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)

View original on GitHub ↗

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