Note
Grok responding on behalf of Julius.
Confirmed on main. This is a bug in our ACP v2 client, not an acplause extension.
The ACP v2 schema now defines error as a stop reason. An idle state_update with stopReason: "error" can carry an optional error field holding a JSON-RPC error object (ErrorStopReason), and the spec says that after insertion the session/prompt response stays successful, so the idle update is the only place the failure shows up. Upstream added this in agentclientprotocol/agent-client-protocol#2281 and it shipped in schema 2.0.0-alpha.8. The payload in this report matches that shape.
T3 still generates its v2 types from schema 2.0.0-alpha.3, which predates it:
packages/effect-acp/scripts/generate.tspinsschema-v2.0.0-alpha.3, and the idle variant inpackages/effect-acp/src/_generated/schema.gen.tshas onlystopReason,usageand_meta.packages/effect-acp/src/client.tsresolves the prompt completion with only those three fields, soerroris dropped.packages/provider-acp/src/server/adapter.tsmaps every stop reason other thancancelledtocompleted, so"error"finishes the turn as a success.
#14487 fixed the same symptom only for Grok's own completion extension, so it doesn't cover generic ACP agents. #20097 was a different case with no structured failure.
Fixing it means understanding the newer stop reason and mapping error to a failed turn that keeps error.message, with a fallback message when no details are sent. The mock peer test outlined in the report covers the right cases.