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

# Apostra in Slack

> What the Apostra Slack app does, who can install it, which Slack permissions it asks for and why, and what it does with your messages.

The Apostra Slack app lets people in a Slack workspace talk to Apostra where they
already work. This page is for the Slack admin who decides whether to install it
and for the people who use it. It covers what the app does, each permission it
asks for and why, and what happens to the messages it reads.

## Install

Open this link in a browser where you are signed in to Slack:

```text theme={null}
https://api.apostra.com/slack/install
```

Slack shows the permissions Apostra asks for and the workspace to install into.
Anyone your Slack settings allow to install apps can approve it. If your
workspace requires an admin to approve new apps, Slack sends the request to one.

The app installs into one workspace at a time. Installing it across a whole
Slack Enterprise Grid organization is not supported. Install it into each
workspace that should have it.

If the install link shows a "Not Found" error, Slack installs are not open yet.
Email [support@apostra.com](mailto:support@apostra.com).

## What Apostra does in Slack

* **Direct messages.** Message Apostra directly to ask a question.
* **Mentions.** Mention @Apostra in a channel it has been added to, and it
  answers in the thread.
* **The `/apostra` command.** Type `/apostra` followed by your question in a
  channel it has been added to. `/murph` is the older name for the same command
  and still works.
* **Files.** Attach audio, images, PDFs or spreadsheets to a message addressed
  to Apostra and ask about them. Apostra reads only the files attached to a
  message addressed to it. It does not browse other files in the workspace.
* **Reports.** Ask Apostra to file a report, and it passes the report to the
  Apostra team to follow up.
* **Generated files.** When Apostra produces a file for you, such as an
  `adagents.json` file, it uploads the file into the same thread.
* **Access requests.** In a channel linked to an account, a person Apostra
  cannot link to a login can choose **Request access from admin**. Apostra then
  files an access request for the email address on their Slack profile with that
  account's admins.

Apostra answers general questions about how the product works for anyone in the
workspace. It answers questions about your own account only after it links you to
your Apostra login, as described next.

### Add Apostra to a channel

Apostra works in a channel only after someone adds it. Apostra does not ask Slack
for permission to join channels on its own, so a person adds it to each public
channel. To use it in a private channel, invite it the way you would invite a
person. Apostra cannot add itself to a private channel.

