{"version":"2.1.311","anchor":"rewind-gated-turn-handoff-requires-rewind-request-id","canonical_anchor":"rewind-gated-turn-handoff-requires-rewind-request-id","heading":"Handed-off turns can require a specific rewind first","tier":"internal","area":"SDK","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.311\/e\/rewind-gated-turn-handoff-requires-rewind-request-id","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.311","markdown":"### Handed-off turns can require a specific rewind first\n\nA handed-off turn can name a rewind_conversation request with `requires_rewind_request_id` and is refused unless that rewind came last\n\n**What**\n\nSometimes a turn is handed off from one place to another, for example from a remote or cloud session to the worker running the conversation. A turn is one round of you asking and Claude answering. The message that hands the turn over now accepts an optional field, `requires_rewind_request_id`. This field is marked internal. It names a `rewind_conversation` request the client sent earlier. A rewind takes the conversation back to an earlier point.\n\nA worker that supports this field adds the turn only if two things are true:\n\n- The named rewind was the last rewind that worker carried out.\n\n- The conversation has not changed since that rewind.\n\nIf either is false, the turn is refused with an error that begins `invalid_handoff: required_rewind_`. The reason given is one of `unknown`, `other`, `moved_on` or `lines_waiting`. One message seen is \"the conversation has moved on since rewind_conversation request\".\n\n**Why**\n\nA turn that was meant to follow a rewind can no longer be added to a conversation that has changed in the meantime. In remote sessions, this stops an out-of-date turn from being applied after a rewind.\n\n- Area: SDK\n- Names: `requires_rewind_request_id`, `rewind_conversation`\n- Tier: Under the hood\n- Useful: 3\/5\n- Signal: 3\/5\n- Scope: individual\n- Heads-up: no"}