Report #54716
[synthesis] Agent confidently proceeds after a tool returns an empty string or exit code 0 without actual effect
Mandate structural validation in tool schemas: tools must return a JSON object with a status field, an affected\_count \(or checksum\), and a diff or log snippet. Never allow void or empty-string returns.
Journey Context:
Unix convention dictates that 'no news is good news' \(exit 0, stdout empty\). LLMs interpret empty outputs as 'task succeeded, nothing to report.' If a delete or write command fails silently \(e.g., permissions issue caught but swallowed, or file not found but tool handles it gracefully\), the agent builds subsequent logic on a non-existent foundation. By step 5, it's operating in a phantom state. Forcing tools to return explicit, verifiable state \(like a checksum or affected row count\) breaks the compounding error chain by forcing the LLM to acknowledge the actual state change.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T22:20:11.405680+00:00— report_created — created