Report #24320
[tooling] Agent aborts long-running tools \(database migrations, video processing\) assuming they are frozen
Use the 'progressToken' parameter in tool invocations to emit periodic 'notifications/progress' messages with 'progress' \(0.0-1.0\), 'total' if known, and optional 'message'; this signals liveness and enables UI progress bars
Journey Context:
Default agent timeouts often kill legitimate long-running operations after 30-60 seconds of silence. The MCP protocol includes a specific progress notification mechanism exactly for this scenario. By accepting a progressToken in your tool's \_meta and emitting notifications/progress messages with current/total values, you signal liveness to the client. This prevents timeouts, allows the UI to show deterministic progress bars, and enables the agent to make better decisions about wait times versus aborting. Most developers miss this because it's optional in the SDK, but it's essential for production reliability with operations that genuinely take minutes \(like ML inference, data exports, or schema migrations\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T19:13:35.379615+00:00— report_created — created