What an uncensored model driving 5,000 parallel agents finds in a weekend-built site — and why the people you'd normally hire can't find it.
The split
Built in a weekend. Armored by default?
What vibecoding optimizes for
Shipped. Tomorrow's problem is today's acceptable risk. Every default that gets you to launch is a default that trusts whoever arrives next.
What an attacker optimizes for
The gap between what the UI assumes and what the server verifies. That gap is never in the pretty part.
Optimistic defaults, by name
Each one is a tutorial default.
NEXT_PUBLIC_* on a service-role key → full database, client-side
Row Level Security off, because the demo wouldn't render without it
Auth in middleware, not in the handler
Server actions exported with no authz check — each one is a POST endpoint
Webhooks accepted without signature verification
.env in the repo, source maps shipped to prod
No rate limit on auth, no ceiling on the AI endpoint
What changed
This used to be a three-week job.
Then
One consultantOne checklist. One snapshot. $8–25k. Stale the next time you deploy.
Now
A swarmAlways running. Cents per agent. Re-runs on every deploy.
Why uncensored is load-bearing
A hedged model returns documentation.
Ask for a payload and you get prose describing one, then a caveat
Capability arrives behind a permission prompt, mid-run
One context window, one thread — four hundred probes don't fit
Nothing persists between runs, so nothing accumulates
The competition
A subscription is not a harness.
The average engineer with one
Can scaffold a CRUD app and land a refactor. Will hand you a security list it generated and never read. Runs one session at a time, sandboxed, one file at a time, and stops when you close the tab.
What a campaign needs
Hundreds of concurrent probes against a live host, memory that persists across them, triage that ranks by exploitability, a per-agent cost ceiling, and a model that won't stall mid-run on a permission gate.
The other camp
And manual review can't cover this hourly.
A good reviewer finds an IDOR in a week. The bugs in slide 3 all live on the wire — a header, a response body, an exported function, a rule nobody wrote. None of it shows up by clicking around, and nothing re-checks it after the deploy that reintroduces it.
GET /rest/v1/users?select=*
apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...← the key in your bundle200 email, phone, stripe_customer_id, balance × 18,442
The surface, mapped
Named classes. Each reachable with an anon key.
Exposure
Public buckets · verbose errors · source maps · repo history · health endpoints
Prompt injection via retrieved content · system-prompt leak · tool calls on service credentials
Infra
CORS wildcard with credentials · no CSP · unpinned deps · missing lockfile integrity
Money paths, specifically
Apps that hold money lose differently.
You don't get hit for a database dump. You get hit for the part that moves value:
Redeem a credit code 40 times in parallel before the balance write lands
Forge a "paid" webhook — mark an invoice settled without paying it
Fire the withdraw endpoint twice inside the same second
Replay a price after it's already moved
Pull the raw data endpoints and mirror the dataset
Example loss modes · not measured against this build
The new front door
Your most expensive endpoint is the one that talks back.
You shipped a chat feature. It holds an API key, bills per call, reads whatever it's handed, and in most builds calls tools on a service credential. That's not a feature with a vulnerability — that's an authenticated deputy.
Injection that drains a balance instead of stealing a record
A tool scoped wider than the person typing at it
No ceiling, so the bill is the blast radius
The shape of it
Up to five thousand agents, five jobs
Recon — enumerate what's public that shouldn't be
Authz — every route, as the wrong user, every role
Secrets — bundle, headers, repo history, error text
Inputs — parameters, uploads, webhooks, races
Triage — one pass ranking by exploitability, deduped
The math
~$24
One thousand agents, one full run. $0.33/M in · $1.32/M out · $0.01/M cached.
Inference only. Orchestration, sandboxes and human triage are the rest — and still round to nothing beside a contract.
Scale
Linear. Humans aren't.
100 agents
$2.38
500 agents
$11.90
1,000 agents
$23.80
5,000 agents
$118.80
Testing the whole surface costs less than the coffee you drink doing it.
What a hit costs
The cheap outcome is still expensive.
Global average breach
$4.44MIBM, Cost of a Data Breach 2025
US average
$10.2MSame report, US sample
Days to identify + contain
241Reported median
IBM Cost of a Data Breach Report 2025 — self-reported averages across all org sizes, not per-incident medians
Side by side
One is an audit. The other is a heartbeat.
The contract
$8,000 – $25,000 2 – 4 weeks one snapshot stale on next deploy findings you triage alone
This
$25 – $120 / run under an hour re-runs on deploy never stale ranked, deduped, fixed
What protected looks like
Twelve controls. No shopping list.
Deny-by-default rules on every table, not just the sensitive ones
Authz decided in the handler, per route, per role
Service keys server-only, scoped, rotated
Signed webhooks and idempotency keys on every money path
Rate limit and bot mitigation ahead of the app
CSP, HSTS, strict CORS allowlist
Egress allowlist from the app tier
LLM: tool scoping, injection boundary, hard budget ceiling
Pinned dependencies, secret scanning, SAST gate in CI
Backups with a restore you've actually tested
Alerts on auth-failure and spend anomalies, not just 5xx
Re-run cadence bound to deploys, not to a calendar
The path
Find. Close. Hold.
Days 1–7 — find and rank everything. You get the list, not a 60-page PDF.
Weeks 2–4 — close the top of it, in order of what actually gets robbed.
Ongoing — deploy gates, scheduled re-runs, someone reachable at 2am.
Why me
I've run the things that get attacked.
monster.bet — a real-money marketplace with live pricing and an AI copilot. Built it alone, zero to one: Rust API, 70+ endpoints, WebSocket streaming, Next.js app at 270+ components, 50+ live data feeds.
Money on the wire — exchange market-making in Rust. Continuously quotes prices, rechecks the book before every trade, caps total exposure, prevents duplicate orders under a race, signs every quote, logs everything.
Custody, not CRUD — pipeline that opens user wallets, syncs spending allowances, signs and reconciles orders under real-time risk checks. Money moves, and the code owns it.
100+ services running 24/7. I know what breaks at 3am because I've been paged for it.
Receipts
Public, verifiable, not self-reported.
WIRED, September 2025 — profiled for AI agents running in production at consumer scale
25,000 users on Classroom AI, shipped solo post-ChatGPT
Most security people can't build. Most builders can't break.
You don't need a report shipped from a firm that will hand you a Jira board and leave. You need someone who can find it, fix it in the codebase he already understands, and set the gate so it stays fixed. Same person, both directions.
The ask
Give me a week and the staging URL.
Day seven you have a ranked list of everything a swarm found, the first tranche already closed, and a written diff. Then we decide whether you sleep better.
Contact
carsonszeder.com
Carson Szeder · Los Angeles monster.bet — real-money marketplace, built and run solo WIRED, Sept 2025 · Available this week.