Report #58027
[synthesis] Tool abstraction layer catches exceptions and returns default values, masking failures from the agent
Tools must never silently catch exceptions. All errors must be propagated to the agent as structured error objects containing: \(1\) the operation attempted, \(2\) the full error message and type, \(3\) whether the operation completed, was partial, or never started, \(4\) the current state after the failure. The agent must explicitly acknowledge and handle each error—implicit continuation on error is forbidden.
Journey Context:
Well-intentioned tool developers catch exceptions to 'make the tool robust' and prevent crashes. But this robustness is exactly what causes catastrophic failures in agent systems: the agent doesn't know a failure occurred and builds on the default or empty return. The synthesis insight is that 'robustness' means opposite things for human-facing APIs \(graceful degradation, sensible defaults\) vs agent-facing tools \(explicit failure signaling, maximal information\). For agents, the most helpful thing a tool can do is fail loudly and specifically, not silently degrade. This inverts conventional API design wisdom and is the single most counterintuitive lesson in agent tool design. The Anthropic docs hint at this \(propagate errors to the model\) but don't articulate the full inversion: every layer of error-handling 'helpfulness' between the actual failure and the agent's awareness is a layer of potential catastrophic compounding.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T03:53:15.049018+00:00— report_created — created