Auth middleware gaps, exposed credentials, rate limiting, and missing security headers — what Bolt builds and what it leaves unconfigured.
Bolt.new is designed to get a working application in front of users as fast as possible. That goal is in direct tension with security configuration, which slows down the build loop and produces no visible output. The result: Bolt generates a deployable app, and the security layer is simply not there.
This is not a criticism of Bolt.new. It is the expected behaviour of any AI code generator optimised for speed. The problem is that many founders deploy without running any audit, assuming the generator handles security automatically. It does not. For a complete pre-launch checklist, see our Bolt.new security guide.
Every audit covers four dimensions. Each maps to a specific set of checks with documented severity scoring.
The largest dimension. Checks every protected API route for authentication middleware, scans the client bundle and Git history for committed secrets (API keys, service_role keys, database credentials), verifies that rate limiting exists on /login, /signup, and /reset-password, confirms CSRF protection on state-changing routes, and validates HTTP security headers — Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, and Strict-Transport-Security. Input validation checks confirm that server-side validation exists, not just client-side form logic.
Bolt-generated code often has happy-path error handling and no fallback for service failures. Reliability checks cover: uncaught promise rejections that crash the server process, missing try/catch around database queries, no graceful degradation when Supabase or external APIs are unavailable, and error responses that leak stack traces, internal file paths, or database schema to the browser.
AI code generators are prone to N+1 query patterns — a loop that makes one database call per item instead of a single bulk query. Performance checks include: N+1 query detection, missing database indexes on foreign keys and columns used in WHERE clauses, oversized JavaScript bundles from unoptimised dependency imports, and synchronous blocking operations on the request thread.
The most commonly skipped dimension. Bolt apps frequently ship to production with no error tracking, no uptime monitoring, and no alerting. Monitoring checks confirm whether an error tracking integration (detected by outbound request signatures) is present and configured, whether uptime checks are in place, and whether logging captures enough context to debug production incidents without attaching a debugger.
The distinction between what Bolt generates and what it skips is where every security finding lives.
| Bolt builds this | Bolt does not configure this |
|---|---|
| UI components and routing | Authentication middleware on API routes |
| Database schema and queries | Supabase RLS policies on tables |
| API endpoints | Rate limiting on auth and sensitive endpoints |
| Form validation (client-side) | Server-side input validation and sanitisation |
| Environment variable references | Correct client/server variable separation |
| Deployment configuration | HTTP security headers (CSP, HSTS, X-Frame-Options) |
| Auth flow structure | CSRF protection on state-changing routes |
| Error responses | Error tracking and production monitoring |
| Finding | Severity | CWE |
|---|---|---|
| Auth middleware missing on protected API routes Routes that should require login accept unauthenticated requests. Any caller can read or modify other users' data. |
P0 | CWE-306 |
| Credentials in client bundle or Git history API keys, database credentials, or service_role keys appearing in files accessible to the browser or committed to the repository. |
P0 | CWE-312 |
| Supabase RLS disabled (CVE-2025-48757 class) Tables without RLS allow any user with the public anon key to read and write all rows. The anon key is in the client bundle by design. |
P0 | CWE-284 |
| No rate limiting on auth endpoints /login, /signup, /reset-password accept unlimited requests per IP. Brute-force and credential-stuffing attacks are unrestricted. OWASP A07:2021. |
P1 | CWE-307 |
| CSRF protection absent State-changing routes accept cross-origin requests without validating origin or using CSRF tokens. Attackers can trigger actions on authenticated users' behalf. |
P1 | CWE-352 |
| HTTP security headers not configured Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, and Strict-Transport-Security absent. Opens the door to clickjacking and XSS. |
P1 | CWE-693 |
| Server-side input validation missing Validation exists only in client-side form logic. Any direct API call bypasses it — allowing oversized payloads, injection characters, and malformed data. |
P2 | CWE-20 |
| No error tracking or monitoring Production errors are invisible. You learn about outages from support tickets, not alerts. No error tracking integration detected. |
P2 | CWE-778 |
CVE-2025-48757 is frequently cited as a Lovable vulnerability. The root cause — Supabase tables with RLS disabled — is equally present in Bolt-generated apps. Bolt creates Supabase schemas without enabling row-level security. The Supabase anon key is present in the client bundle. The result is identical: a direct GET request to the Supabase REST endpoint returns all data in unprotected tables, with no authentication required.
170+ apps across vibe-coding platforms were found to be exposing user data through this class of misconfiguration. Bolt apps using Supabase are in the same exposure category as Lovable apps.
The SQL to check your Bolt app's RLS status in Supabase:
-- Check your Bolt app's Supabase RLS status: SELECT schemaname, tablename, rowsecurity FROM pg_tables WHERE schemaname = 'public' ORDER BY rowsecurity, tablename; -- Any row showing rowsecurity = false is publicly accessible -- Fix: ALTER TABLE your_table ENABLE ROW LEVEL SECURITY;
For a fully automated check, use the free Supabase RLS Checker — enter your Supabase project URL and get a table-by-table RLS status report in seconds.
Three options depending on how much depth you need.
URL-based scan. No code access, no signup required. Enter your app's URL at launchreadycode.com and get a Launch Readiness Score out of 100 in under 60 seconds. The score covers all four dimensions and flags the highest-severity findings. This is the right starting point before launch.
The full diagnostic. All findings, each with CVSS v3 severity, file-and-line references, and a specific recommended fix. Delivered in under 2 minutes. Includes a prioritised fix roadmap with time estimates, a benchmark comparison against 200+ audited vibe-coded apps, and a branded PDF report. The LRA is the definitive answer to "what does my Bolt app actually need to be production-safe?"
If your most urgent concern is the CVE-2025-48757 class of database exposure, run the SQL above in your Supabase SQL editor. Any table showing rowsecurity = false is world-readable. Fix: ALTER TABLE your_table ENABLE ROW LEVEL SECURITY; then write owner-scoped policies. This addresses one P0 finding — a full audit covers the other seven patterns in the findings table.
Six steps that address the most common critical and high-severity findings before your app reaches real users.
grep -r "sk-\|service_role\|secret" ./dist ./public 2>/dev/null. Rotate any key that was ever in a client file.SELECT tablename, rowsecurity FROM pg_tables WHERE schemaname = 'public'; — every false is a public database. CVE-2025-48757 class.Content-Security-Policy, X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Strict-Transport-Security: max-age=31536000.URL-based scan. No code access. No signup. Free Launch Readiness Score in 60 seconds — security, reliability, performance, monitoring.
Scan my Bolt app — freeBolt.new is a capable builder that generates production-deployable applications. It does not configure the security layer: authentication middleware, rate limiting, CSRF protection, HTTP security headers, and server-side input validation require manual implementation after Bolt generates the code. The Cloud Security Alliance documented 20 security incidents in AI-powered applications in February 2026 alone. All of these gaps are standard hardening steps, fixable once identified.
An LRC Bolt.new security audit covers four dimensions: Security (auth middleware, credential exposure, CSRF, rate limiting, HTTP headers, input validation), Reliability (error handling, uncaught exceptions, graceful degradation), Performance (N+1 queries, missing indexes, bundle bloat), and Monitoring (error tracking, uptime checks, alerting). Methodology: OWASP Top 10, CWE Top 25, CVSS v3 severity scoring.
In order of severity: missing authentication middleware on API routes (P0), credentials in the client bundle or Git history (P0), Supabase RLS disabled — the CVE-2025-48757 class (P0), no rate limiting on auth endpoints (P1), CSRF protection absent (P1), HTTP security headers not configured (P1), server-side input validation missing (P2), no production error tracking (P2).
Yes. Bolt apps that use Supabase have the same RLS exposure as Lovable apps. Supabase ships with RLS disabled by default on every table. Bolt-generated schemas do not enable it. Any user with the public anon key — which is in the client bundle by design — can read all data in unprotected tables. Use the free Supabase RLS Checker or run SELECT tablename, rowsecurity FROM pg_tables WHERE schemaname = 'public'; directly in your Supabase SQL editor.
A free Launch Readiness Score is available at launchreadycode.com — URL-based, no signup, 60 seconds. The full Launch Readiness Audit Report is $499 one-time, delivered in under 2 minutes. Ongoing monitoring starts at $149/month. Code Care DFY Technical Setup ($1,999 setup fee + $2,999/mo) implements every fix with a named engineer reviewing every change before it merges.
Sources: CVE-2025-48757 (NVD / Matt Palmer, May 2025); Cloud Security Alliance AI Application Security Report, February 2026; OWASP Top 10 2021; CWE Top 25 2024; Supabase documentation. This page provides general security guidance, not a certification or guarantee.
Compliance Wing
Security fixed. Now check your compliance.
EU AI Act enforcement is now live — fines up to €15M or 3% of global turnover for undisclosed AI systems. GDPR, SOC 2 foundations, and ISO 27001 foundations are separate obligations your security scan does not cover. One additional scan, 60 checks, 3 minutes. $799 — credited toward full implementation if you need it.
Run Compliance Score — $799 → 7-day money-back · No code access required