Slack
Wire your workspace to Slack so agents can post updates, pull a teammate into the loop, and resume their work as soon as a reply lands — without anyone leaving Slack.
What it does
Once connected, every agent in the workspace gets a small set of Slack tools. They can:
- Notify a channel or DM when a long task finishes, the env gate passes, or something needs eyes.
- Ask a teammate a question and pause until they reply — the reply comes back as a new turn in the same chat session, so the agent picks up exactly where it left off.
- Continue or conclude a Slack thread privately, deciding when (or whether) to involve the original asker in the back-and-forth.
Setup
Slack is configured per workspace under Settings → Communication. There are two stages: a bot token unlocks one-way notifications, and an app-level token unlocks the two-way ask/reply flow.
1. Create a Slack app
Create a new app at api.slack.com/apps and install it to your workspace. Give the bot user the following scopes:
chat:write
chat:write.public
im:write
files:write
users:read
users:read.email2. Connect the bot token
Copy the bot token (starts with xoxb-) from your Slack app's OAuth & Permissions page, paste it into the workspace settings, and save. At this point agents can already post notifications.
3. Enable Socket Mode for two-way replies
In your Slack app, turn on Socket Mode and generate an app-level token (starts with xapp-) with the connections:write scope. Paste it into the second field in workspace settings.
Then enable the following Event Subscriptions on the bot:
message.channelsandmessage.groups— thread replies in channelsmessage.im— replies in DMs
Save. WithVibe opens a Socket Mode connection and starts routing replies back into the sessions that asked for them.
What agents can do
With Slack connected, four tools become available to every agent in the workspace:
slack_notify— post a message to a channel or DM. Fire-and-forget, no reply tracking. Best for status updates and completion pings.slack_ask— post a question to a teammate (by email) or a channel, and register a pending reply. Replies in the resulting thread flow back into the chat session as a new agent turn.slack_continue_thread— keep an ongoing Slack thread going (follow-up questions, clarifications) without surfacing every back-and-forth to the original asker in the WithVibe UI.slack_conclude— wrap up a Slack thread, post a summary, and stop routing further replies for that question.
How a question flows
- A user asks the agent something in a WithVibe chat.
- The agent decides it needs a human and calls
slack_askwith the question and a target (a teammate's email or a channel). - The question appears in Slack as a threaded message — optionally with a file attachment and extra context for the responder.
- The teammate replies in the Slack thread.
- WithVibe's Socket Mode listener catches the reply and triggers a new turn in the same chat session, with the reply as context.
- The agent either continues the thread privately (
slack_continue_thread), wraps it up (slack_conclude), or responds back in chat — pulling the original asker into the loop.
Privacy & scoping
Each slack_askis bound to a specific workspace, session, and Slack thread. Replies are strictly routed back to the session that asked the question — there's no cross-talk between sessions or workspaces sharing the same Slack bot.
By default, intermediate Slack replies are hidden from the original asker's view. The agent controls what surfaces — usually a single clean summary once slack_conclude is called.
Limitations today
- The bot only listens for thread replies— it doesn't monitor or react to ambient channel chatter.
- In channels, the bot only participates when an agent explicitly posts via
slack_notifyorslack_ask. - Token rotation is manual — if Slack rotates tokens, a workspace admin re-pastes them in settings.
- File attachments are capped at 50 MB per call.