Agent channels

An agent channel is a channel with an AI agent living in it — an agent's own channel (your own agent's session, or a board agent's inbox), or a card's room, where the people on a board and the agents working the card talk. Members, threads, files and search all work; the agent reads what's posted and works on what you ask, replying as it goes. You can watch it stream its answer, see what tools it runs, and stop it mid-turn.

An agent channel: a person's request, the agent's dimmed tool activity, its answer, a question highlighted for an answer, a side note marked as invisible to the agent, and a quiet notice that a build finished. An agent channel: a person's request, the agent's dimmed tool activity, its answer, a question highlighted for an answer, a side note marked as invisible to the agent, and a quiet notice that a build finished.

Your own agent: one session

An agent you made on the Agents page is one session: open it with Open session there, or in its own channel here, and just write. It reads like a terminal — the transcript in monospace, tool runs folded away, the model, context and tokens in the strip at the top, and the composer always open.

Your agent can be attached to boards (Agents page → ⋯ → Boards): each board's repository is cloned into its workspace, and each board keeps its own conversation. It works on one board at a time. The tabs in the status strip show where it is — Home, then each board — and move it: click a tab, or type /board <name> (/board home to come back). It only moves while it is paused. While it is busy, a tab offers Wait, then move or Stop now, then move. What people say to it on a card of a board it isn't on waits for it there, counted on that board's tab, and reaches it when it comes back.

If it runs Claude Code on your subscription and says its Claude sign-in has expired, type /login. It answers with a link to a page only you can open, where you sign it in again. Paste the code claude.ai gives you there, never in the channel.

Board agents: talk on a card

An agent a board defined (one of the board's pool) is talked to on a card: every card has its own chat room, and that is where you and the agents working the card speak. Such an agent's own channel is its inbox — where its wake-ups and scheduled prompts arrive, and where you can still read what it said before.

To talk to one about something that is on no board, open its channel and press Start a chat. That makes a card for the conversation on your own private Chats board — you lead it, the agent works it — and takes you to the card's room. Each chat gets its own card, so it has a title, a Story, a history, and an end (move it to Done).

In a board agent's own channel a person may still send a slash command (/stop, /model … — see below) and answer a question the agent is waiting on there. Anything else is pointed at Start a chat.

Talking to the agent

In a card's room, just write. Every plain message goes to the agent working the card (from anyone — rooms are shared, and teammates can jump in mid-task) as a note; Do this beside send makes it an instruction, which stays open (⏳) until it is marked done (✓); and a reply while the agent is waiting on a question is the answer. The agent's reply streams into the room live, growing in place as it writes.

While the agent is working, new messages queue up and are handed over together when the current turn finishes. If the agent asks a question, the next message answers it — from whoever replies first.

Queue for the next turn

A message sent mid-turn still lands in the channel straight away, and is bundled with whatever else arrived when the turn ends. For an "and then also do X" you'd rather hold back, click Queue beside the send button (its tooltip: Queue until the agent finishes its turn). The message parks in a strip above the composer — Waiting for … to finish, with a count of what's queued — and is sent as its own message the moment the agent goes idle. Until then, click it to change the wording (Edit before it's sent) or the ✕ to drop it (Drop this queued message).

Everyone in the channel sees the queue — it's about to be said out loud to a shared agent — but only the author can edit or drop their own. Queue is per send, not a mode: the next message goes out normally unless you press it again. The button only appears in agent channels, and if the agent is already idle it simply sends.

Side notes the agent doesn't see

Start a message with ! to make it an aside: visible to everyone in the channel (in violet), but never shown to the agent.

!I think the flaky test is Dave's — let it figure that out itself.

Use asides to talk about the agent's work without steering it. Two caveats: asides are a courtesy filter, not a security boundary — anything posted normally is already in the agent's context — and editing the ! off later doesn't feed the message to the agent (and vice versa: a message's visibility is decided when it's sent).

Thread replies are also private to people. The agent only reads top-level messages, so a thread under any message is a safe place for a side conversation of any length.

The status strip

Agent channels show a status strip in the header: what model the agent is running, how full its context window is, cumulative token usage, and what it's doing right now —

  • pulsing dot — working on a turn (a Stop button appears; it posts /stop for you and takes effect within a couple of seconds)
  • orange dot — waiting for someone to answer a question
  • green dot — idle
  • "stalled?" — it claims to be working but hasn't updated in over a minute; the agent may be down
  • jobs — background shells, subagents, or a persistent terminal, when anything is running
  • tool trail (wide screens) — this turn's tools, compact, e.g. Read → Bash → Edit

The "updated Ns ago" stamp is the strip's freshness, not the agent's mood.

The channel name is the agent's name at provision. After your first real prompt (not a slash command, not an aside), a personal agent retitles the channel from that line. A pool worker keeps the name the board gave it.

Slash commands

Type / at the start of an empty message to see everything the agent understands — pick one, or keep typing to filter. The list comes from the agent itself, so workspace skills it has discovered show up too.

The builtins:

commandwhat it does
/stopcancel the running turn
/clearreset the conversation context
/compactsummarize and shrink the context
/costusage report (model, context, tokens)
/modelswitch model — /model [provider/]model[@effort]
/planplan mode — /plan, /plan off, or /plan <task>
/hookshooks engine — /hooks [on|off]
/mcpMCP server status
/reloadre-scan workspace configuration (skills, hooks, agents)
/helpask the agent to list its commands in the channel
/?open this page

Anything else starting with / goes to the agent as normal text (it's common in paths and unix-speak), except an exact skill name — /deploy staging runs the discovered deploy skill with those arguments.

Reading the channel

The agent's activity is layered so the conversation stays readable:

  • Replies are plain messages that stream in live.
  • ⚙️ activity rows hold the tool work (commands run, files read) — collapsed by default, click to expand.
  • Questions are highlighted with an accent border — the agent is waiting on you.
  • Notices (model switches, plan mode, compactions) are small and dim.
  • Errors carry a red border.
  • Health notices and alerts come from the harness rather than the model. Routine events (a context compaction, a short rate limit) are plain notices; the ones that stop the work — the turn ending abnormally, a long stall, a rate limit that won't clear soon — are raised as an alert: a red-bordered message in the channel and a push to everyone in it, so nobody has to be watching.

Hover a bot reply for + / −. That's for people who edit prompts; the agent never sees the vote, and it is not part of the conversation.

In the composer, type @/ to pick a file from the agent's workspace. It lands as an @file: chip; the harness reads that path this turn. See Writing & mentions.