Skip to content
BuildThenTestedSee packages

Bolt app security: defaults, what breaks, what to check

Bolt is a browser-based AI app builder from StackBlitz that generates JavaScript web apps and can provision a database and hosting for them. Below: what it configures by default according to its own documentation (verified 2026-09-21), the 15 patterns most associated with it, the security features the vendor offers and where they stop, and a checklist you can run without buying anything.

Bolt Database features (auth, secrets, server functions, security audit) are documented under Bolt Cloud. The docs do not state which frontend framework new projects use by default.

Bolt runs in the browser and generates JavaScript web apps. When a project needs a database, Bolt creates a Bolt Database with built-in authentication, secrets kept in server functions, and publishing to a bolt.host URL by default.

Bolt's docs describe a project security audit and a database security audit that flag missing row-level rules and always-true policies. The checks below cover what those audits do not: how your app's logic behaves with a second account, what the bundle reveals, and how the Stripe integration handles webhooks and plans.

What Bolt sets up by default

Each row is taken from the vendor's documentation on the date shown. Defaults change; the date is the claim.

Defaults of Bolt as documented by the vendor
AreaDefaultSource
FrontendBolt supports JavaScript-based web technologies: Node.js backends and any JavaScript framework that runs in the browser. PHP or Python backends are not supported.docs · verified 2026-09-21
Backend / databaseBolt creates a Bolt Database automatically if the project needs one, unless you ask for local storage instead. Supabase can be selected at project setup as an alternative.docs · verified 2026-09-21
AuthBolt Database includes built-in authentication management for adding user sign-up, plus user management and file storage settings.docs · verified 2026-09-21
HostingNew projects publish with Bolt hosting by default to a random bolt.host URL. On the free plan all published sites are public and indexable; paid plans can choose private. Netlify is an alternative target.docs · verified 2026-09-21
Secrets / env varsSecrets live in the Bolt Database Secrets tab and are read by server functions at run time so that, per the docs, private values do not end up in users' browsers or devices.docs · verified 2026-09-21
Source accessGitHub integration: the repository starts private on a main branch; Bolt commits automatically and pulls outside changes every 30 seconds. Only the project owner can manage the integration.docs · verified 2026-09-21
Database access rulesThe database Security Audit reports missing RLS policies and RLS policies that are always true. Leaked password protection is on by default for Bolt databases.docs · verified 2026-09-21
Payments integrationStripe integration creates Supabase edge functions for checkout session creation, webhook processing and subscriptions; the docs state webhook registration and signature verification are handled automatically.docs · verified 2026-09-21

Documentation home: support.bolt.new/

What breaks in Bolt apps

46 patterns in the catalogue name Bolt; the most severe are listed here across secrets and keys, data access, login and permissions, payments, ai features. Attribution is descriptive: the default stack makes the pattern reachable, or a public incident names it.

Public incidents

Lovable reported that from 3 February to 20 April 2026 a backend regression let any logged-in Lovable user read the chat history and source code of public projects; a fix shipped within two hours.

  • 2026-02-03 to 2026-04-20 Exposure window
  • 2026-02-22 First HackerOne report
  • about 2 hours Time from public report to fix

Apr 2026 · Lovable · all sources

One education app built on Lovable had 16 vulnerabilities, 6 critical; a database function denied callers whose role was 'authenticated', so anonymous callers passed and 18,697 user records were readable without login.

  • 16 Vulnerabilities found
  • 6 Critical
  • 18,697 User records exposed
  • 14,928 Unique email addresses
  • 870 Enterprise users with full PII

Feb 2026 · Taimur Khan · all sources

A scan of 1,645 Lovable-built apps found 170 (about 10.3%) with database endpoints readable without login because Supabase row-level security policies were missing or too broad; recorded as CVE-2025-48757, CVSS 9.3.

  • 1,645 Apps scanned
  • 170 Apps with inadequate RLS
  • 10.3% Share of scanned apps
  • 303 Exposed endpoints
  • 9.3 Critical CVSS 3.1 base score (CVE record)
  • 8.26 Researcher's own CVSS base score
  • 2025-03-21 Scan date
  • 2025-05-29 Public disclosure

May 2025 · Matt Palmer (Replit, Inc.) · all sources

Moltbook, a social network for AI agents built with AI-generated code, ran a Supabase database without row-level security policies, leaving 1.5 million API tokens and 35,000 email addresses readable and writable without login.

  • 1.5 million API authentication tokens exposed
  • 35,000 Email addresses exposed
  • about 17,000 Human account owners in database
  • 2026-01-31 Reported to maintainer
  • 2026-01-31 (within about 2 hours) First fix applied

Feb 2026 · Wiz Research · all sources

Each entry links to its primary source in the evidence list. What to do about it is the self-check below.

