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

# Slack

> Install the Current app in your Slack workspace and add the bot to your channels.

The Slack integration does two things. Your workflows read public channels, messages, and users, and they send messages and files. Your team also talks to the Current agent in a channel.

The installation has two parts, and the second part is short. First you install the app one time. Then you invite the bot to each channel that the agent must answer.

<Note>
  The installation takes about 5 minutes. It takes longer when your Slack workspace asks an administrator to approve a new app.
</Note>

## Before you start

You need two things:

* The **admin** role in the Current workspace.
* A Slack account that installs an app.

Many Slack workspaces ask a Slack administrator to approve a new app. Find out who approves an app before you start. When an approval applies, Slack sends a request to that person, and your connection waits.

## Install the app

<Steps>
  <Step title="Open the Integrations page">
    In the portal, go to **Settings** > **Integrations**.
  </Step>

  <Step title="Connect Slack">
    Find the **Slack** row. Click **Connect**.

    The browser goes to Slack.
  </Step>

  <Step title="Read the Slack workspace name">
    Slack shows the permission page. At the top right of that page, Slack names the workspace that receives the app.

    <Warning>
      An app in the wrong Slack workspace makes a connection that sees none of your channels. Slack signs you in to the last workspace that you used. Read the workspace name now, and change it if it is not correct.
    </Warning>

    This is the one step that people get wrong. It costs 5 seconds to check.
  </Step>

  <Step title="Allow the access">
    Read the permission list. The table in [What Current asks for](#what-current-asks-for) gives the purpose of each permission.

    Click **Allow**.

    If your Slack workspace needs an approval, Slack sends a request to a Slack administrator instead, and it makes no connection. Wait for the approval. Click **Connect** again after it arrives.
  </Step>

  <Step title="Confirm the connection">
    The browser comes back to the **Integrations** page.

    <Check>
      The **Slack** row shows the green **Connected** badge, with the name of your Slack workspace.
    </Check>

    Click the chevron at the end of the row. The details give the team name and the team ID. Confirm that the team name is your workspace.
  </Step>
</Steps>

## Add the bot to a channel

The connection alone delivers no messages. Slack sends Current a message only from a channel that the bot is a member of.

In each channel that the agent must answer, send this message:

```
/invite @Current
```

Slack adds the bot to the channel. The agent then answers the messages of that channel.

<Note>
  A workflow that only reads a channel needs no invitation. Current joins a public channel by itself the first time a workflow reads it. The invitation is necessary for the agent to answer a message.
</Note>

Start with one channel. Add more channels after you confirm that the agent answers.

## Verify the installation

<Steps>
  <Step title="Invite the bot">
    Send `/invite @Current` in a public channel.
  </Step>

  <Step title="Send a message">
    Write a message in that channel, for example "What projects are late?".
  </Step>

  <Step title="Wait for the reply">
    The agent replies in a thread on your message.

    <Check>
      A reply in a thread confirms the installation.
    </Check>

    <Note>
      Slack shows no acknowledgement while the agent works. Wait for the reply. The agent adds no reaction to your message, so a message with no reaction is not a failure.
    </Note>
  </Step>
</Steps>

If no reply arrives, see [Troubleshooting](/troubleshooting#slack).

## What Current asks for

Slack shows these permissions on the consent page:

| Permission         | Why Current needs it                                               |
| ------------------ | ------------------------------------------------------------------ |
| `channels:read`    | See the list of the public channels.                               |
| `channels:history` | Read the messages of a public channel that the bot is a member of. |
| `channels:join`    | Join a public channel on the first read of a workflow.             |
| `chat:write`       | Send a message and a reply.                                        |
| `files:read`       | Open a file that a member attaches to a message.                   |
| `files:write`      | Send a file in a reply.                                            |
| `users:read`       | See the members of the Slack workspace.                            |
| `users:read.email` | Match a Slack user to a Current member by email address.           |

Current asks for the permissions of a bot only. The agent posts as the Current bot. Current reads no message as you, and it sends no message as you.

## What Current does not read

The permission list holds `channels:` permissions only. It holds no permission for a private channel, a group message, or a direct message. Slack therefore delivers none of these to Current.

<Warning>
  Current answers in public channels only. Use a public channel for the conversations of your team with the agent. A direct message to the bot reaches no one.
</Warning>

## How the agent behaves in Slack

The agent answers every message of a channel that the bot is a member of. It replies in a thread on your message, so the channel stays readable.

The agent drops its own messages and the messages of other bots.

To receive a file, ask the agent for it. The reply and the files arrive as one message. The agent sends a file that your workspace already holds. It makes no file, and it sends no file from outside the workspace.

Ask the agent for work that one of your workflows does. The agent reads the names of the workflows of the workspace, and it starts the one that matches your request.

<Note>
  A workflow takes minutes. The reply of the agent confirms the start of the workflow. It is not the result of the workflow. The result comes back into the same channel later.
</Note>

## Limits on files

The agent opens at most 5 files for each message, and each file up to 10 MB. The agent names a file that it cannot open, and it gives the reason.

## Remove the integration

Go to **Settings** > **Integrations**. Click **Disconnect** on the **Slack** row, then confirm. Current cancels the token at Slack.

To remove the app from Slack as well, a Slack administrator opens **Settings & administration** > **Manage apps** in Slack and removes **Current**.

## Questions you may have

<AccordionGroup>
  <Accordion title="Do I invite the bot to every channel?">
    No. Invite the bot to the channels where your team asks the agent questions.

    A workflow that reads a channel needs no invitation. Current joins a public channel by itself on the first read.
  </Accordion>

  <Accordion title="Can the agent read our private channels?">
    No. The app holds public-channel permissions only, so Slack delivers no private channel, no group message, and no direct message.

    An invitation to a private channel gives Current no access to it.
  </Accordion>

  <Accordion title="Why does the agent answer messages that are not for it?">
    In Slack, the agent answers every message of a channel that it is a member of. It needs no mention.

    Use a dedicated channel for the agent when this behavior is a problem. Microsoft Teams works differently: in a Teams channel, the bot needs a mention.
  </Accordion>

  <Accordion title="The agent gave no reaction. Did it receive my message?">
    Slack gets no acknowledgement reaction from the agent. Wait for the reply in the thread.

    If no reply arrives, confirm that the bot is a member of that channel. Send `/invite @Current`.
  </Accordion>
</AccordionGroup>
