What
In a remote session, Claude Code sometimes holds back a message you send while it waits on something. A parked permission is a permission question that is waiting for an answer. A held message is one you sent that was kept back until that wait was over. This release changes what happens to both when you stop or rewind a turn:
- Interrupting or rewinding when there is no parked permission but there is a held message now marks that message as
abandonedand reports it asstopped_before_run. Before, this case returned silently and the message could stay stuck. - Interrupting while a permission is parked now ends the stopped turn for the client through
endStoppedTurn, after the waiting permission is retired. Before, the transcript was updated but the client was never told the turn had ended. This only happens whereparkedStopRetiresis set, and a failure is logged as an error. - A held message is now tracked across a parked answer, under the new remote capability
ccr_parked_message_held, including arevoked_model_turncase. - Duplicate-message checks gain a
held_for_parkcase, and message admission gains aheldForParkedTurnhook. - The remote session client no longer reports
subscribers reported: falsewhile the sender may not be attached yet. - Cross-session hold receipts pass
hidesFoldedNotices, and a system message markedinterruptedBySendNowis now displayed. - Session state now keeps per-main-thread contexts, spawned sets and parked teardowns. A new admit flag for project-person messages was also added.
The related gate tengu_resume_parked_permission has not been read, so whether this behaviour is active for any given account is unknown.
Why
Stopping a turn that was waiting on a permission, or that had a message queued behind it, could previously leave a remote session with a stuck message or a turn that never finished. These changes are aimed at making a stop or rewind leave the session in a clean state.
What sets a session up to retire parked requests on stop is not established.