Bolt's own security features, and where they stop

Stated from the vendor's documentation. The limits are the vendor's scope statements, not judgements.

  • Project security audit

    Reviews who can see and change data, what the app makes public, sign-in handling, misuse paths such as changing a price, accepted input, and keys and settings. Up to 30 audits per day, and the audit button does not use tokens on paid plans.

    Where it stops: The docs recommend running it at least once before publishing; it skips checks that do not apply and does not state exclusions beyond that.

    vendor docs · verified 2026-09-21

  • Database security audit

    Available on all plans; finds missing RLS policies, always-true policies, mutable function search paths and disabled leaked password protection.

    Where it stops: The docs state this page checks only the database, not the whole project or its code.

    vendor docs · verified 2026-09-21

  • Secrets in server functions

    Secret values are hidden as you type and are read only by server functions when they run.

    Where it stops: Covers values stored as secrets; the docs do not describe checks for values placed elsewhere in code.

    vendor docs · verified 2026-09-21

  • Version history

    Restore a previous point in the project from version history.

    Where it stops: Version history does not support Supabase database restores, and there is no supported flow to migrate a Supabase database into Bolt Database.

    vendor docs · verified 2026-09-21

Check it yourself, in this order

The critical patterns first. Each uses the dashboard and your browser.

NEXT_PUBLIC_ prefix on a secret

  1. In your hosting dashboard (Vercel: Project, Settings, Environment Variables) or your .env files, list every variable whose name starts with NEXT_PUBLIC_.
  2. For each one, ask whether the provider calls that value secret, private, server or admin. Stripe secret keys, model provider keys, database passwords and Supabase service_role keys all fall in that group.
  3. Open the live site in Chrome, right-click, choose Inspect, open the Sources tab and press Ctrl+Shift+F. Search for the first few characters of each suspect value.
  4. A bad result is a NEXT_PUBLIC_ variable holding a server-only key, or a search hit for that key's value in a loaded script.

Secrets committed to the code repository

  1. Open your project on GitHub (or the code view in your builder) and look at the file list for .env, .env.local, .env.production, serviceAccountKey.json or firebase-adminsdk files.
  2. Use the repository search box and search for sk_live, sk-, service_role, BEGIN PRIVATE KEY and password=.
  3. If you have the code on your computer, run one command in the project folder: git log --all -p -S sk_live -- . | head. Any output means a live key has been committed at some point.
  4. On GitHub, open Settings, then Code security, and check whether Secret scanning shows alerts.
  5. A bad result is any env or key file in the file list, any search hit that shows a real key, or an open secret scanning alert.

Service-role key shipped in the browser bundle

  1. Open your live app in Chrome, right-click anywhere and choose Inspect, then open the Sources tab.
  2. Press Ctrl+Shift+F (Cmd+Option+F on a Mac) to search every loaded file. Search for service_role and then for sb_secret_.
  3. Open the Network tab, reload the page, click any request whose address contains supabase.co, and read the apikey header under Request Headers.
  4. In the Supabase dashboard, open Project Settings, then API Keys, and compare that header value with your keys.
  5. A bad result is any search hit, or a header value that matches the service_role or secret key rather than the anon or publishable key.

Bolt pre-launch checklist

46 checks, in the order we run them. Usable without buying anything.

Self-check tool

Answer questions about your app and get the patterns that apply, ordered by severity. Runs in your browser; nothing is sent.

Run the self-check

Packages for Bolt apps

Pre-launch check

Start here

For founders about to let real users in.

$490

Report in 48 hours
  • Keys and secrets in the browser or repo
  • Who can read and change whose data
  • Login, roles and admin routes
  • Errors, retries and rate limits
  • Debug mode, headers, deploy path

What you receive

Security sweep

For anyone who wants the three riskiest areas checked fast.

$290

Report in 24 hours
  • API keys and secrets in the bundle
  • Row-level rules on every table
  • Cross-user data reads
  • Admin and hidden routes
  • Client-only permission checks

What you receive

All packages and prices. Every report includes a re-check after your fixes.

Questions about Bolt

bolt new app security

A Bolt app inherits the security posture of its database rules, its server functions and its published URL. Check that every table has row-level rules, that secrets live only in the Secrets tab and never in frontend code, and that server functions verify the caller. Bolt's built-in audits report the first item; an independent test covers the rest.

bolt app audit

We test a Bolt app from the outside with two accounts: read the JavaScript bundle for keys, call the database API as a stranger and as each user, probe server functions and payment webhooks. Findings come with a fix direction that works inside Bolt's chat.

is my bolt app safe to deploy

Run Bolt's database security audit, then the self-check on this site. If tables show missing or always-true rules, fix those first. Then a security sweep confirms the fixes hold against a real second account.