Desktop app · Local security analysis

The security review your AI skipped.

AI assistants write code that works. VibeTect checks whether it’s safe — inspecting your project for exposed secrets, broken access control, unsafe authentication and risky configuration, on your own machine, before you deploy.

Your code is analyzed locally. No repository access or code upload required.

Illustrative demo of a VibeTect inspection. An AI-generated API route is inspected, a broken access control issue is flagged on line 11, and a safer version scopes the query to the signed-in user. Two further examples show an exposed payment key and a SQL injection. Nothing on your device is being scanned.

highResolvedroute.ts:11

Any signed-in user can read any invoice

Broken access control · CWE-639 · OWASP A01:2021

Why it matters
The query trusts the ID in the URL. Change /invoices/1042 to /invoices/1043 and you get someone else’s invoice — name, address and amount.
Fix
Scope the lookup to the signed-in owner and return 404 when nothing matches.
criticalResolvedBuyButton.tsx:4

Live payment key shipped to every visitor

Exposed secret · CWE-798 · CWE-200

Why it matters
"use client" bundles this file into JavaScript anyone can download. Whoever copies the key can act as your Stripe account.
Fix
Create the checkout session in a server route that reads the key from an environment variable. If this was ever deployed, rotate the key.
criticalResolvedsearch.py:10

The search box can run attacker-written SQL

SQL injection · CWE-89 · OWASP A03:2021

Why it matters
Input is pasted straight into the query. A search for ' OR 1=1 -- returns every post, and crafted input can read data from other tables.
Fix
Use a parameterized query so input is always treated as data, never as SQL.
Runs on your machineIllustrative demo — nothing on your device is being scanned
  • 01

    Local by design

    Your project is inspected on your own device.

  • 02

    Assistant-agnostic

    It checks the code itself, whichever AI wrote it.

  • 03

    Findings in plain English

    What’s wrong, why it matters and how to fix it.

01The gap

“It works” is not a security review.

AI coding tools are very good at producing code that runs. Whether that code checks who is allowed to see what, keeps keys out of the browser, or treats user input as hostile is a different question — and it’s rarely the one you asked.

The result is software that passes every test you thought to run, then fails the first time someone tries something you didn’t. VibeTect exists to ask the questions your prompt left out.

Prompt
“Add an API route that returns an invoice by its ID.”
Result
  • Compiles without errors
  • Returns the right invoice
  • Passes your manual test
Missed
  • Checks that the invoice belongs to the person asking

What the research says

Benchmarks measure controlled test tasks, not every real-world codebase. They describe the risk; they don’t predict your project. Read our summary of the research.

02What VibeTect checks

Five places AI-built software breaks first.

VibeTect is built around the mistakes that show up again and again in AI-assisted projects — and that are most likely to turn into real incidents. Select an area to see an example.

lib/supabase.tsExhibit 01
import { createClient } from "@supabase/supabase-js"; export const supabase = createClient(  process.env.NEXT_PUBLIC_SUPABASE_URL!,  process.env.NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY!);
FlaggedNEXT_PUBLIC_ variables are inlined into the JavaScript sent to every visitor, and a service-role key bypasses Row Level Security entirely.

Why AI assistants get this wrong

Assistants optimize for code that runs on the first try. Pasting a key inline is the fastest way to make a demo work — and that snippet often lands in a client component, a public environment variable or a committed config file.

CWE-798 · CWE-200 · CWE-312

routes/users.tsExhibit 02
router.patch("/users/:id", requireAuth, async (req, res) => {  const user = await User.findByIdAndUpdate(    req.params.id,    req.body,    { new: true }  );  res.json(user);});
FlaggedAny signed-in user can update any account, and because the whole request body is applied, they can also send { "role": "admin" }.

Why AI assistants get this wrong

“Add an endpoint to update a user” describes the happy path. Ownership and role checks are unstated requirements, so they are easy for an assistant to leave out — and nothing breaks when they are missing.

CWE-639 · CWE-915 · OWASP A01:2021

lib/auth.tsExhibit 03
import jwt from "jsonwebtoken"; export function currentUser(req: Request) {  const token = req.headers.get("authorization")?.slice(7);  const claims = jwt.decode(token ?? "") as Claims | null;  return claims?.sub ?? null;}
Flaggedjwt.decode() reads a token without checking its signature, so anyone can forge one for any user ID. Use jwt.verify() with your secret and an explicit algorithm.

Why AI assistants get this wrong

Authentication is full of details — signature verification, expiry, algorithm choice, hashing cost — that are easy to get almost right. Almost right compiles, passes a manual test and fails against an attacker.

CWE-347 · CWE-287 · OWASP A07:2021

server.tsExhibit 04
const app = express(); app.use(cors({ origin: true, credentials: true }));app.use(express.json()); app.listen(process.env.PORT ?? 3000);
Flaggedorigin: true echoes back whichever site is calling. With credentials allowed, any website your users visit can make signed-in requests to your API and read the responses.

Why AI assistants get this wrong

When something doesn’t work, the quickest suggestion is often to loosen a setting — allow every origin, disable a check, turn on verbose errors. The error goes away. The loosened setting ships.

CWE-942 · CWE-16 · OWASP A05:2021

components/Comment.tsxExhibit 05
export function Comment({ body }: { body: string }) {  return (    <div      className="prose"      dangerouslySetInnerHTML={{ __html: marked(body) }}    />  );}
FlaggedUser-written Markdown is converted to HTML and injected unsanitized. A comment containing a script payload runs in every reader’s browser.

