aliteq.

The 6 things to check in your Cursor-built app before you ship

Cursor writes the code but doesn't wire up your backend — so every security check is yours. Six things to confirm before you ship, and the one (reading the code) that matters most.

Sam OrtegaUpdated 1h ago7 min readWeb story
Editorial illustration of a large text cursor beside a shield while a hand reviews lines of AI-written code
Share

Cursor is different from Lovable or Bolt: it's an AI code editor, so it writes code into the project and stack you picked and doesn't stand up a backend for you. This isn't about Cursor being unsafe — it's that the security decisions live in the code it writes and the services you chose, so they're yours to confirm. One Cursor-specific note read on its own docs on 26 Sep 2026: the .cursorignore file controls which files the AI can read, but it is not a secrets vault — the docs say "While Cursor blocks ignored files, complete protection isn't guaranteed due to LLM unpredictability." Here are the six things to check before you ship.

Editorial illustration of a large text cursor beside a shield while a hand reviews lines of AI-written code
Cursor writes the code; the security checks are yours. · Illustration made in Higgsfield with the GPT Image model

If your app has a database, people can't see, change or delete rows that aren't theirs

No secret key is in the code Cursor wrote that runs in the browser

Keys live in a .env file that's listed in .gitignore — never hardcoded

There's a limit on how fast one account can sign up or call your AI features

Your database is backed up and you know how you'd restore it

You've read and challenged the code Cursor wrote before shipping

1. If your app has a database, lock down who sees what

Cursor doesn't choose your database, so this depends on what you wired up — but the rule is the same everywhere: one person must not be able to read or edit another person's rows. On Supabase (a common choice), that's Row Level Security: a policy on each table for which rows each user may see. Cursor will happily write the query; it won't turn RLS on for you. The check is to confirm every table has a policy in your database's dashboard. The concept is in Row Level Security explained, a correct policy is in write the RLS policy for my users table, and the incident that proves it is the Moltbook exposure. If "server" and "database" are fuzzy, start with what a backend actually is.

2. Keep secret keys out of the browser

Anything shipped to the browser is public. AI-written code sometimes reaches for a secret key in a front-end file because it's the quickest way to make a feature work — and on Supabase the secret (service-role) key bypasses all row-level rules. The check: scan the code Cursor wrote for any key in client-side files, and move anything sensitive to the server. The view-source reality is in your API keys are in the browser.

3. Keep keys in .env — and out of Git

The standard place for a key is a .env file that your code reads at runtime and that is listed in .gitignore so it never gets committed. Two Cursor-specific notes: don't let generated code hardcode a key "for now," and know that .cursorignore only hides files from the AI, not from attackers — its docs are explicit that "While Cursor blocks ignored files, complete protection isn't guaranteed due to LLM unpredictability." So .cursorignore is not where secrets get their protection; a .env file kept out of your repository is. What environment variables and .env files are is in environment variables and secrets, explained.

4. Put a limit on sign-ups and AI calls

Because Cursor doesn't build your backend, nothing adds a rate limit unless you ask for one. Without it, a single loop can create thousands of accounts or run up your AI bill. Ask Cursor to add rate limiting to sign-up and to any endpoint that calls a paid AI model, then confirm what happens if one account sends a thousand requests a minute. Why every public endpoint needs one is in what is rate limiting.

5. Back up your data

Whatever database you chose, a bad migration or a wrong command can delete data — and an AI agent running commands makes that more, not less, likely. What's retained and how far back you can restore depends on that database's plan, so check your project. Confirm backups are on and, once, confirm you could restore. The cautionary tale, including an AI agent that deleted a live database, is in backups, and losing everything.

6. Read and challenge the code before you ship

This is the big one for Cursor. It writes a lot of code quickly, and the first version is a draft, not a verdict. The habit that catches bugs and exposures is to make the model attack its own work: after it writes an auth or data feature, ask it to find ways one user could reach another user's data, list any table without a policy, and point out any secret it put in client code. That generate-then-attack loop, with a real before-and-after, is in the verify loop. For the tool-agnostic version of all six, see the 6 checks before you share a vibe-coded app.

Quick answers

Does Cursor make my app secure?
Cursor is an editor — it writes code into your chosen stack and doesn't wire up a database, hosting or rate limits for you. So the security settings live in the code it writes and the services you picked, and they're yours to confirm.
Is .cursorignore how I protect my secrets?
No. .cursorignore controls which files Cursor's AI can read, but its docs say complete protection isn't guaranteed. Secrets are protected by keeping them in a .env file that's out of your Git repository, not by .cursorignore.
What's the most important check for a Cursor-built app?
Reading and challenging the code. Cursor generates fast, so the verify loop — asking it to attack its own output — catches the RLS gaps, browser-side keys and missing limits before real users do.
Do I need to read code for these checks?
More than with an app builder, because Cursor's whole job is the code — but you can lean on the model: ask it to review its own work against these six points. If the answers don't make sense, that's when to bring in a developer.

This page has no affiliate links or sponsored placements. Security advice is only useful if nobody's paying for it. It isn't a substitute for a security review: if your app holds other people's personal data, payments or health information, have a developer or a security professional look at it before launch.

Found this useful? Share it

Share
Sam Ortega

Build Editor

Sam Ortega

Sam explains what's actually happening when you build software by talking to an AI — what the model is doing, what's really running your app, and where the sharp edges are. No jargon without a picture, no hype, and an honest 'hire someone' when that's the answer.

The Aliteq brief

The tech worth knowing — hardware, AI, gaming, deals. No spam, unsubscribe anytime.

Keep reading