Skip to main content

Overview

Connect Slack to start Capy threads directly from messages, sync conversations, and let agents read and search your Slack workspace for context.

Installing the Slack app

1

Open Slack settings

Go to Settings → Integrations → Slack. You need to be an org admin.
2

Install the app

Click Install and authorize Capy in your Slack workspace. This connects the workspace for your entire organization.
3

Set a default project

Choose a default project for Slack-originated threads. This is used for DMs and channels without an explicit mapping.

Starting threads from Slack

Mention @Capy in any channel where the app is installed. Capy starts a thread from your message and responds in a Slack thread. You can continue the conversation there - messages are synced to the Capy thread. You can also share images and files in the message. Capy will pick them up as context for the thread.

Thread controls

Use thread controls to manage what Capy sees and when it responds inside a Slack thread.

Aside messages

Prefix a message with aside to exclude it from Capy’s processing entirely.
  • Capy won’t see the message
  • Capy won’t respond to it
  • It won’t appear in the agent’s context when Capy reads thread history
This works with aside ... and @Capy aside .... The check is case-insensitive, and aside must be at the start of the message.
Use aside when you want to talk with teammates in a Capy thread without the agent picking those messages up.

Mute and unmute

Mute a thread to stop Capy from responding to regular thread replies.
  • Type mute or @Capy mute in the thread to mute it
  • Type unmute or @Capy unmute to turn replies back on
  • When muted, Capy ignores regular thread replies
  • Direct @Capy mentions still go through
  • DMs still work
Capy confirms the change with an ephemeral message visible only to you:
  • Thread muted - Capy will ignore messages here unless directly mentioned with @Capy.
  • Thread unmuted - Capy will respond to messages in this thread again.
If the thread is already in the requested state, Capy does nothing. Mute state is stored per thread.

Archive

Archive a Slack thread to stop Capy and close the Capy thread.
  • Type archive or @Capy archive in the thread
  • Capy stops any running work and archives the Capy thread
  • Later messages and direct mentions in the archived Slack thread are ignored and do not unarchive it
  • Type unarchive or @Capy unarchive to explicitly reopen it
  • To keep the archived thread closed, start a new @Capy mention outside the old Slack thread
Capy confirms with: Thread archived - Capy has stopped and this session is closed. When explicitly reopened, Capy confirms with: Thread unarchived - Capy will respond to messages here again.

Stop

Stop the current run without archiving the thread.
  • Type stop or @Capy stop in the thread
  • Capy stops the current run and keeps the thread active
  • Send another message in the thread when you want Capy to start again
Capy confirms with Capy stopped the current run. If no run is active, it replies with Capy is not currently running. Type unlink or @Capy unlink as the whole reply to pause Slack sync for the current thread. The Capy thread keeps running on web, and Slack receives a pause notice with an Open in Capy link. Resume sync from the thread’s Slack control on web.

Start a separate web thread

Add !web anywhere in a message to start a separate thread on web without linking it to Slack. In an existing Capy Slack thread, the new thread starts with the source transcript while the original thread and its Slack sync remain unchanged. In an ordinary Slack conversation, mention @Capy; Capy reads a bounded snapshot as context, then leaves that conversation unlinked. Muted and archived Capy threads also require an explicit @Capy mention. Capy posts a Started on web card with an Open in Capy link. Continue the new thread on web: later Slack replies never enter it, and its replies, status, pull-request cards, and completion stay off Slack. You can link it to a new Slack thread later from its web menu, but it does not reattach to the source conversation.

Channel mappings

Map specific Slack channels to Capy projects so threads started from those channels are automatically assigned to the right project.
  1. Go to Settings → Integrations → Slack
  2. Scroll to Channel mappings
  3. Select a channel and a project, then click Save
Channels without a mapping fall back to the default project. DMs also use the default project. Capy also offers to set defaults for you. When neither the channel nor the workspace has a default and Capy has to ask you to pick a project, an admin’s pick is followed by a one-time offer: make that project the default everywhere, only for this channel, or don’t ask again. Every choice is reversible on the Slack settings page.

Message directives

Configure a thread with key=value directives anywhere in your @Capy message. Directives are stripped from the prompt before the agent sees it, and quoted values are supported.
project, folder, title, and machine apply when Capy creates a thread, including channel=, !new, and !web starts. A machine= directive on a normal continuation is refused because an existing thread’s machine cannot be resized. Project names match case-insensitively with a safe fuzzy match; when the match is uncertain, Capy asks you to pick instead of guessing. model= accepts a full catalog ID (openai/gpt-5.6-sol), a model name without its route prefix (gpt-5.6-terra), or a shortcut phrase: fable, opus, sonnet, haiku, sol, terra, luna, gemini, grok, kimi, qwen, glm. A phrase served by more than one connected route (Capy-billed vs a subscription) asks you to pick a route once for the org; a phrase that matches nothing gets an error reply, never a silent guess. Use whitespace-delimited bang flags for thread, model, and delivery controls: Capy refuses conflicting mode flags and an explicit Pro-plus-reasoning combination. A mode-only reply in an existing thread updates later replies and confirms the new selection once. !new and !web also work in an existing active Capy thread without a mention. !new creates a new Slack thread, while !web creates a web-origin thread with the source conversation as context. !web cannot be combined with !new or channel=. Repository and branch instructions are ordinary task context, not directives. Write them naturally - “use the backend repository on the staging branch” - and the agent handles them inside the selected project.

Personal connection

Team members can link their Slack identity to their Capy account from Settings → Integrations → Slack. Linking attributes your Slack messages to your Capy user - threads you start from Slack belong to you on the dashboard, and replies carry your name into the agent’s context. Unlinked teammates can still talk to Capy in threads; their messages just aren’t tied to a Capy account.

Pull request cards

When a Slack-started thread opens or takes over a pull request, Capy posts a card for it into the Slack thread and keeps it current from GitHub state - status, checks, branches, and diff totals update in place, so the card never goes stale as work continues.
  • One card per pull request per thread. A thread working across five PRs gets five cards, each updating independently.
  • Cards carry Open in Capy and View on GitHub actions.
  • Merging or closing a PR posts one compact follow-up sentence, so you’re notified even after the card has scrolled away. Everything else - checks progressing, drafts flipping ready, reopens - only updates the card.
  • A muted thread gets no new cards, but its existing cards keep updating: muting silences conversation, not a status object you can already see.
Pull request links inside Capy’s messages open the Capy pull request view by default. Prefer GitHub? Switch the link destination on the Slack settings page - the preference is captured per thread when it starts, so old messages keep their original destinations.

What agents can do with Slack

When a thread is started from Slack, agents have access to these capabilities:
  • Read messages from public channels and private channels where the Capy bot is a member
  • Search messages across the workspace
  • Send messages to channels or threads, with optional file attachments
  • React to messages with emoji
  • List channels to find the right conversation
Agents always respond in the Slack thread that started the Capy thread. They can also send messages to other channels when needed.

Permissions

Troubleshooting

Make sure the Capy app is installed in the channel. Type /invite @Capy to add it. Also verify the Slack workspace is connected in Settings → Integrations → Slack.
Check your channel mappings. If the channel isn’t mapped, threads use the default project. Set one in Settings → Integrations → Slack.
The thread may be muted. Type unmute or @Capy unmute in the thread to re-enable normal replies. Direct @Capy mentions still work while a thread is muted.
That’s expected. Messages starting with aside are excluded from Capy’s processing and do not appear in the thread context the agent reads later.
The Capy bot reads private channels only where it is a member. Invite it with /invite @Capy in that channel.