Conversations
Read what your agents and customers said, take over a live chat, and diagnose why an agent answered the way it did.
Every exchange between an agent and a contact is recorded as a conversation. Find them in the Inbox in the dashboard, on a contact's record, or on an agent's read-only Conversations tab. The Inbox groups them into queues — Needs Attention, Live, Mine, All and Resolved — which are filters over the same list rather than separate pages.
The list carries a Summary column: a short recap written once the conversation has ended, so several sessions from the same contact can be told apart without opening each one. It stays blank while a conversation is still running, and — like the trace below — it is shown to workspace owners and admins only, since a recap says what was asked and what was answered. Members see the rest of the row.
What a conversation shows
- Every message, in order, with timestamps
- Which agent answered, and on which channel
- Any tools the agent called, with their arguments and results
- Attachments the contact sent, and files the agent sent back
- Whether a human took over
Taking over a live conversation
When an agent cannot help — or a customer asks for a person — your team can step in.
- Open the conversation.
- Select Take over. The agent stops responding.
- Reply directly as yourself.
- Select Release to hand control back.
An agent can also request this itself. When it escalates, your team is notified and the conversation is flagged for attention.
After you release a conversation, the agent picks up from the last unanswered message. It can see what you said while you were in control, so it will not repeat information you already gave.
Diagnosing an answer
When an agent answers wrongly, the conversation view is where you find out why. For a given turn you can see:
- Which knowledge was retrieved — if the right passage was not retrieved, the problem is your knowledge source, not the model
- Which tools ran — and what they returned
- Whether a guardrail intervened — an off-topic refusal or a failed response validation looks like a bad answer but is the agent working as configured
That distinction matters: retrieval problems are fixed by editing content, guardrail refusals by changing guardrail settings, and genuinely wrong reasoning by changing the prompt files or the model.
Where the time went
The activity timeline names each step by what the agent did — "Searching knowledge base", "Gathering background information", "Checking the weather" — and shows the gap to the next step, so a slow answer can be traced to the step responsible rather than guessed at. Steps are ordered by when they happened, and gaps are not shown across a run boundary.
What a contact sees of this is controlled by the agent's activity display mode, which is separate from what you see here.
Trace view
When the timeline is not enough, open the Trace tab. It shows the same conversation without anything hidden — including the turns where the agent only called tools and said nothing, which the message view leaves out. Dashboard chat has its own View trace action in the chat menu, so you can check what an agent did without leaving the conversation you are having with it. For each turn you get:
- Every tool call, with the exact arguments the agent sent and the result it received back — the same text the model saw, not a summary of it
- Whether each call succeeded, so a wrong answer caused by a failed lookup is distinguishable from one caused by bad reasoning
- Which model answered and how many tokens the turn used
- A summary of the conversation's interactions and total tokens — interactions are the unit you are billed in, see interaction counting
Model and token figures are only recorded on some channels. Turns that came through Telegram, WhatsApp or a scheduled task show a dash instead — the answer itself is complete, only the per-turn measurements are missing.
Where an agent revealed an encrypted field, the trace shows a placeholder in place of the value. That is what the agent itself received — the real value is put into its reply afterwards, and only there. See revealing an encrypted value.
Export saves the whole trace as Markdown, for reading or attaching to a bug report, or as JSON for feeding into your own tooling. Both include the tool calls and annotations.
The trace is limited to workspace owners and admins, because it exposes raw tool arguments and message content. Every time it is opened, that is recorded in the security audit log along with who opened it. See security and privacy.
Ask the assistant to diagnose it
Instead of reading the trace yourself, you can ask the in-dashboard assistant — "why did the agent get this wrong?", or hand it a conversation and ask what happened. It reads the trace and tells you which of the usual causes it was: unclear instructions, a knowledge gap, the wrong tool arguments, a missing tool grant, or genuinely wrong reasoning.
From there it proposes a change set to fix the agent, and can save the conversation as a regression case so the same failure is caught next time — see reviewing a run with the assistant. This is owner/admin only, like the trace itself, and every read is recorded the same way.
When conversations end
A conversation ends when it is explicitly closed, or after a period of inactivity set per channel and per agent. Once it ends:
- It stops accepting new messages — the contact's next message starts a fresh conversation
- It becomes eligible for memory extraction, if memory is enabled
- A summary is generated
Attachments
Files and images a contact sends are stored and linked to the conversation. Each attachment counts towards your usage — see interaction counting.
Related pages
- KlicForge Inbox — handle live conversations from your phone
- Contacts
- Channels
- Memory
- Troubleshooting