Explore Traces
Use the Provon Workbench to move from a symptom to the first unexpected operation, then expand to the complete conversation when the cause crosses trace boundaries.
For programmatic access, use the Tracing CLI or Trace read API.
Traces#
The Traces view is the execution index. Trace summaries can include:
- root operation, start time, and duration;
- span and error counts;
- conversation and observed-user identity;
- provider, model, agent, type, and environment dimensions;
- input, output, reasoning, and cache token totals;
- cost totals;
- Input and Output previews.
The Input and Output columns show one message each, not the whole payload. Input is the last
user message of the trace; Output is the last assistant message that carries text. Both anchor to
the newest qualifying message, so they describe the same turn: the question that was asked next to
the answer it received. Messages that only carry a tool result, a tool call, or injected context
such as <environment_context> are skipped, and a request that replays its history shows the
current ask rather than an opening line. An empty cell means no content of that role was captured,
or project retention discards message content. Hover a cell for the full retained text.
Open a trace to inspect its span tree. The tree should preserve the causal structure of the bounded run:
invoke-agent
|-- retrieve-context
|-- generate-plan
|-- execute-tool
`-- verify-answerSelect a span to review status, timing, attributes, resource attributes, events, retained content, and attachments.
Conversations#
Conversations are viewed through the Trajectory view. Click a conversation ID in the Traces
table to open that trace's drawer directly in Trajectory view, click a row in a Sessions list to
open the conversation in Trajectory view, or open any trace that belongs to the conversation and
switch the left pane from Tree to Trajectory. The
Trajectory view shows the complete message trajectory for that conversation — every turn, across
all traces that share the same gen_ai.conversation.id or another recognized conversation
attribute.
When the detail surface is scoped to a conversation, the Tree view is scoped to the same conversation: it shows the span forest of every trace in the conversation, with one root per turn, so switching views never silently narrows to a single trace.
Use it when the current run depends on:
- an earlier user constraint;
- a previous tool result;
- a separate participant's handoff;
- a later recovery or review run;
- several turns that contribute to one outcome.
One conversation can contain several independently bounded traces. If related turns appear as separate conversations, fix their emitted identity rather than merging them in the UI.
Users#
The Users view aggregates activity by observed user.id. It is intended for users of the
instrumented application, not Provon workspace members.
Use it to compare trace, conversation, error, model, token, cost, and environment dimensions for one observed user while respecting the deployment's privacy policy. The user detail page shows a Sessions tab listing that user's conversations; click a session row to open it in the Trajectory view.
Search#
Trace search supports:
| Search type | Matches |
|---|---|
trace-id |
Exact trace identity |
span-id |
Exact span identity |
user-id |
Observed user |
conversation-id |
Conversation identity |
span-name |
Span operation name |
operation-name |
gen_ai.operation.name |
content |
Retained searchable content |
input |
Input content |
output |
Output content |
Combine identity, content, level, structured filters, and a bounded time range to reduce the result set before opening a trace.
Level filters are ok, error, and unknown. A span with error text but no ERROR status may not
appear under the error level.
Investigation Workflow#
- Start with a trace ID, conversation ID, error, latency, cost, user, operation, or content search.
- Open the trace and identify the first unexpected span, not only the final error.
- Inspect its parent, inputs, result, status, and any later retry or recovery.
- Switch to the Trajectory view when the required evidence crosses trace boundaries.
- Attribute each action and terminal answer to an explicit participant.
- Compare the objective evidence with any published Finding.
- Export the trace only when repository context or Agent adjudication is needed.
Do not infer causality only from timestamps. Parent span IDs, tool call IDs, participant identity, status, and ordered conversation evidence provide the stronger chain.
Reading A Trace For Diagnosis#
Check these questions in order:
| Question | Evidence |
|---|---|
| What was the bounded goal? | Root input and conversation context |
| Which participant owned each action? | gen_ai.agent.* and parent structure |
| What did the model or tool actually receive? | Input messages, tool arguments, retrieval query |
| What did it return? | Output messages, tool result, retrieved documents |
| Where did behavior first diverge? | Earliest unexpected span or event |
| Was the fault corrected later? | Retry, fallback, verification, or later participant result |
| What terminal claim was made? | Root output and final participant output |
A final error is not always the cause. A failed tool can be corrected, while an earlier ignored negative result can remain the decisive fault.
Trace Quality Problems#
| Symptom | Likely instrumentation problem |
|---|---|
| Flat list of model calls | Missing orchestration and parent context |
| Empty Input or Output cell | Root input or output is absent |
| Related turns appear separately | Missing or unstable conversation ID |
| Several agents look like one actor | Missing gen_ai.agent.id |
| Retry appears only as success | Failed attempt was overwritten |
| Error search misses a failed span | Status was not set to ERROR |
| Tool result cannot be reviewed | Result was dropped, over-redacted, or payload-only |
| Finding has insufficient evidence | Goal, result, terminal answer, or conversation is missing |
Use Diagnosis-ready tracing to correct the source instrumentation.