[Bug] Branched sessions show false recent activity timestamps and rewind freezes on large histories

Resolved 💬 3 comments Opened Apr 24, 2026 by alignmktg Closed Apr 28, 2026

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:

  1. Start a conversation in project A.
  2. Mid-session, branch the conversation (fork).
  3. Continue working in only ONE of the two resulting sessions (e.g., the branch).
  4. 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:

  1. Open a branched conversation with ~15–20 MB of JSONL history on 1M-context Opus.
  2. 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.

View original on GitHub ↗

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