IS RETOOL SAFE? SECURITY ANALYSIS | VIBEEVAL
Internal Tool Risk Profile
Retool is a low-code platform for internal tools. It connects directly to your production databases, APIs, and SaaS systems, then exposes that connectivity to whoever has access to the Retool app. The platform itself is well-engineered and SOC 2 / HIPAA compliant. The risk profile is almost entirely about configuration: which database user the resource connects as, which Retool users can run which queries, and what custom JavaScript transformers do with the data on its way out.
The pattern: Retool is fast to build with. Engineering ships an “ops dashboard” in two hours, gives the support team access, and never revisits the resource permissions. Six months later the support team is 30 people and the resource still uses a Postgres role with ALL PRIVILEGES. The platform is fine. The deployment is the problem.
Common Security Issues
Overpermissive Database Access
The single most common finding. Retool resources are configured with a database user, and teams reuse the same superuser-style role across every app:
# What teams ship
DATABASE_URL=postgres://postgres:xxx@db.internal/app # superuser
# What they should ship — per-app least-privileged role
CREATE ROLE retool_support WITH LOGIN PASSWORD '...';
GRANT SELECT ON tickets, users TO retool_support;
GRANT UPDATE (status, notes) ON tickets TO retool_support;
-- no DELETE, no DDL, no access to billing/payments tables
A read-only support tool should connect as a read-only role. A refunds tool should have UPDATE on the refunds table and nothing else. Set per-resource roles, not a single shared one.
Weak RBAC Configuration
Retool’s permission groups gate which users can open which apps and which queries can run. Defaults bias toward “everyone in this group can run everything”:
- Restrict apps to specific groups (
support_l1,ops,admin), not a single org-wide group. - Use Query Permissions to gate destructive operations (DELETE, refund issuance, password reset) to a smaller group.
- Disable Edit Mode for non-engineering users so support can’t accidentally promote themselves by editing the query.
// In a destructive query, gate by group on the query side
{{ current_user.groups.includes('admin') ? trueBranch : falseBranch }}
Don’t rely on UI-only gating — hiding a button via a JavaScript condition is not security.
Custom JavaScript Risks
Retool transformers and JS queries run in a sandboxed iframe but have access to all the data flowing through the app. Patterns that bite:
- A transformer that builds an HTML string with user-supplied notes and renders it in a custom component → XSS visible to the next operator who opens the ticket.
- A transformer that calls a third-party API with the database row directly, leaking PII to a vendor not in your data inventory.
- A debug transformer that
console.logs the full database row, leaving PII in the user’s browser console where browser extensions can read it.
Audit all transformers and JS queries before granting wider app access.
Query Injection
Retool’s query interface supports {{ }} interpolation and parameterized queries via {{ param }} with prepared statement binding. The unsafe pattern is using string interpolation in a SQL query:
-- wrong, SQL injection
SELECT * FROM users WHERE email = '{{ emailInput.value }}'
-- right, parameterized
SELECT * FROM users WHERE email = {{ emailInput.value }}
The difference is the quotes. With quotes, you’re string-concatenating. Without quotes, Retool binds the parameter. Search every app for '{{.
Secrets in Transformers
Developers paste API keys into transformers (“just temporarily, to test the integration”) and the app gets shared. Anyone with edit access to the app can read the key. Use Configuration Variables for secrets, scope them per environment, and never put a secret in a transformer literal.
Common Mistakes We See in Audits
- Single shared
postgressuperuser used by every resource. - All employees in a single permission group with access to every app.
- Destructive queries (DELETE, refund) gated by UI hiding instead of query permissions.
- Transformers that render user-supplied HTML, creating internal XSS.
- API keys hardcoded in transformer literals instead of Configuration Variables.
- Audit logging enabled but never shipped to a SIEM, so nobody reviews it.
- Self-hosted Retool deployed on a public internet IP with no IP allowlist.
current_userchecks on the client without re-validating in the query.
Comparison vs Building It Yourself
Retool’s value is speed — the same dashboard takes a week of React + auth + permissions work to build from scratch. The trade is that you inherit Retool’s permission model and trust it to enforce. For most internal tools this is the right trade. The cases where it isn’t:
- Regulated workflows that need fine-grained audit trails per row mutation. Retool’s audit log captures who ran which query; deeper attribution may need a custom layer.
- Multi-tenant data where row-level security is critical. Push RLS to the database (Postgres RLS, MySQL views) so it’s enforced regardless of who’s querying.
- Highly sensitive operations (financial transfers, key rotation). Add a second-factor approval flow either in Retool Workflows or upstream.
Self-Hosted vs Cloud
- Cloud: Retool manages the platform; you configure resources and users. Faster to ship, less infra work. Confirm SOC 2 / HIPAA scope with their team.
- Self-Hosted: You run Retool in your own VPC. Better fit for regulated environments and data that can’t leave your network. You’re now responsible for patching, backups, and the surrounding infra.
If self-hosted: lock the Retool instance behind your VPN or SSO-protected ingress, never expose it on a public IP, and keep the version current — security patches do ship.
Enterprise Considerations
- SSO: SAML and OIDC SSO on Business and Enterprise plans. Enforce SSO-only login.
- Audit Logs: Comprehensive audit logging on Business+. Stream to Splunk/Datadog/your SIEM.
- Compliance: SOC 2 Type II; HIPAA available with a BAA on Enterprise. Confirm scope for your specific resources.
- Secret rotation: Configuration Variables can be rotated via API. Build it into your secret rotation cadence.
- VPC peering / IP allowlist: Available on Enterprise for Cloud deployments. Required for most regulated databases.
Security Assessment
Strengths
-
- SOC 2 Type II and HIPAA compliance
-
- SSO (SAML/OIDC) and 2FA support
-
- Comprehensive audit logging on paid plans
-
- Role-based access control (RBAC) with permission groups
-
- Self-hosted option for regulated workloads
-
- Granular permissions per app and per query
-
- Parameterized queries via
{{ }}binding when used correctly
- Parameterized queries via
Concerns
-
- Database access requires careful least-privilege configuration
-
- Overly permissive RBAC is the most common audit finding
-
- Custom JavaScript can introduce internal XSS and data leakage
-
- Direct database connections increase blast radius of compromised user
-
- String interpolation in queries creates SQL injection
-
- Secrets in transformers are visible to any app editor
-
- Self-hosted instances on public IPs are routinely exploited
The Verdict
Retool as a platform has excellent enterprise security with SOC 2 and HIPAA compliance and a mature permission model. The security risk is configuration: database role permissions, RBAC scoping, query construction, and what your custom JavaScript does with the data. Use per-resource least-privileged database roles, scope permission groups tightly, parameterize every query that takes user input, and review transformers for XSS and secret handling. With those in place, Retool is one of the safer ways to ship internal tools.
Related Resources
How to Secure Retool
Step-by-step guide covering least-privileged database roles, permission group design, query parameterization, and transformer review.
Retool Security Checklist
Interactive checklist for launch-blockers, week-one items, and the quarterly review.
Self-Hosted Retool Hardening
Network isolation, version management, and SIEM integration for self-hosted deployments.
Scan Your Application
Let VibeEval scan your application for security vulnerabilities — including the SQL injection, over-permissive role, and exposed-transformer-secret patterns that show up most often in Retool audits.
SCAN YOUR APP
14-day trial. No card. Results in under 60 seconds.