Support

Need help?

Most answers are already written down. For everything else, Oneop does not publish a response time — there is no SLA instrument behind one — so the fastest thing you can do is send a complete first message.

Search the help centreEmail support@oneop.ioOpen your workspace

Worth including

  • The email you log in with
  • The URL of the screen it happened on
  • What you expected, and what happened instead

Goes somewhere else

AI Governance

AI agent observability: traces, actions, failures and escalations

By The Oneop team8 min read

TL;DR

AI agent observability is the operator's live view of a running agent fleet: a per-step trace containing the tool chosen and the observation returned, fleet signals like escalation rate and steps-to-completion, alerting on rate changes rather than single failures, and enough stored detail to reconstruct a bad run without re-running it.

An agent that works in a demo and an agent fleet that works in production are different engineering problems. The demo problem is whether the agent can complete the task. The production problem is whether you can tell, at nine in the morning, which of your agents is quietly degrading and which run from last night needs a human.

That second problem is observability, and it is where most agent deployments are thinnest.

Observability is not the audit trail

AI agent observability is the operator’s live view of a running fleet: health, throughput, failure shape and the ability to reconstruct any individual run. An AI audit trail is the compliance record of who authorised a specific action and what it changed. Same underlying storage, entirely different consumer.

The distinction is worth holding because it drives different design decisions. An audit trail optimises for immutability, retention and per-action lookup: it answers “show me the authorisation for this invoice write in March”. Observability optimises for aggregation and recency: it answers “escalation rate on the triage agent doubled this week, why”. If you are designing the compliance record, that is covered separately in AI agent audit trails; this article is about the operator’s view.

What a run trace must contain

A run trace is useful when it lets you reconstruct what happened without re-running the agent. That requires storing observations, not conclusions.

Per step, store five fields:

FieldWhy it is load-bearing
Reasoning textShows what the agent believed before it acted, which is where wrong decisions originate
Tool selectedDistinguishes “picked the wrong tool” from “picked the right tool and got bad data”
Parameters proposedThe only way to reproduce the call; also the only record of what a suggest-mode agent wanted to do
Observation returnedThe actual tool output. Not the agent’s paraphrase of it
TimestampLets you attribute a slow run to a slow tool rather than a slow model

Per run, store the exit reason as a distinct value rather than a boolean. Success and failure is two states; real agent runs end in many more. Oneop’s AI agents store nine: goal reached, out of steps, out of tokens, out of time, no progress, blocked by a guardrail, tool error, escalated to a human, or out of credits. A billing stop and a provider outage are deliberately different answers, because the operator response to each is completely different.

One ordering detail decides whether the trace exists at all when you most need it. In Oneop the run row is written before the first billed step, at status running, and then updated in place on the way out through success and through failure alike. A run that dies mid-flight is therefore visible as a row still sitting at running, rather than absent.

The signals that predict a bad run

Four fleet-level signals, in the order they move.

Steps-to-completion, as a distribution. This is the earliest indicator. An agent that used to finish in three steps and now averages five is being made to work harder by something — a tool returning less useful data, a record shape that changed, a prompt edit. It is still succeeding, so nothing has alerted, and it is already costing you more per run.

Exit-reason mix. A healthy agent has a stable distribution. A shift toward no progress means the agent is repeating itself; a shift toward out of steps means the task got harder; a shift toward tool error is an integration problem wearing an AI costume.

Escalation rate. The proportion of runs that end needing a person. This is the number to put on a dashboard, because it is the direct measure of how much human work the agent is generating rather than removing. Rising escalation rate with flat volume means the agent is losing ground.

Cost per completed goal. Not cost per run. An agent whose cost per run is flat while its success rate falls is getting more expensive at the thing you actually wanted. Track it per agent rather than per fleet, because one expensive agent averages away inside a healthy fleet number.

Alert on rates, never on single runs

A single failed agent run is not an incident. Agents fail individual runs by design; that is what ceilings are for. Alerting per failure trains your team to ignore the channel within a week.

Alert on change in rate, over a window that contains enough runs to be meaningful. Three useful alerts:

  • Escalation rate for one agent exceeds its own trailing baseline by a set margin.
  • Any exit reason that was rare becomes common. No progress going from near-zero to a few percent is a strong signal of a looping agent.
  • Zero runs from an agent that normally runs daily. Silence is a failure mode, and it is the one that no error-rate alert will ever fire on.

That last one deserves emphasis. An agent that stopped being started is indistinguishable from a healthy agent in every error metric you have.

The failure case: the agent that succeeded at nothing

