Relay security
This page explains what Slack access Relay asks for, how it protects the data it keeps, and how that data is deleted. The full details are in the privacy policy.
Slack permissions
Relay asks Slack for these 8 bot permissions (scopes) and no user permissions. Bot permissions only cover conversations Relay is a member of, and Relay never joins a channel by itself. It reads a channel only after someone types /invite @Relay there.
channels:history: To receive messages in public channels someone invited Relay to, so your assistant can read them and reply.groups:history: The same, for private channels a member invited Relay to.channels:read: To learn a public channel's name and members when Relay is added, for the channel list, the Home tab, reminders and the check before your assistant posts there.groups:read: The same, for private channels Relay was invited to.chat:write: To post your assistant's replies and reminders, and Relay's own welcome note, channel introduction and help replies.im:history: To receive direct messages people send to Relay itself.im:write: To open a direct message with the person who installed Relay and send a welcome note with next steps.users:read: To check who is a workspace admin or owner, find guests before your assistant posts, and get names and time zones for reminders. Looked up when needed, not stored.
Signing in to Relay's settings page with Slack is a separate step. Slack sends Relay the person's name and email address, and Relay does not store or use them. It only uses the Slack user ID and workspace ID.
Encryption of stored data
- Message text, assistant replies and daily summaries are encrypted with AES-256-GCM. Each workspace has its own random 256-bit key. That workspace key is itself encrypted with a separate master key, and only the encrypted copy is kept in the database.
- Slack access tokens, your assistant's signing keys and webhook sender keys are encrypted with AES-256-GCM.
- Every encrypted value uses a fresh random starting value (IV), and AES-256-GCM refuses to decrypt a value that was changed.
- The master key and the token key are not stored in the database.
- Assistant tokens, setup links and sign-in sessions are stored only as one-way hashes (SHA-256), so they cannot be read back.
- If a message contains something that looks like a password, API key or token, Relay replaces it with "[REDACTED SECRET]" before storing the message.
Keeping workspaces separate
- The database keeps each workspace's data separate: every request can only see rows for the one workspace it is working on.
- Your assistant's token only works for your workspace, so it cannot read another workspace's messages.
- Relay checks that the person opening a workspace's settings page is a workspace admin or owner, or the person who installed Relay. A Slack sign-in to that page lasts 14 days.
Checks on every request
- Relay checks Slack's signature on every event it receives, and rejects events whose timestamp is more than 5 minutes off.
- Relay signs every notice it sends to your assistant, and only sends notices to secure (https) web addresses.
- Those notices hold IDs and labels only, never the message text. Your assistant reads messages through Relay with its own token.
- When your assistant says which message it is answering, Relay checks the post first and blocks it if it would move content from a direct message, a private channel or a Slack Connect channel to people who should not see it.
How long data is kept
Messages, replies and daily summaries are kept for 1, 3 or 7 days (7 by default), then deleted by a daily cleanup job, so an item can last up to one extra day. The security and change history is kept for 90 days. The privacy policy lists every record and how long it is kept.
When Relay is removed
When Relay is removed from a workspace, or Slack reports that Relay's bot access was revoked, Relay right away:
- stops reading messages for that workspace and deletes Slack's access token;
- deletes all stored messages, assistant replies, daily summaries and unused pairing codes for that workspace.
The rest of the setup is kept for 13 days so a workspace admin or owner, or the person who installed Relay, can reconnect without setting it up again. After 13 days a daily job deletes it, so everything is gone within 14 days of removal. One line recording that the workspace was deleted stays in our history as proof of deletion, and is deleted after 90 days. The privacy policy lists exactly what is kept and what remains.
Asking for deletion
To have everything deleted sooner, or to ask for a copy of your data, email operations@wonderworkflow.com from an address we can match to your workspace, and tell us the workspace name. We reply within 2 business days and complete the request within 14 business days.
Where data is hosted
Relay's app and its database both run in the United States: Vercel hosts the app in its iad1 region (Washington, D.C.), and Neon hosts the database in its iad1 region (Washington, D.C.). Relay offers no other region today.
AI
Relay runs no AI model of its own and never uses Slack data to train an AI model. Your workspace connects its own assistant, and what that assistant reads is handled by its provider. See AI and data.
Report a security issue
Email operations@wonderworkflow.com with what you found and how to reproduce it. Never send passwords, API keys or tokens by email. We will never ask for them.