A subagent in your research system encounters a timeout while searching academic databases. You're designing what it returns to the coordinator agent.
Which response is most useful?
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.
Structured error context is what enables intelligent recovery in multi-agent systems. The coordinator can see what failed, what was tried, what partial results came back, and what alternative paths exist. With this information, the coordinator can decide: retry the original query, retry with a narrower query, route to a different source, proceed with partial results and annotate the gap, or escalate. Generic error messages strip away the information needed to make any of those choices.
"Search failed" is true but useless. The coordinator can't distinguish between a transient timeout and a permanent failure, doesn't know what was attempted, and has nothing to retry against. Generic error messages force generic recovery (or no recovery at all).
Returning empty results as success is the worst option — it actively misleads the coordinator into thinking the search succeeded with no matches, which is semantically very different from "the search failed." The coordinator might confidently report "no information available on this topic" when in reality information might exist but the search timed out.
A single subagent timeout shouldn't kill the entire research workflow when other subagents are succeeding and recovery strategies exist. Terminating on first failure is what you do when you've given up on recovery, not what you do as a default.