Chat
Conversations in Insulin support streaming responses, tool execution, plan approvals, model selection, attachments, memory, and cross-surface threads.
Conversations
Each conversation is a multi-turn thread between you and an agent. Conversations are persisted automatically and appear in the sidebar for easy access. You can have multiple conversations open and switch between them.

Each agent or channel view has a tab bar with Messages, Files, and Jobs — the same three whether you are in a solo agent chat or a channel. The Files tab lists the attachments in the thread. The Jobs tab surfaces jobs: in a solo chat, that agent’s own scheduled and on-demand jobs; in a channel, the jobs belonging to the agents that are members of it.
When you open a fresh solo chat, the empty state shows the agent’s welcome message and a set of clickable conversation-starter buttons — click one to begin without typing.
Insulin also supports thread events through a live stream. This lets the UI update while an agent is running, while a channel is active, or while a paused run is waiting for an approval.
Message Types
- User messages — Your inputs, including text, file references, and images.
- Assistant messages — Responses from the agent, streamed in real time as they are generated.
- System messages — Status updates, such as when an agent is switched or a tool completes execution.
The Composer
The composer is the input bar at the bottom of the conversation. It holds the controls for everything you send:
- Text with @mentions and /slash commands — Type your message;
@and/open inline pickers (see below). - Mic / voice — Dictate a message instead of typing. The button shows a live elapsed timer while recording; stop to insert the transcribed text.
- Attach (paperclip) — Add files for the agent to read. You can also drag and drop files onto the composer or paste them.
- Thinking toggle — The Brain button turns extended thinking on or off for the session.
- Send / Stop — Send your message, or stop a response that is still streaming.
File Attachments
Attach files by clicking the paperclip, dragging them onto the composer, or pasting them. Files upload before the message is sent and appear as attachment chips you can remove before sending.
| Limit | Value |
|---|---|
| Files per message | Up to 10 |
| Size per file | Up to 25 MB |
Before sending, each attachment shows as a chip you can remove. Attachments become viewable once the message is sent (see Attachments in a Thread).
Slash Commands
Type / at the start of the composer to see the commands available for the current agent. The list includes the agent’s built-in skills (for example, /skill-creator) plus any skills you have enabled, each slugified from its name. Selecting a command inserts it into your message.
One command is built in everywhere: /clear starts a fresh chat for the current agent or channel (see Resetting a Conversation).
@Mentions
Type @ to mention a participant. In a channel, this addresses a specific agent so it answers your message. Clicking an @agent mention in a message switches you to that agent’s solo chat.
Quoting part of a message
To reply to one specific passage rather than a whole answer, select the text in the message. A small Quote reply button appears just above your selection; click it and the selection lands in the composer as a Markdown blockquote, with the caret placed after it so you can type your response straight away.
The quote is added above whatever you had already typed, so an in-progress sentence is never interrupted. Quoting inside a sub-thread puts the quote in that sub-thread’s own composer, not the main one.
Model Selection
Insulin selects the model for you — there is no per-conversation model picker. Each agent runs on the models available to it and fails over automatically: if a model call fails — a provider outage, a usage limit, or a rejected key — the turn retries on your next connected provider, so a single provider problem doesn’t stall the conversation.
Most agents can also draw on the Suger-hosted models, so nothing has to be connected before you start. What the agent’s ownership decides is whose connected providers join that pool:
- The built-in Insulin assistant and Personal (only-you) agents add the providers you have connected under Settings → Integrations (bring-your-own-key). They never reach the organization’s keys.
- Organization agents add the providers the organization has connected.
In both cases your own connected models are preferred and the Suger-hosted ones are the fallback the turn degrades to.
How a turn resolves to a model
Two organization settings sit between an agent and the hosted pool, and a third threshold quietly changes which hosted models are on offer:
Both organization settings live on Settings → Organization → AI Model Policy and are described in Getting Started. The spend threshold is not a setting at all — it is a Suger-set figure your organization cannot configure, described under the Suger-hosted tier step-down.
When nothing survives that chain, the model list is simply empty — you are told “No models are available right now,” which may be temporary or may mean no provider is connected yet, with a link to connect your own.
See Agents for how an agent’s ownership and its configured Default model determine which models it uses.
Where you set the model
There is no picker in the composer, but you do still choose the model — just once, not per message.
For the built-in Insulin assistant: open a chat with Insulin and click the pencil button in the conversation header (its accessible label reads Insulin model settings). A panel slides out with a Models section listing the Suger-hosted models plus every model your own connected providers make available.
- Search or scroll to the model you want
- Click its row — that makes it Insulin’s default
- The row you picked now carries a Default badge
Insulin runs that model first, then fails over to the others from there. On a workspace that has not restricted its model policy you do not need to connect anything to get started, because the Suger-hosted models are in the list already; whether they are offered at all is decided by the chain in How a turn resolves to a model. Connecting your own provider under Settings → Integrations adds its models, and they take priority over the hosted ones.
If the panel reads “No models are available right now,” nothing has resolved for this agent — either temporarily, or because no provider is connected and the hosted pool is not available to it. The panel offers a link straight to Settings → Integrations to connect your own.
For a custom agent: the model is a field on the agent itself. Set Default model in the agent’s own settings — see Agents.

