When building Slack apps (or any apps that integrate with other systems), I hope it’s obvious that you should ask for the weakest possible permissions required to implement your desired features. What may not be quite so obvious is that, for savvy users, asking for the weakest possible permissions is a feature itself. It’s worth thinking about this when deciding what other features to build and how to build them. We did when it came to Scatterdot.
Now that Slack supports fairly granular permissions, compare the permissions Scatterdot asks for:
To the perms asked for by another app in the same space:
I’m physically and emotionally incapable of accepting the latter set of permissions for a Slack team that I care about. 👏 to Slack for calling out the more invasive permissions to encourage others to have a similar reaction.
Asking for the weakest possible permissions is also a huge benefit for you as an app developer. If you can avoid having far-reaching access to sensitive internal information belonging another company, you are much less of a target for hacks/abuse. The worst case consequences are also a lot better.
One example of a place where we avoided unnecessary access is our mechanism for finding a specific Scatterdot discussion in your Slack team history. When you add a comment to a Scatterdot associated with a Slack team & channel, a notification appears in the channel, and then the discussion continues there:
But what if, later on, you are looking at that Scatterdot and want to find that discussion? Check out the “Go to discussion” links below:
This is important functionality, but we didn’t want search or any other access to the chat history. Thankfully, Slack returns enough info when you post a message to build a transcript link. If you click “Go to discussion”, you get a message from Scatterdot that sends you to the right place in your chat history, without Scatterdot itself having any access to that history:
This is just one of the ways we tried to be thoughtful about permissions, offering a useful feature set without asking for the keys to your vault. For more: