Conversations with large first messages (images) are invisible in Past Conversations due to 64KB head buffer limit

Resolved 💬 7 comments Opened Feb 26, 2026 by VladymyrVY Closed Apr 13, 2026

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

  1. Open a folder in VS Code with the Claude Code extension
  2. Start a new chat
  3. Attach 2-3 screenshots (e.g. phone screenshots ~1125x2436) in your first message along with text
  4. Have a conversation with several exchanges
  5. Close the chat
  6. Click "Past Conversations" — the chat is not listed
  7. Verify the .jsonl file exists: ls ~/.claude/projects/-<encoded-path>/*.jsonl
  8. 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

View original on GitHub ↗

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