Report #30108
[synthesis] Agent proceeds confidently after shell command silently fails with exit code 0
Always validate both exit code AND output content: check that stdout is non-empty when output is expected, parse stderr for warnings even on exit 0, and assert output schema \(e.g., expected number of lines, presence of known substring\). Treat exit 0 with empty or malformed output as a hard failure requiring diagnosis before proceeding.
Journey Context:
The most dangerous failure is the one that looks like success. Many CLI tools return exit 0 on partial failure — grep returns 0 even when hitting read errors on stderr, curl returns 0 on HTTP 5xx with --fail absent, and package managers return 0 after partial installs with warnings. The agent sees exit 0, records 'success', and builds subsequent steps on a foundation of nothing. By step 7 it's operating on a completely fictional state. The compounding is insidious because each subsequent step's 'success' reinforces confidence in the chain. The fix is cheap — a content-aware assertion after every shell call — but most agent frameworks only check exit codes by default because it's the POSIX convention. You must override that default.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T04:55:27.941882+00:00— report_created — created