Agents

Agents are AI assistants specialized for specific tasks and domains. You work with one in a conversation, which supports streaming responses, tool execution, plan approvals, model selection, attachments, memory, and cross-surface threads — see Conversations.


What Are Agents?

An agent is an AI assistant with defined instructions, model configuration, optional integration access, optional skills, and optional knowledge bases. Each agent is tuned for a particular domain — from writing code to managing CRM data to analyzing revenue.

The default Insulin agent acts as your chief of staff: a general-purpose assistant for the everyday business work your teams bring to it, marketplace operations included. It is built in and cannot be edited or deleted, unlike the catalog and custom agents you install or create.

An installed agent (Code Reviewer) — its welcome message and conversation starters shown in a fresh conversation; the sidebar lists your installed agents with ownership badges (system / org / user)

Agent Catalog

Insulin includes a catalog of pre-built agents organized by category. Install a catalog agent from Marketplace to add it to your workspace.

Development

AgentDescription
API DesignerDesign and review API schemas and contracts
Code ReviewerReview code for quality, security, and best practices
Debug DetectiveDiagnose and troubleshoot bugs and errors
DevOps AssistantHelp with CI/CD pipelines, infrastructure, and deployments
GitHub EngineerWork with GitHub repositories, pull requests, issues, and code reviews

Productivity

AgentDescription
ClickUp Project ManagerManage ClickUp tasks, projects, and workflows
Gmail AssistantRead, draft, and manage Gmail messages
Google Calendar AssistantManage Google Calendar events and scheduling
Google Drive AssistantSearch, organize, and manage Google Drive files
Outlook AssistantRead, draft, and manage Outlook email and calendar
Teams CoordinatorCoordinate across Microsoft Teams channels and conversations
Technical WriterDraft and improve technical documentation

Data

AgentDescription
BigQuery AnalystQuery and analyze data in Google BigQuery
GCS CuratorManage files and data in Google Cloud Storage

Analytics

AgentDescription
Data AnalystAnalyze datasets, generate insights, and create visualizations

Sales

AgentDescription
Gong Sales CoachReview sales calls and get coaching recommendations
HubSpot CRM AssistantManage contacts, deals, and pipelines in HubSpot
Salesforce CRM AssistantManage leads, opportunities, and accounts in Salesforce

Business

AgentDescription
Product StrategistHelp with product planning, prioritization, and roadmap decisions

Security

AgentDescription
Security AuditorIdentify security vulnerabilities and recommend fixes

Selecting an Agent

To start a conversation with a specific agent:

  1. Click New Conversation or click the agent name at the top of the current chat
  2. Browse or search your installed and shared agent list
  3. Select the agent to start the conversation

You can switch agents mid-conversation if needed.

Creating a Custom Agent

Build your own agent tailored to your team’s needs:

  1. Navigate to the Agents section in the sidebar
  2. Click Create Agent
  3. Configure the following:
FieldDescription
IconAn avatar image that identifies the agent in lists and chat
NameA descriptive name for the agent
OwnershipChoose Personal (only you) or Organization (shareable). The Organization option is disabled for members who are not org admins
Default modelThe model the agent uses by default, chosen from the models your connected LLM providers make available (see below)
Knowledge basesOptional knowledge bases the agent can search, each attached in Read or Edit mode (see Integrations and Knowledge Bases)
IntegrationsOptional allowlist of connected systems the agent can use
System promptInstructions that define the agent’s behavior, personality, and constraints