When a model fails over
Failover is surfaced, not silent. When a turn switches models and then succeeds, the reply carries a short italic note at the end naming both models, in this form:
first-modelhit its usage limit — continued withsecond-model.
The note reads was unavailable instead of hit its usage limit when the switch was caused by an error — a provider outage or a rejected key — rather than a quota.
When there is nothing left to fail over to, the turn stops and says why:
- One model is out of quota. A usage-limit card appears in the thread — “You’ve hit the usage limit for
<model>.” — plus “Your limit resets at<time>” when the provider reports one. The card links to that provider’s usage page, or points you at Settings when the model was Suger-hosted. - Every connected model is limited. You get a message naming the model you hit first, listing the others that are limited too, and the time the first limit resets, with a suggestion to check your providers’ usage pages or try again once a limit clears.
Picking the turn back up
A failed turn carries its own buttons, so you do not have to retype what you asked:
- Retry re-sends the message that failed — the user message immediately above that error card, not whatever you typed most recently. Scroll back to an old error and Retry still re-sends the right turn.
- Switch model opens the agent’s model settings so you can pick a different one before trying again.
Switch model is only offered when Insulin knows what went wrong, because a model change is only the fix for some causes:
| How the failure was classified | Retry | Switch model |
|---|---|---|
| Usage limit — that model’s quota is spent | Yes | No |
| Provider auth — the key was rejected | Yes | Yes |
| Model unavailable — the model itself could not be reached | Yes | Yes |
| Provider unavailable — the provider is down | Yes | Yes |
| Unclassified — the cause is not known | Yes | No |
The usage-limit card described above carries the same buttons rather than a separate set.
Streaming Responses
Agent responses stream token by token as they are generated. You can read the response as it appears without waiting for the full message to complete.
Extended Thinking
When extended thinking is enabled, the agent shows its reasoning process before delivering a final answer. The thinking steps appear in a collapsible section above the response. This helps you understand the agent’s logic and verify its approach on complex tasks.
Toggle thinking on or off with the Brain button in the composer. The setting applies to the session and is remembered in your browser.
Tool Calls
Agents can execute tools — external actions like querying data, calling APIs, or running code. When a tool is invoked during a conversation, you see:
- Running — The tool call is in progress, with a spinner and the tool name displayed.
- Success — The tool completed and its output is shown inline.
- Error — The tool failed, with the error message displayed.
Tool call details are expandable so you can inspect inputs and outputs.
Plan Approvals
For multi-step tasks, an agent may present a plan before executing. The plan lists the steps the agent intends to take. You can:
- Approve the plan to let the agent proceed
- Reject or modify the plan before execution
This gives you control over complex workflows before any actions are taken.
Tool Approvals
Some tool calls pause for your explicit approval before they run. When one does, a Tool Approval Required card appears in the thread. It names the tool, shows the arguments it would be called with, and explains why it stopped to ask. Two buttons:
- Allow — the tool runs and the turn carries on.
- Deny — the tool is not called.
Once you answer, the card keeps a badge recording what you chose: Approved or Rejected. If you leave it alone, the request times out after about three minutes, the card is marked Expired, and nothing is sent.

