Conversation Acknowledge¶
Acknowledge exactly the oldest delivered user turn for a generation-leased conversation consumer.
MCP name: conversation_ack
Category: conversations
Mutates state (retry policy: replay)
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
action_snapshot_id |
string |
No | Deprecated redundant echo of the targeted turn action_snapshot_id |
consumer |
string |
Yes | Stable consumer name supplied by the owning workflow |
consumption_receipt_id |
string |
No | Exact receipt returned by cowork_action_snapshot_get; required for a targeted turn and omitted otherwise |
conversation_id |
string |
Yes | Conversation ID |
generation |
string |
Yes | Current lease generation supplied by the owning workflow |
message_id |
string |
Yes | Exact user message ID returned by conversation_receive |
Details¶
Advances the consumer cursor only when message_id is the currently delivered
oldest turn. Out-of-order acknowledgements do not skip messages. When the
delivered message context names an action_snapshot_id, the driver must first
fetch it and echo the resulting consumption_receipt_id in
conversation_ack; a missing, mismatched, or reply-less receipt does not
advance the cursor. A driver should acknowledge only after its receipt-bound
reply and any requested proposal/comment have succeeded.
After a generation restart, a predecessor receipt cannot authorize the successor's acknowledgement. The successor fetches the same exact turn, replays the deterministic reply with its newly minted receipt, and acknowledges with that receipt. This preserves generation authorization while reusing the already-durable reply only for an identical target and user turn.