Skip to main content

Slack Connector: Permissions and Data Handling

What permissions the Agent's Slack connector requests, why each is needed, when Slack is accessed, and what Enterpret stores.

Written by Vaishnavi [Enterpret]

The Slack connector lets Enterpret Agent read from and act in your Slack workspace on your behalf. You can ask it things like "find the thread where we discussed the Q3 launch", "summarize what happened in #incidents yesterday", or "draft a reply to that message" — and it will search, read, and post using your own Slack access.

This article explains what permissions the connector asks for when you connect Slack, why each one is needed, and how the data it retrieves is handled.

Note: this is different from the Slack inbound integration, which ingests selected Slack channels into your feedback dataset. The Agent connector does not ingest anything — see "What Enterpret stores" below.

How authorization works

Each user connects their own Slack account through Slack's standard OAuth flow. The connector operates with a user token — it acts as you, with your permissions, and is bounded by Slack's own permission model.

This means:

  • The agent can only see what you can see in Slack. It cannot access private channels you're not a member of, other people's DMs, or anything else outside your own Slack access.

  • Anything the agent posts is attributable to you and requires your confirmation first (see "Taking actions" below).

  • Your workspace's Slack admin policies apply. If your admin restricts an app or a scope, that restriction holds.

  • Disconnecting the connector revokes the token. You can also revoke it from Slack's side at any time under your workspace's app management settings.

What each permission does

Searching

These power workspace search — "where did we discuss X?" Slack returns only results the connected user could find with Slack's own search bar.

  • search:read.public — search messages in public channels you have access to

  • search:read.private — search private channels you are a member of

  • search:read.im — search your own direct messages

  • search:read.mpim — search your group direct messages

  • search:read.files — search files shared in conversations you have access to

  • search:read.users — find people in your workspace by name

Reading conversations

These let the agent open and read a specific conversation once found — for example, to summarize a thread.

  • channels:read, channels:history — list public channels and read their message history

  • groups:read, groups:history — list and read private channels you are a member of

  • im:read, im:history — list and read your own direct messages

  • mpim:read, mpim:history — list and read your group direct messages

  • files:read — read files you have access to

  • canvases:read — read canvases you have access to

  • reactions:read, emoji:read — read reactions on messages and your workspace's emoji list

People and groups

  • users:read, users:read.email — resolve names and @mentions to people, so "ask Priya's team" or "who posted this?" works

  • usergroups:read — resolve user groups (like @eng-oncall) to their members

Taking actions

  • chat:write — send messages as you

  • reactions:write — add reactions as you

The agent checks in before doing work in an external system. Before sending a Slack message on your behalf, it shows you the message and asks for confirmation.

Why more than a simple bot needs

A bot that only replies when @mentioned would need just app_mentions:read and chat:write. The agent's Slack connector supports a broader set of tasks: searching workspace history, retrieving and summarizing specific threads and files, resolving people and groups, and drafting or sending messages as you. Those tasks require search, history, file, and directory scopes — and they require a user token rather than a bot token, so that results are always scoped to what you personally have access to rather than to wherever a bot has been invited.

When Slack is accessed

Slack is only called when you (or an agent session you started) use a Slack tool — for example, when you ask the agent to search or post. Every call is a live request to Slack's API at that moment.

The connector does not:

  • Crawl or index your Slack workspace

  • Sync Slack content in the background

  • Access Slack outside of an agent session you can see

What Enterpret stores

  • No message index. Enterpret does not maintain a copy or index of your Slack messages or files. Search happens live in Slack, every time.

  • Session history. Slack results retrieved during a session are used to answer your request and are retained as part of that session's transcript, like the rest of the conversation. They are visible to you in your session history and governed by your organization's data retention terms with Enterpret.

  • Not ingested as feedback. The Agent connector never writes Slack content into your Enterpret feedback dataset. (Ingesting Slack channels as feedback is a separate, explicitly configured integration — the Slack inbound integration.)

  • Not used for training. Slack content is not used to train models.

  • Credentials. OAuth tokens are stored encrypted and used only to make Slack API calls for your sessions.

FAQs

Can the agent access channels the Enterpret bot hasn't been added to? The connector doesn't depend on a bot being added to channels. It uses your user token, so it can access exactly what you can access — no more, no less. A public channel you can open, a private channel you're in, your own DMs. Never someone else's.

Can my teammates see my Slack content through the agent? Each user connects their own Slack account, and the agent uses the connection of the person running the session. Content retrieved with your token lives in your session.

What happens when I disconnect? The token is revoked and the agent loses all Slack access for your account immediately.

Can our Slack admin control this? Yes. Slack workspace admins can restrict app installs and approve or deny the app and its scopes through Slack's standard app approval flow.

Did this answer your question?