Vibe Coding
Also known as: natural-language coding, AI-driven development, agentic coding
- Vibe Coding
- Vibe coding is a software-development style where the developer expresses intent in natural language, an LLM-powered coding agent generates the code, and the human iterates on results without necessarily reading the diffs. Coined by Andrej Karpathy in February 2025.
Vibe coding is a software-development style where a person describes what they want in plain language and an AI agent writes the code — often without the human reading every diff before shipping.
What It Is
You describe an app, the AI builds it, you run it, you say what’s wrong, the AI fixes it. That is the loop vibe coding compresses into a single conversation. The phrase comes from Andrej Karpathy, who described in February 2025 the experience of building software while “fully giving in to the vibes” — accepting AI-generated code without reading every line, fixing problems by talking, and shipping things he would never have written manually.
For someone outside engineering, vibe coding looks like the closest thing to actually using a computer the way films promised: ask in plain English, get a working app. For someone inside engineering, it is a new workflow where the unit of work shifts from “function I wrote” to “feature I described.” Tools like Cursor, Claude Code, Lovable, Replit Agent, and Bolt make this possible by wrapping a code-aware LLM in an editor that can read files, run commands, and edit code on its own.
Under the hood, the loop usually goes: you state intent, the agent reads your project context, it writes or edits files, it runs tests or starts the server, it reports back, you steer the next step. According to Google Cloud, Anthropic’s Model Context Protocol — released in late 2024 — standardises how these agents pull in external context such as your repo, your database schema, or your design system, so the LLM has more than the prompt to work from. Without that kind of plumbing, the agent is guessing in a vacuum.
The strict definition matters. According to Simon Willison’s blog, true vibe coding means building software without reviewing the generated code — you trust the AI and move on. The broader 2026 usage often slips to mean any natural-language coding, even when developers carefully read every diff. According to Karpathy on X, he now reserves the casual term for throwaway prototypes and uses “agentic engineering” for serious professional work.
How It’s Used in Practice
Most people who Google “vibe coding” meet it in one of two places. The first is a coding assistant inside an IDE — Cursor or Claude Code or Windsurf — where they type a request like “add a login screen that uses Google auth” and watch the assistant edit several files at once. The second is a browser-based builder like Lovable, Bolt, or v0, where there is no IDE at all: you describe a product and the platform stands up a working web app you can deploy in a few clicks.
In both flows the human’s job changes. You spend less time writing syntax and more time describing what “done” looks like: “the form should validate emails before submit, show a spinner during the request, and redirect to /dashboard on success.” If the agent gets it wrong, you do not open the source file to fix it — you describe the gap and ask again. The iteration loop runs at conversation speed.
Pro Tip: Keep a CONTEXT.md or specification file in the repo that the agent reads on every run. List your stack, your conventions, your forbidden libraries, your file layout. The single biggest difference between a good vibe-coding session and a frustrating one is whether the agent knows the rules of your project before you ask it for anything.
When to Use / When Not
| Scenario | Use | Avoid |
|---|---|---|
| Prototyping a side project or weekend app | ✅ | |
| Building an internal tool nobody outside your team will see | ✅ | |
| Generating a UI from a Figma file or wireframe | ✅ | |
| Code that handles payments, auth secrets, or PII without review | ❌ | |
| Production code shipped to paying customers without a human reading the diff | ❌ | |
| Refactoring a legacy module you do not understand and cannot test | ❌ |
Common Misconception
Myth: Vibe coding means an AI writes your whole app and you never touch the code. Reality: That is the strict, throwaway-prototype version. In professional work, most people who say they vibe-code still read the diffs, run the tests, and own the result — they just write far less of the code by hand. Karpathy himself draws the line and now uses “agentic engineering” for the serious version of this workflow.
One Sentence to Remember
Vibe coding shifts the developer’s job from writing code to specifying intent and reviewing results — the better your spec and the tighter your feedback loop, the more useful the AI becomes.
FAQ
Q: Who invented the term vibe coding? A: Andrej Karpathy, former Tesla AI director and OpenAI founding member, coined it in a tweet on February 2, 2025, according to Karpathy on X. The phrase spread within weeks across the developer community.
Q: Is vibe coding the same as using GitHub Copilot? A: No. Copilot autocompletes code line by line while you drive. Vibe coding hands the wheel to the agent — you describe the outcome and review what comes back, often without reading every line.
Q: Can vibe coding be used for production software? A: Yes, but with discipline. Treat the AI output like a junior engineer’s pull request — read it, test it, and own the bugs. Karpathy now uses “agentic engineering” to describe this professional mode.
Sources
- Karpathy on X: Andrej Karpathy’s original vibe coding tweet - The tweet that coined the term in February 2025.
- Simon Willison’s blog: Not all AI-assisted programming is vibe coding - Clarifies the strict definition: shipping code without reading it.
Expert Takes
Vibe coding is what happens when language models cross a capability threshold: their output for routine code becomes statistically reliable enough that a human can choose to skip the diff and still ship a working result. The interesting question isn’t whether the AI “understands” the code — it doesn’t, in any meaningful sense — but how well the feedback loop catches the cases where the statistics fail you.
The reason vibe coding can work at all is context. An agent that knows your file structure, your naming conventions, your test command, and your forbidden patterns produces dramatically different output than one running on the prompt alone. Treat your spec file as the actual product — keep it precise, version it, and update it when the codebase grows. The conversation is where the work shows up, but the specification is where the work gets done.
Vibe coding is restructuring who can build software. The people running marketing, ops, sales, and HR are now spinning up internal tools that used to require a backend ticket. That changes hiring, the roadmap, and what “developer” means a few years from now. You’re either building the workflow where non-engineers and engineers share a codebase, or you’re losing the speed advantage to a competitor who already did.
There is a quiet question vibe coding doesn’t want to answer: who is responsible for code that nobody actually read? When the AI invents a security flaw, when it ships a regulation it doesn’t understand, when it copies a license-encumbered snippet from training data — the human accepted it without looking. The strict definition makes that choice explicit. The casual one lets people pretend they didn’t make it. Both are technically vibe coding. Only one is honest.