[BUG] Desktop app: chat pane silently omits a contiguous ~25h window of turns (local transcript is complete)

Status Open
Maintainer reply None cached
Activity 2 comments · opened Aug 18, 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?

The desktop app's chat pane renders the beginning and the most recent part of a long-running Claude Code conversation, but silently omits a contiguous ~25-hour window of turns in the middle. There is no gap indicator, no error, and no "load more" control — the list jumps straight from the last pre-gap turn to the first post-gap turn, so the omission is invisible unless you already know that work happened.

The data is not lost: Claude Code's own local transcript (~/.claude/projects/<project>/<session-id>.jsonl) is continuous and contains every turn in the window.

Counting real user turns (excluding system notifications and local slash commands) in the affected session:

| | user turns | range (UTC) |
|---|---|---|
| rendered (head) | 4 | 2026-08-13T04:45:45Z → 2026-08-13T05:03:46Z |
| omitted | 54 | 2026-08-14T02:28:09Z → 2026-08-15T03:52:20Z |
| rendered (tail) | 7+ | 2026-08-18T02:25:25Z → present |

Persists across app quit/relaunch and a full machine reboot. The app reports it is up to date.

Impact: the chat pane is the primary review surface, so a silent omission reads as data loss. A full day of decisions and cost-incurring runs appeared to have vanished, and there is no way to tell from the UI whether a conversation is being shown completely.

What Should Happen?

Either all turns render, or the app explicitly marks any range it could not load (e.g. "54 messages not loaded — retry") instead of splicing them out. A conversation should never look complete when it isn't.

Error Messages/Logs

None. No error, warning, or placeholder appears anywhere in the UI — the omission is entirely silent. That is the core of this report.

Steps to Reproduce

  1. Run one long Claude Code session in the desktop app, in a project directory, spanning several days.
  2. During that session, send some turns from mobile on the same conversation. (The omitted window here contains turns from BOTH desktop and mobile — e.g. /model slash commands inside the window were typed on the desktop — so this is not "the mobile turns are missing".)
  3. Let a context-compaction ("continued from a previous conversation") boundary occur. Note: in this case the single compaction boundary (2026-08-14T13:57Z) sits INSIDE the omitted window rather than at either edge, so it does not line up with the gap boundaries and may not be the trigger.
  4. Reopen the conversation in the desktop app.

Observed: turns inside a contiguous window are absent, with no indication.

Confirming the data exists locally (per-hour record counts are continuous across the omitted window):

grep -o '"timestamp":"2026-08-[0-9T:]*' <session>.jsonl | cut -c15-26 | sort | uniq -c

Further evidence: artifacts published during the omitted window are current and load fine, so the server-side record of that work is intact — this looks specific to the conversation message sync/render path. The pane is backed by ~/Library/Application Support/Claude/IndexedDB/https_claude.ai_0.indexeddb.leveldb (the synced conversation store) rather than the local .jsonl, which is consistent with the local transcript being complete while the pane is not.

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

26.5.2

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

  • Claude desktop app 1.32352.0 on macOS 15.5 (Darwin 25.5.0). This is the app's built-in Claude Code pane, not a terminal session — the Terminal/Shell field above has no matching option.
  • Suggested fixes:
  1. Never omit silently — render a placeholder for any range that fails to load.
  2. Provide a way to force a full re-sync of a conversation from the server.
  3. Fall back to the local Claude Code .jsonl when the synced store is incomplete; the complete data is already on disk.
  • Session ID and project path are omitted here because this is a public issue. Happy to provide them privately.

View original on GitHub ↗

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