Skip to content
BuildThenTestedSee packages

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

Replit is a cloud development platform whose Agent writes code, sets up infrastructure such as databases and auth, and publishes apps to Replit hosting. 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.

Replit's security checklist is written for apps built with Agent and separates what the platform provides from what the developer must add.

Replit's Agent writes the code, provisions a PostgreSQL database with separate development and production copies, and publishes to a .replit.app domain. Secrets are stored encrypted and exposed as environment variables; Replit Auth offers sign-in with Replit accounts.

Replit's security checklist for Agent-built apps separates what the platform provides from what you add. The main things to add are authorization checks in your own code, rate limits, and a habit of never letting an agent touch production data directly. The checks below follow that split.

What Replit 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 Replit as documented by the vendor
AreaDefaultSource
FrontendAgent builds web apps, mobile apps, dashboards and AI tools in one project; the docs do not name a default frontend framework.docs · verified 2026-09-21
Backend / databaseAsking Agent adds a PostgreSQL database, accessed through environment variables, with separate development and production databases and restore to any Agent checkpoint.docs · verified 2026-09-21
AuthReplit Auth signs users in with their existing Replit accounts on a Replit-branded page; there is no setup beyond asking Agent, and it runs as a single environment.docs · verified 2026-09-21
HostingPublishing creates a .replit.app domain. Access can be Public (anyone with the link), password protected, workspace-only or invite-only; custom domains are supported.docs · verified 2026-09-21
Secrets / env varsSecrets are encrypted (AES-256 at rest, TLS in transit) and exposed to the app as environment variables. Collaborators can view names and values; secrets are available to all deployment types except Static.docs · verified 2026-09-21
Source accessGit pane with one-click GitHub sync; import from and push to GitHub repositories.docs · verified 2026-09-21
Database access rulesThe security checklist states Agent uses ORMs by default, which helps prevent SQL injection; authorization checks before actions are listed as the developer's responsibility.docs · verified 2026-09-21
Payments integrationStripe keys (STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET) go in app secrets, not code; Agent sets up the Stripe flow and you swap test keys for live keys to go live.docs · verified 2026-09-21

Documentation home: docs.replit.com/

What breaks in Replit apps

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

Public incidents

In July 2025 a Replit agent deleted data from a production database during a user-declared code freeze; Replit's CEO confirmed it, said backups allowed a restore, and announced automatic dev and production database separation.

  • 2025-07-18 User's report on X
  • 2025-07-20 Replit CEO confirmation on X

Jul 2025 · Jason Lemkin (SaaStr) · all sources

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

On the Base44 app builder, undocumented registration and one-time-password endpoints accepted a non-secret app_id, so anyone could create a verified account on a private app; Wix fixed it within 24 hours.

  • 2025-07-09 Reported to Wix
  • 2025-07-10 Fix verified
  • under 24 hours Time to fix
  • 2025-07-29 Public disclosure

Jul 2025 · 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.

Replit's own security features, and where they stop

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

  • Agent checkpoints

    Agent creates checkpoints as it works; rollback restores files, Agent memory, tasks and optionally the database, after a confirmation dialog.

    Where it stops: Checkpoints restore state; they do not review code for security issues.

    vendor docs · verified 2026-09-21

  • Secrets manager

    Encrypted secrets store surfaced as environment variables, with separate production secrets for published apps.

    Where it stops: Organization members without the Owner role cannot view values in the UI but can read them by printing environment variables, per the docs.

    vendor docs · verified 2026-09-21

  • Dependency security scan

    Checks project dependencies against public vulnerability records (CVEs), runs automatically and on demand in the Security Center, with a Fix with Agent option.

    Where it stops: The docs state it covers known package vulnerabilities and does not include findings from deeper source-code scans.

    vendor docs · verified 2026-09-21

  • HTTPS and Replit Auth

    HTTPS is on by default for all applications; Replit Auth is offered as the built-in login option.

    Where it stops: The checklist lists input validation, CSRF tokens, authorization checks, security headers, rate limiting and cookie flags as work the developer must do.

    vendor docs · verified 2026-09-21

Check it yourself, in this order

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

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.

Record ids accepted without an ownership check

  1. Create two accounts in your app and add one record, such as an order or a note, in each.
  2. In account A, open a record and copy its address from the browser bar, or open developer tools (right-click, Inspect, then Network) and copy the request that loads it.
  3. Sign in as account B in a private window and paste that address, or use Copy as cURL on the request and run it with account B's cookies.
  4. Try the same with an id one higher or lower than your own, and with the edit and delete actions.

A bad result is account A's record appearing for account B, or an edit or delete going through.

Admin routes without any login check

  1. Open a private browsing window so you are signed out.
  2. Type your app's address followed by /admin, /dashboard, /api/admin, /api/users and /api/export, one at a time.
  3. Also try any address you saw in the builder's file list under an admin folder.
  4. If your app uses Clerk or Supabase, open the builder's code view and check whether the admin route files call the auth helper at all.

A bad result is a page loading, or a raw data list appearing, without a sign-in prompt.

Replit pre-launch checklist

40 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 Replit 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 Replit

replit app safe for production

Replit's checklist covers platform basics like HTTPS, encrypted secrets and ORM use. What remains yours: that every route checks the caller's permission, that the production database is separate from the one the Agent works on, and that public endpoints have rate limits. The pre-launch check tests all three.

replit agent security

Agent runs with the permissions you give it. Keep it working against the development database, use checkpoints before large changes, and review what it wrote in routes that read or write user data. The evidence page lists the July 2025 incident and what Replit changed afterwards.

can replit agent delete my database

Replit's docs now describe development and production databases as separate, with the Agent not able to modify production directly. If your app predates that or you gave the Agent production credentials, check the pattern page on agents with production access for the exact steps.