Slack
Slack is a team communication tool that allows you to chat, share files, and collaborate with your team.
Authentication Types
Slack supports 3 authentication methods:
-
OAuth - Create your own Slack app with custom scopes. Every user connects with their Slack account.
- Pros: Full control, per-user tracking, production-ready
- Cons: ~2 min setup
-
Instant OAuth - Use Willow's pre-configured Slack app for the fastest setup.
- Pros: Fastest setup, no configuration needed
- Cons: Limited scopes, not recommended for production
-
API Key - Use a bot token or user token for all users.
- Pros: Easy setup
- Cons: Less secure, no per-user tracking
Setting up OAuth
-
Click Create New App
-
Choose From scratch
-
Enter an App Name and select the Workspace to develop in
-
Click Create App
-
In the left sidebar, go to OAuth & Permissions
-
Scroll down to Scopes and add the User Token Scopes you need
-
Scroll up and click Install to Workspace
-
Review the permissions and click Allow
-
In the left sidebar, go to Basic Information
-
Under App Credentials, copy the Client ID and Client Secret
-
In Willow, paste the Client ID and Client Secret
-
Note the Redirect URL for your deployment:
- For SaaS deployments:
https://{org}.mcp-s.com/{org}/api/auth/callback - For On-Premise deployments:
{connectUrl}/{org}/api/auth/callback
- For SaaS deployments:
-
In Slack, go to OAuth & Permissions and add the Redirect URL under Redirect URLs
-
In Willow, select the same scopes you configured in Slack
-
Click Save Changes
OAuth Scopes
The following scopes are available for Slack OAuth:
| Category | Scope | Access |
|---|---|---|
| Channels & Conversations | channels:history | Read |
channels:read | Read | |
channels:write | Write | |
groups:history | Read | |
groups:read | Read | |
groups:write | Write | |
im:history | Read | |
im:read | Read | |
im:write | Write | |
mpim:history | Read | |
mpim:read | Read | |
mpim:write | Write | |
chat:write | Write | |
| Reactions & Pins | reactions:read | Read |
reactions:write | Write | |
pins:read | Read | |
pins:write | Write | |
| Bookmarks | bookmarks:read | Read |
bookmarks:write | Write | |
| Reminders | reminders:read | Read |
reminders:write | Write | |
| Canvases & Lists | canvases:read | Read |
canvases:write | Write | |
lists:read | Read | |
lists:write | Write | |
| Files | files:read | Read |
files:write | Write | |
| Users & Workspace | team:read | Read |
usergroups:read | Read | |
usergroups:write | Write | |
users:read | Read | |
users:read.email | Read | |
users:write | Write | |
users.profile:read | Read | |
users.profile:write | Write | |
| Search | search:read | Read |
Generating an API Key (Bot Token)
-
Select your app or create a new one
-
Go to OAuth & Permissions
-
Under Bot Token Scopes, add the scopes you need
-
Install the app to your workspace
-
Copy the Bot User OAuth Token (starts with
xoxb-) -
Paste the token into Willow
Restricting which channels tools can read
Slack ships predefined conditions that keep sensitive channels out of reach of the model, without disabling the read tools entirely. Attach them to get_channel_history and get_thread_replies from the Tools tab:
| Condition | Effect |
|---|---|
| Block specific channels | Blocks reads from the channels you select. |
| Block channels by name | Blocks reads from channels whose name matches a glob pattern, for example *sensitive* or exec-*. Applies to channels created later. |
| Only allow channels by name | Blocks every channel whose name matches none of your allowed patterns. |
Slack also ships webhook conditions that filter workflow events by channel or user. See Conditions.