The Default model dropdown is populated from the LLM providers your workspace has connected — bring-your-own-key (BYOK) providers such as Anthropic, OpenAI, and Gemini, plus, for a Personal agent, your own Claude Code or Codex sign-in. You can also connect open-source model aggregators — OpenRouter, Baseten, DeepInfra, Fireworks AI, and Together AI — each of which serves a large catalog of models. Cloudflare Workers AI and DigitalOcean GradientAI are connected under Settings → Integrations too, and each offers a fixed set of five chat models. Because an aggregator can expose hundreds of models, the Default model picker is searchable and grouped by provider, with verified models listed first. Fours’ hosted models are offered to Personal and Organization agents alike — the same models either way — so a new agent normally has something to run on before you connect anything. Whether they are offered at all is an organization decision: see How a turn resolves to a model. The Ownership you choose controls only whose BYOK providers join that list: an Organization agent draws on the organization’s connected providers, a Personal (only you) agent on your own. If a saved default later becomes unavailable — its provider was disconnected or the model was retired — the picker marks it ” — unavailable” with a hint to reconnect the provider or choose another model; the agent never silently switches to a different model. A turn that cannot reach the saved default stops with an error saying the model is not available, and if the default fails partway through a turn, the reply names the model that took over — see When a model fails over.

When a Default model is refused on save

Saving an agent whose Default model the agent could not actually run is refused rather than accepted and quietly failed over at the first turn. The reason you get back is the same one the runtime would give:

Why the save was refusedWhat it meansWhat to do
AI policyYour organization’s AI model policy does not permit that modelPick another model, or change the policy under Settings → Organization → AI Model Policy
Model unavailableThe model itself cannot be reached for this agent’s scopePick another model, or connect the provider that serves it
Nothing to resolve withNo provider could be resolved for the scope at allConnect a provider — this is not a statement about the model you picked

Two things this deliberately does not do. It does not hold a Personal agent to a stricter standard than an Organization one — either scope may pin a Fours-hosted model, because either scope can run one. And it re-checks the model only when you change it: renaming an agent whose long-standing pin a later policy change excluded still saves, rather than trapping you on a screen that refuses every edit over a field you did not touch.

User-Level vs Org-Level Agents

When creating an agent, you choose the ownership level:

  • User-level — Private to you. Any user can create user-level agents.
  • Org-level — Belongs to the organization. Only org admins can create org-level agents.

Integrations and Knowledge Bases

Agents do not automatically receive every connection your organization has configured. Their runtime access depends on the agent’s ownership level:

Agent typeIntegration access
User-levelUses user-level integrations selected for that agent.
Org-levelUses organization-level integrations selected for that agent.
SystemUses allowed user-scope integrations for the current user.

Custom agents can also attach knowledge bases. A custom agent searches the knowledge bases configured on it, while the built-in Insulin assistant searches the ones you own by default and lets you narrow that to an explicit set — including organization knowledge bases shared with you — from its own panel. See Knowledge Bases to create one and fill it with files, websites, or synced connectors, and Choosing which knowledge bases Insulin uses for the Insulin selection.

Each attached knowledge base has an access mode:

ModeWhat the agent can do
ReadRetrieve and search the knowledge base for grounded context only
EditRetrieve, plus create, update, and deprecate files in the knowledge base (never delete)

Asking an agent about its own integrations

An agent can inspect the connections it has been given, so you can ask about them in plain language instead of opening Settings and guessing. There is no control to switch on — every agent has these abilities automatically:

  • List its integrations — which connected systems it can reach, whether each one is user- or organization-level, and when it was connected.
  • Get the details of one integration — the same record for a single connection, read from what the agent already has loaded rather than by calling the provider.
  • Check whether an integration is working — a live probe that refreshes an expired OAuth sign-in if it can, then reports the connection healthy or unhealthy along with the reason it failed.
  • List the actions an integration supports — the provider actions it exposes, each with a description and whether it is read-only, plus non-secret connection details such as an account id or base URL. Credentials are never returned.

Because “is it attached?” and “does it still work?” are answered separately, an agent now tells not connected apart from connected but failing. Ask “why can’t you update Salesforce?” and it can distinguish an integration that was never added to its allowlist from one that is on the allowlist but whose credential has stopped working — instead of reporting a live-but-erroring connection as disconnected and sending you to reconnect something that is already connected.

