A Framework by Justin McKelvey

Vibe Debt

Every line of AI-generated code you don't understand is a payment due to your future self.

Quick Answer

Vibe Debt is the silent cost of shipping software an AI wrote that nobody on your team understands. It comes in 3 forms: Drift Debt (the AI's output silently diverges from your stated intent), Dependency Debt (libraries the AI imported you'll never read the docs for), and Comprehension Debt (the code works, but you can't change it without breaking it). As of mid-2026, most production "vibe-coded" apps I audit carry at least one form. Distinct from classical tech debt: tech debt is a known shortcut. Vibe Debt is a blind spot.

Coined by Justin McKelvey, fractional CTO · 15+ years shipping products · Updated June 2026

What is Vibe Debt?

Vibe Debt is the credit-card metaphor for vibe coding. You borrow productivity now by accepting AI-generated code without fully understanding it. You pay later — in bugs, in security incidents, in being unable to ship the next feature because the foundation underneath you is opaque.

It's adjacent to classical technical debt, but distinct in one specific way. Tech debt is code your team understands but knows is suboptimal. Vibe Debt is code nobody on the team ever read. The shortcut isn't a known choice. It's an unknown unknown.

Most founders shipping with Cursor, Lovable, Claude Code, Replit, or Bolt are accruing Vibe Debt every week. That's not an argument against the tools — it's an argument for keeping the receipts. The tools are fine. The blindfold is the problem.

The Structure

What are the 3 forms of Vibe Debt?

Form 1

Drift Debt

What it is: The AI's output silently diverges from your stated intent.

Example: You asked for "save the user's preference to localStorage." The AI wrote a localStorage call and added an API endpoint that posts the preference to a backend that doesn't exist. Six weeks later, preferences save sometimes and not others. Nobody knows why.

How to spot it: Behavior drifts as you scale up traffic, or works locally but breaks in production. The code does more than you asked for — but you don't know what extra it's doing.

Form 2

Dependency Debt

What it is: Libraries the AI imported that you'll never read the docs for.

Example: The AI pulls in a 200KB animation library to add a hover effect on one button. You don't know it's there. Nine months later, the library ships a CVE rated 9.1. You're vulnerable. You don't know.

How to spot it: Your package.json (or equivalent) has 40+ dependencies you can't justify the value of in one sentence each.

Form 3

Comprehension Debt

What it is: The code works, but you can't change it without breaking it.

Example: The AI built your auth flow in a clever, dense pattern that interweaves four different state hooks across three components. The first time you need to add two-factor auth, you spend twelve hours figuring out where to insert it without breaking the existing flow.

How to spot it: Every "small change" turns into a half-day investigation. Estimates feel impossible because you can't predict what you'll find when you open a file.

How do you pay down Vibe Debt?

Three practices. None require a rewrite. None take more than an hour a week. The first thing founders try is a full rewrite. The first thing they should try is a Friday afternoon.

  1. Practice 1

    The Read-and-Annotate Pass

    Every Friday, pick one file the AI wrote that's still mysterious to you. Read it line by line. Add comments in plain English explaining what each section does. By month-end, the worst 4–5 files are demystified — and the act of explaining the code to yourself surfaces bugs and odd choices you'd otherwise miss.

  2. Practice 2

    Quarterly Dependency Triage

    Once a quarter, list every dependency. For each one, write a single sentence justifying why it's there. Anything you can't justify, evaluate for removal. The list shrinks fast. Your supply chain risk shrinks with it.

  3. Practice 3

    Refactor When You Next Touch

    When you have to change a file anyway, spend the first 30 minutes refactoring it for comprehension — rename variables, split functions, add comments. Then make the change. Time-box the cleanup so you don't get sucked in. Over time, the most-touched files become the most-understood files.

When should you stop accepting AI-generated code without review?

Hard stops — the boundaries where Vibe Debt becomes operationally dangerous:

  • The code touches authentication, payments, or PII.
  • You're about to ship to more than 100 users.
  • A different developer than the AI's prompter will have to maintain this code.
  • You'd struggle to explain what the code does in a one-paragraph status update.

Inside those boundaries, AI generation is fine — faster than typing. Review is the cheap part. The 30-second pause to read the diff before accepting it is the entire prevention strategy. That's the line separating founders who ship from founders who pay me to rescue them.

Frequently Asked Questions

Vibe Debt FAQ

What is Vibe Debt?
Vibe Debt is the silent cost of shipping software an AI wrote that nobody on your team understands. It's distinct from classical technical debt: tech debt is code your team understands but knows is suboptimal; Vibe Debt is code nobody ever read. Coined by Justin McKelvey, fractional CTO, in 2026.
What are the 3 forms of Vibe Debt?
Drift Debt (the AI's output silently diverges from your stated intent), Dependency Debt (libraries the AI imported that you'll never read the docs for), and Comprehension Debt (the code works, but you can't change it without breaking it). Most production vibe-coded apps have at least one form; many have all three.
How is Vibe Debt different from technical debt?
Classical tech debt is a known shortcut — your team understands the code and acknowledges it's not ideal. Vibe Debt is a blind spot — nobody on the team ever read the code, so you don't know what shortcuts the AI took or which patterns it skipped. Tech debt is a choice. Vibe Debt is a surprise.
How do I pay down Vibe Debt?
Three practices, none requiring a rewrite: (1) a weekly Read-and-Annotate pass on one mysterious file, (2) quarterly dependency triage (justify each library in one sentence), (3) refactor for comprehension when you next touch the file, time-boxed to 30 minutes. Within 90 days the worst 4-5 files are demystified without a full rebuild.
When should I stop accepting AI-generated code without review?
Hard stops: code that touches authentication, payments, or PII; code about to ship to more than 100 users; code a different developer than the AI's prompter will maintain; and any code you'd struggle to explain in a status update. Inside those boundaries, AI generation is fine — review is the cheap part.
Is Vibe Debt the same as bad code?
No. Vibe Debt can be in well-written, idiomatic code — the problem isn't quality, it's comprehension. Beautiful AI-generated code you don't understand is still Vibe Debt. Conversely, ugly hand-written code you fully understand is tech debt, not Vibe Debt. The diagnostic is comprehension, not aesthetics.
Can I use AI coding tools without accruing Vibe Debt?
Yes — by reviewing each diff before accepting it. Tools like Cursor's Composer mode and Claude Code's diff view exist for this. The discipline that prevents Vibe Debt is the 30-second pause to read the diff before accepting it. The discipline that creates Vibe Debt is treating AI suggestions as a black-box assembly line.

If you suspect you're carrying Vibe Debt, let's audit it.

A 30-minute call to walk through what you've shipped and identify the highest-leverage paydown moves. Free, no pitch deck.

Book a strategy call