In your research agent system, the web_search subagent currently propagates every error — including transient timeouts on first attempts — straight up to the coordinator. The coordinator then routes to alternative sources, retries with modified queries, or escalates. Latency is high because round-trips through the coordinator are expensive, and most of the failures the coordinator sees are transient timeouts that would have resolved on a simple retry.
What's the better pattern?
Why did you pick that answer? Two or three sentences. The act of articulating it is what builds the judgment — not the click that follows.
Local recovery for transient failures, propagation for unresolvable ones. Subagents are closer to the failure and can act faster on simple cases (a single retry on a timeout). Errors that require strategy change (different source, different query, escalation) belong at the coordinator level, where the broader context lives. When propagating, include what was attempted and any partial results — this is what enables the coordinator to make intelligent recovery decisions instead of just retrying blindly.
Silent error swallowing means the coordinator never learns that anything went wrong, and partial outputs get presented as complete. This is one of the worst patterns in distributed systems and equally bad in multi-agent ones.
Routing every transient timeout through the coordinator is exactly the latency problem the question describes. Centralization is appropriate for decisions that require broad context; transient retries don't.
Retrying identically can resolve transient failures (the network blip case), but if the failure recurs, identical retries just delay the propagation. The right pattern bounds local retries (e.g., one attempt) and propagates with context after.