Slack app setup
Your Isomorph agent connects to Slack over Socket Mode, which requires two tokens: a Bot User OAuth Token (xoxb-…) for identity and permissions, and an App-Level Token (xapp-…) for the persistent WebSocket link. This guide walks through generating both from a manifest.
Create the app from a manifest
The onboarding flow generates a ready-made app manifest — it pre-configures every scope and event your agent needs. Use it so you don't have to click through 30+ checkboxes by hand.
- In the onboarding form, enter your agent's name, then click Generate Slack manifest. The manifest is copied to your clipboard automatically.
- Open api.slack.com/apps → Create New App and choose From a manifest.
- Pick your workspace from the dropdown and click Next.
- Select the JSON tab, clear the default content, and paste the manifest you just copied.
- Review the scopes and events listed (they match what the agent uses — no extras), then click Create.
Install the app and copy the bot token
- After the app is created, click Install to Workspace on the app's settings page (or from the banner at the top of the page) and click Allow.
- In the left sidebar, go to OAuth & Permissions.
- Copy the Bot User OAuth Token — it starts with
xoxb-. This is what you paste into the Slack bot token field in the onboarding form.
Generate an App-Level Token for Socket Mode
Socket Mode keeps a persistent outbound WebSocket connection from your agent to Slack — no public webhook URL required. It needs a separate token with the connections:write scope.
- In the left sidebar, go to Basic Information, then scroll to App-Level Tokens.
- Click Generate Token and Scopes, give it any name (e.g. socket-mode), and add the scope
connections:write. - Click Generate and copy the token — it starts with
xapp-. This is the Slack App Token your Isomorph control plane needs during agent initialization.
Add your Slack user IDs
The agent uses an allowlist to decide which Slack users it will respond to. You need the member ID for each person, not their display name. Member IDs look like U01ABC23DEF and never change even if a user renames themselves.
- In Slack, click on any user's name to open their profile.
- Click the ⋯ More (three-dot) menu and choose Copy member ID.
- Paste the IDs (comma-separated) into the Whitelisted Slack user IDs field in the onboarding form.
Invite the bot to your channel
The agent needs to be a member of the Slack channel it monitors. Once the app is installed and your agent is onboarded:
- Open the channel you set as your agent's home channel.
- Type
/invite @your-agent-nameand press Enter, or use the channel members panel to add the bot.
The agent's Slack display name matches the fork name you entered during onboarding.
Modify the app (name, scopes, events)
You can update your app's name, bot scopes, and subscribed events at any time from the Slack app settings. Some changes require reinstalling the app before they take effect.
Renaming the app
- Open your app at api.slack.com/apps and go to Basic Information.
- Edit the App Name and Display Name fields, then click Save Changes. The name update takes effect immediately — no reinstall needed.
Adding or removing bot scopes
- In the left sidebar, go to OAuth & Permissions and scroll to Scopes → Bot Token Scopes.
- Click Add an OAuth Scope to add a scope, or the trash icon next to any existing scope to remove it.
- After any scope change, Slack shows a banner: “You've changed the permission scopes…” Click Reinstall your app in that banner (or go to Install App in the sidebar) and click Allowagain. Slack issues a new bot token — copy it and update your agent's secret in AWS Secrets Manager.
missing_scope errors.Editing the full manifest directly
The quickest way to make several changes at once — name, scopes, events, and settings — is to edit the raw manifest:
- In the left sidebar, go to App Manifest.
- Edit the JSON directly. Key fields:
display_information.name— the app name shown in Slackfeatures.bot_user.display_name— the bot's @-handle display nameoauth_config.scopes.bot[]— the list of bot permission scopessettings.event_subscriptions.bot_events[]— Slack events the bot receivessettings.socket_mode_enabled— must staytruefor Socket Mode
- Click Save Changes. If scopes changed, reinstall the app to get a new bot token as described above.
slack/manifest.json in the agent repo. If you're unsure what to add, check that file first — it reflects exactly what the bridge expects.Rotate or update tokens
Both the bot token and the App-Level Token can be regenerated at any time. Do this if a token is compromised, if you reinstalled the app after a scope change, or as part of a routine credential rotation.
Rotate the bot token (xoxb-)
- Go to OAuth & Permissions and click Revoke Token. This immediately invalidates the current token — your agent will lose Slack connectivity.
- Click Reinstall to Workspace (or go to Install App → Install to Workspace) and click Allow. Slack issues a new bot token.
- Copy the new
xoxb-…token and update theargus/<tenant>/slack-bot-tokensecret in AWS Secrets Manager. The agent picks up the new token on its next container start.
Rotate the App-Level Token (xapp-)
- Go to Basic Information → App-Level Tokens.
- Click the token name to expand it, then click Revoke.
- Click Generate Token and Scopes, re-add the
connections:writescope, and click Generate. - Copy the new
xapp-…token and update theargus/<tenant>/slack-app-tokensecret in AWS Secrets Manager.
Update the allowed-user list
The agent allowlist (ALLOWED_SLACK_USERS) lives in the same Secrets Manager secret as the tokens. To add or remove a user:
- Open AWS Secrets Manager, find the secret named
argus/<tenant>/credentials, and click Retrieve secret value → Edit. - Update the
ALLOWED_SLACK_USERSfield (comma-separated member IDs, e.g.U01ABC23DEF,U02XYZ45GHI). - Save the secret. The change takes effect on the next container start.
Troubleshooting
The bot token starts with xoxp- instead of xoxb-
You copied the User OAuth Token instead of the Bot User OAuth Token. Go to OAuth & Permissions and copy the token under the Bot Token heading.
Socket Mode won't connect — the agent logs show a connection error
Check that you added the connections:write scope to the App-Level Token (xapp-) and that Socket Mode is enabled under Settings → Socket Mode.
The agent doesn't respond to my messages
Confirm your Slack member ID is in the agent's allowlist (ALLOWED_SLACK_USERS in the fork's AWS Secrets Manager secret) and that the bot has been invited to the channel.
I need to rotate the bot token
Go to OAuth & Permissions, scroll to Tokens, and click Revoke. Then reinstall the app — Slack generates a new bot token on each installation.
API calls started failing with missing_scope after I edited the manifest
Scope changes require reinstalling the app before they take effect. Go to Install App → Install to Workspace, click Allow, and copy the new xoxb- token into Secrets Manager.
The agent name in Slack didn't update after I changed the manifest
Display name changes apply immediately after saving the manifest (no reinstall needed). If the old name still shows, try refreshing Slack or waiting a few minutes for Slack's cache to clear.
I rotated a token but the agent is still using the old one
The bridge reads credentials at container start. Restart the agent container (or wait for the next task to spawn a fresh container) after updating the secret in Secrets Manager.
Ready to onboard?
Once you have both tokens and your user IDs, head back to the onboarding form to finish setting up your agent.
Onboard an Agent →