Conversations with large first messages (images) are invisible in Past Conversations due to 64KB head buffer limit
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Conversations that include images (screenshots) in the first user message are invisible in the "Past Conversations" dropdown in the VS Code extension. The .jsonl session file exists on disk and is valid, but the conversation does not appear in the list.
Root cause: FR() in extension.js reads only 64KB (Hx = 65536) from the head of each .jsonl file. When the first user message contains base64-encoded images, the JSON line can be ~5MB, exceeding the buffer. The title extraction chain Gx(tail, "customTitle") || Gx(tail, "summary") || wR(head) fails because wR() receives truncated JSON and returns null. fetchSessions() then skips the conversation entirely.
What Should Happen?
All conversations should appear in "Past Conversations" regardless of message size. The extension should either stream-parse the first user message or write a summary/customTitle as a small separate line in the .jsonl file.
Error Messages/Logs
No error messages. The conversation is silently missing from the list.
Steps to Reproduce
- Open a folder in VS Code with the Claude Code extension
- Start a new chat
- Attach 2-3 screenshots (e.g. phone screenshots ~1125x2436) in your first message along with text
- Have a conversation with several exchanges
- Close the chat
- Click "Past Conversations" — the chat is not listed
- Verify the .jsonl file exists: ls ~/.claude/projects/-<encoded-path>/*.jsonl
- Check the first user message line size: it will be ~5MB due to base64 images, exceeding the 64KB buffer in FR()
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.59
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
VS Code integrated terminal
Additional Information
Workaround: appending a small customTitle entry to the end of the .jsonl file (within the 64KB tail buffer) makes the conversation visible again:
{"type":"user","customTitle":"Chat title here","isSidechain":false}
The tail is read by the same FR() function with the same 64KB buffer, and Gx(tail, "customTitle") successfully extracts the title.
Suggested fixes:
- Increase head buffer or use streaming parse for oversized lines
- Always write customTitle/summary as one of the first small lines in the .jsonl
- Use a separate lightweight index instead of parsing each .jsonl on every load
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