97% believe in it. 4% have built it. New research: State of context engineering.

Read the report
Platform
Deploy
Solutions
Devs
Resources
Partners

Blog

Multi-agent observability: why one trace isn't enough

August 03, 20269 minute read
Jeff Mills
Jeff Mills
Summarize with AI

A single AI agent is usually easy to trace. One loop, one context window, one trace—you can read it top to bottom, spot the bad prompt or the failed tool call, and fix it. Multi-agent systems are different. Agents, shared memory, and external tools split the work, and many failures come from coordination between components rather than any single step. A trace that fully covers one agent may only partially cover the system.

This guide covers what multi-agent observability is, why systems of agents are harder to watch, where failures hide, and why a shared state layer helps you reconstruct them instead of guessing.

What is multi-agent observability?

Multi-agent observability is the practice of capturing and correlating what agents do across a system so you can reconstruct how they reached a given outcome. That means tying delegation decisions, tool calls, memory reads and writes, and inter-agent messages together into one causal story rather than a pile of separate logs.

The unit of analysis shifts from the prompt to the state transition: not "what did the model return?" but "why did the orchestrator delegate this task, and where did things start going wrong?"

That's a bigger job than single-agent tracing: correlating delegation, handoffs, and shared state across agent boundaries, on top of everything it already covers. Agents are also probabilistic, so identical inputs can still produce different outputs, and the trace has to hold enough context to explain the run you already have.

Why multi-agent systems are harder to observe than single agents

One agent is easier to watch because everything it does happens in one place. It's worth being precise about "multi-agent": most systems described that way today are one orchestrator calling sub-agents and tools under a single team's control, and the trace still fragments the moment work spreads across those calls. Genuine agent-to-agent systems that cross team, framework, or security boundaries are still rare in production, but they inherit every problem below and add more. Two properties in particular make watching any of them hard, and standard dashboards usually surface neither.

Agent decisions happen at runtime, not in your code

In traditional software, control flow is explicit: you can read the source and know what runs next. In agentic systems, many decisions about which tool to call, how to break down a problem, and when to stop happen in the model at runtime. As the LLM drives more of the app, the code no longer fully documents runtime behavior. The traces do.

Redis Iris

See how practitioners draw the line

A live debate on when A2A earns its keep and when MCP is enough.

Without tracing, the failure is invisible. One multi-agent research system couldn't explain why users saw agents 'not finding obvious information' until its team added full production tracing, because bad search queries, poor source selection, and tool failures all looked identical from the outside. The non-determinism stacks up: the model is stochastic, tools return live data, and the workflow can change shape mid-run, so teams can't reliably reproduce failures.

Why failures surface far from their root cause

Even when a failure is captured in the logs, it often shows up nowhere near where it started. One published analysis found that 75.17% of observed failures were silent gray errors—runs that completed without emitting any hard error signal and only looked wrong on close inspection. In one case, an executor agent retrieved the correct answer, but the replanner rejected it over and over until the system timed out, with the right answer sitting in its own trace the whole time.

Later steps can also partially compensate for earlier mistakes, which hides the root cause further, so the span that looks broken is frequently downstream of the real problem.

The attribution gap: which agent caused the failure?

Knowing that failures hide in coordination is one thing; pinning a specific failure on a specific agent is another, and the research here is humbling. One evaluation used failure logs from 127 multi-agent systems, and its highest-performing method identified the responsible agent with only 53.5% attribution accuracy. With complete traces instead of outputs alone, that number rose to 65.9%, better but still not reliable on its own. Complete traces help, but only when they're structured for causal analysis, not just log search.

In one annotated failure dataset, the most common failures were design and coordination problems. Neither typically throws an exception: a misaligned handoff produces a plausible-looking wrong answer, not a stack trace, so error-rate monitoring alone can miss most semantic failures.

Why context gets lost during agent handoffs

A handoff is any moment one agent passes work or context to another, and it's where information tends to go missing.

This is context fragmentation, where the pieces an agent needs stop arriving together. It happens in a few familiar ways:

  • Poisoning: a hallucination enters context, and downstream agents keep referencing it as if it were true.
  • Distraction, confusion, and clash: long, cluttered, or contradictory context degrades the model's output.
  • Rot: recall degrades as context grows, so earlier information effectively disappears.

Two mechanisms drive these failures: compression and truncation. Aggressive compaction can drop subtle context whose value only becomes clear later, and truncation can drop verified data during a handoff, leaving a downstream agent to fill the gap.

The receiving agent's context window works against it too: models recall content at the start and end of a long context far better than the middle, so even when everything is technically included, the important part can get overlooked.

Agent calls and tool calls land in separate traces

Even when nothing gets lost semantically, the telemetry itself can fragment. OpenTelemetry's generative AI (GenAI) semantic conventions describe a span tree with a top-level invoke_agent span and child spans for each LLM call and tool invocation. But those conventions are still in development, and the plumbing between the pieces has gaps. The line between the two blurs, too: a call that looks like a simple tool invocation may be doing agent-like reasoning under the hood, resolving IDs or parameters the caller never supplied, so the thing you trace as a "tool call" can hide decisions worth capturing.

