ACP emits generic tool metadata before completion.
In packages/opencode/src/acp/agent.ts, tool_call and tool_call_update(status=in_progress) use part.tool as the title, and toolStart() sends rawInput: {}. Only the completed update uses part.state.title and the richer input.
This means ACP clients often show bash, read, or skill while a tool is pending/running, even when a semantic title is already available in part.state.title.
Current local source still does this on v1.4.11-199-ga419f1c50.
OpenCode version
v1.4.11-199-ga419f1c50
Steps to reproduce
- Run
opencode acp with an ACP client that displays tool progress.
- Trigger a tool with a semantic running title, for example a skill or connector-backed action.
- Observe the pending/running tool card.
- Compare it with the completed tool event.
Expected
Pending/running ACP events should use the best available semantic metadata:
- prefer
part.state.title ?? part.tool
- prefer
part.state.input ?? {}
Actual
Pending/running events use generic values:
title: part.tool
rawInput: {} in tool_call
- generic titles such as
bash, read, skill until completion
Why this matters
Downstream ACP clients cannot render meaningful running status if the adapter only sends generic metadata before completion.
ACP emits generic tool metadata before completion.
In
packages/opencode/src/acp/agent.ts,tool_callandtool_call_update(status=in_progress)usepart.toolas the title, andtoolStart()sendsrawInput: {}. Only the completed update usespart.state.titleand the richer input.This means ACP clients often show
bash,read, orskillwhile a tool is pending/running, even when a semantic title is already available inpart.state.title.Current local source still does this on
v1.4.11-199-ga419f1c50.OpenCode version
v1.4.11-199-ga419f1c50Steps to reproduce
opencode acpwith an ACP client that displays tool progress.Expected
Pending/running ACP events should use the best available semantic metadata:
part.state.title ?? part.toolpart.state.input ?? {}Actual
Pending/running events use generic values:
title: part.toolrawInput: {}intool_callbash,read,skilluntil completionWhy this matters
Downstream ACP clients cannot render meaningful running status if the adapter only sends generic metadata before completion.