claude-code - 💡(How to fix) Fix [BUG] Claude Desktop 1.7196.0 (macOS): "Can't rewind to this message" persists with no plugins installed — plugin-independent variant of #57206

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error Messages/Logs

Root Cause

  • Variant of #57206, not a duplicate. That issue was closed as not-a-bug after its reporter bisected to the double-shot-latte plugin. The same surface symptom ("Can't rewind to this message" + the two log signatures above) occurs here without that plugin or any other third-party marketplace plugin, and without any Stop hooks. stefansimik's comment on #57206 reports the same plugin-independent failure mode on a clean install.
  • Hypothesis on root cause. The validator that emits not on active chain and assistantUuid=none, hasText=true appears to be walking an in-memory chain that does not correspond to the parentUuid graph actually persisted in the session jsonl. When the jsonl mixes multiple Desktop client versions (mid-session auto-update) and/or CLI + Desktop entries, the in-memory reconstruction collapses to a very short chain (single-digit length out of hundreds or thousands of entries) and every rewind anchor falls outside it.
  • Workarounds that still function in 1.7196.0:
    • "Fork from here" on the intended rewind anchor.
    • Initiating the rewind from terminal Claude Code on the same shared session jsonl. The CLI walks parentUuid correctly and persists the truncation to disk, though Desktop does not re-render the truncated branch (consistent with the secondary observation already filed on #57206).
  • Suggested fix direction. The validator should walk parentUuid on the persisted jsonl rather than relying on an in-memory chain that diverges from it; or, at minimum, relax the rejection when the on-disk parentUuid chain to the requested anchor is well-formed even if the in-memory chain has dropped entries.

Fix Action

Fix / Workaround

  • Variant of #57206, not a duplicate. That issue was closed as not-a-bug after its reporter bisected to the double-shot-latte plugin. The same surface symptom ("Can't rewind to this message" + the two log signatures above) occurs here without that plugin or any other third-party marketplace plugin, and without any Stop hooks. stefansimik's comment on #57206 reports the same plugin-independent failure mode on a clean install.
  • Hypothesis on root cause. The validator that emits not on active chain and assistantUuid=none, hasText=true appears to be walking an in-memory chain that does not correspond to the parentUuid graph actually persisted in the session jsonl. When the jsonl mixes multiple Desktop client versions (mid-session auto-update) and/or CLI + Desktop entries, the in-memory reconstruction collapses to a very short chain (single-digit length out of hundreds or thousands of entries) and every rewind anchor falls outside it.
  • Workarounds that still function in 1.7196.0:
    • "Fork from here" on the intended rewind anchor.
    • Initiating the rewind from terminal Claude Code on the same shared session jsonl. The CLI walks parentUuid correctly and persists the truncation to disk, though Desktop does not re-render the truncated branch (consistent with the secondary observation already filed on #57206).
  • Suggested fix direction. The validator should walk parentUuid on the persisted jsonl rather than relying on an in-memory chain that diverges from it; or, at minimum, relax the rejection when the on-disk parentUuid chain to the requested anchor is well-formed even if the in-memory chain has dropped entries.

Code Example

[info] LocalSessions.rewind: sessionId=local_<sid> target=<uuid>
[info] [Rewind] No rewind point for local_<sid> target=<uuid> (assistantUuid=none, hasText=true)

[info] LocalSessions.rewind: sessionId=local_<sid> target=<uuid>
[info] [Rewind] target=<uuid> → assistantUuid=<uuid> not on active chain for local_<sid> (chain size 5/1367)
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report
  • I am using the latest version of Claude Code

What's Wrong?

In Claude Desktop 1.7196.0 on macOS, every rewind attempt is rejected with the popup "Can't rewind to this message" — the same surface symptom as the closed issue #57206 — but the resolution given there (remove the double-shot-latte plugin from superpowers-marketplace) does not apply to my install. I have no third-party marketplace plugins installed, only first-party swift-lsp and clangd-lsp from claude-plugins-official, and no Stop hooks configured anywhere in ~/.claude/settings.json. Updating Desktop from 1.6608.0 → 1.7196.0 did not change the behavior.

This matches the situation reported by stefansimik on #57206: same symptoms, no plugins, current Desktop build. That issue was closed after a single user's bisection found a plugin trigger and is therefore not tracking this plugin-independent variant.

Critical observation distinguishing this from a "corrupted session jsonl" hypothesis: the on-disk session jsonl files are structurally intact. Walking parentUuid from the latest leaf in a sample failing session reaches nearly every entry (763 of 772), with zero orphan parent references. Desktop's main.log for that same session reports chain size 5/1367 for the rewind attempt. The defect is in Desktop's in-memory chain reconstruction, not the persisted history.

What Should Happen?

Selecting an anchor in the rewind picker should restore the conversation to the point before that message, as in pre-1.6608.0 builds. The validator should walk the same parentUuid chain that the on-disk jsonl already encodes correctly.

Error Messages/Logs

Two repeating signatures in ~/Library/Logs/Claude/main.log on every rewind attempt (UUIDs redacted):

[info] LocalSessions.rewind: sessionId=local_<sid> target=<uuid>
[info] [Rewind] No rewind point for local_<sid> target=<uuid> (assistantUuid=none, hasText=true)

[info] LocalSessions.rewind: sessionId=local_<sid> target=<uuid>
[info] [Rewind] target=<uuid> → assistantUuid=<uuid> not on active chain for local_<sid> (chain size 5/1367)

Observed chain size N/M values across several distinct affected sessions: 1/678, 3/471, 4/402, 4/451, 5/1367, 8/466. These are the same two log signatures called out in #57206 (assistantUuid=none, hasText=true and not on active chain).

For one of the affected sessions, I analyzed the on-disk jsonl directly:

  • 964 lines, 772 entries carry a uuid.
  • 771 of those entries carry a parentUuid. 0 of them are orphans — every parentUuid resolves to a uuid present in the same file.
  • Walking parentUuid from the most recent entry yields an active chain of 763 entries — essentially the whole file.
  • Desktop's own log, for the same sessionId, reported chain size 5/1367 on its rewind attempt against this session.

So Desktop's in-memory "active chain" disagrees with the persisted history both in size (1367 vs 772) and in traversal length (5 reachable vs 763 reachable on disk). The file mixes entrypoint=claude-desktop entries from versions 2.1.121 and 2.1.128, consistent with a session that survived a Desktop auto-update mid-conversation.

Steps to Reproduce

  1. Install Claude Desktop 1.7196.0 on macOS with no third-party marketplace plugins enabled and no Stop hooks in ~/.claude/settings.json.
  2. Open any existing session whose jsonl spans more than one Desktop client version (e.g. one started under 2.1.121 and continued under 2.1.128).
  3. Press Esc Esc (or click the rewind button). The picker renders normally with anchors.
  4. Select any anchor.
  5. Popup: "Can't rewind to this message", and a matching [Rewind] ... not on active chain (chain size N/M) line (with N << M) lands in ~/Library/Logs/Claude/main.log within ~1 second.

Reproduces 100% on affected sessions. Fresh single-version sessions are less consistently affected, matching the multi-version jsonl hypothesis.

Claude Model

Not relevant — the failure is in Desktop's client-side rewind validator before any model call is issued.

Is this a regression?

Yes, this worked in a previous version.

Last Working Version

Pre-1.6608.0 Desktop (per the original report on #57206). Both 1.6608.0 and 1.7196.0 exhibit the failure on this machine.

Claude Code Version

Claude Desktop 1.7196.0 (from CFBundleShortVersionString in /Applications/Claude.app/Contents/Info.plist). Terminal Claude Code on the same machine: 2.1.139 — CLI rewind continues to work correctly against the same shared session jsonl files.

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other — failure is in the Claude Desktop GUI, not a terminal.

Additional Information

  • Variant of #57206, not a duplicate. That issue was closed as not-a-bug after its reporter bisected to the double-shot-latte plugin. The same surface symptom ("Can't rewind to this message" + the two log signatures above) occurs here without that plugin or any other third-party marketplace plugin, and without any Stop hooks. stefansimik's comment on #57206 reports the same plugin-independent failure mode on a clean install.
  • Hypothesis on root cause. The validator that emits not on active chain and assistantUuid=none, hasText=true appears to be walking an in-memory chain that does not correspond to the parentUuid graph actually persisted in the session jsonl. When the jsonl mixes multiple Desktop client versions (mid-session auto-update) and/or CLI + Desktop entries, the in-memory reconstruction collapses to a very short chain (single-digit length out of hundreds or thousands of entries) and every rewind anchor falls outside it.
  • Workarounds that still function in 1.7196.0:
    • "Fork from here" on the intended rewind anchor.
    • Initiating the rewind from terminal Claude Code on the same shared session jsonl. The CLI walks parentUuid correctly and persists the truncation to disk, though Desktop does not re-render the truncated branch (consistent with the secondary observation already filed on #57206).
  • Suggested fix direction. The validator should walk parentUuid on the persisted jsonl rather than relying on an in-memory chain that diverges from it; or, at minimum, relax the rejection when the on-disk parentUuid chain to the requested anchor is well-formed even if the in-memory chain has dropped entries.

Related issues

  • #57206 — closed; covers the plugin-induced variant only.
  • #50780 — Desktop first-message-only rewind failure (distinct: every message is rejected here).
  • #48955 — Desktop rewind breaks for CLI-origin messages (distinct: native Desktop messages are rejected here too).
  • #44828 — isMeta:true filter (distinct rejection path).

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix [BUG] Claude Desktop 1.7196.0 (macOS): "Can't rewind to this message" persists with no plugins installed — plugin-independent variant of #57206