Keys in public code
A secret key included in JavaScript can be visible to visitors.
See the checks ↗For apps built with AI
Find your app’s weak spots before you launch. Start with a simple check, then understand what to review and how to fix it.
Fictional sample report
A secret pattern in a public file.
Finding · Explanation · PromptCheck whether public access is intended.
Finding · Explanation · PromptUnderstand the risk and the next step.
Finding · Explanation · PromptBuilding with AI? You’re in the right place.
What can go unnoticed
Examples of things to check in your app’s public resources.
A secret key included in JavaScript can be visible to visitors.
See the checks ↗Access without an account may be intentional. Check which data is involved.
See the checks ↗A page that stays on HTTP leaves its traffic unencrypted.
See the checks ↗Missing settings deserve a review, even when the app works.
See the checks ↗Embedding the app on another site should match your intended use.
See the checks ↗Private code and cross-user permissions need a separate scope.
See the checks ↗The risk
The problem isn’t always visible on screen. That is what we look into.
An exposed private key can let someone use your account.
Information intended for your users may be visible without signing in.
An app can work without some security settings.
An exposure can affect the people who use your app.
A precise observation, rather than a feeling of safety.
How exposure happens
An illustrative example. No files from your app are shown here.
const client = createClient(…);
const apiKey =
"[SECRET MASQUÉ / MASKED]";
connect(client);Pattern to reviewThe browser retrieves the public files the app needs.
A secret key placed in these files may be exposed.
We flag the pattern and mask the value. We never use the key.
The report explains the observation and the next action.
How it works
Start with a URL. Take the instructions to your assistant.
Start with your app’s public address. No need to know your stack.
See what is confirmed, what needs review and what was not checked.
Use the report’s instructions, verify the changes and run another limited check.
What we check
Here is what the public check can observe. Each result explains its limits.
Searches HTML and selected scripts. Values masked; keys never used.
Checks the final connection and the browser’s declared HTTPS preference.
Identifies the header. Its presence does not prove the policy is effective.
Observes restrictions on embedding in other pages.
Checks for the nosniff protection.
Checks access metadata using a public key, without downloading rows.
A prompt ready to copy
A fictional example to explain the format. Your diagnostic shows only the observations actually made.
In this example, the page stays on HTTP. Information sent over the connection can be read or changed in transit.
Give this to your AI agent
Check whether my app uses HTTPS. If it stays on HTTP, identify where to configure HTTPS and redirect HTTP traffic. Propose the smallest change that fits my project, without deploying. Explain how to test it in a test environment, check that the app’s features still work and undo the change. Ask for my approval before publishing.
Review the proposal, test the changes, then run an actual check.
Inside the report
From the first observation to checking a fix. A fictional example to explain the process.
Observations, with their limits.
A new result after an actual check.
Fictional example. Results depend on each check.
The cost
You could hire a pro. Debug with AI. Or start by pasting a link.
Illustrative costs and time, not quotes: they vary by project. 30 seconds is an estimate. The public check does not replace a full review.
Your access, your data
What we look at. What we leave alone.
The page and selected public scripts. No repository to connect to start.
We flag a pattern without showing its value or trying to use it.
The check creates no accounts, changes no data and publishes no code.
Supabase checks use response metadata only.
Download the free check to keep it. Paid delivery and its data are explained in the privacy details.
The report distinguishes performed checks from checks not performed.
A level of review for each need
The free check and guided fixes are open in beta. Deeper investigation follows.
Express check
Free
Available · Email required to view results
Guided fixes
$9
One-time payment · Prompts available after confirmation

AI investigation
$44
Not available · Checkout not enabled
FAQ
The check inspects HTML, up to six same-origin public scripts and HTTP settings. It looks for secret-key patterns without using them. If a single Supabase project, a public key and table references are identified in those files, it checks at most two tables using HEAD requests limited to one row, without downloading rows. Public access needs review: it may be intentional. Limits: 12 requests, 512 KB per file, 3 MB total and about 30 seconds. External scripts, oversized files, unidentified tables and cross-user permissions remain outside the check.
The free Express check analyzes accessible public information and explains the issues it finds. Guided fixes at $9 provides the solutions: instructions to copy into your AI agent and steps to verify the fix. AI investigation is intended for deeper work with approved access and scope. The free check and guided fixes are available. Investigation is still in preparation and cannot be purchased.
No. You copy prompts into your coding assistant. Review its changes, test them in a test environment, then repeat the relevant checks. Current prompts use templates matched to findings, without AI analysis of private code.
No account is needed for the public check. An investigation may require a selected read-only repository, a test application and test accounts. No connector or secret vault is active here: do not send passwords, tokens or API keys. Reading code and active testing require separate permissions.
Use an independent environment, fictional data and accounts with defined roles. Remove production keys and limit permissions. The procedure depends on your builder and host; the preparation flow does not claim to duplicate your project automatically.
The check processes public files in memory, without a report database or downloaded table rows. Secrets stay masked. Scanned domains are stored locally for the five-free-project limit. A 24-hour encrypted token lets this tab prepare guided fixes. If you purchase, Stripe processes payment and a temporary encrypted summary; Resend emails the report. See our privacy page for retention and details.
No. It means only that no issue was detected in the checks performed. Checks that were not performed are listed separately. No diagnostic guarantees exhaustive detection.
Before you launch
Free Express check. No guarantee of exhaustive detection.