See What Your Agent Did
Use an agent’s transcripts to read a complete record of each conversation, turn by turn. Each transcript captures the conversation between the user, the agent, any LLM calls, and any tools it invoked, along with token usage, latency, estimated cost, and any errors.
For conceptual background on the underlying OpenTelemetry data model, see How Observability Works.
After reading this page, you will be able to:
-
Open a transcript from an agent’s Transcripts tab
-
Read a transcript as a turn-by-turn conversation, including tool calls and token usage
-
Investigate errors, slow turns, and cost anomalies from the transcript detail view
Prerequisites
-
A running agent with at least one execution.
-
The TranscriptReader role (or Admin). Transcript reads are not part of the default Reader or Writer roles.
Open an agent’s transcripts
-
Open Agents in the sidebar and select the agent.
-
Open the Transcripts tab.
The tab lists the agent’s recent conversations, one row per conversation.
Read the transcripts list
Each row represents one conversation. Columns include:
-
Conversation: The conversation ID, with the conversation title when one exists. -
Started: When the conversation began. -
Duration: End-to-end wall-clock time. -
Turns: Number of turns in the conversation. -
Status:Completed,Error, orRunning. -
Tokens: Total tokens across the conversation.
A transcript marked reconstructed is one in which some turns were rebuilt from LLM message context after the original spans were evicted from redpanda.otel_traces. See Reconstructed transcript history for what that means.
Open a transcript
Click any row to open the conversation detail view. The view has two parts: a summary header and the conversation.
Summary header
The summary header reports:
-
The conversation ID and a status badge (
Completed,Error, orRunning). -
The start time, end-to-end duration, and turn count.
-
A total-tokens chip.
-
A Chat / Detailed view toggle. Chat shows the user-visible exchange; Detailed adds per-turn metadata such as latency, token splits, and tool calls.
If the conversation ended with a top-level error, an error banner appears below the header with the code and message.
Read the conversation
Turns are listed in order by role:
-
SYSTEM: The system prompt and any priming instructions.
-
USER: A user message that started or continued the conversation.
-
ASSISTANT: A response from the LLM. In the Detailed view, shows input/output token counts and latency. If the assistant turn called a tool, its tool calls are nested underneath.
-
TOOL: A tool invocation. Shows the tool name, the arguments passed, the result, and the latency of the call.
Any turn may carry the is_reconstructed marker. Reconstructed turns preserve role order and the high-level content of the conversation but do not carry per-turn token counts, latency, or tool-call arguments. See Reconstructed transcript history for the mechanics.
Errors
An errored transcript shows TranscriptStatus.ERROR in the summary header. The specific failure appears on the turn that raised it, with:
-
Code:
TranscriptError.code(for example, a provider error code orINVALID_ARGUMENT) -
Message: A short description from the LLM provider, the tool, or the agent runtime
If the failure happened during a tool call, the error is attached to the TOOL turn; if it was an LLM call, it’s on the ASSISTANT turn; if neither, it’s on the trace root.
Common investigation tasks
Debug errors
-
Set the status dropdown to
Error. -
Open the failing transcript and scroll to the turn carrying the error code.
-
Read the immediately preceding turns (tool arguments, assistant output) for root cause.
Investigate performance issues
-
Sort the list visually by the
Durationcolumn to spot slow conversations. -
Open a slow transcript, switch to the Detailed view, and scan the per-turn latency to find the bottleneck turn.
-
For tool-bound bottlenecks, expand the tool call to see arguments and result size: a large result often correlates with slow tool execution.
Analyze tool usage
Open a transcript in the Detailed view to read each tool call: arguments in, results out, latency, and a status pill. Tool calls are nested under the assistant turn that made them.
Monitor LLM interactions and cost
The transcript shows token usage per turn. For spend analysis across agents, models, and users, open Cost & Usage under Governance in the sidebar (see View cost and usage), or use breakdown queries through SpendingService; per-transcript estimated_cost_usd is also available through the Transcripts API.
Limitations
-
The list loads in pages from most recent backward. If the conversation you need is old, keep loading more pages or search by its conversation ID.
-
Reconstructed turns do not carry token counts, latency, or tool-call arguments for the reconstructed range. For byte-level fidelity, lower the ingestion lag or extend
redpanda.otel_tracesretention (see How Redpanda stores trace data). -
Estimated USD cost is only populated for models covered by the pricing table.
Troubleshooting
Transcript stuck in RUNNING
A transcript stays in RUNNING until the root span closes. Common causes:
-
The agent or MCP server is still executing (this is normal: Wait, or open a newer transcript).
-
The root span never flushed because the process was killed mid-execution. Expect this to resolve once the OTLP ingestion lag clears; if it doesn’t after several minutes, the trace is likely orphaned.
USD cost shows 0
TranscriptUsage.estimated_cost_usd is populated by the cost-reporting pipeline from the gen_ai.usage.* attributes on each LLM-call span combined with a per-model pricing table. For the full list of cost-bearing attributes (including the explicit USD-cost fields), see Key attributes by layer.
If cost is 0 for a transcript that clearly used tokens, check:
-
The model is in the pricing table. To use a custom rate (negotiated contract, internal chargeback), see Override per-model pricing.
-
The cost-reporting pipeline is enabled on your environment.
-
The LLM-call spans carry the
gen_ai.usage.*attributes the pipeline reads: Either the token-count inputs (gen_ai.usage.input_tokens,gen_ai.usage.output_tokens) or the explicit USD-cost fields listed on the concepts page.
|
Cache-write tokens (Anthropic 4.x, OpenAI 4.x prompt caches) are attributed to the CACHED bucket on streaming and non-streaming responses alike. If a transcript shows zero cache cost on a request that clearly populated a prompt cache, check that the upstream actually wrote to the cache (the response includes a non-zero |
All turns marked reconstructed
Reconstruction happens when the original spans have been evicted from redpanda.otel_traces. Causes:
-
Retention on
redpanda.otel_tracesis aggressive relative to how long the conversation has been running. -
OTLP ingestion fell behind and the span was dropped before it reached the topic.
For long-running conversations, accept some reconstruction; for short conversations whose turns are all reconstructed, investigate ingestion and retention.
Transcript missing entirely
-
Confirm the agent or MCP server actually ran: Check its logs and the corresponding session or task topic.
-
Confirm your user holds the TranscriptReader role (or Admin). Transcript reads require the
dataplane_adp_transcript_getanddataplane_adp_transcript_listpermissions, which are not part of the default Reader or Writer roles. See Transcript permissions. -
Confirm the feature flag enabling Transcripts is on for your environment.