Slack Integration
Reach your agent from Slack — mention it like a teammate, and pick up the conversation in the web chat when you need to.
Your agent runs on your own machine. Slack is how your team reaches it: @mention the Evident bot in a channel or send it a direct message, and your message is routed to your agent. Replies come back in the same thread, with a link to open the full conversation in the agent's chat.
Pro feature: Slack integration requires a Pro plan. See pricing.
Setup
1. Connect your Slack workspace
Open your Slack settings and start the Slack OAuth flow from the integrations page. Authorize the Evident app in Slack, and you'll be redirected back to the integrations page showing Connected.
The connection belongs to your team, not to the person who set it up: everyone on the team shares the same connection, default agent, and enabled state. Each team has its own, isolated Slack connection — connecting (or disconnecting) one team never affects another.
2. Set a default agent
Choose the default agent that handles Slack messages. Unless a per-channel or inline override applies, every message routes to this agent.
If no default agent has been configured yet, the bot will tell whoever messages it that an agent needs to be set up first — it won't silently do nothing.
3. Start messaging
In a channel the bot is in, @mention it (for example
@Evident help me with this code). Or send the Evident bot a direct
message. Either way, a conversation is created for that
thread and the message is sent to your agent.
How messages flow
- You @mention the bot in a channel, or DM it directly.
- The bot reacts to your message to acknowledge it was received — a "waiting" reaction while the message is queued, swapped for a "running" reaction once the agent actually starts working on it.
- Once the agent starts running, a notice with a small "View in Evident" link is posted at the top of the thread so you can watch progress live in the agent's chat. (No link is posted while the message is only queued — there's nowhere specific to point at yet. The link is posted once per thread.)
- When the agent finishes, its reply is posted back in the same Slack thread and the acknowledgement reaction is removed.
Replies are posted on completion, not streamed token-by-token. Slack stays tidy: you get a clean reply plus a "View in Evident" link to dig into the full answer in the rich chat.
Channels, threads, and DMs
- The bot only acts when mentioned. Plain channel chatter that doesn't @mention the bot is left alone — no response, no conversation created.
- Each thread is its own conversation. Two different threads in the same channel create two separate conversations, each with its own context. Follow-up messages in a thread continue the same conversation.
- Direct messages create a conversation too, and the agent replies in the DM.
- Thread context. When you mention the bot in an ongoing thread, the agent is given the thread's messages since its last reply as context — so it can act on earlier instructions it wasn't directly mentioned on. The first message in a brand-new thread has no prior context.
Choosing the agent for a message
There are three levels of control, in increasing precedence. An inline override on a single message wins over a per-channel override, which in turn wins over the workspace default agent.
Per-channel overrides
From your Slack settings you can assign a specific agent (and mode/model) to a
channel. For example, assign code-reviewer to #pull-requests:
messages there route to code-reviewer, while messages in other channels
keep going to the default agent.
Inline message overrides
You can also choose, right inside a single message, which agent, which mode, and which model handle that one message — without an admin changing any settings. Write the choices at the start of the message, after the bot mention:
- Agent — in square brackets:
[agent](by name or by its identifier) - Mode — after a plus sign:
+mode - Model — in curly braces:
{model}
Each part is optional, and they may appear in any order. For example:
@Evident [code-reviewer] +plan {anthropic/claude-opus-4.8} review this PR
This sends "review this PR" to the code-reviewer agent, in
plan mode, using the anthropic/claude-opus-4.8 model. The
choice markers themselves are never part of what the agent is asked to work on — only
the remaining text is.
How they behave:
- Any order, all optional.
{model} [agent] +mode …works just as well as[agent] +mode {model} …. - They apply to that one message only and override any per-channel or default setting. An inline choice wins even in a channel that has its own override.
- Only leading markers count. Markers must come first, before the rest of your message; a bracket or brace mid-sentence is treated as ordinary text.
- The same syntax works in direct messages.
- Unknown agent → graceful fallback. If you name an agent that isn't in your team (or belongs to another team), you're privately told it couldn't be found and your default agent is used. Your message is never routed to anyone else's agent.
Questions and permissions
Sometimes the agent needs interactive input mid-task — it has a question, or it's asking for permission to do something. Evident does not try to collect that answer in Slack. Instead:
- A notice is posted in the thread saying the agent has a question (or is requesting permission), @mentioning the person whose message triggered it.
- The notice carries an "Open" button that opens the conversation in the agent's chat — at that specific conversation when its location is known.
- You make the decision in the agent's chat, not in Slack. There are no answer buttons, and no Approve/Deny buttons, in Slack.
- While the agent waits for your answer, the turn is not reported as done and no reply is posted yet. A repeated request for the same input posts only one notice.
As soon as you answer in the agent's chat, the same turn resumes: its reply is posted to the Slack thread, the processing reaction is removed, and the original notice updates to show the request was answered (the "Open" action is removed). If the turn ends without succeeding, the notice updates to show the request is no longer active.
The "View in Evident" link
Every reply posted back to a thread includes a small "View in Evident" link. It opens the conversation in the agent's chat so you can dig into the full answer — at that specific conversation when the working location is known, or the agent's chat otherwise. This is also how you watch a long-running task live.
When your agent is offline
Slack messages are never rejected for being offline. If your runner isn't connected when a message arrives, the bot still reacts to acknowledge it, and the message is held. When the runner connects and processes the message, the response is posted back to the Slack thread and the acknowledgement reaction is removed on completion. You never lose a message.
Disconnecting
Disconnecting Slack unlinks the workspace for the whole team and stops the bot responding, so it's an admin-only action: a regular member who tries is told they don't have permission, and the connection is left unchanged. An organization owner or admin can disconnect from the integrations page — and then connect a different workspace if they want.
Tips
- Use threads for multi-turn work — each thread maps to a single conversation.
- Keep your runner connected so messages are answered promptly (offline messages are still queued and answered on reconnect).
- Use the "View in Evident" link to answer questions, grant permissions, and read the full response.
Next steps
- Local runner — keep your agent reachable from your machine
- Teams & auth — roles, scoping, and who can disconnect Slack
- Troubleshooting — fixes for common Slack and runner issues