
How Sticklight Secures Your Vibe-Coded App
Is Your Vibe-Coded App Actually Secure? Catch Issues Before Launch
Here’s a feeling most vibe coders know but rarely say out loud: you finish building something. It works. The signup flow works, the dashboard loads, people can log in and see their stuff. You’re proud of it. And then, right before you hit publish, a quieter thought shows up: is this actually safe?
You don’t know how to answer that question, and that’s not a knock on you. Security was never the skill you set out to learn. You wanted to build a marketplace, a client portal, a tool for your team, not become a database administrator who understands row-level policies. AI got you from idea to working app faster than you thought possible. But “working” was always the wrong finish line. It’s the one AI optimizes for by default, not “secure.”
That gap is real, and it’s not unique to any one tool. Across the AI app builder space, the same handful of issues show up again and again in projects that were never touched by a human security review: database tables anyone on the internet can read, API keys sitting in plain sight inside browser-executed code, server functions that don’t check who’s actually calling them. None of this happens because the AI is careless. It happens because nobody asked it to think about it, and most people building this way don’t know to ask.
And the stakes aren’t abstract. A breach on a published app isn’t just an inconvenience to patch later, it can mean real financial loss, regulatory fines depending on what data was exposed, and reputational damage that’s a lot harder to undo than the bug that caused it. If you’re shipping for a client, that damage is your reputation too.
That’s exactly the gap Sticklight’s Security Scanner closes. Run an AI web builder security scan before you publish, and Sticklight reads your project the way a security reviewer would, not a generic checklist, but your actual database rules, your login settings, your server code, and your dependencies, then hands you a short, plain-language list of what passed and what needs attention.
Want to watch how easy it is to run Sticklight’s Security scanner on your project? Watch our quick tutorial:
Where to find it
Open your project in Studio and click the Security tab in the top navigation. If you haven’t scanned yet, you’ll see an empty state with a Run scan button waiting for you.
Security scanning requires Cloud Backend. If your project isn’t using it yet, the Security tab will point you to Enable Cloud Backend to get started. You can learn more about enabling your cloud backend here.
What the scanner actually checks
The scan covers five categories, and each one maps to a real way apps get compromised, not a theoretical risk:
- Authentication and Authorization – signup settings, password policies, session handling. This is the front door. If it’s weak, everything behind it is exposed too.
- Data Protection – your Row Level Security (RLS) policies and database permissions. This is the one that catches people most often: a table can look protected and still let any logged-in user read every row in it.
- API Security – PostgREST configuration and which functions are exposed. Internal helper functions that were never meant to be public sometimes are, and nobody notices until someone calls them.
- Infrastructure – Edge Functions, storage policies, platform settings. The parts of your app running outside the browser, which means they’re also outside what most people think to check.
- Dependencies – known vulnerabilities in your npm and Deno packages. Not something you wrote, but still something you shipped.
Each check is a single rule with a clear pass or fail. No vague ‘security score,’ just specific answers, like whether users can read each other’s data, or whether an admin key is sitting somewhere it shouldn’t be or whether a user can grant themselves admin access (oops!).
The real vulnerabilities it catches
This isn’t a surface-level API check. Here’s what the scanner looks for:
| Common security issues | Sticklight Security scan |
|---|---|
| Users can read or edit data that isn’t theirs | ✓ |
| A table’s security is “on,” but the policy doesn’t actually restrict anything | ✓ |
| Users can grant themselves admin or owner access | ✓ Marked as critical by default |
| Weak or default password requirements | ✓ |
| Sessions or tokens that never expire | ✓ |
| Repeated login or verification-code guessing (brute-force) | ✓ |
| Internal functions callable by anyone on the internet | ✓ |
| Database tables reachable through the public API without protection | ✓ |
| Sensitive columns, like passwords, tokens, or API keys, exposed through the database | ✓ |
| Server functions that skip authentication | ✓ |
| Server functions with admin-level access that don’t check who’s calling | ✓ |
| Expensive AI or third-party API routes with no rate limit or abuse protection | ✓ |
| File storage that’s publicly listable | ✓ |
| “Private” file links that don’t actually expire | ✓ |
| Known vulnerabilities in your third-party packages | ✓ Flagged as critical for severe findings |
This is what “reads your project like a security reviewer would” actually means in practice. It’s not a checklist skimming your API responses, it’s evaluating the logic underneath.
Worth being upfront: this list covers what the scanner checks today, not everything that could ever go wrong with an app. It’s one part of building safely, not the whole picture, more on that below.
Running a scan
- Go to the Security tab.
- Click Run scan.
- Wait for it to complete. Most scans finish in 30 seconds to a few minutes, depending on how big your project is.
You’ll see live progress across all five categories as it runs, so you’re never staring at a blank spinner wondering what’s happening behind the scenes.
Reading your results, without needing a security background
Once the scan finishes, you’ll see severity counts up top:
- Critical – issues that could expose user data or let someone in who shouldn’t be. Publishing isn’t recommended until these are resolved.
- Warning – best-practice violations worth addressing before launch.
- Info – minor recommendations for improvement.
If everything checks out, you get a clean “No issues found,” and that’s worth something. It’s not a guess, it’s a specific answer to a specific question you didn’t know how to ask yourself.
Click any control to open the detail panel. You’ll see a one-line summary, the exact evidence behind it (which tables, files, or settings are involved), what you need to change, and which files in your project are affected. If you’ve ever opened a Supabase settings page and had no idea what half the toggles actually do, this is built for that exact moment. You don’t need to understand row-level security theory. You need to know: is this safe, and if not, what do I do about it. That’s what the panel gives you.
Fixing issues with AI, in a few quick clicks
For anything that fails, you’ve got two options.
Fix with AI opens the chat with the issue’s context already loaded. Read what’s recommended, approve it, and the AI applies the change. Nothing happens without you saying yes, it’s not silently rewriting your database rules in the background while you’re not looking.
If you’ve got several issues at once, Fix with AI walks through each one in sequence, explaining and asking for approval before touching anything. You stay the one making the call, the AI just does the part you were never going to enjoy doing manually anyway.
One thing worth knowing: fixes don’t auto-resolve. After you make a change, click Rescan to confirm it actually worked. The scan is the source of truth, not the chat transcript, and that matters, because “I asked the AI to fix it” and “it’s actually fixed” aren’t always the same sentence.
Ignore exists for the times a flag is a false alarm for your specific app. Maybe your signup really is meant to be wide open, or that Edge Function really does validate its caller a different way. Ignore acknowledges the tradeoff without pretending the issue isn’t there. If the underlying thing changes later, or the issue comes back, the ignore status clears automatically so nothing quietly goes stale.
What happens when you publish
The publish dialog shows your current scan status right there in the flow:
| Status | What it means |
|---|---|
| Clean | No issues found. Safe to publish. |
| Warnings | Minor issues detected. Safe to publish, but worth a look. |
| Critical | Serious issues found. Publishing isn’t recommended. |
| Stale | Your project changed since the last scan. Rescan first. |
| Not scanned | No scan has been run yet. |
Critical issues show a strong warning, but the choice to publish anyway is yours. It’s a safety check, not a lock, because you know your app and your context better than any automated rule can.
Tracking progress over time
The History tab shows your past scans and what changed between them: new issues that showed up, ones that got resolved, and anything that regressed, meaning a fix from an earlier scan didn’t hold. If a scan shows something got worse right after you made a change through chat, that’s usually your first clue about what broke it, and it saves you from finding out the hard way, after launch, from someone else.
What it doesn’t replace
Worth being upfront about this: the scanner is a pre-publish safety check, not a substitute for a compliance audit, a penetration test, or runtime monitoring. It reviews your configuration and code, not live traffic. If you need SOC2, PCI, or HIPAA certification, that still requires a formal third-party audit. Use the scanner alongside your existing security practices, not instead of them.
Why running a scan makes business sense
It’s easy to treat a security scan as an optional step, especially when the app already “works” and launch is the only thing on your mind. But the risk on the other side of skipping it isn’t hypothetical.
Think of it the way you’d think about a smoke detector. Most days it does nothing, and that’s the point. The one day it matters, it’s the difference between a bad afternoon and losing everything.
A single exposed table or leaked key can mean a real financial loss, whether that’s fraud, stolen credentials, or the cost of an incident response you weren’t planning for. Depending on what kind of data was exposed and where your users are, it can also mean regulatory fines, data protection rules don’t care whether the exposure was intentional. And beyond the direct cost, there’s the harder-to-quantify one: reputational damage. Users, and clients if you’re building for someone else, trust you with their data the moment they sign up. That trust is expensive to earn back once it’s broken, and a public breach is often the first and only impression some people ever get of what you built.
A scan that takes a few minutes to run is a small price against all of that. It won’t eliminate risk entirely, nothing does, but it closes the gaps that are the easiest to have prevented and the hardest to explain after the fact.
Free scan, then Pro
Every plan gets one completed scan per project for free, full functionality, full results, full access to AI fixes. After that, unlimited scanning is a Pro plan feature, which makes sense once you’re shipping more than one project, or shipping for clients who are trusting you to have checked.
Ship with fewer surprises
You didn’t sign up to become a security expert. You signed up to build something. Security Scanner doesn’t ask you to close that gap yourself, it closes it for you, in language you don’t need a background in databases or auth to understand.
Open the Security tab in your next project and run a scan before you publish. If it comes back clean, you’ll know for real, not just hope so. And if it doesn’t, you’ll know exactly what to fix, and exactly how, before it turns into a financial loss, a fine, or a reputation you have to rebuild.
FAQs on Sticklight’s Security Scanner
How long does a security scan take?
Most scans finish in 30 seconds to a few minutes, depending on how large and complex your project is. You’ll see live progress across all five categories while it runs.
Do I need to know how databases or authentication work to use this?
No. Every finding comes with a plain-language explanation of what’s wrong, why it matters, and what to change. You don’t need to understand row-level security or API configuration, you just need to read the panel and decide what to fix.
Do I need to rescan after every change?
Rescan after any significant change to authentication, database policies, Edge Functions, or dependencies. If your project has changed since the last scan, the publish dialog will show a “stale” status as a reminder.
Can I still publish if the scanner finds critical issues?
Yes. The scanner shows a strong warning for critical issues, but publishing is your call. It’s designed as a safety check, not a hard block.
What does “Ignore” do to a flagged issue?
Ignore acknowledges a risk without fixing it, and the control stops counting toward your publish status. If you later fix the issue, or it regresses, the ignore status clears automatically.
Is the Security Scanner available on the free plan?
Yes, every plan includes one completed scan per project with full results and access to AI fixes. Unlimited scanning requires the Pro plan.
Does it catch users seeing each other’s data?
Yes. The scanner checks for exactly this, cases where one user can read or edit data that isn’t theirs, including tables where security looks “on” but the underlying policy doesn’t actually restrict anything.
Does it check for expired sessions and tokens?
Yes. It checks that sessions and tokens have a real expiration and inactivity timeout, so a leaked or stolen token doesn’t grant indefinite access.
Can it tell if someone could rack up my API bill?
Yes. It checks expensive routes, like ones calling AI models or other paid third-party APIs, for rate limiting or abuse protection, so an unprotected endpoint can’t be hit thousands of times at your expense.
Does this replace a real security audit?
No. It’s a pre-publish safety check that reviews your code and configuration, not a substitute for a compliance audit, penetration test, or runtime monitoring. For regulated industries requiring SOC2, PCI, or HIPAA, you’ll still need a formal third-party audit.