All glossary terms
A Operations Evidence

AI agent observability

AI agent observability captures what an agent did, step by step, as traces you can query and replay. Agents fail in ways that look like success. Every conventional monitoring signal stays green while the agent competently does the wrong thing.

Definition

AI agent observability means keeping a detailed record of everything an AI agent does step by step. Like, every question it asked a model, every tool it used, every piece of information it looked up, and every decision it made. That's different from just checking if the system was up and running fast. Observability answers a deeper question, ‘why did it do what it did’.

What is AI agent observability?

AI agent observability captures what an agent did, step by step, as structured traces you can query and replay. It exists because agents fail in ways that mimic success, so every conventional monitoring signal stays green while the output quietly goes wrong.

The clearest way to see why it is a separate discipline is to look at what a status code tells you. In a conventional service, a 200 means the request succeeded and there is nothing to investigate. For an agent, a 200 means the model returned text. It says nothing about whether the text was correct, whether the tool it called was the right one, whether it looped six times before answering, or whether the action it took should have required a human.

Latency looks fine. Error rates look fine. Uptime is perfect. And the agent has just closed a case it should have escalated. Traditional monitoring isn't built to catch that. It only tracks uptime and speed, not judgment. So, an agent estate wired only with application performance monitoring looks instrumented, but in the way that matters, it isn't.

Observability records what happened. It does not judge whether what happened was good. That boundary is worth holding firmly, because it is where two disciplines get conflated. A span can record that a model returned twelve hundred tokens in eight hundred milliseconds. It cannot record that those tokens contradicted the source document. Scoring quality is agent evaluation, and it sits on top of observability as a separate consumer of the same data.

What does an agent trace contain?

A tree, not a line. A session holds several agent runs. Each run holds model calls. Each model call can branch into tool calls beneath it. This tree structure lets you trace a wrong answer back to the exact step that caused it.

This shape is now standardized. The OpenTelemetry GenAI semantic conventions model an agent run as a span tree, with named operations covering agent creation and invocation, workflow invocation, tool execution, retrieval, planning, and memory operations.

A hierarchical span tree. At the top a session containing a conversation. Below it an agent run. Below that, model calls, each of which may contain tool calls and retrieval steps as children. Attributes are shown attached to spans, including model name, input and output token counts, finish reason, and tool arguments. A note reads that the tree structure is what connects a wrong answer to the step that caused it.

What sits inside the spans is the part that is genuinely new. A conventional trace carries a route, a duration, and a status. An agent span carries the model and version, input and output token counts, the reason generation stopped, and, when content capture is switched on, the system instructions, the input messages, the output messages, and every tool call with its arguments and results.

Two consequences follow immediately, and they shape everything else on this page. The volume per run is enormous compared with an HTTP trace, because prompts and completions are large text blobs rather than short fields. And the content is often sensitive, because the prompt frequently contains the customer data the agent was reasoning about.

How is agent observability different from traditional observability?

Six differences, and none of them is cosmetic. The unit changes from a request to a trajectory, success stops being a status code, volume rises by orders of magnitude, and reproducing a failure requires capturing inputs you would never have stored before.

Existing tooling extends part of the way and stops. Understanding where it stops tells you what you still have to build or buy.

Traditional application observability compared with AI agent observability across six dimensions
Dimension Traditional APM Agent observability
The unit A request, with a route and a duration A trajectory: a sequence of decisions across many calls
Success A status code. 200 means it worked A judgement. 200 means text came back and nothing more
Volume Small structured fields per span Large text blobs: prompts, completions, tool payloads
Reproducing Same input, same output. Replay the request Non-deterministic, so you must have captured the exact inputs and parameters at the time
Cost driver Request count Token count, which correlates with neither requests nor latency
Sensitivity Mostly metadata Traces often contain the customer data the agent reasoned over

The reproducing row is the one that catches teams out. Conventional debugging assumes you can re-run the failing request. An agent given the same input twice may take a different path, so unless the trace captured the exact prompt, model version, and parameters at the moment of the failure, the incident is not investigable at all. You cannot go back for that data later.

Why is sampling the decision that matters?

Agent traces are costly enough that nobody keeps them all. The moment you set a sampling rate; you have decided which incidents you won't be able to explain. Sampling by rate throws away exactly the runs you needed.

The economics force the question. A single agent run can produce more telemetry than a thousand HTTP requests, and at production volume storing every trace in full becomes a line item somebody challenges. So teams sample, usually by picking a percentage, which is the approach carried over from APM and the wrong one here.

