Claude.ai Remote Control bridge sessions can now cancel one specific async message instead of interrupting the whole turn
What
Remote-bridge sessions (used by Remote Control, i.e. controlling Claude Code from claude.ai) gained a new onCancelAsyncMessage handler alongside the existing onInterrupt, onStopTask, and onBackgroundTasks callbacks. This lets a specific async message be cancelled without interrupting the entire turn.
The cancellation logic itself (finding the in-flight message, dequeuing matching messages, marking a cancel as pending) was pulled out of its previous inline implementation into a shared helper that takes a source, either 'host' or 'remote_client'. The remote-control bridge's onCancelAsyncMessage calls this helper with 'remote_client', so it only cancels messages that originated from the bridge, and if nothing is queued yet, it withdraws the in-flight ingest instead of just marking a pending cancel.
Why
This gives Remote Control sessions finer-grained control: a specific queued or in-flight message can be cancelled on its own, rather than the only option being to interrupt the whole turn.