Skip to main content
A worker doesn’t only live in the cowork page. Turn on a channel and the same worker picks up a message on Slack, Gmail, or Telegram, replies in that same thread, and keeps a private task running behind the scenes — no tab-switching required.

What channels do

Channels give a worker two independent ways to talk to people outside the cowork page:
  • You reach the worker. You (or anyone you name) send a message on a connected Slack channel, DM, Gmail address, or Telegram chat. The worker treats it exactly like a message typed into a task, and its reply goes back to that same thread.
  • The worker reaches other people. A worker can delegate to a structured conversation with named recipients — asking for an approval, collecting information, or just notifying someone — without holding that conversation itself. Results come back to the worker asynchronously, even if they take hours to settle.
Both directions reuse the same connections you’d set up anywhere else in CogniAgent through the Connection Manager — see Capabilities & connections for how a worker gets access to an integration in the first place.
This page covers channels inside Cowork — a worker’s private, direct line to and from people. It’s a different feature from the platform-wide Channels used by Conversation Flows and workflow triggers; see how this relates below.

Supported channels

Slack

A specific channel or a direct message. The worker reads new messages and replies in the same thread.

Gmail

A whole inbox or a label filter. Replies go out as threaded email replies.

Telegram

A bot chat, with senders allowed by user ID or @username.
Microsoft Teams and SMS inbound, plus the web widget and phone as channels a worker listens on, are on the roadmap and not available today. The cowork page itself is always the fallback — nothing here replaces it.

Turning on a channel for a worker

Channels are configured per worker, on the worker’s Channels tab, next to Capabilities.
1

Pick a channel type

Choose Slack, Gmail, or Telegram, and connect the account through the same Connection Manager flow used for capabilities.
2

Choose the target

For Slack, pick a channel or DM. For Gmail, use the whole inbox or filter to a label. For Telegram, connect the bot the worker should listen on.
3

Add allowed senders

List who’s allowed to address this worker — an email address, a Slack user ID, or a Telegram user ID/@username. A channel needs at least one allowed sender before it can be turned on.
4

Turn it on

Once enabled, the worker starts picking up new messages on that channel.
Keep worker channels to a DM or a private channel where practical. Anyone who can see the thread can see the worker’s replies, and a task’s content shouldn’t spill into a channel wider than intended.
A Telegram bot can only listen for one integration at a time. If the same bot is already wired into a Conversation Flow, connect a dedicated bot for the worker instead — otherwise the two will compete for the same incoming messages.

Starting and continuing a task from a channel

The first message on a thread creates a new, private task tied to that exact thread — a Slack thread, a Gmail thread, or a Telegram chat. Every later message on that same thread continues that task rather than starting a fresh one, so the conversation you see in the channel and the task history stay in sync. A few behaviors worth knowing:
  • Fast follow-ups get batched. If several messages land close together before the worker has replied, they’re combined into a single turn instead of triggering one turn each.
  • A message during an active turn queues. If you send something while the worker is still mid-turn, it waits and gets picked up as soon as that turn finishes — it’s never dropped.
  • The worker’s own messages are filtered out. A channel a worker also posts to on its own doesn’t trigger it to respond to itself.
Starting a task from a channel is one way to reach a worker without opening Cowork. It’s separate from ambient, self-initiated work — see proactive workers for the roadmap around tasks that start on their own, from a schedule or an observed event.

If the worker needs more from you

When a task is waiting on you mid-turn, a plain-text reply on the same thread works the same way it would in the cowork page:
  • A question — if the worker asked for clarification, your reply resumes the task with your answer, just as if you’d typed it into the task directly.
  • An approval — if the task is paused on an approval, a channel reply can’t settle it yet. The worker’s message links back to the app so you can decide there. See Human-in-the-loop for how approvals work.
Approving or declining directly from a channel — and richer replies like picking from a list of options — are on the roadmap. For now, approvals are always settled in the app.

A worker can reach other people, too

A worker doesn’t hold outside conversations itself — it delegates. Give it a goal like “get sign-off from the three managers on this budget,” and it kicks off one structured conversation per recipient (approval, gather-info, or a simple notification), each running over that person’s own channel. The worker doesn’t wait around: it keeps working, or wraps up, and each result — an outcome plus whatever was collected — lands back in the worker’s files as it settles, even if that’s hours later. Once every fan-out conversation is in, the worker picks the thread back up to aggregate and report. This reuses the same approval machinery and permission checks as everything else a worker does — reaching out to people is itself gated, and results that come back from outside are treated as untrusted input until the worker’s next action passes the usual checks. The full mechanics, including the permission classifier that decides when a worker needs your sign-off before reaching out, live on Human-in-the-loop.

Security and identity

  • Allowlists are fail-closed. An empty list of allowed senders means the channel is effectively off — no messages get through, and there’s no “ask the worker anyway” fallback.
  • Unknown senders are silently dropped. A message from anyone not on the list never reaches the worker or shows up in a task; it’s discarded before that point.
  • Everyone allowed acts as the owner. In v1, any allowed sender on a channel acts with the same identity and permissions as the worker’s owner — there’s no per-sender identity or role mapping yet.
  • Replies never leave their thread. A worker answers back on exactly the thread or DM a message came from — it doesn’t cross-post a task’s content anywhere else.

How this relates to the platform Channels feature

CogniAgent already has a platform-wide Channels feature that connects Conversation Flows and workflows to Slack, email, SMS, and more. Cowork’s worker channels reuse the same underlying connections — the same Slack and Gmail integrations, wired up through the same Connection Manager — but they’re configured differently: a worker channel is a direct, private line to and from one worker, not a shared trigger that fans out into a flow or a workflow run.

Next steps

Human-in-the-loop

See how approvals, Ask-a-Human, and the permission classifier work.

Proactive workers

Learn about the roadmap for work that starts itself, beyond an inbound message.

Capabilities & connections

Understand how a worker gets an integration in the first place.

Tasks

See how a channel-started task fits into the rest of a task’s lifecycle.