Documentation
Slack install
Step 1 — Install the Slack app
In your dashboard, go to Connect apps → Slack and click Install. You'll be redirected to Slack's OAuth consent screen, which lists every scope by name. Grouped by purpose:
Read: channels:history, channels:read, groups:history, groups:read, im:history, im:read, mpim:history, mpim:read — read messages in public, private, direct, and group conversations Monroe is invited to. app_mentions:read for @-mention triggers, files:read to read shared files, links:read to unfurl Monroe-posted links, users:read + users:read.email to resolve mentions, team:read for workspace metadata, reactions:read to read emoji reactions.
Write: chat:write + chat:write.public to post messages (in invited channels and in public ones we haven't been invited to yet, so a /monroe slash command in a fresh channel still works). im:write + mpim:write to send DMs and group DMs. files:write to upload reply attachments. links:write to unfurl. reactions:write to react to messages.
Slash + Assistant pane: commands for the /monroe slash command, assistant:write to render in Slack's Assistant pane, channels:join so Monroe can join a public channel programmatically when you ask it to.
User scope (acts as the installing user): search:read for search.messages — needed when you ask Monroe "find that Q4 spec doc in Slack."
Monroe never asks for admin.* scopes. We don't need them. The full list is enforced in marketing/app/api/slack/install/route.ts — if there's ever drift between this doc and what the OAuth flow requests, the install route's SLACK_SCOPES array is the source of truth.
Step 2 — Invite Monroe to channels
By default, Monroe is silent in every channel. Invite it to the ones you want it active in:
/invite @Monroe
Common patterns:
#standup— Monroe runs morning briefs#customer-support— Monroe summarizes + drafts replies#revenue— Monroe handles account research + follow-ups#engineering— Monroe drafts release notes + summarizes PRs
Monroe will only act when @-mentioned or DM'd. It doesn't auto-respond to random channel activity.
Step 3 — Set approval channels
If a channel is high-stakes (e.g. #customer-facing), workspace admins can require Monroe approvals to be issued by a specific subset of users. Settings → Approvals → Per-channel.
Troubleshooting
- Monroe doesn't respond in a channel. Did you invite it (
/invite @Monroe)? Public channels need an invite even though the OAuth scope allows read. - "Channel not found" errors. Slack changed the channel ID since we cached it. Reconnect the workspace.
- Slack rate-limit warnings. Monroe respects Slack's tier-1 rate limits. If you're seeing this consistently, contact support.
Next: Teams install, OAuth connectors.