A connection can also be connected but unusable — for example, a Salesforce connection whose stored sign-in is missing the address of your Salesforce instance. The agent reports that one as unhealthy: it is connected, but none of its tools are available in this run, and you should reconnect it in Settings → Integrations.

Sharing Agents

Only Organization agents can be shared. Personal (user-level) agents are private to you, and their Share button is disabled.

Share an Organization agent with specific teammates using role-based access control. Each shared user is assigned one of the following roles (see Roles and Permissions for the full model):

RolePermissions
ADMINEdit agent configuration and manage sharing (invite/revoke members, assign roles). The role picker offers ADMIN only to organization ADMINs
EDITOREdit the agent’s configuration (system prompt, default model, knowledge bases, and — for org admins — the integration allowlist)
USERUse the agent in conversations

To share an agent:

  1. Open the agent’s settings
  2. Click Share
  3. Add team members and assign roles

When a teammate opens an agent shared with them, its settings show an owner-and-role banner, and anyone below Editor (a USER/Member) sees the configuration read-only. See Working with a Shared Resource.

Org-Wide Sharing

Instead of inviting people one at a time, you can share an Organization agent with your entire organization. Org-wide sharing grants either EDITOR or USER (never ADMIN); everyone in the organization then gets that role automatically without an individual invite.

The Share Agent dialog on an organization agent — the Owner row with Transfer ownership beside it, the Org-wide Share toggle, and the "Share with a user" picker with its role selector open on ADMIN, EDITOR and USER

Transferring Ownership

Only an Organization agent can change hands, and only its owner can hand it over — the Share dialog shows Transfer ownership beside the Owner row to the owner and to no one else.

  1. Open the agent’s settings and click Share
  2. Click Transfer ownership next to the Owner row
  3. Choose the new owner from Select new owner… — only organization ADMINs are listed
  4. Click Transfer

The new owner receives full ownership and control of the agent. You drop to USER: you can still use the agent, but the new owner has to grant you EDITOR or higher if you should keep editing it. If you are no longer an organization ADMIN yourself, the transfer is refused, and the message says why.

Agents in Channels and Jobs

Agents can be reused across Insulin:

  • Add agents to Channels when multiple people and agents need to collaborate in a shared thread.
  • Assign agents to Jobs when work should run manually, on a schedule, or from an event.
  • Use agents with Custom Apps when a workflow needs both an AI builder and an interactive UI.

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.

The Chat window’s address follows the conversation you have open — #/chat?agent=<id> for an agent, #/chat?channel=<id> for a channel — so reloading the page brings you back to the same conversation, and a link carrying that address opens it.

The Insulin Chat app — agents and channels in the sidebar, a streaming conversation, and the composer with the thinking toggle, mic, and attach controls

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.

