Connect MyAgens to Slack
Slack is one of the three ways into MyAgens, alongside Telegram and the web panel. Connect it and Atlas answers you in a direct message in your own workspace: replies stream as they are written, tool approvals arrive as buttons you can click, and background alerts land in the same DM. This guide sets it up from scratch.
Slack is optional and additive. You can run panel-only, panel plus Telegram, panel plus Slack, or all three. Adding Slack later never means reinstalling anything.
Direct messages only. The Slack surface answers DMs from the member IDs on your allow-list, and nothing else. Inviting the app to a channel does not give that channel a way in, on purpose: a channel invite must never become access to the machine MyAgens runs on.
What you need
- MyAgens already installed and running. If you have not got that far, start with Set up MyAgens in five minutes.
- A Slack workspace where you are allowed to install apps. On many workspaces installing an app needs an admin's approval, so if the install button asks you to request permission, that is your workspace policy, not MyAgens.
- Two minutes at api.slack.com/apps.
1. Start from the panel, not from a text editor
Open the panel and go to Settings → Slack. The first-run wizard has the same step if you are still in initial setup, with a Skip button if you would rather add Slack later.
Doing it here rather than by hand in .env matters, because this is the worst part of Slack to set up blind: there are two tokens that look alike and live on different pages of the Slack admin, plus a member ID most people have never had to look up. The panel checks each token against Slack before it saves anything, so a swapped bot and app token is caught immediately instead of at the next restart. Tokens saved here go into the encrypted vault and take effect straight away, with no restart.
2. Create the Slack app from the manifest
At api.slack.com/apps, choose Create New App → From an app manifest, select your workspace, pick JSON, and paste the manifest. The panel shows you the exact one to copy; it looks like this:
{
"display_information": { "name": "MyAgens Atlas" },
"features": {
"app_home": {
"home_tab_enabled": false,
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
}
},
"oauth_config": {
"scopes": {
"bot": ["chat:write", "files:read", "files:write", "im:history",
"im:read", "im:write", "search:read", "users:read"]
}
},
"settings": {
"event_subscriptions": { "bot_events": ["message.im"] },
"interactivity": { "is_enabled": true },
"socket_mode_enabled": true
}
}
The manifest is doing three jobs worth knowing about:
messages_tab_enabledis what gives the app a DM tab you can actually type in.socket_mode_enabledmeans Slack connects out to MyAgens over a WebSocket. You do not need a public URL, a tunnel, or an open port for Slack to work.interactivityis what makes the Approve, Deny, and question buttons reach the bot. Leave it on unless you have a reason not to; see If your buttons do nothing below.
3. Generate the app-level token
Still in your new app, go to Basic Information → App-Level Tokens and click Generate Token and Scopes.
- Name it something recognizable, for example
myagens-socket. - Add the
connections:writescope. That single scope is what Socket Mode runs on. - Copy the token. It starts with
xapp-.
4. Install the app and copy the bot token
Go to OAuth & Permissions and click Install to Workspace, then approve the scopes. Slack gives you a Bot User OAuth Token starting with xoxb-.
The two tokens are easy to mix up.
xapp-is the app token from Basic Information,xoxb-is the bot token from OAuth & Permissions. Paste each into its own field in the panel and it will tell you immediately if they are the wrong way round, along with which workspace the bot token actually belongs to.
5. Prove it is you
MyAgens only answers the Slack member IDs on its allow-list and silently ignores everyone else, exactly like the Telegram user ID allow-list.
You do not have to go hunting for yours. With both tokens verified, the panel waits for a direct message: open Slack, find your new app under Apps, and send it anything. The panel picks up your member ID from that message and fills it in. The bot's own ID is excluded, so it cannot nominate itself.
If you would rather find it manually, open your Slack profile, click the ... menu, and choose Copy member ID. It starts with U.
6. Say hello
Save, and Slack connects without a restart. Send Atlas a message in the DM and you should get a streamed reply. Try !ping first if you want the smallest possible test.
Commands use !, not /
Slack never delivers a /command that an app has not declared, so the Slack surface uses a ! prefix instead. These work with no extra Slack configuration at all:
| Command | What it does |
|---|---|
!help |
List the available commands |
!ping |
Confirm the surface is alive |
!status |
Current agent, working directory, autonomy, and usage |
!new |
Start a fresh conversation |
!stop |
Abort the running turn, and cancel a pending question or approval |
!pwd / !cd |
Show or change the working directory |
!mode |
Read or set the autonomy level |
!lang |
Set the reply language |
!allow / !disallow / !allowed |
Manage always-allow tool presets |
!usage |
Token and cost usage |
If you prefer the / form, declare the same commands under Slash Commands on your Slack app. The handlers are already registered for both, so they start working as soon as Slack knows about them.
If your buttons do nothing
Approval and question buttons only reach the bot when your Slack app has Interactivity turned on. If it is off, or your workspace strips it, everything still works by typing:
- Answer a question with its option number, its option text, or your own words.
- Answer an approval with
yes,no, oralways. Addallto settle a whole batch at once. !stopcancels a pending question or approval as well as aborting the turn.
The Slack surface is not the Slack connector
These are two separate features and it is worth keeping them straight:
- The Slack surface (this guide) is how you talk to Atlas: a DM, on your account, with your allow-list.
- The Slack connector is how your agents talk to Slack: listing channels, reading history, posting messages, replying in threads, searching, and uploading files, using a credential you attach in the panel's Connectors view.
You can run either without the other. Turning on the surface does not give agents the ability to post in your channels, and adding the connector does not give you a DM with Atlas.
Using .env instead
If you would rather configure Slack in the environment file, the three variables still work and are used whenever nothing is set in the panel:
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
SLACK_ALLOWED_USER_IDS=U0123456789
SLACK_ALLOWED_USER_IDS takes a comma-separated list. Leaving the line out entirely, or leaving it empty, means "Slack not configured" and MyAgens starts normally without it.
Turning it off
Clear the tokens in Settings → Slack (or remove the SLACK_* lines from .env) and the surface stops. MyAgens keeps running as long as you still have one way in: the panel, Telegram, or Slack. It only refuses to start if nothing is configured, or if one surface is half configured, such as a token with no allow-list.
To remove it from Slack's side as well, delete the app at api.slack.com/apps, which revokes both tokens.
Related
- Approvals and autonomy, keeping risky actions gated covers what the Approve and Deny buttons are actually gating.
- Open the MyAgens web panel if you want the full control room as well as the chat.
- How to create your first Telegram bot with BotFather for the other chat surface.
Get MyAgens
Self-hosted and open source. Install it on macOS, Linux, or Windows, then command your fleet of AI agents from Telegram or Slack.
