Skip to content

Chat

Talk to any agent you have access to. Pick the agent in the header, and switch threads in the conversation list — each thread is a separate conversation with its own memory of what was said. The header also exposes a per-conversation model override and, for models that support it, a reasoning-effort control. Live progress shows what the agent is doing as it works.

While the agent is still replying you have three choices for your next message. Press Enter and it waits: it is sent as your next message the moment the reply finishes. Press Steer (the ▸▸ button, or Cmd/Ctrl+Enter) and the agent gets it now, without stopping: it reads your message at its next step — as soon as the tool it is running finishes, before it decides what to do next — and adjusts the work in progress. Steering is for "not that file", "use blue", "also include Q3": corrections you would otherwise watch it finish a version without. If the reply finishes before the agent reaches its next step, the message is simply sent as your next one, so nothing is lost either way. Press Stop (■) to cancel the reply; whatever was waiting stays waiting. Every waiting message shows as a chip above the message box with its own Steer, Edit (take it back into the message box) and Cancel buttons, and Cancel all clears them. A message the agent read mid-reply is tagged Steered in in the conversation. Messages with files attached wait for the reply; they cannot be steered.

Add an agent sits in the same header row, beside the MCP status, whenever group chats are on and you have a second agent. It brings another agent into this conversation by turning it into a group chat: the agent you were talking to stays the one that answers anything that names nobody, the agents you add reply when you @mention them, and — unless you switch Bring the conversation along off in the dialog — the recent messages of this chat are copied in so nobody starts blind. Your one-to-one chat is left exactly as it is; the group is a separate conversation, listed under Group chats in the sidebar, and it opens as soon as it is made.

A conversation is live on every device, whichever surface the turn came from. Open the same thread on your laptop and your phone and both follow it as it happens: a message that arrives over Telegram, a scheduled run, a turn sent through the OpenAI-compatible connector, or something you type in another browser shows up in the open conversation without a reload — the agent's working indicator, its tool calls as they run, the reply forming, and the final answer. The indicator names the surface the turn is running from ("Working on this from Telegram…"). New conversations started elsewhere appear in the conversation list the same way, and one touched elsewhere moves to the top. If a device was asleep or offline, the thread catches up on its own when the tab comes back.

The agent keeps working when you put the device down. Closing the tab, locking your phone, switching apps or moving between Wi-Fi and mobile data does not stop a reply in progress: the turn runs on the deployment, not in your browser, and only the view of it goes away. Come back — the same tab, a new tab, or a different device — and it rejoins the reply exactly where you stopped seeing it, filling in the words, tool steps and files you missed, then carries on live. A reply that finished while you were away is simply there when you return, and a conversation the agent is still working on shows as busy in the conversation list even on a device that never saw the turn start.

This is why Stop (■) is the way to end a reply: it tells the deployment to stop, so it works from any device, and the agent stops whether or not the tab that started the reply is still open. Closing the tab is not a stop.

Two consequences worth knowing. Sending again while a reply is still running does not start a second one — a conversation runs one reply at a time, so the message either steers the reply in progress or waits its turn, exactly as described above. And "Connection lost while … was replying" now means what it says: the reply is genuinely gone (the deployment restarted, or it ended long enough ago to have been cleared), which is when Retry appears. While the reply is merely catching up you see Reconnecting instead, with no Retry — nothing was lost, so there is nothing to resend.

Everyone who can chat with an agent shares its whole conversation list, and can pick up any conversation in it. A scheduled run, a heartbeat, a conversation that arrived over Telegram or WhatsApp, a chat a colleague started here — open it from the list and reply, and the agent continues with everything that was said in it (ask "what did you just do?" under a scheduled run and it answers about that run). Messages show who wrote them, so a thread several people have typed into stays readable. Two things to know: a reply you type here into a messaging-platform conversation is recorded and badged in that thread but is not sent out to the platform, and deleting a conversation removes it for everyone, so that is reserved for admins and the agent's owner — anyone with access can still rename or compact it.

Three buttons in your theme's own colour frame the header row, laid out the way the simple view's chat header is. A filled pair leads it: a + that starts a new conversation and, right beside it, a clock that opens your past ones. An info button (ⓘ) closes the row at the right: it opens the agent's profile card — its face, name, title and description, an Edit profile button for those allowed to change them, and (for admins) doors into its settings, connections and keys — as a panel that slides in from the right, exactly where the simple view keeps the same card. Only one of the two panels, the conversation list or the profile card, is open at a time; pressing either button closes the other.

The conversation list is a panel that slides in from the right, not a column that sits there. The conversation itself always gets the full width of the window; press the clock and your past conversations slide in over the right-hand side. Pick one (or start a new one) and the panel closes again — so does clicking the page beside it, pressing Escape, or the ✕ in its corner. It opens closed every time you arrive, at every screen size, so the list is one click away without ever costing you room to read. On a desktop you can drag its left edge to make it wider or narrower, and that width is remembered; on a phone it is sized to always leave a strip of the page beside it to tap on.

Every conversation shows where it came from. A thread that arrived over a messaging platform carries a coloured badge with that platform's name beside its title — TELEGRAM, WHATSAPP, SLACK, DISCORD, WECHAT and so on, one colour each — and the person you are talking to on the line underneath. Conversations you start here in the dashboard carry no badge: they are the default that everything else is read against. The same badge appears in the header of the open conversation.

Inside a conversation, a badge appears on an individual message only when that message arrived by a different route than the thread itself. So a reply you type here inside a Telegram conversation is marked, and the Telegram messages around it are not — which is what makes a conversation that moved between surfaces readable at a glance, without putting the same label on every line.

Conversations that predate this all still get labelled: the agent already remembers every chat it has been messaged in, and the badge is recovered from that. A conversation that only ever existed here stays unbadged, as it should.

One badge is not about a messaging platform: a violet CORTEX marks a conversation you opened from the Cortex tab — pressing Chat on a Pulse card, a self-check finding, or a Cortex item brings the discussion here, and the badge is how you find it again among your other dashboard chats. It is an ordinary conversation in every other respect: reply to it, rename it, keep it, delete it.