You'll noticeTier: how much it should matter to you
2Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
SDKArea: what it touches
ImprovementsKind: in v2.1.299,
ImprovementsSection of the release
What
cancel_async_message is a request that programs using the Claude Code SDK (the kit for running it from other software) send to cancel a queued message. A turn is one round of Claude answering. The SDK documentation now describes a new case:
When the message's uuid (its unique id) belongs to a queued re-run of an interrupted turn that also answers for other client messages, the cancel does nothing and returns cancelled=false. This applies on a worker that recognises held messages.
The cancel is accepted once an interrupt for that re-run has listed the uuid under still_queued. The other messages are then cancelled with it.
Before, cancelled=false only meant the message was no longer in the queue, and the only documented no-op was a message already taken off the queue to run.
Why
If you build on the SDK, a declined cancel no longer always means the message already left the queue. In this case it may still be waiting, and you need an interrupt that lists it under still_queued before the cancel takes effect, which also cancels the other messages it answers for.