Plan Progress
When an agent works through a multi-step plan, it shows you the steps and their progress as a checklist it writes for itself. Its header shows the label, a done / total count, and a thin progress bar; collapse it and the card becomes that single header row. It updates in real time as the agent works.
A step here is in one of three states:
| Status | Meaning |
|---|---|
| Pending | Step has not started yet |
| In progress | Step is currently executing |
| Completed | Step finished successfully |
A step that started but was never closed out — because the run ended, errored, or simply answered without updating its checklist — is shown as unfinished once the run is over, rather than spinning forever in a conversation you reopen weeks later.
Long-running work
Some requests take more than one exchange to finish. “Reconcile last quarter’s entitlements and write up what doesn’t match” isn’t one answer — it’s a stretch of work. Ask for something like that and the agent may keep going across many turns until the job is done, rather than stopping at the end of its first reply.
Work like that becomes a goal, and the agent drops a goal card into the transcript naming the objective. The card tracks its own status and the round it is on, and it is persisted with the thread — close the window, come back later, and it is still there with the progress it made in the meantime.
Three kinds of card can appear in a conversation this way:
| Card | What it tracks | Where it comes from |
|---|---|---|
| Plan | The step list and its progress (see Plan Progress) | The agent writing out a plan |
| Goal | A stretch of work pursued across many rounds | The agent setting a goal |
| Job | A job the agent created for you | The agent creating a job |
You never fill in a form for any of them — there is no “new goal” screen. A goal exists because the agent decided the request needed one. To nudge it along, hover one of your own messages and use Set as goal: that asks the agent to turn that message into an objective, and the agent is still the one that creates it.
Watching and steering a goal
Click the goal card and a details drawer opens down the right-hand side of the conversation. It holds:
- the goal’s live status and the round it is on,
- a timeline of rounds — the agent’s own progress replies, in order, each expandable,
- a steer composer at the bottom, and
- a Cancel goal button.
Type into the steer composer while the goal is live and it is picked up on the goal’s next round, so you never have to wait for a gap to redirect it. A steer that narrows the work (“Actually, only look at AWS.”) is applied from the next round onward. A steer that changes what the goal is goes further: the agent amends the recorded objective, so the card and the drawer describe the work you actually asked for rather than the one you started with. Only your steer can amend an objective — the agent cannot quietly rewrite it on its own.
Once the goal has ended, the composer says so (“Goal has ended”) rather than accepting a steer that nothing would read.
Plain English still works everywhere the drawer does not reach: writing “Stop.”, “Cancel”, “pause”, or “drop it” in the conversation ends the work the same way the button does. In a channel the goal belongs to the conversation, so any member can steer it by writing in the channel.
Memory
Insulin maintains memory across conversations:
- Short-term memory — Context from the current conversation, including earlier messages and tool results.
- Long-term memory — Persistent knowledge the agent retains across conversations, such as your preferences, decisions, and recurring instructions. Long-term memories are categorized as fact, preference, decision, context, or learned.
Memory recall happens automatically — when the agent surfaces relevant past context, you see a memory recall indicator showing the number of memories retrieved and their content. Memory confidence decays over time, so older memories that are no longer reinforced gradually become less prominent.
You can also manage long-term memory directly: review the stored memories, delete individual ones, or clear them all in bulk.
Connection Status
The chat interface shows a Connecting… banner while it establishes a connection to the AI service. Once connected, streaming is active and the agent can respond.
If the connection drops briefly, the client reconnects on its own in the background — no banner is shown and no action is needed on your part.
Sub-Threads
Within a conversation, you can branch into sub-threads to explore a topic without disrupting the main conversation flow. Sub-threads appear as nested discussions tied to a specific message.
How you get into one depends on where you are:
| Way in | Solo chat | Channel |
|---|---|---|
| Hover a message, then click Reply in thread | Yes — starts a new sub-thread, or reopens the existing one | Not offered |
| Click the N replies badge on a message | Yes | Yes — this is the only way in |
In a channel, an agent’s reply is delivered into a sub-thread and the parent message grows a 1 reply / N replies badge you click to read it. Sending a message in a channel no longer pops the side panel open by itself — it used to interrupt whatever you were reading. Open the panel yourself while a reply is still being written and it streams live from that point.
You can rename a sub-thread, or ask Insulin to regenerate its title from the conversation. Renaming and title regeneration are available to the sub-thread’s owner.
Unread Messages
Organization channels in the sidebar carry an unread count, so you can see where the conversation moved on while you were away. The badge counts up to 99 and then reads 99+.
Nothing else accumulates unread counts — not personal channels, not your one-on-one chats with an agent, and not sub-threads. Those are places only you and your own agents write, so a badge there would only ever be counting your own conversation back at you.
Attachments in a Thread
Files you attach in the composer are uploaded and shown as attachment chips before you send. Once sent, they belong to the thread and appear in its Files tab, where they are listed and can be downloaded. Click an attachment on a sent message to open it in the Preview app — PDFs, images, and video render there.
Quick Replies
Agents may offer quick reply suggestions — pre-written response options you can click instead of typing. These appear as buttons below the agent’s message and are useful for common follow-up actions.
Draft Preservation
If you start typing a message and navigate away from the conversation, your draft is preserved. When you return, your unsent message is restored in the composer. Your scroll position is preserved the same way, per conversation.
Message Pagination
Long conversations load messages incrementally. As you scroll toward the top, earlier messages load automatically. When you scroll away from the bottom of the conversation, a floating jump to latest button appears so you can return to the newest message in one click.
Slack and Teams
When Slack or Microsoft Teams is connected for your organization, Insulin can receive messages from those surfaces and mirror agent replies back to the same conversation context. Slack and Teams are personal DM bots for the built-in Insulin assistant — you chat with the assistant one-on-one, not in a shared channel. The web, Slack, and Teams DM surfaces share the same underlying Insulin thread, so work can continue across tools. (For multi-agent group discussions inside Insulin, see Channels.)
Resetting a Conversation
To start over with a clean slate, send the /clear command in the composer. This starts a fresh chat for the current agent or channel context. Your previous messages remain in their own thread — /clear simply begins a new conversation.
Spotted something wrong or out of date on this page? Tell us and we'll correct it.