Feature Request: Persistent conversation history with infinite scroll (like Cursor)
Resolved 💬 4 comments Opened Apr 8, 2026 by lssnow73 Closed May 21, 2026
Summary
When Claude Code's context window is full, older messages are compressed/summarized and removed from the UI. Users can no longer scroll up to view earlier parts of the conversation.
Cursor IDE handles this differently — it stores conversation history separately from the active context, allowing users to scroll through the full chat history regardless of context window limits.
Current Behavior
- When the context window is exhausted, Claude Code auto-summarizes older messages
- The summarized messages disappear from the chat UI entirely
- Users can only see the active context window worth of messages on screen
- Full history is saved to
.jsonlfiles locally but is not surfaced in the UI
Expected Behavior
- All conversation messages should remain visible in the UI via scrolling, even after context compression occurs
- The underlying context sent to the model can still be compressed/summarized (this is fine and expected)
- The UI display layer should be decoupled from the model context — store and render the full message log independently
Why This Matters
- Users lose visibility into what was discussed, what code was written, and what decisions were made earlier in a long session
- This is especially painful during large implementation tasks spanning many files and decisions
- Cursor already implements this UX pattern — users familiar with Cursor expect the same behavior in Claude Code
- The raw data already exists in
.jsonlfiles; it just needs to be surfaced in the UI
Proposed Solution
Decouple the chat UI history from the model context window:
- Store all messages to disk as they occur (already done via
.jsonl— data exists) - Render messages from the persisted log, not from the active context
- When context compression happens, the model gets the summarized context but the UI continues showing the full history from disk
- Add a visual indicator (e.g. a subtle divider or label) showing where context compression occurred, so users understand which messages are "in context" vs. historical
References
- Cursor: full conversation history is persisted and scrollable regardless of model context limits
- Claude Code
.jsonlfiles:~/.claude/projects/<project>/**.jsonl— the data is already being saved, just not shown in the UI
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