> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meetsquad.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack

> Capture feedback from Slack, read channel history from an agent, and get Squad's output posted back into a channel.

Slack is where product feedback actually gets said. Squad pulls those messages in as [signals](/signals), lets an agent read a channel's recent history, and posts its own output back into Slack. It's the only provider Squad can send anything to.

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/squad/NVM9RUFBB2kdWosT/images/integrations-slack-light.png?fit=max&auto=format&n=NVM9RUFBB2kdWosT&q=85&s=69393c104a5424a6395e9c44ac10acb6" alt="Slack integration settings" width="2880" height="1800" data-path="images/integrations-slack-light.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/squad/NVM9RUFBB2kdWosT/images/integrations-slack-dark.png?fit=max&auto=format&n=NVM9RUFBB2kdWosT&q=85&s=259dda8438d31344b64d64f141b0d638" alt="Slack integration settings" width="2880" height="1800" data-path="images/integrations-slack-dark.png" />
</Frame>

## Connect

<Steps>
  <Step title="Approve the Squad app" icon="message-square">
    Click **Connect** on the Slack card and approve the Squad app for your Slack workspace. You come back to the Slack detail page, which holds every setting below.
  </Step>

  <Step title="Invite the bot to your channels" icon="user-plus">
    Run `/invite @Squad` in each channel you want Squad to see, public or private. The bot only sees channels it has been invited to. Once it's in, the channel appears under **Capture Channels**, with a lock beside the private ones.
  </Step>
</Steps>

<Note>
  If someone uninstalls the app or the token is revoked, the detail page shows a red **Disconnected** state with a **Reconnect** button. Capture, thread sync and notifications stay off until you use it.
</Note>

<Warning>
  Squad sometimes needs a Slack permission it didn't ask for at install. Slack won't grant one to an app that's already installed, so the detail page shows an amber banner naming exactly what's missing, and anything depending on those permissions does nothing until a workspace admin clicks **Reconnect**. Reconnecting keeps your capture channels and their settings.
</Warning>

## Capture modes

Every channel the bot can see gets a mode.

<AccordionGroup>
  <Accordion title="Off" icon="circle-slash">
    No capture. The channel can still receive notifications.
  </Accordion>

  <Accordion title="Manual" icon="hand">
    Capture when someone reacts with `:squad:`, `:squad-bug:`, `:squad-idea:` or `:squad-praise:`, or when someone asks the bot directly.
  </Accordion>

  <Accordion title="Auto" icon="zap">
    Capture every top-level human message in the channel.

    <Tip>
      In an auto channel, prefix a message with the loudspeaker emoji to keep that one message out of Squad.
    </Tip>
  </Accordion>
</AccordionGroup>

Two toggles sit alongside the mode and work independently of it. **Notifications** posts new insights, action proposals and signal spikes into the channel. **Thread sync** confirms back on the message it came from.

## How Squad confirms a capture

Squad reacts to the message rather than replying to it. A manual capture gets a white check mark, an auto capture gets an inbox tray, and a magnifying glass follows once extraction finishes and signals exist. The whole channel can see the state of a message at a glance, and the conversation underneath it stays yours.

That matters more than it sounds. A captured message's thread stays a sync target for as long as its link is enabled, so anything Squad posts there accumulates for the life of the thread.

<Note>
  Workspaces connected before reactions were supported fall back to a single text reply instead. Reconnect the app from the Slack detail page to grant the permission and switch to reactions.
</Note>

## Capture on demand

Reply in a thread with `@Squad log this as feedback` and Squad captures the message you replied to, whatever the channel's mode says. Pasting a permalink works too, as in `@Squad capture this: https://…`. Asking in a channel that has never been configured counts as consent, so Squad sets it to manual mode and captures the message.

Captured messages become external sources and run the same extraction as everything else, so they end up as signals with a link back to the original Slack message.

## Write it up as a brief

Ask the bot in a thread to turn the discussion into a brief and it drafts one from what was said. "Write this up" or "make a PRD from this" both work. Squad replies with the brief's number and a link, and the document appears in [Briefs](/briefs) while it drafts.

Squad also offers when you have not asked. If its analysis in a thread would make a strong PRD or decision brief, it posts a **Create brief** button under the reply. Click it and the button is replaced by the draft's status line. Ignore it and nothing happens.

<Note>
  A channel thread gets one brief. Asking the bot and clicking the button produce the same draft, and so does clicking twice, so you can do both without ending up with duplicates. In a DM there are no threads, so each request drafts its own.
</Note>

If the thread is too short to work from, the button reports that instead of drafting.

## Triggers

<Warning>
  Slack declares no agent triggers, by design. Its own runtime handles Slack events (chat with the bot, emoji capture, mentions, thread sync), so they never reach the generic agent trigger dispatcher.

  A workspace whose only connected provider is Slack sees no integration trigger group in the agent builder at all. Slack still works as a source of signals, as a tool provider and as a delivery channel. It can't start an agent run.
</Warning>

## Tools

<Tabs>
  <Tab title="Read">
    | Tool | What it does |
    | - | - |
    | **Read channel history** | Gives an agent the recent messages from one channel. |

    The tool only appears for agents that have Slack channels configured as sources, and it's bound to exactly those channels. The agent chooses how far back to read on each run (a daily check reads 24 hours, a weekly digest 168), up to 90 days and 200 messages per call.

    <Note>
      The Squad bot has to be a member of the channel or the tool comes back with an error telling you to invite it.
    </Note>
  </Tab>

  <Tab title="Write">
    | Tool | What it does |
    | - | - |
    | **Capture message as signal** | Takes a Slack permalink, or a channel and message timestamp, and runs the same capture pipeline the emoji reactions use. |

    It dedupes, so calling it twice on the same message is safe.
  </Tab>
</Tabs>

## Delivery

Agent reports render as a Slack card and get posted into a channel, optionally as a reply in a thread. The card carries the report title, the run's findings, a **Key takeaway** line, and a **View full report** button. Findings come through as a bulleted list, each one written to stand alone, so the channel gets them without anyone opening the report. Older reports have no findings list, and their card shows the summary paragraph instead. A link inside a finding or the takeaway stays clickable when it points at a page in Squad or at a full web address; anything else shows as plain text. Citations in the report body are not on the card, so open the full report for those. The takeaway is the part to read if you read nothing else. It says which finding to act on first and why, which is the question a list of findings leaves open. Notifications and thread sync use the same path.

## A worked example

You run a `#customer-feedback` channel where support drops verbatim quotes. Set it to **Auto** so everything lands in Squad. Turn on **Notifications** so the channel hears about new insights, and leave **Thread sync** on so each captured message picks up an inbox tray, then a magnifying glass once its signals land.

For a noisier channel like `#general`, use **Manual** instead and let people react with `:squad:` on the few messages worth keeping. Those get a white check mark.

## Limits

The bot reads only channels it has been invited to, public or private. The read tool needs the channel configured as a source on the agent, not connected at the workspace level. History reads cap at 200 messages and 90 days per call, and long results get truncated. Slack can't trigger an agent.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.