SchemaBounce for Slack
The SchemaBounce Slack app puts your hosted SchemaBounce agents inside Slack. Mention the app in a channel, send it a direct message, or use the /schemabounce command. The agent you connected to that channel runs in your SchemaBounce workspace, with the same tools, approval rules and spending limits it has everywhere else, and posts its answer in the Slack thread.
Publisher: SchemaBounce · schemabounce.com · Contact us · [email protected]
AI outputs can be inaccurate. Check an agent's answer before you act on it. Agent actions that need a decision wait for a person in the SchemaBounce Inbox.
Slack decides which plans show its agent chat (the app's Messages tab). Channel mentions, direct messages and the /schemabounce command work on free Slack workspaces.
What it does
- A person in Slack mentions the app, sends it a direct message, or runs
/schemabounce. - SchemaBounce checks that the Slack request is signed by Slack and that the person is allowed to use the agent bound to that channel.
- The agent runs in your SchemaBounce workspace.
- The answer is posted back in the same Slack thread. A progress message shows while the agent works.
Earlier messages in the thread are given to the agent as context for that one request (the newest 50 messages, about 20 KB at most).
Install it
You need a SchemaBounce workspace and permission to manage its agents. Slack asks someone who can install apps in your Slack workspace to approve the install.
- In SchemaBounce, open Settings > Channels and select Connect Slack.
- Slack shows the permissions listed in Permissions below. Approve them.
- You return to SchemaBounce with the Slack workspace connected.
To remove it, delete the connection in Settings > Channels, then remove the app in Slack under Manage apps. Deleting the connection in SchemaBounce deletes the stored bot token and the channel bindings.
Connect a channel to an agent
- In Settings > Channels, create a channel binding: pick a Slack channel and the agent that answers there.
- For a public channel, the app joins it for you. For a private channel, invite the app first (
/invite @SchemaBounce). - Mention the app in the channel. The bound agent answers.
- Optional: turn on Answer every message on the binding to let the agent reply to every message in that channel without a mention. See Let an agent answer every message in a channel.
Talk to an agent
There are four ways to reach an agent from Slack. Pick the one that fits the conversation.
| Way in | You do | Best for | Needs |
|---|---|---|---|
| Mention | Type @SchemaBounce in a connected channel, then your message | A one-off question in a shared channel | A channel binding |
| Agent thread | Reply in a thread the agent already answered in, no mention | Back-and-forth with the agent on one topic | The agent answered in that thread in the last 30 days |
| Answer every message | Type in the channel, no mention | A channel that exists for one agent, like #ask-exec | Answer every message turned on for that binding |
| Agent chat | Open the SchemaBounce app, then its Messages tab, and just type | Private one-to-one work with an agent | At least one channel binding; pick the agent with use |
Everything you send is checked the same way, whichever way in you use: Slack must have signed the request, you must be a member of the SchemaBounce workspace with access to run agents (matched by your verified Slack email), and the agent must be enabled.
Mention the app
@SchemaBounce what changed in the pipeline overnight?
Pick SchemaBounce from Slack's autocomplete list when you type @. A mention typed as plain text, without picking it, is not a mention and the app ignores it.
To ask a different agent that is allowed in the same channel, put its name after a colon:
@SchemaBounce:sre-devops is the checkout service healthy?
The answer arrives in a thread under your message. You see a progress message while the agent works, then the reply appears as it is written.
Keep talking in the agent's thread
Once an agent has answered in a channel thread, reply in that thread without a mention:
you @SchemaBounce summarize this week's failed runs
agent (thread) Here are the failed runs and why each one stopped...
you (thread) which agent costs the most this week?
agent (thread) Here is the spend per agent for this week...
Anyone in the channel who is allowed to use the agent can reply in that thread. A thread stays an agent thread until it has been quiet for 30 days. A new thread needs a new mention.
Let an agent answer every message in a channel
For a channel that exists for one agent, a workspace admin turns on Answer every message on that channel's binding in Settings > Channels. After that, any message in the channel goes to the agent, no mention needed.
- It is off by default, and only people who can manage agents can change it.
- Every message starts a run and uses credits. Keep it to channels made for the agent, not busy team channels.
- Messages from other bots and Slack's own notices (joins, edits, channel topic changes) never start a run.
A good setup: create #ask-exec, bind it to Executive Assistant, turn on Answer every message, and invite the people who should use it.
Agent chat (direct messages)
Open the SchemaBounce app in Slack (from the sidebar under Apps, or the Slack top bar) and go to its Messages tab. Type normally; no mention or command is needed. Each conversation is its own thread. Slack shows a working status and a stop button while the agent runs; pressing stop cancels the run. Suggested prompts appear when you open the tab.
Choose which agent you are talking to:
/schemabounce agents
/schemabounce use executive-assistant
agents lists the agents you can talk to, by name and slug. use saves your choice, matched by slug or name, and it stays until you change it. /schemabounce use on its own shows your current choice. Both commands work in the agent chat and in any channel, and only you see the reply.
Which agent answers
| Where you are | The agent that answers |
|---|---|
| A connected channel | The agent bound to that channel, or the one you name with @SchemaBounce:agent-name |
| An agent thread | The agent that answered in that thread |
| The agent chat | 1. The agent of the channel you were viewing when you opened the app. 2. Your /schemabounce use choice. 3. The only connected agent, if there is exactly one. |
| A channel with no binding | None. A mention gets "This channel is not connected to an agent" and nothing runs. |
With several connected agents and none of the agent chat rules above applying, the app does not guess. It replies with a note pointing at /schemabounce use.
Commands
| You type | What happens |
|---|---|
/schemabounce help | Shows the agent bound to this channel and these commands. Only you see the reply. |
/schemabounce agents | Lists the agents you can talk to. Works in any channel and in the agent chat. Only you see the reply. |
/schemabounce use <agent> | Chooses the agent your agent chat talks to, by slug or name. /schemabounce use alone shows your current choice. |
/schemabounce agent-name your message | Sends a message to the named agent, if it is allowed in this channel. |
/schemabounce status | Shows the status of runs for this channel's agent. |
/schemabounce cancel <run-id> | Stops a run. |
/schemabounce steer <run-id> <guidance> | Sends new guidance to a run that is still going. |
Approvals
Slack is a notification surface. When an agent needs a decision, the Slack message links to the SchemaBounce Inbox (or to the code session). Approving and rejecting happen in SchemaBounce, never from text typed in Slack, so an approval always has a signed-in person behind it.
Troubleshooting
| What you see | Why | Fix |
|---|---|---|
| "This channel is not connected to an agent" | The channel has no binding in your SchemaBounce workspace | In Settings > Channels, add a binding for this channel. Check you are in the channel you think you are: a direct message with the app is not a channel. |
| "<Agent> is currently disabled" | The agent is turned off in SchemaBounce | Enable the agent on its page in SchemaBounce, or bind the channel to an active agent. |
| "I couldn't tell which agent you want" | You are in the agent chat, several agents are connected, and none was picked | Run /schemabounce use <agent>. /schemabounce agents lists the choices. |
| "Your Slack account is not authorized to run agents in this SchemaBounce workspace" | Your verified Slack email does not match a member of the SchemaBounce workspace who can run agents | Ask a workspace admin to invite that email to the workspace, or to give your role access to run agents. |
| No reply at all to a mention | The mention was typed as plain text, the app is not in the channel, or the channel has no binding | Pick SchemaBounce from the @ list. For a private channel, /invite @SchemaBounce. Run /schemabounce help in the channel to see whether it is connected. |
| No reply to a thread message without a mention | The agent has not answered in that thread yet, or the thread was quiet for 30 days | Mention @SchemaBounce once in the thread. Later replies then need no mention. |
| "Slack connection not found" or a binding fails right after reconnecting | The Settings > Channels page was opened before Slack was reconnected and still holds the old connection | Refresh the page and try again. Reconnecting Slack replaces the connection, and its old bindings go with it, so re-create them. |
Slack Search (connect your own account)
Slack Search lets an agent search the messages and files you can see in Slack, using Slack's hosted MCP server.
- Connect it yourself: in SchemaBounce open Agents > Tools, find Slack Search (hosted), select Connect account, and choose Personal. Slack asks you to approve read-only search access.
- Searches run with your own Slack permissions. Private channels, direct messages and group direct messages are searched only if you approve those permissions.
- It runs only when you start the request (chat or a manual run). Scheduled and automated runs have no person behind them and never use your Slack account.
- Results go to the agent for that request. SchemaBounce does not store them as Slack data.
Data and privacy
What SchemaBounce stores for the Slack app:
| Data | Where and how long |
|---|---|
| Slack team ID and name, bot user ID, granted scopes | Stored with the connection until you delete the connection. |
| Bot token | Stored encrypted (AES-256-GCM) with a key derived per SchemaBounce workspace. Deleted with the connection. Never logged and never shown to the browser. |
| Channel bindings (channel ID and name, agent, message count, last message time) | Stored until you delete the binding or the connection. Message text is not part of a binding. |
| Agent chat session bindings (Slack team, channel, thread and user IDs) | Stored so replies reach the right thread. Deleted with the connection. |
| Agent thread records (Slack team, channel and thread IDs, binding) | Stored so replies in a thread need no mention. Ignored after 30 days without activity. Deleted with the binding. No message text. |
| Chat agent choice (Slack team and user IDs, binding) | Stored when you run /schemabounce use. Deleted with the binding or the connection. |
| Requester profile (identity Slack verifies for the person who sent the request) | Held in memory for 5 minutes, then discarded. It is not written to a database. |
| Event IDs | Hashed and kept for 24 hours so a repeated Slack delivery runs once. |
What happens to message text:
- The text of a request goes to the agent as a run. It travels in an encrypted run payload and is stored as agent conversation content in your SchemaBounce workspace, under that workspace's normal data retention. Run records are purged after 90 days by default.
- Earlier thread messages are read from Slack per request and travel only inside that run's encrypted payload. They are not stored separately.
- SchemaBounce does not train any model on your data, and no Slack data is used to train a large language model.
- Slack data is used only to run the agent you connected to the channel. It is not sold and not used for ads.
Which AI model answers: your workspace chooses its model provider and model, including bring-your-own keys. SchemaBounce supports Anthropic, OpenAI, Google Gemini, Meta, xAI, Moonshot, DeepSeek, Qwen, Cerebras, OpenRouter, SubQ and private endpoints. Message text goes to the provider your workspace picked for that agent. Each provider's own retention and data location terms apply to that call.
Uninstalling the app in Slack deletes the stored bot token and the channel bindings. To delete your data, delete the Slack connection in Settings > Channels, or email [email protected]. See Your data is yours, the Privacy Policy and the Security page.
Permissions
The app asks for these Slack permissions. Each one is used by a feature described above.
| Permission | Why the app needs it |
|---|---|
commands | Provide the /schemabounce command. |
channels:read, groups:read | List public and private channels so you can pick one for a binding. |
channels:join | Join a public channel when you bind an agent to it. |
channels:history, groups:history | Receive messages in channels where the app is a member, so a mention reaches the agent. Required for Slack to deliver those message events, and to read earlier thread messages for context. |
im:history | Receive direct messages and agent chat messages sent to the app. |
im:write | Open a direct message to send an Inbox notification. |
chat:write | Post the agent's answers and progress updates. |
assistant:write | Set the agent chat status, title and suggested prompts. |
reactions:write | Add and remove the progress reaction on your message. |
users:read, users:read.email | Match the Slack person to a member of your SchemaBounce workspace by verified email, so the agent runs with that member's permissions. |
search:read.public, search:read.private, search:read.im, search:read.mpim, search:read.files, search:read.users (user token) | Slack Search only. Requested when you connect your own account, read-only. |
Support
Email [email protected] or use the contact page. Related docs: Notifications and integrations, MCP connection setup, MCP ownership and sharing.