Why AI assistants get this wrong

Models learned from decades of public code, including decades of insecure examples. Familiar patterns — string-built queries, raw HTML rendering, shell calls with user input — still appear in fresh output.

CWE-79 · CWE-89 · OWASP A03:2021

Code shown is illustrative. The exact checks available depend on the release you install. Explore the product in depth.

03Chain of custody

Your code stays in your custody.

In forensics, every hand that touches the evidence is a risk. VibeTect keeps the chain short: your project, inspected by an app running on your machine, producing findings that stay with you.

Your device
  1. InputYour project folderSource and configuration files, as they are on disk.
  2. AnalysisVibeTect desktop appInspects the project with your machine’s own resources.
  3. OutputFindingsSeverity, location, explanation and fix guidance.
Uploading source codeNot required for analysis
Diagram: your project folder is analyzed by the VibeTect desktop app on your own device, producing findings on that device. Uploading source code to a remote server is not required for analysis.
No repository permissions
Point VibeTect at a folder. There’s no Git hosting app to install and no access scope to approve.
Works with code you can’t share
Client work, pre-launch products and proprietary code can be checked without sending them to a third-party service.
Clear about the boundary
Local analysis sees your project files, not your live servers. Settings that exist only in a hosting or database dashboard need checking where they live.
How local-first analysis works

04Anatomy of a finding

Written for the person who has to fix it.

A rule ID isn’t an explanation. Each finding is designed to make sense to a founder and to hold up for an experienced engineer.

High01app/api/invoices/[id]/route.ts:1103

Any signed-in user can read any invoice 02

Why it matters 04

The invoice is looked up by the ID in the URL, without checking who owns it. Anyone with an account can change/invoices/1042 to /invoices/1043 and read another customer’s name, address and billing amounts.

How to fix it 05

Include the signed-in user in the query — for example where: { id, ownerId: user.id }— and return 404 when nothing matches, so the response doesn’t reveal which IDs exist.

Broken access control · CWE-639 · OWASP A01:2021 06

  1. 01

    Severity

    How urgent it is, in one word — so you know what to fix first.

  2. 02

    Plain-English title

    What can go wrong, described as an outcome rather than a rule name.

  3. 03

    Exact location

    File and line, so you can go straight to the code.

  4. 04

    Why it matters

    The realistic consequence: who could exploit it, and what they would get.

  5. 05

    How to fix it

    Specific guidance you can apply yourself or hand to your AI assistant.

  6. 06

    References

    CWE and OWASP mappings for developers who want the full technical context.

05How it works

From folder to findings in four steps.

No pipelines to configure and nothing to connect. Open your project and inspect it.

  1. 01

    Install the desktop app

    VibeTect runs as a native application on your computer.

  2. 02

    Choose a project folder

    Point it at the code you’re about to ship. No repository permissions.

  3. 03

    Inspect locally

    Source and configuration are analyzed on your machine.

  4. 04

    Fix and re-check

    Work through findings by severity, then run it again.

The full workflow

06Who it’s for

Built for people shipping faster than they can review.

If AI writes a meaningful part of your code, VibeTect gives you the second look it needs before real users depend on it.

  • 01

    Founders shipping with AI builders

    You built the product in weeks with Lovable, Bolt, Replit or v0. There’s no security team — just you and a launch date.

    Typical findingDatabase key with admin rights reachable from the browser

  • 02

    Developers pairing with AI assistants

    Cursor, Copilot or Claude Code writes a growing share of each pull request. You review the logic; nobody reviews every line for risk.

    Typical findingToken decoded, never verified

  • 03

    Small teams moving fast

    The codebase grows faster than anyone can read it. You need a consistent check before each release, not a quarterly audit.

    Typical findingAdmin route protected only in the UI

  • 04

    Agencies and freelancers

    You deliver apps that handle your clients’ customers. Check before handover — without sending client code to another service.

    Typical findingDebug mode enabled in production config

Use cases in detail

07Straight answers

What VibeTect is. And what it isn’t.

VibeTect is

  • A fast, local first line of review for AI-assisted projects
  • A way to catch common, high-impact mistakes before they reach users
  • Explanations written for builders, with depth for engineers
  • Something you can run before every deploy, not once a year

VibeTect is not

  • A guarantee that your application is secure
  • A penetration test or a compliance certification
  • A view into your live servers or dashboard-only settings
  • A substitute for expert review of high-risk systems

No automated tool can promise zero vulnerabilities. Be wary of any that does.

Common questions

Is my code uploaded anywhere?

VibeTect is built on local-first analysis: the desktop app inspects your project on your own machine, so your source code doesn’t need to be sent to our servers to be checked. The security & privacy page explains the model and its limits in detail.

Will VibeTect find every vulnerability?

No — and no tool can honestly promise that. Automated analysis is very good at catching common, high-impact mistakes quickly. It can’t understand every business rule, and it doesn’t see your live infrastructure. Treat VibeTect as a fast, thorough first line of review, not a guarantee, a certification or a replacement for a professional penetration test on high-risk systems.

Does it only work on AI-generated code?

No. VibeTect inspects the code in your project regardless of who — or what — wrote it. It is designed around the mistakes AI assistants commonly make, but those same mistakes appear in human-written code too.

How do I get VibeTect?

VibeTect is currently in early access. Request access and tell us your operating system; we’ll email you when a build for your platform is ready. Public builds will be published on the download page.

All questions

Check it before you ship it.

Run a local security inspection on the project you’re about to deploy — and fix what it finds while it’s still cheap to fix.

Local analysis · No repository access required