Overview
The Slack integration connects an agent from one workspace to your own Slack app. Once it is set up, your team never has to open the console to ask a question:- DM the bot, or @-mention it in a channel, and get answers grounded in your team’s memory
- Answers stream in segments — a “thinking…” placeholder appears immediately, then the content refreshes piece by piece
- Send it a document or a screenshot, then ask follow-up questions about the content
- Every exchange becomes memory, so nobody has to explain the same thing twice
Before you start
On the MemoryLake side
- The owner or admin role in your team (members can neither see nor edit integrations)
- A workspace with at least one project
- At least one agent linked to that workspace (done on the workspace’s Agents tab)
On the Slack side
- An account that can create apps in the target workspace (most workspaces allow everyone; if app installs require admin approval in your company, the install step will need an admin)
- A test channel (optional but recommended)
Part 1: create the app in Slack
Everything in this part happens at api.slack.com/apps. The goal is to obtain two values: the Bot User OAuth Token (starts withxoxb-) and an App-Level Token (starts with xapp-).
The recommended path is creating the app from a manifest: paste one JSON blob and the scopes, event subscriptions, DM entrance and Socket Mode are all configured at once — nothing to forget.
Create the app from a manifest
display_information.name is the display name your colleagues see — change it to something the team will recognize; features.bot_user.display_name becomes the bot’s username for @-mentions and only accepts lowercase letters, digits, hyphens and underscores — anything else fails with “The display_name cannot be converted to a username”.Manifest-to-settings mapping (for review, or for manual setup):users:read is strictly optional: without it, every person in the console’s Actors list shows as a U08J5K7UXH6-style id and the bot cannot answer “who am I” — everything else works. It is included in the manifest; keep it.Generate an App-Level Token
connections:write scope, and copy the generated xapp- value.You can view this token again in the same place at any time.Install to the workspace and copy the Bot User OAuth Token
xoxb-) appears at the top of the OAuth & Permissions page. Copy it.Part 2: create the integration in the console
Open the workspace's IM tab
Step 1: paste the Slack app credentials
Step 2: pick the agent and memory scope
Create and connect
T…:U… composite value.Part 3: verify and start using it
Direct messages
Members find the app under Apps in Slack’s sidebar and just ask — no @ needed. A “thinking…” placeholder appears first, then the answer refreshes in segments. The (edited) marker on the message is normal — streaming works by editing the same message in place.Channels
First add the bot to the channel (/invite @botname, or follow the prompt when you mention it), then @-mention it with your question.
The answer lands in a thread under your question, keeping the channel itself uncluttered. The first time the bot is mentioned in a channel it appends a one-line capability note; it never repeats it.
Sending documents and screenshots
- DM: just send the file or image, then ask about it
- Channel: put the file and the @-mention in the same message (attach the file, type “@bot + your question”, send together)
Sessions and context
- DMs are continuous: context never expires, even overnight. To start fresh, send
new(just that word, no slash) - Channels are per-thread: one thread is one topic, follow-ups inside it keep full context with no expiry — coming back to the same thread a day later still works. For a new topic, start a new thread (mention the bot at the channel level again)
- Inside a thread, each person’s context is isolated — several people mentioning the bot in one thread do not bleed into each other
- Files sent in a DM never expire and stay attached to the session;
newclears them. Files sent in a channel stay usable in that thread for about 30 minutes
new and not /new? The Slack client intercepts anything starting with / as a slash command — the message is never sent. So the reset word in Slack has no slash: send new in a DM (any capitalization, as the entire message), or @bot new inside a thread.Who is who
Each Slack user maps to a distinct actor in MemoryLake; personal memory attaches to the right person, while memory written into the project is shared. With theusers:read scope in place, actors show real names and the bot can answer “who am I”.
What the bot cannot handle yet
Voice and video messages get an explicit “can’t process this yet” reply rather than silence. Users from Slack Connect shared channels who belong to external organizations are silently ignored — they consume none of your quota and write nothing into your memory.Managing an existing integration
FAQ
The DM input box is grayed out: Sending messages to this app has been turned off
The DM input box is grayed out: Sending messages to this app has been turned off
Mentioning it in a channel gets no reaction
Mentioning it in a channel gets no reaction
- Is the bot in the channel?
/invite @botname - Is
app_mentionsubscribed, and did you Reinstall after adding it? - Was it a thread reply without a mention? Thread follow-ups must mention the bot — unmentioned messages are never delivered
- Is the integration disabled? (a disabled integration replies “the bot is currently unavailable”)
Sending /new pops up “not a valid command”
Sending /new pops up “not a valid command”
/ prefix as a slash command — the message never left your input box.The reset word in Slack has no slash: send new in a DM, or @bot new inside a thread.Changed scopes or events, nothing happens
Changed scopes or events, nothing happens
Actors show a U-prefixed id instead of a name
Actors show a U-prefixed id instead of a name
users:read scope, then Reinstall.What happens when the token is revoked or the app uninstalled
What happens when the token is revoked or the app uninstalled
tokens_revoked and app_uninstalled subscribed, the integration turns red within seconds, with the reason spelled out. Without them, the status may stay green for hours (until the connection happens to rebuild) — which is why the setup insists on all four events.Note that revoking the Bot User OAuth Token uninstalls the app — the bot disappears from the workspace. To recover: app config → OAuth & Permissions → Reinstall to Workspace (this issues a new token), then edit the integration and replace just the Bot User OAuth Token (the App-Level Token is unaffected).Status reads “Invalid credentials — check the Bot User OAuth Token / App-Level Token”
Status reads “Invalid credentials — check the Bot User OAuth Token / App-Level Token”
- A token was mispasted (extra whitespace, missing characters)
- The Bot User OAuth Token was revoked, or the app was reinstalled (reinstalling issues a new token while the console still holds the old one)
- The App-Level Token was deleted
Answers refresh in chunks rather than word by word
Answers refresh in chunks rather than word by word
Creation rejected: token rotation or Enterprise install unsupported
Creation rejected: token rotation or Enterprise install unsupported
- Token rotation (
xoxe-prefixed tokens): they expire every 12 hours, incompatible with the static-credential model. Disable rotation and take a fresh token. - Enterprise Grid org-wide installs: install per workspace (Install to Workspace, not org-wide) and create one integration per workspace.
Can one Slack app back two workspaces?
Can one Slack app back two workspaces?
Who can use the bot? Is there an allowlist?
Who can use the bot? Is there an allowlist?
- DMs: anyone in the workspace where the app is installed
- Channels: whoever is in a channel the bot has been added to
- Slack Connect external users: always ignored — no quota use, no memory writes
Can members see each other's conversations?
Can members see each other's conversations?
- Conversation context is per-person. In the same thread, A’s exchange never appears in B’s context.
- Project memory is shared. Whatever lands in the read-write project is searchable by everyone who can reach the bot — that is the point of the feature, and why the read-write project is an authorization decision.
The bot says the quota is exhausted, or asks me to retry later
The bot says the quota is exhausted, or asks me to retry later
- “Your account quota is exhausted…” — the team’s plan quota ran out. It does not recover on its own; contact the admin to top up or upgrade.
- “We’re handling many requests, please retry shortly.” — momentary load on our side, not you sending too fast. Just retry.
What does deleting the integration remove?
What does deleting the integration remove?