When an agent calls a tool on a remote Model Context Protocol (MCP) server, trace context can get lost at the transport boundary: the agent's span tree stops at the call, and the server starts a new, unrelated trace. Agent-to-agent calls hit a similar wall. The OpenTelemetry SDK ships World Wide Web Consortium (W3C) Trace Context propagators, but GenAI tracing SDKs generally don't configure them for cross-service calls, and child spans for inference, retrieval, and tool execution often can't identify which agent initiated them.

The result: your LLM calls end up in one trace, your tool executions in another, and your agent-to-agent messages in a third, with no shared identifier threading through every hop.

What multi-agent observability has to connect

If handoffs and trace silos are where failures hide, the fix is correlating signals that most monitoring stacks treat as separate. Latency and token counts still matter, but they're only descriptive—a trace can show a 200 on every span while the final answer is still wrong.

What to trace beyond latency and tokens

A trace that can help investigate "which agent went wrong, and why" typically connects six kinds of signals:

  • Decision metadata and recorded explanations: the rationale the system records for why the orchestrator delegated to this agent, why the agent picked this tool, and when it stopped.
  • Inter-agent messages: what the sending agent passed at each handoff, and what the handoff process dropped or compressed away.
  • Memory reads and writes: what each agent read, what each agent wrote, and how that state influenced later decisions.
  • Retrieval quality: whether retrieved chunks were relevant to the query, not just whether retrieval returned fast.
  • Tool inputs, outputs, and state changes: tool failures can cascade silently across a multi-step workflow.
  • Identity and permission scope: which identity a call ran under and what permissions applied at execution time, so a wrong answer can be traced to the access an agent did or didn't have.

None of these is exotic on its own. The catch is that most systems don't emit them by default: the reasoning behind a decision, who called what, and which permissions applied rarely land in the trace unless you put them there. The hard part is then correlation, threading one identifier through every hop and every store, so a memory write by agent A shows up in the causal history of agent C's wrong answer.

How a shared state layer supports multi-agent observability

Correlation gets easier when agents coordinate through shared state instead of scattered point-to-point messages. The idea isn't new: blackboard architectures from the 1980s coordinated independent specialists through a single global data structure they all read and write. The same design does two jobs at once. Agents don't need to message each other if they can see the same board, and when an append-only log backs that state, you get an audit trail you can replay after a failure instead of a timeline pieced together from scattered logs.

Redis is a real-time data platform that keeps frequently accessed state in memory, with sub-millisecond latency reported in a 20-node cluster benchmark. If your team already uses Redis for caching or session state, this is the same platform doing more. Redis Iris packages the state agents touch on every turn into a real-time context engine that sits between an agent and the data it needs: semantic retrieval across vector, structured, and unstructured data through Redis Search; semantic caching to reuse responses for similar queries even when wording differs through LangCache; and Redis Agent Memory, a managed service that splits memory into short-term session memory scoped to a conversation and long-term memory retrieved via vector search.

For coordination, Redis streams can back durable, ordered event logs when the app writes each relevant agent action and configures suitable persistence and retention, while publish/subscribe (pub/sub) handles broadcast-style messaging without a separate broker. Redis publishes integration guides for LangGraph, LlamaIndex, and AutoGen.

One boundary worth keeping straight—Redis stores, indexes, and serves the shared state; your app and tracing stack decide what to record and how to analyze it. A shared state layer doesn't replace OpenTelemetry instrumentation, it gives that instrumentation a single, ordered source of truth to point at. It also survives failure: when task progress lives in shared state, a run that dies halfway, or a customer who returns a day later, resumes from saved context instead of starting over, and the same record explains what happened in between. That context layer sits underneath your agents whether they coordinate through MCP, agent-to-agent calls, or plain orchestration, which is why memory and shared state are worth settling on before the protocols above them do.

Redis Cloud

The protocol debate, minus the marketing

A panel of agent-infrastructure engineers on how the two protocols fit together.

Multi-agent observability follows the state

Multi-agent failures are hard to reconstruct because the code no longer fully documents runtime behavior, failures surface far from their causes, and most emit no hard error signal at all. Watching each agent in isolation misses the coordination layer where they happen. The useful picture connects decisions, handoffs, memory operations, and retrieval quality, not just latency and tokens.

A shared state layer makes that picture easier to assemble. When agents coordinate through one fast store backed by an append-only event log, that same store doubles as an ordered record of what the app writes to it. Redis Iris provides that context layer, and with the right persistence and retention settings, Redis streams can support durable event histories. Try Redis Iris to see how it fits your agent workloads, or talk to our team about designing the state layer for your multi-agent system.

Get started with Redis today

Speak to a Redis expert and learn more about enterprise-grade Redis today.