Two sampling approaches compared. On the left, random rate sampling at ten percent, showing that failures, escalations and expensive runs are discarded at the same rate as ordinary traffic, so most incidents have no trace. On the right, signal-based sampling keeping every failure, every escalation, every run above a cost threshold and every run touching regulated data, plus a small random baseline for aggregate statistics.

Random sampling is defensible when every event is equivalent, which is true of web requests and false of agent runs. A ten percent rate means nine out of ten failures have no trace, and the failures are the entire reason you built the system.

  • Keep every failed run. Non-negotiable. A failure with no trace is an incident you will close without a cause.
  • Keep every run that escalated to a human. These are the boundary cases that tell you where the agent's scope is wrong.
  • Keep every run above a cost or step threshold. Expensive runs are where loops and missing stopping conditions show up.
  • Keep every run touching regulated data. Decided by policy rather than by budget, and it usually decides itself.
  • Keep a small random baseline. Signal-based sampling is biased by construction, so you need an unbiased slice to compute honest aggregate statistics against.

This point matters more than it looks. If you only keep failures and expensive runs, your trace store can't tell you what normal looks like. Every trend you read from it will be wrong. Signal sampling and a random baseline are not alternatives. They are complements.

Is observability the same as an audit trail?

No, and the difference is the sampling decision above. Observability is sampled, mutable, short-lived, and written for engineers. An audit trail is complete, tamper-evident, retained to a schedule, and written for a third party. You cannot sample an audit trail.

This is the most consequential confusion in the subject, because the two look identical while you are building them. Both capture what a system did. Both live in a trace store. A team can build excellent observability and reasonably believe the compliance requirement is covered, and only discover otherwise when somebody external asks a question about a specific run from four months ago.

The practical resolution is not to build two systems. It is to decide, per agent, whether it falls inside a regulatory scope, and route those runs to complete, immutable, long-retention storage while everything else goes to the sampled engineering store. Deciding that per agent is far cheaper than applying audit-grade handling to your entire trace volume, and far safer than discovering the gap during an inquiry. For what an audit-grade record has to contain, and for the wider evidence obligation, see AI governance.

How do you implement agent observability?

Instrument to a shared standard, capture the whole span tree rather than only the model calls, decide content capture and redaction deliberately, and set sampling by signal. Then verify what actually lands in storage rather than trusting the documentation, because the standard is still moving.

The industry has converged on OpenTelemetry as the telemetry layer, and the practical guidance below reflects both what that gives you and what it does not.

  1. Instrument to the GenAI semantic conventions

    Emitting standard attribute names means a trace from one framework and a trace from another are readable by the same backend, and you can change backends without rewriting instrumentation. Auto-instrumentation exists for the major providers and frameworks, and several coding agents already emit these traces natively.

  2. Capture the tree, not just the model calls

    Instrumenting only the LLM calls is the common half-measure. It tells you what was asked and answered and leaves out the tool calls, retrievals, and handoffs, which is where most agent failures originate. The span tree is the deliverable.

  3. Decide content capture deliberately

    Prompts and completions are enormously useful for debugging and frequently contain personal or regulated data. Capturing them is a decision with a privacy consequence, not a default. Decide per agent, redact at the collector rather than at the backend, and record the decision.

  4. Sample by signal, with a random baseline

    Configured at the collector, so the policy lives in one place rather than being scattered across services. Everything covered in the previous section applies here.

  5. Keep evaluation out of instrumentation

    Record what happened, score it separately. If grading gets built into instrumentation, your trace store becomes tied to today's definition of correct. Then every change to the quality bar forces you to re-instrument. Keep traces as an append-only record and let evaluation evolve on top of it.

  6. Verify what actually lands, and pin your versions

    Do not infer the schema from documentation. Emit a trace, read the stored span, and confirm the attribute names. Then pin the framework, the instrumentation package, the SDK, and the exporter, because each carries its own assumptions about the conventions.

The standard is converging, and it is not finished. OpenTelemetry graduated from the CNCF in May 2026, and the GenAI conventions moved into a dedicated repository in June 2026. As of mid-2026, though, the GenAI spans, attributes, metrics and events remain in development status, which means attribute names can change without a major version bump. Adopt them, because the alternative is a proprietary schema you will migrate off later anyway. Just do not treat "OpenTelemetry-compatible" as a settled schema contract, and date whatever you tested against.

Frequently asked questions about AI agent observability

If your question is not here, our team will answer it directly.


Talk to a Specialist →
What is AI agent observability in simple terms?

Traditional monitoring tells you the system is running. Agent observability tells you what it decided. It captures every step an agent took, as a structured record you can query afterwards: which model was called, what it was asked, which tools it used with what arguments, what came back, and where it stopped. The point is to be able to answer why the agent did something, weeks later, without guessing or re-running anything.

