Before you begin
You’ll need:- A Slack workspace where you can install a custom app: many workspaces need admin approval for this. Get approval before you start. Slack blocks the installation without it.
- An admin account on the Switch server you’re connecting to: if Switch Console set up the server for you, you have one.
Set up Slack
Create the Slack app from a manifest
Agent Switch app manifest
Agent Switch app manifest
Generate the app-level token
connections:write scope. It starts with xapp-, and it lets Slack send events to Switch without a public address.Install the app and copy the bot token
xoxb-.Note your workspace id
T. Open Slack in a web browser, and the address takes the form https://app.slack.com/client/T…/C…. The segment starting with T is the id.Connect Slack to your Switch server Admin
Open the messaging apps for your server
Start the connection
Name the connection
Paste in the tokens and workspace id
- Bot Token: paste the
xoxb-token from installing the app. - App-level token: paste the
xapp-token. - Workspace Id: paste the
T…id.
Decide whether Switch may create channels
Decide whether agent names autocomplete
@ in a channel. It needs a paid Slack plan and permission for the bot to manage user groups, and it affects how agents look in Slack, not whether the bridge works.If your workspace doesn’t support it, Switch says so once and continues without it. Agent names and progress covers what you get without it.Choose this setting now. Unlike channel creation, you can’t change it in Switch Console or the Gateway once the connection exists, only with a direct call to the Switch server’s API.Connect
Link your Slack account
Bring Switch into a channel
A Slack channel becomes a Switch room when the app joins it. In the channel, invite the app by the name your workspace installed it under:Confirm it worked
- The connection appears under Messaging apps on the server’s Home page with no error beside its name. A connection that failed to start shows its status there in red.
- The channel you invited the app to appears under Your Rooms in Switch Console.
- Typing
/in the channel offers the Switch commands.
What to expect in Slack
- Agents post under their own names and icons, except when they upload a file. Slack doesn’t allow a per-message sender on uploads, so a file posts under the app, with the agent’s name in the accompanying comment.
- Rooms are channels, not direct messages. For a private one-to-one, use a private channel holding just you and one agent. You still address the agent with
@, as in any other channel. See Address an agent. - Scheduled messages count as real messages. A recurring post from Slack Workflow Builder addresses an agent exactly as a typed message does. Schedule recurring work covers what else has to be true for it to wake one.
Agent names and progress
To address an agent, type@ and its name. One app serves every agent, so without autocomplete Slack treats the name as plain text, with no completion and no mention. A typo looks like an agent ignoring you. Agent name autocomplete adds completion, and Switch shows progress while an agent works.
Names that complete as you type
Switch creates a Slack user group for each agent, with the agent’s name as its handle. The groups are empty and notify nobody. They exist to appear in the@ menu. Switch marks the groups it creates and leaves your workspace’s other groups alone.
Both of these have to be true, and Switch can’t arrange either:
- A paid Slack plan. The free plan has no user groups.
- Permission for the bot to manage user groups. This is usually admin-only. An admin changes it in Workspace settings → Roles & permissions → Account types. Until then, Slack refuses the bot.
Progress on the message being worked on
While an agent works, Switch posts a status message under the agent’s name and icon, with an Open in Switch Console link, and updates it as the work goes on. It readsWorking… and the time so far while the turn runs, and Worked for and the total when it finishes. The message stays in the channel afterwards, so anyone scrolling back can see the turn ran.
Links to Switch Console need the server’s public address. That covers Open in Switch Console and the links agents post to Switch Console pages. Slack can’t open them without it, so an agent’s link to a page arrives as the page’s name in words instead. See Set the server’s public address.
Switch also marks the message that asked with 👀 until the turn ends. The 👀 mark needs only the reaction scopes, and because it marks the message rather than a thread, it works anywhere in a channel.
If autocomplete isn’t available
The connection still works without autocomplete:- You still address agents by typing
@agent-name. You lose the autocomplete, not the addressing. - An agent’s progress arrives as a status message under its own name and icon, with an Open in Switch Console link.
- The message being worked on is marked with 👀, on any plan and in any channel.
Configure the app by hand
Skip this section if you used the manifest, which sets everything here. Use this section to build the app from scratch, or to check an app that isn’t working.Bot token scopes
Bot token scopes
chat:write,chat:write.customize: post each agent’s messages under its own name and icon.commands: the Switch slash commands.channels:read,channels:manage: look up, create, set the topic of, and invite into public channels.groups:read,groups:write: the same for private channels.channels:history,groups:history,im:history,mpim:history: read message history for context.im:read,im:write: direct messages.users:read: resolve display names.files:read,files:write: relay attachments in both directions.reactions:read,reactions:write: reaction acknowledgements, including the 👀 on the message an agent is working on.usergroups:read,usergroups:write: the per-agent user groups that make agent names autocomplete.assistant:write: declares the app an Agent. It’s in the shipped manifest, but Switch doesn’t use it. Slack adds this scope itself when you turn on the Agents feature.
Event subscriptions
Event subscriptions
app_home_opened, message.channels, message.groups, message.im, and message.mpim. With Socket Mode there’s no request URL to supply. Slack rejects an app declared an Agent unless it subscribes to app_home_opened.You don’t need app_mention. Switch finds messages that tag the app in the message.* events it already receives.Socket Mode, interactivity and commands
Socket Mode, interactivity and commands
The Agents feature
The Agents feature
agent_view block, and Slack adds assistant:write for you.Troubleshooting
A Switch command is missing
A Switch command is missing
Agent names don't complete when you type @
Agent names don't complete when you type @
@ and the agent’s name.On a paid plan, ask a Slack admin to let the bot manage user groups, or create the groups yourself. See Names that complete as you type. On the free plan, autocomplete isn’t available.Switch commands appear in a channel that isn't a room
Switch commands appear in a channel that isn't a room

