Security Checklist
This checklist was written in partnership with Bold Tech, an internal tool development agency specializing in Retool.
As a Retool Center of Excellence agency, Bold Tech works with many enterprise companies to support, build, and maintain their Retool apps. Founder Joey Karczewski, Head Developer Stefan Cvrkotic, and Retool Customer and Partner Education Lead Chris Riley have compiled a list of the ten essential security points they recommend every team check before deployment. These points reinforce, supplement, or provide additional recommendations above the Retool security hardening best practices.
Retool has plenty of enterprise-grade security features that can ensure your apps and data stay compliant and secure when using Retool apps in your organization. Nevertheless, you must audit your apps to ensure no small detail is missing, and the following checklist items are meant to help.
1. Make sure public apps are toggled off
We’ll start with a simple one but one that is surprisingly often overlooked by even security-conscious companies on Retool: checking public apps is turned off in the share settings.
When a user has access to a single public app in Retool, this means that, in theory, they have access to all public apps. Users can see a list of all other publicly embedded app URLs in the network tab of the user’s browser. For example, if you made a public-facing app on your website for non-Retool users and another one behind a password, that user could toggle between those apps.

In theory, if the app is made public, anyone on the Internet could view it if they access any embedded links in your environment.
2. Ensure that the All Users permission group grants no access to applications or resources
For the following few points, we’ll head to the Permissions settings in the Retool environment. First, another simple but essential point is to carefully govern the All Users permission group. As a security best practice, we recommend that the All Users permission group gives users access ONLY to the Retool environment and nothing else by toggling all access settings off.

There are very few cases where this group should be used to grant access to any apps or resources, so we think it’s best avoided completely. Given that the All Users permission group can implement company-wide settings, allowing any kind of permission to be managed within this group is strongly discouraged. We find that if the All Users permission group is utilized to grant application access in any way, it’s easy for security protocols to get lost over time and for developers to accidentally give resource or app access to all users by misusing defaults.
Actions: Have the Retool Administrator confirm that the All Users permission group has disabled access to apps, workflows, resources, or query library. Instead, the administrator should create custom permission groups with appropriate access.
3. Aim for simplicity when creating permission groups
Now, let’s stay in the permissions settings for another checklist point. Permissions can be a complex topic in Retool, and customers with large user bases must carefully manage them. Engineering managers in charge of deploying Retool should know the permission group structures and how they are managed, especially as users can be part of several different groups, and permission sets can get complex quickly.
We recommend creating tight company guidelines for managing this before deployment to ensure all developers stay compliant and do not accidentally expose information.
Our most essential recommendation is to keep things simple, with the ability to overview permissions at a glance. You can do this by setting permission groups on the application level, creating groups per application or page, or creating them on the action level. Although this might lead to more permission groups that simply contain developers, customer service reps, managers or similar, breaking these groups down by the actions themselves makes it much easier to maintain an overview of who is allowed to do what.
If you use access management software like Entitle or pushing groups from Okta, we recommend creating permissions at the action level and making bundles for each team. This method also helps avoid instances where you give a user edit access to a vast range of apps when trying only to provide them with additional permissions for one.
4. Make sure Retool permissions are managed natively and without intermediary variables
A common permissioning style in Retool is pulling a user’s group into a variable and using that variable to manage permissions. This is an anti-pattern: variables in Retool can be spoofed. Use the Current User object, groups property, and default permission sections on queries to ensure a more sophisticated user can’t manipulate your data.
Actions: Within an application, use the current_user.groups value to determine the appropriate value.
5. Check the permission group’s ’Additional Settings’ on group creation
Our final permissions setting checkpoint: when creating permission groups inside Retool, it’s important to note that some additional settings can accidentally expose data. Firstly, if the query library is toggled on inside a user group, regardless of the user’s permission group, users in that group could perform queries on all resources.

Secondly, Release Versions are also toggled on by default. This means that users can access older versions of the selected application. If an older application version is exposed, users can still perform actions on it by navigating to the past version.
Actions: As the Retool Administrator, go to Settings > Permissions > (Group name) > Additional. Set Query library to No access. Disable the Allow access to unpublished releases.
6. Ensure localStorage is not used with sensitive information
Now let’s focus on the app level - something that must be checked in all apps before deployment: localStorage should not be used to store sensitive or user data.
Unfortunately, it’s quite common for developers to use this pattern in Retool to save sensitive information to the user’s browser using localStorage. Using localStorage exposes data to other websites in the browser and isn’t a secure way of storing PII.
Actions: Double-check your apps by examining the use of localStorage by accessing each Retool App and selecting State > Globals > localStorage to confirm no PII is being stored. The recommendation is to store PII information in secure backend storage such as a database and data minimization (e.g., just the data you need to perform a task).
7. Make sure that SQL queries aren’t pulling in more data than is being displayed
Here’s another point to check in your apps - we’ve seen plenty of apps with SELECT * SQL queries that filter the data via JavaScript. The issue with this approach for filtering data is that you can then access this data via the network tab.
For your apps to be secure, avoid loading too much data from the backend and employ data minimization, only querying what you need. This is also a great way to improve performance. Just because you aren’t displaying the data doesn’t mean it's inaccessible to other users who shouldn’t see it. Best security practice means only pulling in the data you absolutely need.
Actions: Use SQL filters and be prescriptive about the specific columns of an SQL table that are required for the Retool App. Examine the following blog to see further examples.