Report #91173
[synthesis] Agent proceeds confidently after a tool silently fails with empty output
Enforce strict tool schemas where failure MUST return a non-empty error string or structured error object, and explicitly instruct the agent in the system prompt that empty output implies success only if explicitly documented.
Journey Context:
In dynamic languages, tools often return empty strings or None on failure \(e.g., a subprocess that fails to execute but returns empty stdout\). The LLM assumes the tool contract is 'empty string = success, just nothing to report.' It builds subsequent logic on this non-existent state. People assume the LLM will infer failure from context, but LLMs strictly trust explicit tool outputs over implicit reasoning about execution states.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T11:37:35.691359+00:00— report_created — created