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

ScopeWhy it’s needed
app_mentions:readReceive @mention events
channels:historyRead messages in public channels
channels:readList public channels for the channel picker
groups:historyRead messages in private channels the bot is in
groups:readList private channels
im:historyRead direct messages
im:readList DM conversations
im:writeOpen DMs to send verification codes
reactions:writeAdd emoji reactions to messages
chat:writePost messages
channels:joinAuto-join public channels when a channel binding is added in Auxot
users:readResolve 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 bot
  • message.channels — messages in public channels
  • message.groups — messages in private channels
  • message.im — direct messages to the bot

Click Save Changes.

6. Install the app and copy the Bot Token

In the left sidebar, click Install AppInstall 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

  1. On the agent’s Slack card, open the Channels tab.
  2. Choose a channel from the list (the bot must already be in it — see Part 3).
  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.
  4. 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) or groups: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

  1. Click Link My Slack Account.
  2. Select the Slack integration (workspace) you want to link.
  3. Enter your display name — exactly as it appears in Slack (e.g. Kyle Minkler or kminkler). The bot searches the workspace and resolves your user ID automatically.
  4. Click Send Code. Auxot generates a verification code and has the bot DM it to you in Slack.
  5. Open your Slack DMs — you should have a message from the bot with your code.
  6. 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:write scope 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

  1. Checks whether the Slack channel is bound on the agent’s Slack card — silently ignores any unbound channel.
  2. Checks whether the Slack user is linked to an Auxot account — adds 🙈 and stops if not (mention channels), or silently skips (all-messages channels).
  3. Sends the message to the thread coordinator for that agent.
  4. 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:

PatternEffect
NO_REPLYNo 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:write is 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.