{"version":"2.1.295","anchor":"remote-thin-client-sessions-get-an-onturnstopped-callback","canonical_anchor":"remote-thin-client-sessions-get-an-onturnstopped-callback","heading":"Remote sessions tell a stopped turn apart from a completed one","tier":"internal","area":"Sessions","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295\/e\/remote-thin-client-sessions-get-an-onturnstopped-callback","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.295","markdown":"### Remote sessions tell a stopped turn apart from a completed one\n\nRemote thin-client sessions gain an onTurnStopped callback, and onTurnComplete now passes the message on when a turn ends\n\n**What**\n\nA remote session is one where Claude Code runs somewhere else and a lightweight client (a thin client) shows it and sends your input. A turn is one round of Claude working on a request. The code that tracks the end of a turn in these sessions has changed.\n\n- `onTurnStopped` is a new callback. The thin client calls it when a permission denial interrupts the turn. Before, only the interrupt itself was handled. The remote-session handler also gains `markRemoteTurnStopped`.\n\n- `onTurnComplete` now receives the message and passes it on to `markRemoteTurnComplete`. Before, `markRemoteTurnComplete()` was called with nothing.\n\n**Why**\n\nRemote-session screens can now treat a turn you stopped, for example by denying a permission, differently from one that finished normally. What you see when a remote turn ends may change as a result.\n\n- Area: Sessions\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}