Why is agent observability different from APM?

Because success stops being a status code. In a conventional service a 200 means the request worked. For an agent a 200 means the model returned text, which says nothing about whether the answer was right, whether it called the correct tool, or whether it looped before answering. Latency, error rates and uptime can all look perfect while an agent closes a case it should have escalated. Traditional monitoring is not designed to notice that.

What should an agent trace capture?

The whole tree, not just the model calls. A session contains agent runs, each run contains model calls, and tool calls and retrievals hang beneath those. Each span should carry the model and version, input and output token counts, the reason generation stopped, and the tool arguments and results. Instrumenting only the LLM calls is the common half-measure: it tells you what was asked and answered while omitting the tool calls, where most agent failures actually originate.

What are the OpenTelemetry GenAI semantic conventions?

A shared vocabulary for AI telemetry, so a trace emitted by one framework and one emitted by another are readable by the same backend. They define standard span names and attribute names covering model invocation, agent runs, tool execution, retrieval and memory operations, and they model an agent run as a span tree rather than as isolated model calls. The practical benefit is portability: you can change observability backends without rewriting your instrumentation.

Are the OpenTelemetry GenAI conventions stable?

Not yet, as of mid-2026. OpenTelemetry itself graduated from the CNCF in May 2026 and the GenAI conventions moved into a dedicated repository in June 2026, but the GenAI spans, attributes, metrics and events remain in development status, which means names can change without a major version bump. Adopt them anyway, since the alternative is a proprietary schema you will migrate off later. Just pin your versions, inspect the spans that actually land rather than trusting documentation, and record what you tested against.

How much does agent observability cost to run?

Enough that sampling becomes a design decision rather than a tuning knob. A single agent run can generate more telemetry than a thousand HTTP requests, because prompts and completions are large text blobs rather than short structured fields. Storing every trace in full at production volume becomes a line item somebody challenges. The instrumentation overhead itself is negligible, since model calls already take seconds; the cost is in storage and retention, not in capture.

How should you sample agent traces?

By signal, not by rate, plus a small random baseline. Random sampling assumes every event is equivalent, which is true of web requests and false of agent runs: a ten percent rate means nine out of ten failures have no trace. Keep every failed run, every run that escalated to a human, every run above a cost or step threshold, and every run touching regulated data. Then keep a small random slice, because signal sampling is biased by construction and you need an unbiased sample for aggregate statistics.

Is agent observability the same as an audit trail?

No, and the difference is sampling. Observability is sampled, mutable, short-lived and written for engineers; an audit trail is complete, tamper-evident, retained to a schedule and written for a third party. You cannot sample an audit trail, because the run somebody asks about will be the one you dropped. The two look identical while you are building them, which is why teams discover the gap only when an external question arrives about a specific run from months earlier.

What is the difference between observability and evaluation?

Observability records what happened; evaluation judges whether it was good. A span can record that a model returned twelve hundred tokens in eight hundred milliseconds. It cannot record that those tokens contradicted the source document. Keeping them separate matters architecturally: if you push grading into your instrumentation, you couple the record of what happened to whatever you currently consider correct, so every change to your quality bar forces re-instrumentation. Traces should be an append-only substrate that evaluation runs on top of.

Can you replay an agent run from its trace?

Only if you captured enough at the time, and this is where non-determinism bites. Conventional debugging assumes you can re-run a failing request and see the same failure. An agent given identical input may take a different path, so replay depends on having stored the exact prompt, model version, parameters, and tool responses at the moment it ran. Store traces append-only rather than as overwritten state, and you can reconstruct a run step by step and diff two runs attribute by attribute.

Should you capture prompts and completions in traces?

Decide it per agent rather than accepting a default. Full content is enormously useful for debugging, because without it you can see that a step happened and not what it said. It also means your trace store now holds whatever customer or regulated data the agent was reasoning over, under whatever access controls your observability platform happens to have. Redact at the collector rather than at the backend, so sensitive content never lands, and record the decision alongside the agent.

Who owns agent observability?

Platform engineering builds and runs it; the governance function specifies what has to be captured and kept. That split matters because the two have different failure modes. Engineering alone tends to instrument what is useful for debugging and sample by cost, which quietly removes the evidence a regulator would ask for. Governance alone produces capture requirements nobody implements. The productive arrangement is governance setting retention and completeness rules per risk tier, and engineering deciding everything else.

Query it, do not reconstruct it
Can you explain what an agent did four months ago?

CAMS records every model call and agent action with cost, tokens and actor attribution, in a searchable log that runs inside your own perimeter, alongside the guardrails and the kill switch that let somebody act on what it shows.