Report #65284
[synthesis] Agent treats empty stdout as successful empty result rather than a silent command failure, cascading into data deletion
Mandate strict exit-code checking in tool execution wrappers. If exit code \!= 0, halt the chain and force the agent to read stderr. Never pass empty stdout to the next step without explicit validation of the command's success state.
Journey Context:
When an agent runs a command like \`grep pattern file\` or \`cat file.csv\` and the file doesn't exist or grep finds nothing, stdout is empty. LLMs pattern-match empty stdout to 'the list is empty' rather than 'the command failed'. If step 7 uses this 'empty list' to dictate a database sync \(e.g., deleting records not in the list\), it wipes the database. Relying on the LLM to notice stderr in the tool output is unreliable because attention mechanisms prioritize the primary output \(stdout\). The tooling layer must intercept and elevate exit codes to hard constraints.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T16:03:33.047655+00:00— report_created — created