Summary
A long-running driver/run_slave_powershell call timed out at the MCP tools/call layer after about 120 seconds even though the request passed timeout_sec=600. The underlying command appeared to continue running on the Windows slave, but the caller received no task_id, so there was no way to poll or cancel it.
While the command was still running, even driver/list_agents timed out. After waiting, list_agents recovered and the command had completed successfully.
I am filing this in both agentserver/agentserver and agentserver/loom because I am not sure which layer owns the behavior.
Expected behavior
timeout_sec is honored, or the call returns an async task_id before the outer tools/call timeout.
- Long-running slave commands do not block
list_agents or unrelated driver queries.
- If a call times out, the response exposes enough state to poll or cancel the underlying task.
Actual behavior
driver/run_slave_powershell timed out at about 120 seconds despite timeout_sec=600.
- No
task_id was returned to the caller for the long-running command.
driver/list_agents also timed out while the command was still running.
- Later, the slave/driver recovered and the command had completed successfully.
Reproduction
- Use a Windows slave with PowerShell support.
- Run a long command through
driver/run_slave_powershell with timeout_sec=600, for example:
winget install --id Python.Python.3.14 -e --scope machine --silent --accept-package-agreements --accept-source-agreements
- Observe the MCP
tools/call timing out after about 120 seconds.
- Immediately call
driver/list_agents.
- Observe
list_agents timing out until the long command finishes.
Environment observed
- Slave OS: Microsoft Windows Server 2025 Datacenter
- Slave command interface: PowerShell
- Driver tool:
driver/run_slave_powershell
- Related driver query:
driver/list_agents
Why this matters
From the orchestrator/user perspective, the workspace looks stuck: the long-running task cannot be polled or cancelled, and agent discovery also becomes unavailable. This makes normal recovery logic hard to implement.
Summary
A long-running
driver/run_slave_powershellcall timed out at the MCPtools/calllayer after about 120 seconds even though the request passedtimeout_sec=600. The underlying command appeared to continue running on the Windows slave, but the caller received notask_id, so there was no way to poll or cancel it.While the command was still running, even
driver/list_agentstimed out. After waiting,list_agentsrecovered and the command had completed successfully.I am filing this in both
agentserver/agentserverandagentserver/loombecause I am not sure which layer owns the behavior.Expected behavior
timeout_secis honored, or the call returns an asynctask_idbefore the outertools/calltimeout.list_agentsor unrelated driver queries.Actual behavior
driver/run_slave_powershelltimed out at about 120 seconds despitetimeout_sec=600.task_idwas returned to the caller for the long-running command.driver/list_agentsalso timed out while the command was still running.Reproduction
driver/run_slave_powershellwithtimeout_sec=600, for example:tools/calltiming out after about 120 seconds.driver/list_agents.list_agentstiming out until the long command finishes.Environment observed
driver/run_slave_powershelldriver/list_agentsWhy this matters
From the orchestrator/user perspective, the workspace looks stuck: the long-running task cannot be polled or cancelled, and agent discovery also becomes unavailable. This makes normal recovery logic hard to implement.