[Bug] Branched sessions show false recent activity timestamps and rewind freezes on large histories
Environment:
- Claude Code CLI on macOS (Darwin 25.3.0)
- Model: Claude Opus 4.7 (1M context)
- Session sizes: ~18.7 MB (parent) and ~10.5 MB (branch)
- Session type: branched conversation (forked mid-session)
- Project: Next.js monorepo (pnpm workspace)
---
Bug 1 — Branched sibling sessions report stale/false "recent activity"
Steps to reproduce:
- Start a conversation in project A.
- Mid-session, branch the conversation (fork).
- Continue working in only ONE of the two resulting sessions (e.g., the branch).
- Open the Claude Code resume/history picker.
Expected: Only the active session shows a recent timestamp; the inactive sibling shows its last real interaction time.
Actual: Both sibling sessions display near-identical recent timestamps (e.g., "24 seconds ago" vs "1 minute ago") despite no user interaction with the sibling. The resume picker implies both are live.
Example from my picker:
❯ <local-command-caveat>Caveat: The messages below were generated... (Branch)
24 seconds ago · release/mir-58-mir-59 · 10.5MB · a***/b***#159
<local-command-caveat>Caveat: The messages below were generated...
1 minute ago · release/mir-58-mir-59 · 18.7MB
Only the 10.5 MB branch was active. The 18.7 MB parent had not been touched.
Likely cause: resume index is driven by mtime of shared prefix or parent metadata; writes in the active branch bump the parent's mtime, making both appear recent.
Impact: Ambiguous which session is "real." Users can accidentally resume the wrong sibling and lose orientation.
---
Bug 2 — Rewinding (scrolling history) freezes on large branched sessions
Steps to reproduce:
- Open a branched conversation with ~15–20 MB of JSONL history on 1M-context Opus.
- Attempt to rewind / scroll up through prior messages.
Expected: Smooth scroll through history, even if first frame is slow.
Actual: UI freezes (no cursor, no keypress echo) for tens of seconds or indefinitely on every rewind attempt. Behavior is reliable, not intermittent. Cannot ^c to escape; must close terminal window.
Hypothesis: Rewind re-materializes full session history per frame rather than using a windowed view. Cost scales linearly with session size; becomes unusable past ~10 MB on branched conversations where prefix sharing may compound the work.
Impact: Users with long sessions cannot safely go back to review earlier context, retry a prior step, or reuse the "/rewind-to-message" flow. Effectively forces session termination to escape.
---
Additional context
- Bug 2 reproducibly blocks recovery workflows (fork + rewind) on any session that accumulates real work.
- A workaround for Bug 2: close terminal window, resume the specific session fresh — cold-load is faster than live scroll.
- No workaround for Bug 1 beyond remembering which branch you're in externally.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