Skip to content

Guide · Agent skill

How to use the Convex Authz Auditor agent skill (convex-authz)

Updated · written with AI from the project's own documentation and checked against our catalogue data

convex-authz is an agent skill that checks a Convex (TypeScript backend) app for four common authorization mistakes and fixes the ones it can safely fix. This guide explains what an agent skill is, how to install this one from a ZIP, how to trigger it with plain requests, and what it needs before it runs. By the end you will know when the skill is useful, when it will skip your project, and how to read its report.

Convex Authz Auditoropenclaw/clawhub · MIT

Quick start

  1. 1Download and unzip. Download the convex-authz ZIP from this page and unzip it so you have a convex-authz folder containing SKILL.md.
  2. 2Place the skill folder. Move the folder into ~/.claude/skills/ for all projects, or into the .claude/skills/ folder of one Convex project. Alternatively, upload the ZIP under Settings → Capabilities → Skills in the Claude apps.
  3. 3Check your project layout. Confirm the project has a convex/ directory and TypeScript. Confirm that npx tsc --noEmit runs successfully.
  4. 4Check auth setup. For full hardening, confirm you have an auth.config.ts with a provider and a users table keyed to the auth subject.
  5. 5Ask for an audit. Make a plain request such as 'audit auth/authz for this app' or 'who can access this data?'.
  6. 6Review the report and diff. Read the findings grouped by the four shapes and check each file:line and the applied diff.
  7. 7Confirm the typecheck. Make sure the typecheck passes after the edits, and run your own tests before deploying.

What is an agent skill, and what does convex-authz make the agent do?

An agent skill is a folder containing a SKILL.md file with instructions that an AI coding agent loads when a request matches the skill's description. convex-authz is one such skill, and its SKILL.md is the only file it ships.

When it runs, the agent looks for four shapes of access-control bug in a Convex app: functions that trust a user ID passed in by the client (identity-from-arg), reads and writes with no per-document ownership check, public queries that leak sensitive fields when given a client-supplied id, and writes into a parent or container the caller does not own.

  • Runs a pattern-based scan over the convex/ directory first, reporting file, line and which shape matched.
  • Adds requireIdentity and requireOwner checks where the app has a proper auth setup.
  • Runs the TypeScript compiler to confirm the edits.
  • On an app with no auth foundation, converts privileged functions to internal-only and tells you to set up auth first.

Install convex-authz from the ZIP

Download the convex-authz ZIP from this page and unzip it. You should end up with a convex-authz folder containing SKILL.md. Put that folder in one of these locations:

  • Personal skills folder: ~/.claude/skills/
  • Project-only: the .claude/skills/ folder inside your Convex project
  • Claude apps: upload the ZIP under Settings → Capabilities → Skills

Trigger the skill with natural requests

You do not need to type a command. The skill's description lists trigger phrases, so ask for what you want in plain language. The source names these triggers: 'secure my app', 'audit auth/authz' and 'who can access this data'.

The skill is designed to skip when the project has no convex/ directory, so point it at a Convex project.

  • "Secure my app" in a project that contains convex/
  • "Audit auth/authz for this backend"
  • "Who can access this data?" when you are looking at a table or query
  • Ask for the four shapes by name if you want a targeted review of ownership checks

What the skill needs before it runs

Check these requirements first. The skill depends on them to do its work correctly.

For a scan and report, you need a Convex app with a convex/ directory and TypeScript. For the verification step, the project's typecheck setup must work, using npx tsc --noEmit or the project's typecheck script.

For full hardening, the source says you need an auth.config.ts with a provider and a users table keyed to the auth subject. Without both, the skill will not add enforcement.

  • A convex/ directory and TypeScript
  • A working typecheck (npx tsc --noEmit or the project's script)
  • An auth.config.ts with a provider, plus a users table keyed to the auth subject, for full hardening
npx tsc --noEmit

What happens on an app without auth set up?

This is the most important limit to understand. The skill's workflow checks for an auth foundation before adding any ctx.auth enforcement. If the foundation is missing, adding those checks would fail silently, because ctx.auth.getUserIdentity() returns null on such an app.

In that case the skill converts flagged privileged functions from public query or mutation to internalQuery or internalMutation, which removes public reachability. It then tells you to set up auth first and re-run convex-authz to add per-user ownership checks.

  • Expect an internalize-and-defer diff rather than ownership checks on an app with no auth.
  • Internal functions are not callable from clients, so check that your frontend does not call the converted functions directly.

Read the report and the diff

The skill reports findings grouped by the four shapes, with file and line numbers, and explains why each one is exploitable. It should also show the concrete diff it applied, not just describe the fix.

After the edits, the skill re-runs its scan. The source says a clean result means 0 remaining hits. Review the diff yourself before you deploy, because the scan is regex-based and can miss or misflag code.

  • Check each reported file:line against your own logic.
  • Confirm that ownership comparisons use the right value: the source warns that comparing an Id<"users"> field to identity.subject never matches.
  • Run your own tests after the typecheck passes.

What people use it for

  • Reviewing a Convex app before launch to find functions that accept a userId argument and trust it.
  • Checking that a document read or update by _id also verifies that the caller owns the row.
  • Finding public queries that return email or other sensitive fields when given a client-supplied id.
  • Checking that inserts into a project, board or team check that the caller belongs to that container.
  • Getting a repeatable checklist of the four authorization shapes for a code review.

Frequently asked questions

How do I install the convex-authz agent skill?

Download the convex-authz ZIP from this page and unzip it. Place the convex-authz folder in ~/.claude/skills/ for all projects, or in a project's .claude/skills/ folder. You can also upload the ZIP in the Claude apps under Settings → Capabilities → Skills.

What does convex-authz need to run?

It needs a Convex app with a convex/ directory, TypeScript, and a working typecheck such as npx tsc --noEmit. For full hardening it also needs an auth.config.ts with a provider and a users table keyed to the auth subject.

Is convex-authz free, and what is its licence?

The source lists the licence as MIT. The source does not state pricing, so check this page for any cost details before you rely on it.

Will convex-authz work on a backend other than Convex?

No. The skill is built for Convex apps and skips projects without a convex/ directory. The source says it is not useful for other backends.

Why did the skill make my functions internal instead of adding ownership checks?

Your app probably has no auth foundation. Without an auth.config.ts provider and a subject-keyed users table, ctx.auth.getUserIdentity() returns null, so the skill converts privileged public functions to internalQuery or internalMutation and asks you to set up auth first, then re-run it.

Does convex-authz make my app fully secure?

No. The source says it covers only the four listed patterns and its regex scan can miss or misflag code. Treat it as one review step, not a complete security audit.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

convex-authz suits developers shipping a Convex app with user-specific or sensitive data who want a repeatable check of four common authorization shapes. It is not a complete security audit, and it does nothing useful on apps with no convex/ directory or no auth provider and users table. If you need a broad review or a non-Convex backend, pick a different tool.

Download the skill

Find exactly what
you're looking for