Auxot’s Slack integration ties one bot to one agent. After you create a Slack App and paste both tokens into Auxot, you add channel bindings: each binding picks a Slack channel and sets whether the bot replies to mentions only or all messages.
The bot connects outbound to Slack via Socket Mode — a persistent WebSocket that the bot opens to Slack. You do not need a public URL or open inbound ports on your Auxot server. This makes it work out of the box in on-premise and air-gapped deployments.
This guide covers creating the Slack App in the developer portal, installing it to your workspace, connecting it in Auxot, configuring channels, and linking your personal Slack account so tools and verified identity work correctly.
Before You Start
You need:
- A Slack workspace where you have permission to install apps (workspace admin, or an admin who can approve installs)
- An Auxot org admin account to connect the bot and configure channels (everyday users only need Linked Accounts to link themselves)
- Your Auxot server running and reachable by your users (it does not need a public URL for the bot connection — only for the web UI)
Part 1: Create the Slack App
1. Open the Slack API portal
Go to api.slack.com/apps and sign in.
2. Create a new app
Click Create New App → From scratch. Give it a name (e.g. “Auxot”) and pick your workspace. Click Create App.
3. Add bot token scopes
In the left sidebar, click OAuth & Permissions.
Scroll to Scopes → Bot Token Scopes and add each of the following:
| Scope | Why it’s needed |
|---|---|
app_mentions:read | Receive @mention events |
channels:history | Read messages in public channels |
channels:read | List public channels for the channel picker |
groups:history | Read messages in private channels the bot is in |
groups:read | List private channels |
im:history | Read direct messages |
im:read | List DM conversations |
im:write | Open DMs to send verification codes |
reactions:write | Add emoji reactions to messages |
chat:write | Post messages |
channels:join | Auto-join public channels when a channel binding is added in Auxot |
users:read | Resolve display names for identity context |
4. Enable Socket Mode and generate an App-Level Token
In the left sidebar, click Socket Mode → toggle Enable Socket Mode on.
You will be prompted to create an App-Level Token. Give it a name (e.g. “socket-token”) and add the scope connections:write. Click Generate.
Copy the token — it starts with xapp-. This is your App-Level Token.
Keep it secret. This token is separate from the Bot Token. Auxot stores it encrypted and does not return it after save.
5. Enable direct messages (App Home)
In the left sidebar, click App Home. Scroll down to Show Tabs and turn on “Allow users to send Slash commands and messages from the messages tab”.
Without this, Slack blocks all incoming DMs to the bot — users will see “Sending messages to this app has been turned off.”
6. Subscribe to bot events
In the left sidebar, click Event Subscriptions → toggle Enable Events on.
Under Subscribe to bot events, add:
app_mention— fired when someone @-mentions your botmessage.channels— messages in public channelsmessage.groups— messages in private channelsmessage.im— direct messages to the bot
Click Save Changes.
6. Install the app and copy the Bot Token
In the left sidebar, click Install App → Install to Workspace. Authorize the permissions.
After install, copy the Bot User OAuth Token — it starts with xoxb-. This is your Bot Token.
Part 2: Connect the Bot in Auxot (per agent)
1. Open the agent
In Auxot go to Settings → Agents, then open the agent that should own this Slack bot (the bot is that agent’s presence on Slack).
2. Open the Slack section
On the agent detail page, find the Slack card.
3. Connect
Click Connect Slack (or equivalent). Enter:
- Name — a label for this connection (e.g. “Production Slack”)
- Bot Token — the
xoxb-token from Part 1, step 6 - App-Level Token — the
xapp-token from Part 1, step 4
Save. Auxot starts the Socket Mode connection; within a few seconds the bot should appear online in Slack if both tokens are correct.
To rotate tokens: generate new ones in the Slack portal, then update and re-save the bot on the agent page.
Part 3: Invite the Bot to Channels
Public channels — when you add a channel binding in Auxot (Part 4), the bot automatically joins the channel. No manual invite needed.
Private channels — Slack does not allow bots to join private channels on their own. You must invite the bot first: open the channel in Slack and type /invite @YourBotName, then add the binding in Auxot.
Part 4: Configure Channels
Channel bindings live on the same agent detail page, in the Slack card.
Add a channel binding
- On the agent’s Slack card, open the Channels tab.
- Choose a channel from the list (the bot must already be in it — see Part 3).
- Set Respond to:
- Mentions only — bot replies only when @-mentioned. Good for busy general channels.
- All messages — bot replies to every top-level message. Good for dedicated bot channels.
- Save. Bindings apply without restarting Auxot.
If the channel list is empty
- Confirm the bot has been added to the channel with
/invite @YourBotName. - Confirm the
channels:read(public) orgroups:read(private) scope is in your Slack App’s OAuth scopes. - Try refreshing the channel picker after a moment.
The 🙈 Reaction — What It Means
If someone @mentions the bot in a channel but their Slack account is not linked to an Auxot user, the bot does not run the agent on that message. Instead it adds a 🙈 (see-no-evil) reaction to the message — a quiet signal that they need to link their account.
- This reaction is used in mentions-only channels so busy channels are not spammed with replies.
- In all-messages channels, unverified users are silently skipped — the bot does not react or reply.
- Direct messages from an unlinked user receive a short explanation pointing them to Settings → Linked Accounts.
Once the user completes linking, mentions and DMs are handled with full verified identity (tools, identity context in the thread, etc.).
Linking Your Slack Account (Every User)
Linking is self-service and org-wide: you link once; every Slack bot in your organization can recognize you.
Where to go
Settings → Linked Accounts.
Steps
- Click Link My Slack Account.
- Select the Slack integration (workspace) you want to link.
- Enter your display name — exactly as it appears in Slack (e.g.
Kyle Minklerorkminkler). The bot searches the workspace and resolves your user ID automatically. - Click Send Code. Auxot generates a verification code and has the bot DM it to you in Slack.
- Open your Slack DMs — you should have a message from the bot with your code.
- Reply to the bot in that DM with:
VERIFY <code>(e.g.VERIFY ABC123).
After a successful verify, the bot sends a confirmation DM. From then on you can chat with the agent in any bound channel, or via DM.
Didn’t receive a DM?
- Make sure the bot has been installed to your workspace (Part 1, step 6).
- Confirm the
im:writescope is in your Slack App’s OAuth scopes — without it the bot cannot open DMs. - Try opening a DM with the bot in Slack first (some Slack workspace settings prevent unsolicited DMs from bots that have never messaged you).
- Go back to Linked Accounts and initiate a new code — Auxot generates a fresh one; old pending codes are replaced.
Resend / new code
If you lose the code or it expires, start the link flow again from Linked Accounts. A new code is generated and DMd immediately.
Admins
Org admins can revoke linked Slack identities from the admin panel or via agent tools, returning that user to unlinked behavior until they re-link.
How the Bot Behaves
Mentions and channel messages
- Checks whether the Slack channel is bound on the agent’s Slack card — silently ignores any unbound channel.
- Checks whether the Slack user is linked to an Auxot account — adds 🙈 and stops if not (mention channels), or silently skips (all-messages channels).
- Sends the message to the thread coordinator for that agent.
- Posts the reply as a Slack thread reply under the original message. All follow-up turns continue in that same thread, keeping the channel timeline clean.
Long replies are chunked at 3,800 characters. Each chunk goes into the same thread.
Direct messages
The bot handles DMs from verified users the same way as channel mentions. Each Slack user gets their own DM thread per integration — separate bots in the same workspace give separate conversation threads.
Control tokens
The agent can use control tokens in its reply:
| Pattern | Effect |
|---|---|
NO_REPLY | No Slack message is sent (conversation is still stored server-side). |
REACT:thumbsup (Slack emoji name after REACT:) | Adds that reaction to the triggering message instead of (or before) sending text. Unicode emoji like 👍 are also accepted and normalized automatically. |
Formatting
Replies use Slack’s mrkdwn format. Bold (*bold*), italic (_italic_), and inline code (`code`) work. Standard markdown headers (#, ##) do not render in Slack — the bot’s prompt instructs the agent to use plain text structure instead.
Troubleshooting
Bot online but no reply in a channel
- Confirm a channel binding exists for that channel on the agent’s Slack card (Settings → Agents → [agent] → Slack → Channels).
- If Respond to is Mentions only, you must @mention the bot.
- For private channels, confirm the bot was manually invited before the binding was added (
/invite @YourBotName). Public channels are joined automatically when the binding is created. - Unlinked users get 🙈 when they mention the bot — link via Settings → Linked Accounts.
Bot responding to everything in a channel
- Check the channel binding’s Respond to setting — switch it to Mentions only.
”Sending messages to this app has been turned off”
Slack blocks DMs to the bot unless you explicitly enable them. In the Slack API portal, open your app → App Home → scroll to Show Tabs → enable “Allow users to send Slash commands and messages from the messages tab”.
Verification code not arriving
- Confirm
im:writeis in the Slack App’s Bot Token Scopes. - Confirm App Home → messages tab is enabled (see above).
- Check the bot’s status on the agent’s Slack card — if it shows an error the bot may be offline.
”Your Slack account isn’t linked” DM on every message
- Complete the account linking flow in Settings → Linked Accounts (see above).
Bot stopped responding after a token change
- Rotating a Bot Token or App-Level Token in the Slack portal invalidates the old one. Update both tokens on the agent’s Slack card and save.
Deployed on-premise or behind a firewall
Socket Mode only requires outbound HTTPS/WSS from your Auxot server to Slack:
wss://wss-primary.slack.com:443
No inbound ports or public URLs are needed. Ensure your firewall allows outbound connections to *.slack.com on port 443.
Security Notes
- Bot tokens and App-Level tokens are stored encrypted; the API does not return them after save.
- Verification codes are handled server-side; do not paste codes in public Slack channels.
- Tool access and org credentials are tied to verified Auxot identity — unlinked users cannot trigger tool execution.
- Linking binds a Slack user ID to one Auxot user per workspace, scoped to that workspace’s team ID. The same Slack user in two different workspaces requires two separate link operations.