Monroe

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.