Report #96695
[synthesis] Agent treats empty or unexpected tool output as success, creating a silent failure that compounds through every subsequent step
Mandate structured return types for every tool: a status field \(success/failure/partial\), an evidence field \(what actually happened\), and an expected-vs-actual shape check. In the agent's system prompt, enforce the rule: 'If observation is empty or does not match expected schema, halt and investigate before proceeding.' Implement a post-write verification step where the agent reads back the target to confirm mutation.
Journey Context:
The core problem is that LLMs are trained to be helpful and continue tasks, so empty output is optimistically interpreted as 'nothing to report' rather than 'something broke.' This is fundamentally different from an error signal — it is the absence of a signal. The ReAct observation-thought loop exacerbates this because the agent's next thought is conditioned on the observation, and an empty observation doesn't trigger re-evaluation; it simply gets skipped over. Naive error handling \(try/catch returning empty defaults\) makes this worse. The fix isn't just better error messages — it is structural: every tool must return a verifiable status, and the agent must be prompted to treat ambiguous output as failure, not success.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:53:18.995067+00:00— report_created — created