A lead-qualification agent reads a new contact, checks the CRM for prior deals, enriches from the web, scores the lead and updates a field. It runs hundreds of times a week. Every run returns goal reached. Latency is flat, error rate is zero, cost is stable. Every dashboard is green.

Then the enrichment tool starts returning empty results — a credential expired upstream, and the tool handles it gracefully by returning nothing rather than raising. The agent reads the empty result, reasons that there is no external signal available, scores on CRM data alone, and writes the field. Goal reached. No error anywhere.

Two months of leads are scored on half the inputs, and nothing in conventional monitoring can see it, because technical success and semantic success diverged and only one of them was instrumented.

What catches this is not an error alert. It is the trace: the observation field for that tool went from populated to empty across the whole fleet on a specific day, and a distribution check on observation content would have fired. Which is the argument for storing observations verbatim instead of storing the agent’s summary. The summary said “no additional signal found”, and that sentence is true, unalarming, and useless.

Debugging a run after the fact

When a specific run went wrong, work backwards through four questions in order.

  1. How did it end? The exit reason narrows the search space immediately. Out of time points at a slow tool; no progress points at a loop; blocked by a guardrail points at the input.
  2. Where did the reasoning diverge from reality? Read step by step, comparing the reasoning text against the observation that preceded it. The failure is almost always one step earlier than the step that looks wrong.
  3. Was the tool choice available? An agent asking for a tool it was not granted is refused rather than improvised, so a run full of refusals is a configuration problem, not a model problem.
  4. Was anything actually written? In suggest mode the proposed action and its parameters are still recorded even though nothing changed, so “what would it have done” is answerable without re-running it.

Two honest limits on reconstruction, worth knowing before you rely on it. Refusals are the weak spot across the industry and in Oneop specifically: a prompt stopped by the injection filter or a call stopped at a credit ceiling is refused before the execution record is written, so it reaches your error handling but not your AI history. And the model recorded against an Oneop run is the one the agent was configured to use — if the router fell back through its chain of Gemini models, that field does not reflect it. Both are named on the AI governance page rather than left for an auditor to find.

Where observability sits next to the other controls

Observability tells you what happened. Guardrails decide what is allowed to happen in the first place, and the two are not substitutes — a fleet with perfect dashboards and no input controls is a fleet that watches its own incidents in high resolution. The input-side controls are covered in AI agent guardrails, and the catalogue of what actually goes wrong is in AI agent failure modes.

If you are still at the stage of deciding what to put into production at all rather than how to watch it, the staged approach is set out under deploying AI agents safely.

If you take one thing from this: instrument the exit reason before you instrument anything else. It is one column, it costs nothing, and it converts “the agent failed” into a sentence an operator can act on.

Frequently asked questions

What is the difference between AI agent observability and an AI audit trail?

Observability is the operator's live view: is the fleet healthy right now, which agent is degrading, why did this run stop. An audit trail is the compliance record: who authorised this specific action, when, and what changed. They overlap in storage and differ completely in consumer, retention and question. An audit trail answers questions about one action months later; observability answers questions about a population of runs today.

What must an AI agent run trace contain to be useful?

Five things per step: the reasoning text, the tool the agent selected, the parameters it proposed, the observation that actually came back from that tool, and a timestamp. Plus, on the run itself, a distinct exit reason, duration, token count and cost. A trace that stores only the agent's own summary of what it did is not a trace — it is the agent's opinion of itself.

Which metric best predicts a failing AI agent?

Escalation rate by exit reason, tracked as a trend. A stable agent has a stable mix of exit reasons; a sudden shift toward out-of-steps or no-progress usually means the data it reads has changed shape, not that the model got worse. Rising steps-to-completion is the earliest leading indicator, because it moves before the run starts failing outright.

How long should agent run traces be retained?

Long enough to cover the slowest feedback loop you have on agent decisions. If a bad lead-qualification decision surfaces in a pipeline review six weeks later, six weeks of traces is the floor. Retention for compliance is a separate and usually longer clock, set by the action category rather than by the agent.

Can you monitor an AI agent with normal application monitoring?

Partially. Latency, error rate and cost are ordinary telemetry and your existing tooling handles them. What ordinary tooling misses is that an agent can succeed technically and fail semantically: every call returned 200, no exception was raised, and the agent still did the wrong thing. That gap is why per-step traces and exit-reason distributions exist as a separate layer.

Written by

The Oneop team

Writing from the team that builds Oneop — an AI customer platform with web chat and email on top of a real CRM, help desk, ledger and warehouse.

Related reading

Start on the free plan and see the real thing

No credit card. Free plan, 2 seats.

Free forever · 2 seats · No credit card