What Is Vibe Coding? Its Limits and the AI Code Check Loop

What Is Vibe Coding? Its Limits and the AI Code Check Loop

Throw out your intent in words and code comes back. The speed vibe coding opened up, the gap that a 'feeling' isn't verification, and the verification harness that fills it, with code.

Vibe coding means AI writes code from your intent. What it solved, where it breaks, how it differs from agentic coding, and how to add a verification loop.

By · Fred KimUpdated
Vibe codingLLMVerificationworktree

Vibe coding is when you throw out your intent in words and an LLM fills in the code. In Part 1 we saw the limits of a single prompt: no state, no tools, and no verification. In the world of code, the first thing to shake those limits was vibe coding. In February 2025, a phrase from Andrej Karpathy became its name [1]: "forget that the code even exists" and "fully give in to the vibes."

> Part 2 of the "Evolution of LLM use" series. ① Prompting · ② Vibe coding · ③ Agents · ④ Harness engineering · ⑤ Open models.

Vibe coding, where stating your intent produces code quickly but breaks without verification, versus adding an isolate, run, and verify loop after generation to stabilize it

What vibe coding opened up: the friction of building disappeared

The core of vibe coding is raising the level of abstraction by one notch. Where we used to write every line ourselves, now we state the intent, "I want to build something like this," and the LLM fills in the code. We look at the result and fix it again in words.

This solved two things. First, speed: the time to build a prototype dropped from hours to minutes. Second, accessibility: you no longer have to memorize all the syntax; if your intent is clear, you can build something. The friction of building dropped sharply.

But a "feeling" isn't verification

The problem is that vibe coding inherited one limit straight from prompting: the absence of verification. Code that looks like it runs isn't necessarily right.

  • It looks like it works: If you check only the happy path and move on, it quietly breaks on edge cases.
  • Code you don't understand piles up: It isn't code you wrote, so you can't debug it either, and technical debt accumulates fast.
  • Security and correctness get skipped: "It runs?" and "It's right" are different. A feeling can't guarantee the latter.

The well-known vibe coding joke is "works until it doesn't." It works until it doesn't, and at that moment nobody knows why.

Here's how relying on feel compares with adding a verification loop.

AspectVibe coding aloneWith a verification harness
How you checkA feeling that it worksActual execution results
When it failsWorks until it doesn'tSurfaces first in an isolated space
Riskmain can break right awaymain stays safe
UnderstandingCode you didn't write piles up as isYou understand it by verifying with execution logs

Don't stop the vibes; add verification

The fix isn't to quit vibe coding. Keep building fast, but add a verification loop after generation: intent → generate → actually run → verify → merge if it passes. This is also the rule we use when we work with code. Build in an isolated workspace, actually run it to check, and only then merge.

# (1) Vibe: output goes straight to main; it only "looks like" it works
# (2) Harness: isolate -> generate -> verify by actually running -> merge only if it passes
git worktree add ../wt-feature -b feature/x   # isolated workspace
#   (the LLM implements inside wt-feature)
cd ../wt-feature
pytest -q && pnpm typecheck                    # verify by running, not by guessing
#   merge if it passes, otherwise try again; main never breaks

The core is one line: "Don't stop at a guess; look at the actual result." It lays verification down as the floor beneath the speed vibe coding created. Isolation makes failure safe, and execution turns "looks like it works" into "works."

In short

Vibe coding erased the friction of building and opened up speed and accessibility. But it still carries prompting's "no verification," so without a verification harness you're stuck in "works until it doesn't." Build fast, but isolate, run, and verify: that's the small edge that lifts vibes into real work.

So far, a person ran the loop. We built, ran, and fixed. What if the model ran the loop on its own, using tools and watching the results? That's the next part: agents.

For related reading, see How to write good prompts: pin down AI output with context design, What is an AI agent? Permissions and approval gates when the model runs its own loop, and What is first-party data? How to use it in marketing after third-party cookies.

Frequently asked questions

Where did the term "vibe coding" come from?

Andrej Karpathy first used it in a post on X (Twitter) on February 2, 2025. His phrasing was "forget that the code even exists" and "fully give in to the vibes."

Should I stop vibe coding altogether?

No. Keep the speed and accessibility of building fast, and add a verification loop (isolate → run → check) after generation. The fix isn't to stop the vibes; it's to lay down verification as the floor.

Does the verification harness have to be a git worktree?

No, a worktree is just one way to implement isolation. The core is to build in an isolated space and merge only after actually running and checking it. As long as you keep that principle, you can choose the tools to fit your situation.

References

  1. [1]Andrej Karpathy, X (Twitter) post: the post that first used the term "vibe coding", February 2, 2025

Summary

  • Vibe coding produces code when you state your intent, removing the friction and barrier to entry of building.
  • Looking like it works by feel is different from actually being right. Without verification, you're stuck in works until it doesn't.
  • The fix isn't to stop the vibes but to add a loop: isolate → generate → verify by running → merge if it passes.
  • The next stage is the agent, where the model, not a person, runs this loop on its own.

Why TRAIL Labs works this way

How a researcher-founder grounds measurement and recommendations, and how the three products relate to the company, is laid out on the about page, and how we work day to day is written up separately.

More posts

Keep reading on this topic

This post is part of the TRAIL Labs category, which collects all 19 posts on the topic. See all posts in TRAIL Labs