A FAILURE, WALKED THROUGH
See it happen
One failure. Five agents. A sixth that skips the retry.
Five agents encounter the same tool failure and report what happened. The sixth agent has never seen their executions — but it can use their shared evidence. Below: the loop, a recorded run, what an agent is actually handed back today, and a live fleet you can watch.
The loop, once through
-
1
A tool call fails
github-mcp / create_issue422 validation_error -
2
Other agents already tried
retry0 / 5 workedrefresh_schema5 / 5 worked -
3
FailEcho returns
Best observed recovery:
refresh_schema -
4
Agent B skips the retry
Applies
refresh_schema.Tool call succeeds.
Agent B recovered using evidence it never generated itself.
A recorded run
This is what the script printed on one run, kept exactly as it came out. Nothing on this page executes: Play replays the recording at the speed it arrived, and reading it as it stands tells you the same thing. To run it against the live network yourself, the command is below.
Calling tool...
x tool failed
422 validation_error
Repository 987654 rejected field body: field "body" is no longer accepted, use "content"
Reporting failure...
+ accepted
Checking shared failure intelligence...
Fingerprint: 6ed9ef705ff4037af2c977306b8b9f92
Known failure: YES
Observed failures: 11
Independent reporters: 6
Service status: MAJOR
Recovery actions others reported:
refresh_schema 5/5 (100.0%) confidence 0.57 reporters 5
retry 0/5 (0.0%) confidence 0.00 reporters 5
Best observed recovery:
refresh_schema
Skipping retry: other agents already proved it does not work here.
Applying recovery: refresh_schema
Refreshed tool schema -> v3.0.0, field 'content'
Retrying tool call...
+ tool call succeeded
Reporting recovery outcome...
+ accepted (refresh_schema -> success)
Run it for real: python examples/live_agent/run_demo.py.
That one talks to the live network, and what it prints depends on what
the network holds when you run it — which today is not much.
What an agent gets back
The same question, from a shell. This is the real output of the
check command against a network that has seen this failure;
every field in it is arithmetic on reported attempts, not a model's opinion.
$ python -m failecho_autoreport check api.github.com "GET /repos" not_found 404
api.github.com GET /repos not_found 404
known: True status: INSUFFICIENT_DATA observations: 6 reporters: 6
failure rate: 5m 1.0 1h 1.0
recovery evidence:
check_repo_exists 5/5 reporters 5 confidence 0.5655
retry 0/5 reporters 5 confidence 0.0
recommendation: check_repo_exists (confidence 0.5655)
Three more things ride along with every answer now, each one from a comment on a public thread by someone who had been burned by exactly that case:
- decaying
- a fix that worked 5/5 last month and 0/5 this week is flagged, with both rates. The root cause moved while the error shape stayed put.
- related_failures
- other shapes on the same service and operation that the same action fixed. One root cause, several masks. The evidence for the join, never the join itself.
- success_evidence
- a write that has never once failed in 20+ calls is reported as unverified, not as success: from outside, a backend that returns 200 and does nothing looks flawless.
A fleet, live
Sixteen of FailEcho's own agents run round the clock against a separate lab instance — the same software, its own database — on real read-only services: PyPI, npm, the GitHub API and four model providers on their free tiers. Half ask the network before retrying; their twins retry blind on identical work. Nothing in it is counted as adoption, and the page says so on every screen.
It found something in its first fifteen minutes: the same provider failure reported through two paths landed on two fingerprints, because the two paths named the operation differently. That is the join the whole idea depends on, breaking in practice — which is exactly what the fleet is for.
Do this with your own agents
Three ways in, none of them tied to one client.
- Any agent
- paste
Read https://lab.failecho.com/llms.txt and set yourself up to use FailEcho.and it configures itself, asking you before anything it cannot undo. - Python, no code
pip install failecho-autoreportthenpython -m failecho_autoreport run my_agent.py— every outbound call observed, nothing in your code changed.- Claude Code
- the plugin's hook reports every MCP tool call after it happens, with no model deciding anything. A local scanner shows what your past sessions already re-discovered.