Keys and secrets | 03 of 20

The public prefix means public

research, sourced

NEXT_PUBLIC_ and VITE_ are build instructions. The value is inlined into the JavaScript that every visitor downloads. The model reaches for the prefix because it makes the variable "work" in the browser, which is precisely the problem.

Where it bit

Not in our repos. In the research: 39 of 50 audited apps had a secret under NEXT_PUBLIC_. Moltbook leaked 1.5 million API tokens and 35,000 emails through a Supabase key hardcoded that way, with no RLS behind it.

The practice

Only values that are safe on a billboard get the prefix. Secrets sit behind an API route. Anything already prefixed gets rotated, because it has shipped.

Check it

grep -rnE "NEXT_PUBLIC_[A-Z_]+|VITE_[A-Z_]+" app/ src/ components/ | grep -viE "url|site|ga_|pixel"
grep -rlE "sk_live_|eyJ[A-Za-z0-9_-]{20,}" .next/static/ dist/ 2>/dev/null

Get this check as a script you can run tonight

Free, straight to your inbox. No call, no pitch

What to do with this

If you run a business on something AI built and the checks came back with more than you expected, that is worth a conversation.

We do a free 30-minute Health Check for service businesses that want to know exactly where their biggest leaks are. No slide deck. No pitch. We ask questions, find the gaps, and tell you what we see. If there is no obvious fix, we will tell you that too.

Blinkz finds what is broken in how a business runs, then fixes it. AI only where it earns its place.