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
- Navigate to Resources and click Add Resource
- Select Slack from the catalog
- 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.
| Tool | Description |
|---|---|
slack_search_public | Search public messages across channels |
slack_search_public_and_private | Search public and private messages |
slack_search_channels | Search for channels |
slack_search_users | Search for users |
slack_send_message | Send a message to a channel or user |
slack_send_message_draft | Send a message draft |
slack_schedule_message | Schedule a message for later delivery |
slack_read_channel | Read messages from a channel |
slack_read_thread | Read messages in a thread |
slack_read_user_profile | Read a user's profile |
slack_create_canvas | Create a new canvas |
slack_read_canvas | Read a canvas |
slack_update_canvas | Update an existing canvas |
slack_add_reaction | Add an emoji reaction to a message |
Required scopes
search:read.public— search public channelssearch:read.private— search private channelssearch:read.mpim— search multi-person direct messagessearch:read.im— search direct messagessearch:read.files— search filessearch:read.users— search userschat:write— send messageschannels:history— read public channel historygroups:history— read private channel historympim:history— read multi-person direct message historyim:history— read direct message historycanvases:read— read canvasescanvases:write— create canvasesreactions:read— read message reactionsreactions:write— add and remove message reactionsusers:read— read user profilesusers: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 forslack_send_*andslack_schedule_messagebelow 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, andslack_schedule_messagekeep 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 forslack_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_messageabove any allow rules.
Next steps
- Create a policy — start from the search-and-read pattern in Policy examples above.
- Credential modes — compare SecureAuth's app against bringing your own before you install.
- Sandbox an agent to one Slack channel — a worked policy for this exact resource.