Supabase · api · fg-0571

Files in a public Supabase Storage bucket can be downloaded by anyone who has the URL

If you see A file URL opens in a private browser window with no sign-in, the cause and the fix for Supabase are below, last verified 2026-10-27.

Verified Oct 2026trust 50/100
Symptom
A file URL opens in a private browser window with no sign-inStorage policies you wrote for reads make no difference to downloadsPrivate user uploads, such as IDs or invoices, sit in a bucket marked public
Cause
Marking a bucket public bypasses access controls for retrieving and serving its files, so anyone who has a file's URL can fetch it. Uploads, deletes, moves and copies are still checked. Buckets are private by default; a bucket is public when it was created with public set to true or changed later.
Fix
Keep private user files in a private bucket and serve them with short-lived signed URLs created on the server, or with an authenticated request that carries the user's token. Use public buckets only for files anyone may see, such as avatars or marketing images.
Apply
// server only, with a client created from a secret key: make an existing bucket private await admin.storage.updateBucket('documents', { public: false }) // serve one file for an hour const { data, error } = await supabase.storage .from('documents') .createSignedUrl('private-document.pdf', 3600)
Affected
Supabase Storage buckets created or set with public true that hold files not meant for everyone
Sources

Last verified 2026-10-27 · Confirmed by 0 builders

Related traps

Have your agent know this before it fails

$ /plugin marketplace add getfootgun/footgun
$ /plugin install footgun@footgun