StackAttestTechnical Trust
Vibe code audit

Audit your vibe-coded app before real users find the problems

Asking the tool that wrote your application whether it is secure gets you a fluent answer from a reviewer with the author's blind spots. An audit gets you a result someone else has reason to believe: named controls, tested against standards, with the strength of the evidence recorded next to each one.

Scan a live appValidate a repositorySee an example Passport

What gets tested

Three layers, each producing a different strength of evidence. You can stop at any of them, and the report says which ones ran.

Public URL scan

E4
URL scan

Tests the deployed application from outside, the way any visitor reaches it: transport security, security response headers, and what the running service discloses about itself. It needs nothing but the address, and what it observes it observes against the running system. Its limit is reach rather than strength: a URL can never establish authorisation, data-layer or backup posture, and those controls stay uncovered.

Repository validation

E2
Repository

Reads the source: where secrets live, whether authorisation is enforced on the server or only in the interface, whether data access is injection safe, and which dependencies carry known critical vulnerabilities. Findings cite the file they came from, so a result is checkable rather than asserted.

Runtime validation

E4
Runtime

Builds and runs the application in an isolated environment and probes the running system. This is the layer that answers questions reading code cannot: whether the deployed configuration actually refuses an unauthorised request, and whether error responses leak internals under real conditions.

What an audit of AI-built software usually finds

These are the failure modes that recur in applications assembled quickly, not claims about your application. The audit establishes which of them are actually present.

Authorisation that lives in the interface

The admin button renders only for admins and the edit form appears only for the owner, so the application looks correct. Requests do not come from the interface. If ownership is not checked on the server, a direct request reaches another account's record, which is the most exploited weakness in the OWASP API list.

Database rules that were never switched on

A generated backend frequently ships with table-level rules disabled or with a policy that only asks whether someone is logged in. During development, when you are the only user, the data looks correctly scoped. In production it is readable by anyone holding the public key.

Privileged keys inside the browser bundle

Some keys belong in client code and are safe there. A key that bypasses your database rules is not one of them, and once it ships in a bundle every visitor has downloaded it. Removing it later does not undo the exposure.

Dependencies nobody has read

A project can acquire a large dependency tree in a single generation step. Known vulnerabilities in those packages are public by definition, which makes this the cheapest class of finding to fix and the least excusable to ship.

Integrations that trust their input

Webhook handlers that never verify a signature, endpoints that accept an identifier from the request and act on it, and error responses that return internals. Each is individually small and each is a way in.

What the result looks like

An illustrative extract, not a real customer result. Every row carries the evidence grade behind it, and a control nobody could establish says so.

ControlStatusEvidenceNote
Object ownership enforced server-sideFailedE2Two endpoints act on an identifier supplied by the caller
Secrets managed outside source codeVerifiedE2No privileged key reachable from client code
Transport security enforcedVerifiedE4Confirmed against the running deployment
Dependencies free of known-critical vulnerabilitiesPartialE3One critical advisory with a fix available
Verified backups and restore procedureUncoveredNot gradedNo evidence available from the layers that ran

Mapped to published standards

Each control is tested against a named clause, so a result means something outside our own vocabulary. Mapping is not certification, and none of these bodies endorse StackAttest.

OWASP ASVS 5OWASP API Security Top 10CWENIST SSDFOWASP WSTG

What this audit is not

  • It is not a penetration test. A deterministic check and a runtime probe are not an adversarial human engagement, and there are classes of weakness only a person hunting for them will find.
  • It is not SOC 2 and does not replace it. SOC 2 attests to organisational controls over time; this validates technical controls in the software. They answer different questions for different buyers.
  • It does not replace human due diligence. It gives a reviewer repeatable evidence to start from, which is a different thing from being the reviewer.
  • Controls the run could not reach are reported as uncovered rather than passed. A result you did not earn is worse than no result.

Questions

What is a vibe code audit?

An independent check of an application that was largely written by an AI coding tool. It tests named technical controls against published standards and records how strong the evidence behind each result is, so the answer is verifiable by someone who was not involved in building it.

Do you need access to my repository?

No. A URL scan needs only the address and tests the deployed application from outside. Connecting a repository adds source-level evidence, and runtime validation adds the strongest, but each layer is optional and the report says which ones ran.

Is my app insecure because AI wrote it?

Not by itself. AI accelerates implementation, which means more software reaches production without anyone having reviewed the decisions inside it. The audit exists to establish what is actually true of your application rather than to assume.

How is this different from asking Claude or Cursor to review the code?

A model reviewing code it wrote inherits its own blind spots, only sees the files in its context, cannot test the running system, and produces a transcript rather than evidence. An audit tests the deployed system, grades each result, and ends in something you can hand to someone else.

What do I get at the end?

A result per control with its evidence grade, an explicit list of controls the run could not cover, and a Passport you can publish if you choose. Publication is yours to decide; nothing becomes public because a scan happened.

Does a passing result mean my app is secure?

It means the controls that were tested passed at the evidence strength recorded. Thirteen controls is a defined floor and not a complete security review, and the report is written to make that distinction rather than blur it.

Related

AI code auditAI app security auditIs my Lovable app secure?A security review prompt, and its limitsHow to check an AI-built appFree vibe coding checklist

Find out what is actually true of your application

Start with the layer you can run today. The report says which layers ran and what they could not reach, so the result is honest about its own limits.

Scan a live appValidate a repository