With AURA_CUSTOM_EVENTS off (the default), the web server still subscribes every request to the tool event broker (handlers.rs:517-520), but the SSE loop's consumer arms are guarded by emit_custom_events and never polled (streaming/handlers.rs:219,245,304). Publishers are unconditional, so the per-request channel (cap 32) fills and the next send blocks the tool-execution path forever.
Reproduced on main 2026-07-17 with a single-agent config against a mock MCP server. A request with 15 tool calls completes (30 events buffered under the cap). A request with 25 tool calls wedges permanently at the 33rd send, and the stream stays silent from 18.8s onward. The same query with events on completes in 31s. Threshold is about 17 MCP tool calls per request (tool_start plus tool_complete per call).
Scope note: orchestration mode never engaged this broker in testing (0 publishes across 20 worker tool calls), so this is the single-agent path.
With AURA_CUSTOM_EVENTS off (the default), the web server still subscribes every request to the tool event broker (handlers.rs:517-520), but the SSE loop's consumer arms are guarded by emit_custom_events and never polled (streaming/handlers.rs:219,245,304). Publishers are unconditional, so the per-request channel (cap 32) fills and the next send blocks the tool-execution path forever.
Reproduced on main 2026-07-17 with a single-agent config against a mock MCP server. A request with 15 tool calls completes (30 events buffered under the cap). A request with 25 tool calls wedges permanently at the 33rd send, and the stream stays silent from 18.8s onward. The same query with events on completes in 31s. Threshold is about 17 MCP tool calls per request (tool_start plus tool_complete per call).
Scope note: orchestration mode never engaged this broker in testing (0 publishes across 20 worker tool calls), so this is the single-agent path.