Public dataset · version 2.0
AI-built app database exposure scan, October 2026
Of 500 live AI-built apps scanned, 177 ran on Supabase. Thirty-one of those 177 (17.5%, about 1 in 6) had at least one table that returned data to an unauthenticated request using only the app's public anon key. None leaked a full-access service-role key.
Headline findings
The aggregate results
Counts are primary. Percentages below retain one decimal place. The headline “1 in 6” figure rounds the 17.5% readable-table result.
| Measure | Population | Count | Percent |
|---|---|---|---|
| Live AI-built apps scannedLive AI-built apps in the stratified sample that were scanned. 497 of the 500 were reachable at scan time. | All sampled apps | 500 / 500 | 100% |
| Apps using SupabaseApps whose public client bundle identified a Supabase project URL and public anon key. | All sampled apps | 177 / 500 | 35.4% |
| Supabase apps with at least one anonymously readable tableAt least one table returned a row to an unauthenticated GET request made with only the public anon key. | Supabase-backed apps | 31 / 177 | 17.5% |
| Supabase apps with at least one sensitive anonymously readable tableAt least one anonymously readable table contained a clearly non-public category such as user, subscription, private message, support, audit, employee, booking, or regulated-operation records. | Supabase-backed apps | 8 / 177 | 4.5% |
Plain-English methodology
What was sampled, when, and how
Question
How often could a person who was not logged in read a database table in a live, AI-built app using only the Supabase anon key that the app already publishes to every visitor?
Sample and dates
The sample contained 500 live AI-built apps built with Lovable, Bolt, and base44. Candidate hosts came from certificate-transparency logs and Wayback Machine archives of the builders' deployment domains, about 5,300 unique hosts, which a liveness filter reduced to 4,512 reachable apps. A deterministic stratified sample of 500 was drawn across the three builders so no single builder dominated the headline. The observations were collected in October 2026, and 497 of the 500 were reachable at scan time. This was a convenience sample of publicly discoverable deployments, not a random sample of all AI-built software.
What was measured
First, the scan recorded whether each app used Supabase. For the 177 apps that did, it measured whether at least one table returned a row to an unauthenticated read made with the public anon key. A second classification recorded whether any readable table was clearly sensitive rather than intentionally public.
Sensitive categories included user and profile records, sessions, subscriptions, private chat or support messages, audit logs, employee records, bookings, and regulated-operation records. Public catalogs, blog posts, and feature-flag tables were not counted as sensitive.
How the measurement was made
- The public JavaScript bundle delivered by each live app was inspected.
- When a Supabase project URL and anon key were present, one unauthenticated REST
GETrequest was made per table withlimit=1. - An app was counted once in the readable-table measure if any tested table returned a row. It was counted once in the sensitive-table measure if any such table was clearly non-public.
No write requests were made. No authenticated routes or service-role credentials were used. No app was named, and no row contents or app-level results were retained for publication. Only the aggregate counts on this page were kept.
Interpretation and limitations
- The result describes this 500-app convenience sample and should not be projected to all AI-built apps.
- The 323 non-Supabase apps were not tested for equivalent access-control failures on other backend platforms in this scan.
- A one-row read establishes that anonymous data access was possible at scan time; it does not measure the total number of exposed rows.
- An empty table can produce no row even if its access policy is permissive, so this method may undercount readable tables.
- Apps may have changed their database policies since the October 2026 observation.
- An earlier June 2026 wave scanned 66 apps and found a higher 40.6% readable-table rate. That was a smaller, earlier sample. This larger wave is more representative, and the lower rate reflects both the broader sample and tightening builder defaults.
Cite this dataset
A stable source for the numbers
Link to this page when quoting the scan. The identifier and version make the aggregate data unambiguous, while the analysis article provides narrative context.
Turley, Matthew. “AI-Built App Database Exposure Scan, October 2026.” Continuum, version 2.0, October 10, 2026. https://uxcontinuum.com/data/ai-built-app-security-scan-2026
- Dataset ID
- continuum-ai-built-app-security-scan-2026-10-v2
- Source analysis
- Read the full exposure report →