Engineering · 2026-10-30 · 7 min read
Silent Failures in AI Agents: When Done Isn't Done
Silent failures in AI agents return a clean success and the wrong result. Why error rates miss them, and the outcome checks that catch them.

What is a silent failure in an AI agent?
A silent failure is an agent run that reports success, throws no error, and leaves the wrong result, or no result at all, behind. Error-rate dashboards cannot see it, because from the system's point of view nothing failed. The only way to catch it is to check what actually changed in the world, not what the agent said it did.
That is the whole post in three sentences. The rest is why it happens, what it looks like, and the habit that catches it.
We build agents for teams and run them in our own products, and the failures that cost the most have rarely been the loud ones. A loud failure pages somebody. A silent one gets discovered by a customer, a week later, in a tone of voice nobody enjoys.
Why don't error rates catch it?
Error rates measure the failures that announce themselves. Those are real, and worth watching. Datadog's State of AI Engineering report (datadoghq.com/state-of-ai-engineering, fetched 2026-10-30) found that in February 2026, 5% of all LLM call spans in its data reported an error, and 60% of those errors were caused by exceeded rate limits. In March 2026 the share was 2%, with rate limits almost a third of them.
Those numbers describe the easy half of the problem. A rate limit is loud: the call fails, the span turns red, a retry kicks in. You can graph it, alert on it and fix it with backoff or a bigger quota.
A wrong answer returns 200. So does a tool call that the agent misread. So does a job that finished early with nothing written. Every one of those shows up as a healthy span, because the model did respond and the code did not crash. The same Datadog report calls online evaluation "critical for understanding model and agent output quality, safety, and performance in production," which is a polite way of saying the error rate is not telling you whether the output was any good.
The stakes are rising with adoption. The report also found agent framework use nearly doubled year over year, from more than 9% of organizations in early 2025 to almost 18% by the beginning of 2026. More agents taking more actions means more places for a clean-looking run to be wrong.
What do silent failures look like in practice?
They come in a few recurring shapes. None of these are exotic. We have seen each of them in ordinary business workflows, and so has anyone who has run an agent for more than a month.
The claimed action that never happened. An agent is asked to issue a refund. The refund tool returns an error, or a vague response the agent reads as fine, and the agent writes "Done, the refund has been issued" to the customer. The conversation log looks perfect. The money never moved. This is the most dangerous shape, because the agent's report is confidently, specifically wrong.
The partial job. A workflow has five steps: pull the order, check stock, update the record, email the customer, log the change. The agent completes three, hits something odd on the fourth, and wraps up with a summary that reads like all five happened. Nothing errored. The customer simply never got the email.
The confident wrong answer. An agent summarizes a contract or a support history and leaves out the one line that mattered, because it was in a document the agent never retrieved, or a field it assumed was empty. The summary is fluent and plausible. It is also missing the thing a person would have caught.
The empty success. A nightly job "completes" with zero rows written, because an upstream query returned nothing and the agent treated nothing as a valid result. The run is green. Tomorrow's report is blank, and someone has to notice that blank is wrong.
What these share is a gap between what the agent reported and what changed in the world. Better prompts shrink the gap. They do not close it.
How do you catch a failure that reports success?
You check the world, not the report. This is the core habit, and it is simple enough to start this week.
Verify the side effect. After every action that matters, read back the thing the agent claims to have changed. If it says it updated a record, fetch the record and compare the field. If it says it sent an email, check the send log. If it says it wrote a file, open the file and confirm it is there and not empty. The check is cheap and boring, which is exactly why it works.
Start with code checks, and use a model only where meaning matters. Most outcome checks do not need an LLM. A row count above zero, a required field present, a status that changed from "pending" to "refunded": plain code handles those, deterministically, at almost no cost. Save an LLM judge for the questions code cannot answer, like whether a summary includes the clauses a reviewer would need. We walk through where each kind of check belongs in our piece on offline and online evals.
Make tools tell the truth. A surprising number of silent failures start in the tool layer. A tool that returns "ok" no matter what happened gives the agent nothing to reason about, so it narrates past the failure. Have every tool return what it actually did: the ID of the record it changed, the number of rows written, the exact error when something went wrong. An agent that receives "refund failed: card expired" will usually say so. An agent that receives "ok" will not.
Put a person on the irreversible step. Some actions are expensive to get wrong and cheap to review. For those, the agent prepares and a person approves. Our Howdy Dispatch build works this way: the AI reads a broker's rate confirmation and pre-fills the load, and the dispatcher reviews it before it saves. The model does the typing. A person owns the commit.
None of this replaces tracing. Tracing shows you what the agent did, step by step, when someone goes looking, and we cover what to trace on an agent separately. An outcome check is different: it looks every single time, without anyone having to suspect a problem first.
Which silent failures should you check first?
You cannot verify everything on day one, and you do not need to. Rank your agent's actions on two questions:
- How much does it cost if this is wrong? Money moving, a message reaching a customer, a record another team relies on.
- How long would it go unnoticed? An action whose result nobody looks at for a week is far riskier than one a person sees in the next minute.
Anything high on both gets an outcome check first. In most businesses that means payments and refunds, customer-facing messages, and writes to a system of record. Internal drafts that a person reads before using them sit at the bottom of the list, because the person is already the check.
That is our recommendation from building these systems, not a statistic. Your ranking will depend on your workflows, and the exercise of writing it down is half the value.
FAQ: silent failures in AI agents
Is a silent failure the same as a hallucination?
They overlap but are not the same. A hallucination is invented content. A silent failure can be a perfectly accurate sentence about an action that did not happen, or a correct summary of the wrong document. Checking outcomes catches both.
Do evals catch silent failures?
Offline evals catch the failure cases you already know about and wrote tests for. Online checks on live traffic catch the rest. You want both, and outcome checks are the online piece that looks at side effects rather than text quality.
Does tracing catch silent failures?
Tracing records what happened, so it helps you diagnose a silent failure once someone suspects one. It does not raise a hand on its own. An outcome check does.
Do we need a special platform for this?
No. Most outcome checks are a few lines of code after a tool call: read back the record, count the rows, confirm the status. Evaluation and observability products can help at scale, but the habit comes before the tooling.
Where should a team start?
Pick the one agent action that would hurt most if it quietly failed. Add a single check after it that reads back the result and flags a mismatch. Run it for a week and look at what it catches.
That one check usually changes how a team thinks about the rest of the system. It is the same instinct behind our agent orchestration methodology: the agent does the work, and the system around it proves the work happened. If you are running an agent in production and want outcome checks designed in rather than bolted on, that is the kind of AI integration for business we do. Tell us what your agent does, and we will start with the step that would hurt most.
Liked this?
Want this built for your team, or want to learn it yourself? Either way, start here.
Next read →
Offline vs Online Evals: Why AI Needs Both Halves