I maintain a small image-history plugin for Codex and Claude. I wanted a test that checked more than whether the interface looked useful: could a conversation still continue after a restart or compaction, and could the model find the right earlier image?
In one Codex test, nine images were enough to produce a 42.4 MB full-history request. That request stalled in our setup. With older images replaced by retrievable placeholders, the corresponding requests were 0.12–0.13 MB and completed.
The useful detail is when this happened.
The chat worked until Codex needed the whole history
The test used nine synthetic storyboard keyframes, roughly 3.2–3.9 MB each. Across six turns, the user introduced scenes, replaced a dark frame, and said that one version had the best face.
Over an existing WebSocket, Codex sent incremental updates, so those turns went through. After a restart, it needed to send the conversation again. The full JSON body was 42.4 MB, or 31.8 MB compressed.
The WebSocket message was refused within seconds. HTTP fallback attempts stopped after roughly a minute. We eventually stopped the retries.
A compaction did not remove the image payloads in this test. The next question still needed a full-history request and hit the same problem.
Request-size chart for the tested conversation
What the plugin changed
Context Attachment Manager leaves the original chat and image files unchanged. It rewrites the outgoing view of earlier images into placeholders with IDs. The model can retrieve an original with cam_view_image when it needs visual details.
New images still go out on the turn that introduces them. Users can also pin a reference to keep sending it.
| Same test | After restart | After compaction |
|---|---|---|
| Without the plugin | 42.4 MB; did not send | 42.4 MB; did not send |
| With v0.9.0 | 0.13 MB; sent | 0.12 MB; sent |
For file-finding questions, v0.9.0 selected the correct image in 6/6 cases before compaction and 6/6 after it. When asked to read a small digit in a corner, it fetched the particular original it needed.
The results also limit the pitch
This was one scenario on Windows 11, with Codex app-server 0.163.0-alpha.11 and gpt-6-sol at low reasoning effort. There was one final run per setup, plus pilot runs. Claude was not evaluated in this experiment.
A faster connection might handle the large HTTP request differently. We did not test that.
Token costs were less straightforward than request size. Total input tokens fell 16%, but uncached input tokens rose 36%. Whether the bill falls depends on the prompt-cache discount.
The older plugin version, without image feature notes, also found 6/6 files after compaction in this short task. This result does not establish that feature notes improve every long conversation.
One pilot was especially instructive: the model misread the simple synthetic scenes, wrote inaccurate descriptions, then sometimes said the requested image did not exist instead of retrieving it. Those failures are included in the report.
Reproduce it or try another setup
The evaluation write-up includes the task, raw answers, request measurements, pilot failures, and scripts to reproduce the test.
The plugin is free and MIT-licensed. It supports Codex desktop and local Code sessions in Claude Desktop. Installation instructions are here.
If you reproduce the reconnect failure, or find that it works on your setup, open an issue with the client version and result. An independent reproduction would be useful.

Top comments (0)