Skip to main content

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

  1. Go to https://api.slack.com/apps

  2. Click Create New App

  3. Choose From scratch

  4. Enter an App Name and select the Workspace to develop in

  5. Click Create App

  6. In the left sidebar, go to OAuth & Permissions

  7. Scroll down to Scopes and add the User Token Scopes you need

  8. Scroll up and click Install to Workspace

  9. Review the permissions and click Allow

  10. In the left sidebar, go to Basic Information

  11. Under App Credentials, copy the Client ID and Client Secret

  12. In Willow, paste the Client ID and Client Secret

  13. 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
  14. In Slack, go to OAuth & Permissions and add the Redirect URL under Redirect URLs

  15. In Willow, select the same scopes you configured in Slack

  16. Click Save Changes

OAuth Scopes

The following scopes are available for Slack OAuth:

CategoryScopeAccess
Channels & Conversationschannels:historyRead
channels:readRead
channels:writeWrite
groups:historyRead
groups:readRead
groups:writeWrite
im:historyRead
im:readRead
im:writeWrite
mpim:historyRead
mpim:readRead
mpim:writeWrite
chat:writeWrite
Reactions & Pinsreactions:readRead
reactions:writeWrite
pins:readRead
pins:writeWrite
Bookmarksbookmarks:readRead
bookmarks:writeWrite
Remindersreminders:readRead
reminders:writeWrite
Canvases & Listscanvases:readRead
canvases:writeWrite
lists:readRead
lists:writeWrite
Filesfiles:readRead
files:writeWrite
Users & Workspaceteam:readRead
usergroups:readRead
usergroups:writeWrite
users:readRead
users:read.emailRead
users:writeWrite
users.profile:readRead
users.profile:writeWrite
Searchsearch:readRead

Generating an API Key (Bot Token)

  1. Go to https://api.slack.com/apps

  2. Select your app or create a new one

  3. Go to OAuth & Permissions

  4. Under Bot Token Scopes, add the scopes you need

  5. Install the app to your workspace

  6. Copy the Bot User OAuth Token (starts with xoxb-)

  7. 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:

ConditionEffect
Block specific channelsBlocks reads from the channels you select.
Block channels by nameBlocks reads from channels whose name matches a glob pattern, for example *sensitive* or exec-*. Applies to channels created later.
Only allow channels by nameBlocks 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.