Skip to contentLockpick
How it worksPricingDocs

Read

  • BlogPlain answers to common security questions
  • GuidesStep by step fixes for common setups
  • Security checksEvery check we run, explained

Learn

  • Learn with PickTwo-minute lessons on how sites get attacked
  • Lockpick for ClaudeCheck sites from Claude and other assistants
  • GlossaryThe words we use, in plain words

Company

  • ChangelogWhat changed, newest first
  • StatusWhether scans are running right now
  • Security and trustHow we check and what we never do
Sign inCheck it
Checks

Do your Convex functions return data to anyone who calls them?

By Mark KashefPublished October 8, 2026

This check calls Convex query functions your site code already uses, with no sign-in and no arguments, and flags any that return data. Only queries are called, never mutations or actions.

What does this check look at?

It looks at whether a Convex query function your site code calls returns data to a call with no sign-in. Convex says that by default your Convex functions are public and accessible to clients.

Only a Deep scan runs it, after you prove you own the site. It applies only when the site code talks to Convex.

See whether your site has this. A Deep scan walks the whole site, the scripts it loads and your API surface.

Run a Deep scan

What does a result mean?

What the report showsWhat it meansWhat to do
High or medium findingA query returned data with no sign-in.Check identity in the function, or make it internal.

Only queries are called, never mutations or actions, so it does not show that data can be changed. A clean result means nothing was found in what the scan read. It does not prove the problem is absent from parts the scan never sees.

How serious is a finding?

Fix this first when it is confirmed. Anyone could use a finding of this kind on their own, with no victim and no second step. Confidence starts high, because a response from your site shows the thing itself. The report lists what to fix by how directly someone could use it, not by the severity label.

What does a confirmed finding have to show?

PartFor this check
Where it startsAnyone on the internet, with no account, cookie or credential
The protection that should stop itThe query function did not require authentication
What is reachedThe function returned records
What followsWhat the returned records hold

Fix it with your AI

Add an identity check at the top of the function, or move logic the client never calls into internal functions.

Fix prompt for any coding agent
This Convex query returns data without sign-in: [paste the function from the report]. Add an authentication check at the start of the handler using ctx.auth.getUserIdentity(), throw when it is null, and filter results to records the signed-in user owns. If the client never calls this function, convert it to an internalQuery. Show me the change and how to confirm an anonymous call now fails.

How to check

Say Atlas, our example app at atlas.example, lists orders with a query that never checks the caller. A Deep scan calls it with no arguments, gets records back and keeps only counts.

Deep scans come with the Deep plan, and pricing shows what it includes. Pulse or Deep explains what each scan reads, and the full list of checks shows the rest.

Questions people ask

Are public Convex functions a mistake?

Not always. Some data is meant for everyone. The finding asks you to confirm that this function is one of them.

Did the scan change any data?

No. It only calls query functions, which cannot write, and sends no arguments.

Run this check on your site

Only a Deep scan runs this check, once you prove you own the site. Deep walks your whole site, the scripts it loads and your API surface.

Run a Deep scan

Related pages

  • Can anyone read your Supabase tables with the public anon key?
  • Can anyone read your Firebase Realtime Database?
  • Does an API route on your site answer without signing in?

Sources

  1. How we rate findings Lockpick docs, read on October 7, 2026
  2. Internal Functions Convex docs, read on October 7, 2026

About the author

Mark Kashef, Founder of Lockpick

I'm Mark, and I build Lockpick. I write these pages, and each one is checked against its sources before it goes live. The Updated date changes only when the page itself does.

Lockpick
PricingMethodologyDocsBlogGuidesSecurity checksLearn with PickSecurity and trustLockpick for ClaudeChangelogStatusFacts for AI assistants

Lockpick is a security scanner for vibe-coded apps. It checks what your live site exposes and what a GitHub repo or AI skill would do before you install it, then gives you a fix prompt for Lovable, Bolt, Replit, Cursor or Claude Code.

Lockpick assesses public pages you are authorized to test, and public GitHub code it never runs.

© 2026 LockpickTermsPrivacyContactSign in