You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[FEATURE]: Render MCP progress notifications for running tool calls #57794
I have verified this feature I'm about to request hasn't been suggested before.
Resurrecting #26328 (and its duplicates #24965, #28186, #14499), closed as "not planned" by the stale bot on 2026-08-18 with the note "If the issue is still relevant please open a new one." It is still relevant.
Current state (v2.1.2 and dev HEAD): the token half of those reports is fixed — callTool passes onprogress, the SDK injects a progressToken, and spec-compliant servers emit notifications/progress. But the handler is a no-op (packages/core/src/mcp/client.ts:349-360):
callTool: (input)=>request("call MCP tool",(signal)=>client.callTool({name: input.name,arguments: input.args??{}, ... },// Requesting progress keeps long calls alive under the SDK's timeout; execution is the hard wall.{ signal,timeout: execution,onprogress: ()=>{}},),).pipe(Effect.map(toCallToolResult)),
The SDK matches each incoming notifications/progress to the registered handler (_progressHandlers), calls the no-op, and the message evaporates. The TUI shows a static "running" line for the whole call.
The ask: render the latest progress message (and progress/total when present) for a running MCP tool call — the rendering proposal in #26328 is exactly right:
A concrete case: I run an MCP server that executes Ansible playbooks against real infrastructure. A run takes minutes and emits progress per play and per task (TASK [Configure nginx] …). The user watches a static spinner the whole time, and the model has no mid-run channel either — it cannot tell a stuck run from a slow one. Every long-running MCP tool (migrations, embedding runs, batch operations) has this shape.
Scope: only the rendering is missing; the token, the handler registration, and the notification dispatch are all in place. The onprogress callback needs to forward into the tool-call state the TUI renders.
Aside, in case the intent was real: the comment on line 357 says the token keeps calls alive "under the SDK's timeout", but resetTimeoutOnProgress is never set, so the per-request timer doesn't actually reset on progress. Harmless today — execution is a 12-hour wall — but the comment overstates what the no-op does.
Thanks for the detailed write-up and for tracking down the no-op onprogress handler in packages/core/src/mcp/client.ts.
I think this is a duplicate of #49929, which is still open and asks for the same thing: show MCP notifications/progress ([N/M] · message) on the running tool call in the TUI, also building on #26328.
Possible duplicates and related issues, most likely first:
Duplicate of #49929, agreed — the Ansible/agent-side evidence, the current-version pin, and the resetTimeoutOnProgress correction are posted there. Closing.
We've had no reply saying how this differs from #49929, so I'm closing this as a duplicate. Showing MCP notifications/progress on running tool calls is tracked in #49929. Please add your Ansible use case and the resetTimeoutOnProgress note there. If your request turns out to be different after all, reply here and we can reopen. Thanks!
Activity
opencode-agent commentedon Oct 21, 2026
Thanks for the detailed write-up and for tracking down the no-op
onprogresshandler inpackages/core/src/mcp/client.ts.I think this is a duplicate of #49929, which is still open and asks for the same thing: show MCP
notifications/progress([N/M] · message) on the running tool call in the TUI, also building on #26328.Possible duplicates and related issues, most likely first:
onprogresstocallTool, so progress notifications can't extend the request timeout #28186 / BUG-001: MCP tool call missing progressToken injection causing timeout on long reviews (-32001) #14499: the earlier progress-token /onprogressreports, now fixed on the token sideresetTimeoutOnProgressYour Ansible use case and the point about the comment on
resetTimeoutOnProgresswould be useful additions on #49929.The bot will close this issue as a duplicate in 1 day unless you reply explaining how your request is different.
cogito-mens commentedon Oct 21, 2026
Duplicate of #49929, agreed — the Ansible/agent-side evidence, the current-version pin, and the
resetTimeoutOnProgresscorrection are posted there. Closing.opencode-agent commentedon Oct 22, 2026
We've had no reply saying how this differs from #49929, so I'm closing this as a duplicate. Showing MCP
notifications/progresson running tool calls is tracked in #49929. Please add your Ansible use case and theresetTimeoutOnProgressnote there. If your request turns out to be different after all, reply here and we can reopen. Thanks!