Skip to content
Who'll Do Add to Slack

Security

Slack permissions

Who'll Do asks for these bot permissions, and nothing that reads your channel messages:

  • channels:read: See who is in a public channel, so we can pick from its members.
  • groups:read: See who is in a private channel the bot was added to, for the same reason.
  • chat:write: Post the assignment message, update it when someone presses Done or Can't, and send DMs.
  • commands: Provide the /wholl-do and /wholl-do-config slash commands.
  • users:read: Skip bots, deactivated accounts and people who are away, and use the scheduler's time zone.
  • usergroups:read: Pick from a Slack user group (/wholl-do pick @group).
  • app_mentions:read: Reply with the command list when someone @mentions the bot.
  • im:history: Reply with the command list when someone sends the bot a direct message. Messages are not stored.

How requests are verified

  • Every request from Slack is checked against Slack's signing secret (HMAC-SHA256) with a timestamp window, and rejected if it does not match.
  • Stripe webhooks are verified with Stripe's signing secret, and each event is processed once.
  • All traffic is served over HTTPS.

How tokens and data are stored

  • The tokens Slack issues for your workspace are encrypted at rest (AES-256-GCM, Rails Active Record encryption) in our application database, which is not reachable from the internet. The encryption keys are kept separately, in encrypted credentials.
  • Application secrets (Slack and Stripe keys) are kept in encrypted Rails credentials, with separate files for development and production.
  • Passwords are stored as bcrypt hashes. Card details never reach us; Stripe handles them.
  • Uninstalling the app deletes your workspace's data; see the privacy page.

Who has access

Only the operator of Who'll Do has access to the production server and database. Support never needs access to your Slack workspace.

Reporting a problem

Found a vulnerability? Email [email protected]. We reply within one business day.