When Apostra joins a channel it posts a message saying that, if the channel is
linked to a customer account, messages may be saved with that customer's work.
[What Apostra does with messages](https://docs.apostra.com/v3/slack-app.md#what-apostra-does-with-messages) explains
which messages are saved.

### How Apostra links you to your Apostra account

Apostra reads your Slack email address and looks for an Apostra login with the
same address. Apostra answers questions about an account only if the match is
unique and the login is active. A match grants nothing by itself: Apostra answers
with the role that person already has in Apostra, so Slack gives no one access to
an account that their Apostra login does not already have.

In a channel, answers about an account also depend on the channel being linked to
that account. [Talk to Apostra in Slack, Teams, Discord, or WhatsApp](https://docs.apostra.com/v2/guides/messaging-apps.md)
explains how an organization links a channel.

In a Slack Connect channel or any other channel shared with another organization,
Apostra narrows what it will say.

## Permissions Apostra asks for

Slack calls these permissions scopes. They are all bot scopes, which means they
belong to the Apostra app in your workspace and not to any one person. Apostra
does not request permissions that act as an individual user.

| Scope | Why Apostra asks for it |
| - | - |
| `app_mentions:read` | Apostra replies when someone mentions @Apostra in a channel it has been added to. |
| `assistant:write` | Runs Apostra as a Slack agent: it sets the "thinking" status and suggested prompts in the agent pane. |
| `channels:history` | Apostra reads messages in public channels it has been added to, so it can answer in the thread with the conversation's context. In channels linked to a customer account, or from a person whose company Apostra knows, it also stores the messages as account activity for Apostra's account team. When Apostra joins a channel it posts a message telling members this. |
| `groups:history` | The same as `channels:history`, for private channels a member has invited Apostra to. Apostra cannot add itself to a private channel. |
| `im:history` | Reads direct messages people send to Apostra, so it can answer them. Direct messages are not stored as account activity. |
| `mpim:history` | Reads group direct messages that include Apostra, so it can answer them. Group direct messages are not stored as account activity. |
| `channels:read`, `groups:read`, `im:read`, `mpim:read` | Before answering, Apostra looks up the conversation's type and whether it is shared with another organization, and narrows what it will say in shared or external conversations. |
| `chat:write` | Posts Apostra's replies, progress updates and its notice that it has joined a channel. |
| `commands` | Handles the `/apostra` command and the older `/murph` command. |
| `reactions:write` | Adds an emoji reaction to acknowledge a message that needs no written reply, or to show Apostra is working on it. |
| `files:read` | Reads only the files a user attaches to a message addressed to Apostra, such as audio, images, PDFs and spreadsheets, so it can answer questions about them. It does not browse other files in the workspace. |
| `files:write` | Uploads files Apostra generates for the user, such as an `adagents.json` file, into the same thread. |
| `users:read` | Identifies the Slack member who asked, so Apostra answers in the right account and can address them by name. |
| `users:read.email` | Matches the asking member to their Apostra account by email. Email alone never grants access: the account must be active and the match unique. In any channel, the email's company domain attributes a message to the right organization. |

### Why Apostra needs email addresses

`users:read.email` is the permission that lets Apostra see a Slack member's email
address. Apostra uses it for two things:

* to match a person to their Apostra login, so it can answer questions about
  their own account; and
* in any channel Apostra has been added to, to read the company domain of a
  message's author, so the message is attributed to the right organization.

Apostra does not use a Slack email address to contact anyone on its own. The one
case where an address leaves Slack is a person choosing **Request access from
admin**, described above.

Apostra does not ask for permission to read canvases, change do-not-disturb
settings, read links shared in messages, use Slack's MCP server, start direct
messages, or read reactions.

## What Apostra does with messages

**Apostra reads messages in the channels it has been added to**, and direct
messages and group direct messages sent to it. What it keeps depends on where
the message is.

**Channel messages are kept as account activity in two cases.** Apostra's account
team can see this activity next to the customer's other work.

* The channel is linked to a customer account.
* The author's work email belongs to a company Apostra already knows. Messages
  from bots, from people with a personal email address, and from Apostra staff
  are not kept on this basis.

A channel message that meets neither condition is not kept as account activity. In
a channel that is not linked to an account, Apostra does not pass a message to the
assistant unless it mentions Apostra or uses `/apostra`. In a channel that is
linked to an account, Apostra can pick up a message that does not mention it and
decide whether to answer, react or stay silent.

If someone edits a saved message in Slack, the saved copy is updated. If someone
deletes it, the saved text is cleared.

**Direct messages and group direct messages are never kept as account activity.**
Apostra reads them to answer the person who wrote to it.

**Your conversations with Apostra are saved as conversation history in Apostra.**
Apostra sends the text of a message addressed to it, and any file attached to it,
to the AI providers listed in [AI providers](https://docs.apostra.com/v3/ai-providers.md) to produce the
answer.

For the terms that apply to this data, see the
[Apostra Privacy Policy](https://apostra.com/agreements/privacy-policy).

## Uninstall

A Slack admin removes Apostra from Slack's **Manage apps** page: open the Apostra
app and remove it from the workspace.

When the app is removed:

* Slack revokes Apostra's access to the workspace, and Apostra stops answering
  there.
* Apostra deletes its records of which Slack member is which Apostra login, and
  the links between Slack threads and Apostra conversations. If you install again,
  Apostra links people to their logins again from their email addresses.
* Conversations that belong to an Apostra account stay part of that account's
  history. Uninstalling does not delete them.
* Links between channels and Apostra accounts that an organization saved remain on
  record as disabled settings. They cannot send or answer anything without an
  active installation.

## Questions

Email [support@apostra.com](mailto:support@apostra.com), or see
[Get support](https://docs.apostra.com/v3/support.md).


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