> ## Documentation Index
> Fetch the complete documentation index at: https://c42d5cb-opencomputer.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://c42d5cb-opencomputer.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://c42d5cb-opencomputer.manicule.dev/api/mcp.
> Every agent surface: https://c42d5cb-opencomputer.manicule.dev/.well-known/llms-manifest.json

# Threads (/slack/threads)

<!-- agent-signals: reading_time_min: 3 · est_tokens: 1060 · updated: 2026-11-12 -->
Related: [Shared threads](/slack/shared-threads.md), [Linked and spawned threads](/slack/linked-and-spawned-threads.md), [Mid-turn messages](/slack/mid-turn-messages.md), [Permission modes](/slack/permission-modes.md), [Approvals, questions and plans](/slack/approvals-questions-plans.md), [Subagents](/slack/subagents.md)

> Each Slack thread is one session; its runner exits after 2 hours idle and resumes on the next message

<Frame>
  <img src="/_assets/e01728570b2e258de0a16105037953a42c2f443031ed96b0e46285ac0acd48a3" alt="A finished turn: two step cards that ended as Ran N steps, the text between them, and the footer with model, duration and context size" width="1552" height="1094" />
</Frame>

## Starting a session

| Where           | What starts a session                                                              | Later messages                                                                                                   |
| --------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Channel         | A message that mentions `@computer`. Its thread is the session.                    | Every reply is delivered; the agent answers the ones meant for it (see [Shared threads](/slack/shared-threads)). |
| Existing thread | A reply that mentions `@computer`. The session also receives the replies above it. | Same.                                                                                                            |
| Direct message  | Any message. No mention needed.                                                    | Every message in that DM thread is for the agent.                                                                |

Only people on the [people list](/self-hosting/configure) get a session; anyone else gets an ephemeral "not enabled for you yet" reply. One-machine mode has no people list: anyone who can reach `@computer` can start a session.

Edited messages and messages from bots are ignored.

## Turn output

1. **Status.** Slack shows "is thinking…" on the thread, or an :eyes: reaction if the status call fails.
2. **Step cards.** Each tool call is a step with its arguments and an output tail. Consecutive steps share one card, which ends as "Ran N steps" with a count of failures.
3. **Text.** The agent's text streams into the same message between the cards.
4. **Footer.** Model, reasoning effort (once set with `!effort`), permission mode (when not `bypassPermissions`), duration and context size. A stopped turn's footer starts with the reason. Cost is in `!status`.

<Frame>
  <img src="/_assets/6c7a2efce2000340c65b2c6ab79d8e156a893505a601bd240924ebea29ad4445" alt="A running turn: a finished step card, streamed text, a live step with its timer, and the thinking status under the composer" width="1552" height="1192" />
</Frame>

A long reply continues in a new message: Slack closes a stream after about 10 minutes and caps a message's length. A turn waiting on an answer does not open a new message, so it sends one notification.

| What you see                                                                    | Cause                                                                               |
| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| ":warning: agent process ended: …"                                              | The harness process died. The next message starts it again.                         |
| ":warning: couldn't reach the session: …"                                       | The gateway could not deliver the message to the runner.                            |
| "The agent host is offline; your message will be delivered when it reconnects." | The host is not connected to the gateway. The message is queued for up to 24 hours. |

## Commands

A message that starts with `!` is a command to the session, not a message to the agent: `!status`, `!stop`, `!diff`, `!restart`. See Slack commands.

## Idle exit

The host stops a session's runner 2 hours after the last message (`SP_IDLE_MS`). It waits while a turn is running or waiting on an answer, a subagent is running, or an API terminal is open.

The next message starts a new runner that resumes the same conversation in the same directory; the first reply is slower. See Session durability.

One-machine mode has no idle exit.
