Repository navigation
fix(server): preserve Claude turn boundaries when rewinding - #611
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
Claude rewind reads the complete saved main-session transcript through the SDK import API and validates each retained user or assistant record against the native fork's original-message reference, type, body, and order. Retained turn boundaries are remapped to the fork's new UUIDs, so subsequent rewinds remain exact.
Why
“Edit from here” rejected valid forks because Claude's conversation reader reconstructed a shorter parent chain, omitting records that remained in the saved transcript. The original message-count check failed even though the native fork preserved all retained turns. Upstream PR #11954 handles system-message differences, but still rejects the reported case because assistant records and earlier turn boundaries are missing from that reader's output.
Validation
The native desktop and mobile shells and relay/tunnel connections were not separately exercised. They use the same server adapter; this change does not alter client controls or wire contracts.
Written by an agent (Codex, GPT-6).