By Vokrix Team

Researchers at UC Berkeley, MIT, and Stanford analyzed 1,642 real multi-agent execution traces across 7 frameworks and found failure rates ranging from 41% to 86.7% (MAST study, 2025).
TL;DR: Agent runs fail far more often than most teams assume. Researchers at UC Berkeley, MIT, and Stanford analyzed 1,642 real multi-agent execution traces across 7 frameworks and found failure rates ranging from 41% to 86.7% (MAST study, 2025). AI agent observability tools exist to close that gap, capturing the full trace of every run — prompts, model responses, tool calls, retries, latency, and token spend — so you can see what actually happened instead of guessing from logs that only show a request succeeded or failed. This post covers what to look for in an observability tool, how to debug an agent that fails intermittently in production but passes in staging, how to replay a failed trace, why Datadog and Grafana alone won't tell you why an agent went sideways, and how to catch silent failures like wrong tool calls, loops, and cost spikes before your customers do.
The headline number from the MAST study is easy to misread. It is not that 41% of agent runs fail because the model is bad. It is that 41% is the floor across seven frameworks, and the ceiling reached 86.7% — meaning in some setups, roughly six out of seven runs did not complete the task correctly. The failure modes were rarely dramatic. Agents picked the wrong tool, passed the right arguments in the wrong order, looped on a step they thought had failed, misread an ambiguous instruction, or simply stopped one step short of finishing. Each of those is invisible in a standard request log, because from the infrastructure's point of view the HTTP call returned 200.
That is the core reason AI agent observability tools exist as a category separate from application monitoring. An agent run is not a request. It is a trajectory — a sequence of model calls, tool calls, and decisions, any one of which can send the rest off course. Observability for agents means capturing that trajectory end to end: the input, the reasoning or plan at each step, which tool was called with which arguments, what came back, how long each step took, how many tokens it burned, and where the run terminated. Without that, debugging is archaeology. You have an output that looks wrong and no record of how it got there.
The intermittent failure question is where most teams first feel the pain. An agent that fails one run in twenty in production but passes every test in staging is almost never a flaky model. It is a context problem. Staging tends to run narrow inputs, a single user, no concurrent load, generous rate limits, warm caches, and a clean context window. Production brings long conversations that overflow the context, tool APIs that rate-limit under load, retrieval that returns a different document than the one your test fixture assumed, and multiple runs interleaving. The only reliable way to find the difference is to trace both runs and compare them step by step — the failing production run against the passing staging run — and see where the state diverges. Usually it diverges earlier than the visible failure, sometimes by several steps.
That comparison is also what makes replay valuable. If your observability tool records the full trace with inputs, outputs, tool arguments, and model versions, you can re-execute a failed run with the same inputs and inspect each step in isolation. Replay does two things. It tells you whether the failure was deterministic, meaning a prompt, a tool schema, or a routing rule is genuinely broken, or nondeterministic, meaning you are dealing with sampling variance and need better guardrails rather than a bug fix. It also gives you a regression test. Once you have a trace that failed, you can pin it as a fixture and re-run it against every prompt change, model upgrade, and tool update. Teams that do this stop shipping the same failure back to production three weeks later.
A common objection is that the stack is already covered. Datadog, Grafana, and standard application logs are genuinely good at what they do: service health, latency percentiles, error rates, saturation, and distributed request traces. What they cannot see is the semantic layer inside the agent. They will tell you the call to the search API took 800 milliseconds and returned 200. They will not tell you the agent passed the user's question as the search query instead of the extracted entity, or that it called the same tool four times in a row because it never recognized the first result as sufficient. Those are not infrastructure failures. They are reasoning failures, and they need a different class of telemetry — one built around prompts, completions, tool schemas, and step-level cost. The practical answer for most teams is both, not either.
Silent failures are the most expensive category, because nothing alerts. A wrong tool call returns a valid response. A loop terminates and produces an answer. A cost spike shows up on the invoice at the end of the month. Catching these means defining what a healthy run looks like and alerting on the deviations: step counts well above the median, repeated identical tool calls, tool calls that do not match the schema or the task, output that fails a structured validation check, and cost per run crossing a threshold you set deliberately. Many teams pair this with automated evaluations that score each completed run on correctness, groundedness, or task completion, so that a run that "succeeded" technically but answered the wrong question still gets flagged. The goal is simple: you want to learn about the failure from a dashboard, not from a customer.
If you are starting from zero, instrument first and optimize second. Pick a tool that captures full traces with tool call arguments and outputs, exports to an open standard so you are not locked in, and supports replay. Then write down your failure taxonomy — the specific ways your agent goes wrong — and build alerts against those, not against generic latency. Within a month you will know more about your agent's real behavior than a year of reading staging test output would have told you.
There is no single best tool, because the category splits into two jobs. The first is deep agent tracing and evaluation, where LangSmith, Langfuse, Braintrust, Arize Phoenix, and Weights & Biases Weave are the names you will encounter most often — they are built around runs, steps, prompts, tool calls, and eval scores. The second is cost and gateway observability, where Helicone and similar proxies sit in front of your model calls and track spend, latency, and caching. The honest selection criteria matter more than the logo: does it capture tool call arguments and outputs, not just prompts and completions? Does it let you replay a trace? Can you attach custom eval scores? Does it export via OpenTelemetry's GenAI semantic conventions so you are not locked in? Do you need self-hosting for data residency? For most production teams, the answer is one deep-tracing tool plus whatever APM you already run, wired together so a trace ID appears in both.
Assume it is not the model. Intermittent production-only failures are almost always environmental: context windows filling up over long conversations, retrieval returning different documents under a different index state, tool APIs rate-limiting or timing out under real load, concurrent runs interfering through shared state, or inputs that are simply messier than your fixtures. Start by tracing the failing run and tracing a passing staging run, then compare them step by step until the state diverges. That divergence point is your bug, and it is almost always earlier than where the visible failure appeared. Look specifically at the context at each step, the exact tool arguments passed, and the raw tool responses. Once you find the trigger, reproduce it deliberately by pinning the failing input as a test fixture, so the staging pass rate stops lying to you.
Yes, if the tool you chose records enough of the run — inputs, model outputs, tool arguments, tool responses, and the model version. Replay lets you re-execute the same inputs and inspect each step in isolation, which answers the most important diagnostic question first: is this deterministic or random? If the same input fails the same way every time, you have a broken prompt, tool schema, or routing rule, and you can fix it directly. If it passes sometimes and fails sometimes, you are dealing with sampling variance and need stronger guardrails, validation, or retries rather than a one-line fix. Replay also converts a production incident into a permanent regression test. Pin the failed trace as a fixture and run it against every prompt edit, model upgrade, and tool change, and you stop re-shipping the same failure.
Yes, because they answer different questions. Datadog, Grafana, and application logs are excellent at infrastructure truth: latency percentiles, error rates, saturation, and distributed request traces. They can tell you your agent's call to a tool returned 200 in 800 milliseconds. They cannot tell you the agent passed the wrong argument, ignored a valid result, repeated a tool call four times, or invented a fact. Those are semantic failures inside the reasoning loop, and no amount of general APM instrumentation will surface them, because at the infrastructure layer nothing went wrong. The pragmatic setup is not replacement, it is correlation: run an LLM observability tool for the agent's internal steps and link it to your existing APM so a single trace ID lets you jump from a slow service to the prompt that caused it.
Define what a healthy run looks like, then alert on deviations from it. In practice that means tracking step count against your median and flagging runs that run long, detecting repeated identical tool calls that suggest a loop, validating tool calls against expected schemas and task relevance, checking structured output against a schema before it reaches a user, and setting an explicit cost-per-run threshold. Pair that with automated evaluations that score every completed run on task completion, groundedness, or correctness, so a run that "succeeded" technically while answering the wrong question still gets flagged. The mindset shift is important: stop treating a completed run as a passing run. Once silent failures have metrics and alerts attached, you find out about them from a dashboard instead of from an annoyed customer or a monthly invoice.
Ready to try it?