LimitValue
Files per messageUp to 10
Size per fileUp 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 replaces the current conversation with a fresh, empty one (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 Fours-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 Fours-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 Fours-set figure your organization cannot configure, described under the Fours-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.

A turn that has no model to run on stops, and what you see depends on where you are chatting:

  • The built-in Insulin assistant, in a one-on-one chat — on the web, or in a Slack or Teams DM — replies in the conversation rather than showing an error: “I can’t chat yet — your account doesn’t have an LLM provider connected.” It asks you to connect one in Settings → Integrations (Anthropic, OpenAI, Codex, Claude Code, or Gemini) and then send your message again. It gives this reply whatever emptied the model list.
  • Any other agent, in a one-on-one chat, stops with an error card that names the cause. It reads either “No model available for your account: your organization has disabled Fours’ hosted models and you have no personal AI provider connected. Connect one in Console → Settings → Integrations, or ask an org admin to allow Fours’ hosted models.” or “No model available right now: Fours’ hosted models could not be reached and you have no personal AI provider connected. This is on Fours’ side — retry in a moment. Connecting your own provider is optional.”
  • In a channel, there is no friendly reply — not even from the Insulin assistant. If any agent the channel needs cannot get a model, the whole turn stops with an error card that shows the same cause, prefixed with that agent’s name and a colon, and none of the channel’s other agents answer it.

See Creating a Custom Agent 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 Fours-hosted models plus every model your own connected providers make available.

  1. Search or scroll to the model you want
  2. Click its row — that makes it Insulin’s default
  3. 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 Fours-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 Creating a Custom Agent.

The Insulin agent settings panel — the Models list with each model and its provider, and the selected one marked Default

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-model hit its usage limit — continued with second-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 Fours-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 classifiedRetrySwitch model
Usage limit — that model’s quota is spentYesNo
Provider auth — the key was rejectedYesYes
Model unavailable — the model itself could not be reachedYesYes
Provider unavailable — the provider is downYesYes
Interrupted — the reply stream ended before the turn finishedYesNo
Unclassified — the cause is not knownYesNo

The usage-limit card described above carries the same buttons rather than a separate set.

One card leaves Retry out on purpose: a failed CRM action run in the Inbox chat rail. The CRM write may already have happened, so the card asks you to check the record in your CRM, or the action’s outcome, before running it again — see Inbox.

An interrupted card means the reply stopped arriving before the turn finished — for example “The response stream ended before this turn finished. Retry to run it again.” It is provisional, because the turn may still have finished on the server. If it did, the card is withdrawn and the reply is loaded in its place. If that reply then cannot be loaded, the card is replaced by the note “This turn finished, but its reply could not be loaded here. Reload the conversation to see it.” — reload the conversation rather than retrying, because the work is already done.

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.

A Tool Approval Required card in a conversation — the wrench icon and heading, the numbered reason listing every action the approval covers, the Tool name, an Args block showing the JSON the tool was called with, and Allow / Deny in the footer

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:

StatusMeaning
PendingStep has not started yet
In progressStep is currently executing
CompletedStep 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:

CardWhat it tracksWhere it comes from
PlanThe step list and its progress (see Plan Progress)The agent writing out a plan
GoalA stretch of work pursued across many roundsThe agent setting a goal
JobA job the agent created for youThe 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, in Settings → Personal → Memory: search what is stored, correct a memory with its Edit (pencil) button, delete one, or Clear All. Editing, deleting, and Clear All act only on memories that are yours — memories shared across your organization are listed too, but their Edit and Delete buttons are disabled. You can also just tell the Insulin assistant that something it remembered is wrong: it corrects that memory in place rather than saving a second, competing one.

Recall matches words, not meaning — a memory is recalled when it shares words with what is being looked up — so memories written in Chinese or Japanese are not recalled.

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. The exception is a drop that cuts off a reply while it is still being written: that turn shows an interrupted card you can retry, which is withdrawn if the turn still finishes — see Picking the turn back up.

Reloading doesn’t stop a reply. If you reload the page, or your connection drops, while an agent is still writing, the agent keeps working. In a one-on-one chat or a personal channel, Insulin waits 30 seconds after it notices you have gone, then checks whether that conversation is open again — in the reloaded page or in any other tab: if it is, the reply carries on — and in a one-on-one chat you get the Stop button back for it — and if it isn’t, the turn is cancelled. In an organization channel a dropped connection still stops your turn at once, and a goal keeps running either way. Pressing Stop is different from leaving: it cancels the turn immediately.

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 inSolo chatChannel
Hover a message, then click Reply in threadYes — starts a new sub-thread, or reopens the existing oneNot offered
Click the N replies badge on a messageYesYes — 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. It first asks the agent to stop any reply that is still being written and clears it from your screen, then deletes the current conversation and its messages and opens a fresh, empty one for the same agent or channel — the old conversation is not kept. A message you send while /clear is still working waits, and lands in the new conversation. An organization channel’s conversation is shared by every member, so it can’t be cleared this way.

Spotted something wrong or out of date on this page? Tell us and we'll correct it.