Waxell

Play · Developers and platform teams

Debug a multi-agent run

The sub-agent that went wrongis a run you can open and read.

Observe links a sub-agent's run to the run that started it and to the same session, with no manual wiring. Open the session, follow the branch that failed, read its model and tool calls, and test a prompt fix against the recorded call before you ship it.

30 minutes. No commitment.

SOC 2 Type II attested · ISO/IEC 27001:2022 certified · HIPAA with a BAA · aligned to the EU AI Act and NIST AI RMF

observe · executions
observe · executions
  1. This play uses
  2. 02Observe
  3. 03Enforce
The situation

Who

A platform team running a CrewAI research crew for customers: a planner that hands work to a researcher and a writer.

What happened

One customer's report cited a source the researcher never fetched. Rerunning the crew on the same input produced a clean report.

What's at stake

A failure that happened once, spread across three agents, with no way to tell which agent made the mistake or why.

The play
  1. 01Observe

    Sub-agents land as child runs, linked for you.

    Call waxell.init() and the CrewAI instrumentor opens a run for the crew and a child run for each agent that executes inside it. The same happens for OpenAI Agents SDK handoffs, LangGraph sub-agents, Google ADK, AG2 and Agency Swarm. A child run inherits its parent's session and user, and lineage also carries to a subprocess the run starts and across an MCP call to an instrumented server. Each run records its model calls, tool calls, tokens and cost.

    waxell.init() · a child run per sub-agent · session and user inherited · lineage across subprocesses and MCP calls

    observe · executions
    observe · executions
  2. 02Observe

    Open the session. Follow the branch.

    The session page has two views: a timeline of its runs, and a lineage graph that draws each run as a node, parent to child, with its status, duration and cost. Each edge says how the child started: a spawn, a handoff, or a message between agents. Open the writer's run and read its calls in order; the citation with no fetch behind it is one model call. In the terminal, wax lineage session prints the same tree and wax lineage upstream walks back from a run to whatever started it.

    Timeline and Lineage DAG · spawn, handoff and a2a_message edges · wax lineage session <session_id> · wax lineage upstream <run_id>

    observe · run trace
    observe · run trace
  3. 03Observe

    Test the fix on the call that failed.

    If the writer's prompt is managed in Waxell, pick the recorded model call and replay it against a new version of the prompt. Waxell renders the new version with the variables captured from the original call and returns the two side by side: response, cost, latency and tokens, so you can diff them before you ship. To check more than one case, build a dataset from the prompt's recorded runs and compare two versions on the same inputs, with cost, tokens, latency and eval scores for each.

    replay a recorded model call on a new prompt version · original and replay side by side · compare two versions on one dataset

  4. 04Enforce

    Put a bound on the fan-out.

    When the planner records a hand-off with ctx.record_delegation (the LangGraph instrumentors record it for you), a delegation policy is checked before the sub-agent starts: a maximum delegation depth, a cap on concurrent delegates, and lists of agents that may or may not be started. Waxell also suggests limits for the crew from its last seven days of runs, a step limit, a timeout and token and cost budgets, each at twice the observed average, for you to accept or dismiss.

    max_delegation_depth · max_concurrent_delegates · allowed and blocked delegates · suggested limits at 2x the 7-day average

    govern · policies
    govern · policies
What the record shows
  1. crew kickoff · customer report 0412research-crew · run 7c1e · traced · 3 child runs in one sessionallow
  2. anthropic.messages · cites a source the researcher never fetchedwriter · child of 7c1e · traced · call kept for replayallow
  3. replay of the recorded callwriter-brief v5 · replay · original and replay side by side · recorded against run 7c1eallow
  4. start sub-agent · depth 3planner · run 7d02 · delegation · max_delegation_depth 2 · recorded hand-offblock

Illustrative entries in the shape the product writes them.

Policies involved

Products in this play

Questions teams ask about this play

No. The framework instrumentors open a child run per sub-agent for CrewAI, OpenAI Agents SDK handoffs, LangGraph sub-agents, Google ADK, AG2, Agency Swarm and others. A run opened inside another run is linked to it, and lineage carries to subprocesses and across MCP calls to instrumented servers. Wrap a conversation in waxell.session to group its runs under one session id.

Related plays

Run this play this week.

Free for your first agents and devices, live in about thirty seconds. Or walk through it with someone who has run it before.

30 minutes. No commitment.

SOC 2 Type II attested · ISO/IEC 27001:2022 certified · HIPAA with a BAA · aligned to the EU AI Act and NIST AI RMF