Scopes
The permissions we request
Eight minimal bot scopes. Each row carries the sentence Slack shows you on the consent screen, what the scope lets us do, and what stops working without it.
| Scope, and what Slack calls it | Why we request it | What breaks without it |
|---|---|---|
channels:readSlack says: “View basic information about public channels in your workspace” | List public channels so you can choose where reps post. | No channel picker for public channels. |
groups:readSlack says: “View basic information about private channels that Atomic Reps has been added to” | List the private channels you are in so you can target one. | You could not point the daily rep at a private channel. |
users:readSlack says: “View people in your workspace” | Map Slack users to workspace members so an answer counts toward the right person. | We could not credit an answer to the right member. |
users:read.emailSlack says: “View email addresses of people in your workspace” | Read the email to link a Slack identity to an account (the email-match claim gate). Never read at install. We fetch an email one person at a time, when the installer claims the workspace or a member first answers. | No automatic linking; the free-tier claim gate could not verify the installer. |
chat:writeSlack says: “Send messages as @atomicreps” | Post the daily rep into your channel, and edit it to close at the end of the day. | The bot cannot post, so no daily rep reaches your channel. |
chat:write.publicSlack says: “Send messages to channels @atomicreps isn't a member of” | Post to the channel you chose even if nobody has invited the bot to it. | You would have to /invite the bot to a channel before it could post there. |
im:writeSlack says: “Start direct messages with people” | Send direct messages: DM-mode daily questions and apprentice updates. | No DM delivery; /reps mute would have nothing to turn off. |
commandsSlack says: “Add shortcuts and/or slash commands that people can use” | Register the /reps slash command, the entry point for practice, stats, and help. | No /reps command. |
No message-history scopes
We do not request any message-history scope (channels:history, im:history, or similar). We never read message content from your channels or DMs. The only input we process is the answer you submit through our interactive components.
This is the same set documented on the Security page and decoded line by line on the Slack page. An automated parity test checks it against the published Slack app manifest, so the scopes you approve on the consent screen are exactly the scopes listed here. For the fields each scope moves, see data flows.
