Secure Slack access for AI agents

Team messaging and collaboration platform

Through Slack, agents can search messages, read channels and threads, and send or schedule messages on your team's behalf — every call runs through your policies and is logged for audit.

Server URL: https://mcp.slack.com/mcp

Setup

  1. Navigate to Resources and click Add Resource
  2. Select Slack from the catalog
  3. On Choose how to install Slack, click a credential mode card (see below)

Clicking Use SecureAuth's app installs the resource immediately — there is no separate confirmation step. Bring your own app instead opens a form for your own Client ID and Client Secret, and Add at the bottom of that form completes the install. Either way Slack then shows an Admin setup required dialog with a Setup guide button pointing back at the matching section below.

The resource is added with all tools and scopes pre-configured. Each user connects their own Slack account via OAuth when they first use a Slack tool. Navigate to Connections to manage linked accounts.

Credential modes

Slack supports two modes:

  • Use SecureAuth's app — install instantly with SecureAuth's pre-registered Slack app. No setup on your side. Recommended for most installs.
  • Bring your own app — use a Slack app owned by your workspace. Recommended when you need custom branding on the consent screen, dedicated rate limits, or audit isolation in your workspace.

See Credential modes for the full comparison.

Use SecureAuth's app

Install instantly with SecureAuth's pre-registered Slack app — nothing to create on your side. Each user connects their own Slack account via OAuth the first time they use a Slack tool.

No admin setup is required unless your workspace restricts app installs. Slack lets members add apps themselves by default; if a Workspace Owner has turned on app approval ("Only allow pre-approved apps"), the SecureAuth AI Gateway app (Slack's name for the pre-registered app) must be approved before members can connect. When a member first tries to connect, Slack sends an approval request to your Workspace Owners via Slackbot — an owner approves it once, and members can connect from then on.

Bring your own app

A Slack workspace admin creates a Slack app at api.slack.com/apps, installs it into the workspace, then returns to SecureAuth with the Client ID and Client Secret.

In the Agent Authority console, go to Resources → Add Resource → Slack → Bring your own app and copy the redirect URI shown on the page.

The fastest path to create the Slack app is From an app manifest. Paste this JSON, replacing <paste-redirect-uri> with the URI you just copied and <your-company> with your branding:

{
  "display_information": {
    "name": "<your-company> Agent Authority",
    "description": "Agent Authority integration",
    "background_color": "#0b1326"
  },
  "features": {
    "bot_user": {
      "display_name": "<your-company>",
      "always_online": false
    }
  },
  "oauth_config": {
    "redirect_urls": ["<paste-redirect-uri>"],
    "scopes": {
      "user": [
        "search:read.public",
        "search:read.private",
        "search:read.mpim",
        "search:read.im",
        "search:read.files",
        "search:read.users",
        "chat:write",
        "channels:history",
        "groups:history",
        "mpim:history",
        "im:history",
        "canvases:read",
        "canvases:write",
        "reactions:read",
        "reactions:write",
        "users:read",
        "users:read.email"
      ],
      "bot": ["users:read"]
    },
    "pkce_enabled": false
  },
  "settings": {
    "org_deploy_enabled": false,
    "socket_mode_enabled": false,
    "token_rotation_enabled": false,
    "is_mcp_enabled": true
  }
}

After Slack creates the app, go to Basic Information → App Credentials in your Slack app and copy the Client ID and Client Secret back into the Slack resource page in the Agent Authority console, then click Add.

Available tools

Tool names are matched exactly by policy rules unless you use a wildcard, so copy them from here verbatim — and check the Available Tools card on the resource's Overview tab in the Agent Authority console for the authoritative list of what your install actually exposes.

ToolDescription
slack_search_publicSearch public messages across channels
slack_search_public_and_privateSearch public and private messages
slack_search_channelsSearch for channels
slack_search_usersSearch for users
slack_send_messageSend a message to a channel or user
slack_send_message_draftSend a message draft
slack_schedule_messageSchedule a message for later delivery
slack_read_channelRead messages from a channel
slack_read_threadRead messages in a thread
slack_read_user_profileRead a user's profile
slack_create_canvasCreate a new canvas
slack_read_canvasRead a canvas
slack_update_canvasUpdate an existing canvas
slack_add_reactionAdd an emoji reaction to a message

Required scopes

  • search:read.public — search public channels
  • search:read.private — search private channels
  • search:read.mpim — search multi-person direct messages
  • search:read.im — search direct messages
  • search:read.files — search files
  • search:read.users — search users
  • chat:write — send messages
  • channels:history — read public channel history
  • groups:history — read private channel history
  • mpim:history — read multi-person direct message history
  • im:history — read direct message history
  • canvases:read — read canvases
  • canvases:write — create canvases
  • reactions:read — read message reactions
  • reactions:write — add and remove message reactions
  • users:read — read user profiles
  • users:read.email — read user email addresses

Policy examples

Rules are evaluated top to bottom and the first match wins; a call that matches no rule is denied. New rules are created at the top of the list, so create the rule you want evaluated last first.

  • Search and read, but no sending: allow slack_search_*, slack_read_*, then add a deny for slack_send_* and slack_schedule_message below those allows — or disable your organization's seeded Allow all rule so anything unmatched is denied. The allow rules alone block nothing: with Allow all in place, slack_send_message, slack_send_message_draft, and slack_schedule_message keep matching it. Removing Allow all is org-wide, so add the allows everything else needs first.
  • Only one agent may send: allow slack_send_* scoped to that agent, and add a deny for slack_send_* (unscoped) below it. A scoped allow does not exclude anyone — other agents simply fall through to the next matching rule, which is Allow all unless you deny or remove it.
  • Block scheduling messages entirely: add a deny rule for slack_schedule_message above any allow rules.

Next steps

On this page