What is Vibe Coding?

Last updated: July 2026

Vibe coding is a workflow where you build software by prompting an AI and accepting its generated code largely without review. Andrej Karpathy coined it in February 2025 — “fully give in to the vibes, embrace exponentials, and forget that the code even exists” — describing accepting all changes without reading diffs and pasting errors back in until things worked, for what he himself scoped as “throwaway weekend projects.” Within a year the term drifted into shorthand for any AI coding; this entry keeps the precise meaning, because the precision is where the engineering judgment lives: the defining trait is not using AI — it’s not reviewing what the AI wrote.

Key takeaways

QuestionAnswer
The definitionPrompt → generate → run → re-prompt — without reading the code
The originKarpathy, Feb 2025 · Collins Word of the Year 2025
The lineReviewed, tested, understood = AI-assisted engineering, not vibe coding
The record~45% of AI-generated code carries security flaws; real breaches followed
The ruleVibe the low-stakes surface; never the auth, data, or money paths

The loop, and the definitional line

The workflow is a tight loop: describe → the AI generates → run it → paste errors or new wishes back → repeat, treating the codebase as the AI’s problem. Simon Willison drew the line that keeps the term useful: if you reviewed every change, tested it, and could explain it to someone else, “that’s not vibe coding — that’s software development.” The distinction isn’t gatekeeping; it’s a risk label. The same loop with review is AI-assisted engineering — the AI as a fast, unsupervised-never junior — and which mode you’re in should be a decision, not an accident. What that decision looks like in practice:

// JavaScript — Cloud Code (cloud/main.js)
// The guardrail under a vibe-coded frontend: rules the AI can't skip
Parse.Cloud.beforeSave('Note', (req) => {
  // Whatever the generated client sends, ownership is enforced HERE
  if (!req.user) throw 'Sign in required';
  const acl = new Parse.ACL(req.user); // private by default
  req.object.setACL(acl);
});
// Client keys are publishable; the Master Key stays server-side.
// The vibe-coded UI can be rewritten nightly — these rules survive.

Vibe coding vs. AI-assisted engineering vs. traditional development

Vibe codingAI-assisted engineeringTraditional
Who writes codeThe AIThe AI + the humanThe human
ReviewSkipped — that’s the definitionEvery changeEvery change
Human ownsThe prompt and the vibeArchitecture, correctnessEverything
SpeedFastestFastBaseline
FitThrowaways, prototypesReal productsReal products
Failure modeShipped code nobody understandsAI-scale mistakes, human-caughtHuman-scale mistakes

The spectrum, and the graduation rule

The vibe coding to production spectrumSoftware moves along a spectrum from vibe-coded throwaway prototypes through reviewed AI-assisted development to production engineering. Code graduates from one stage to the next only through human review and tests, and the failure mode is skipping the graduation by shipping a prototype directly to users.

graduation: review
+ tests + hardening

same gate, higher bar

the failure mode:
ship it as-is to users

Vibe-coded prototype
unreviewed, fast, disposable

AI-assisted development
human owns correctness

Production engineering
accountability + operations

Incident

Software moves along a spectrum from vibe-coded throwaway prototypes through reviewed AI-assisted development to production engineering. Code graduates from one stage to the next only through human review and tests, and the failure mode is skipping the graduation by shipping a prototype directly to users.

The framing that resolves most vibe-coding arguments: it’s a stage, not an identity. Prototypes deserve the vibes — that’s the point of prototypes. The rule the incident record teaches: code graduates between stages only via review and tests. Notably, Karpathy himself moved on within the year, distinguishing casual vibe coding from “agentic engineering” for serious work — the coiner agreeing with his critics about scope.

What actually breaks: the incident record

The honest section vendor explainers soften. Industry scans put OWASP-class flaws in roughly 45% of AI-generated code, and independent review tooling measured AI code carrying ~1.7× more major issues than human-written baselines (the academic treatment reaches similar conclusions). The named incidents share one anatomy: in 2025, a scan of apps built on a popular prompt-to-app builder found 170 of 1,645 leaking user data — the generated stack shipped with the database’s row-level security disabled (logged as a CVE); a prompt-to-app platform’s own auth layer allowed any user into any private app via a guessable ID; and a viral consumer app was breached when its unsecured mobile-backend database let any authenticated user pull other users’ IDs and private messages. None of these were exotic attacks. All were backend basics — access rules, authentication, credentials — generated permissive and accepted unreviewed.

The backend is where it bites

Read the incident list again and the pattern names itself: the danger isn’t that AI writes a clumsy UI — a broken button is a refresh. The danger concentrates where the data lives: authentication, access rules, API keys pasted into client code, absent rate limits. Unreviewed code is most dangerous exactly where review matters most — and that’s the architectural answer: make the vibe-coded part the low-stakes part. A generated frontend over a managed backend inverts the risk: the platform supplies hardened auth, deny-by-default ACLs enforced server-side, publishable client keys with the real secrets held elsewhere, and server-side functions for the logic that must not live in generated client code. The AI can rewrite the UI nightly; it cannot disable rules it doesn’t control.

The guardrails checklist

  1. Review anything touching auth, data, or money — the graduation gate, non-negotiable.
  2. Checkpoint in version control before “accept all” — cheap undo for expensive suggestions.
  3. Keep secrets out of prompts and client code — treat both as public.
  4. Deny-by-default access rules — the generated app gets the permissions you chose, not the permissive ones it suggested.
  5. Server-side validation for every invarianthooks the client can’t skip.
  6. Tests before trust — the loop’s only honest feedback beyond “it seems to run.”
  7. Small scopes, one task per prompt — review-sized diffs stay reviewable.
  8. Cap spendAPI keys with quotas; agent loops have burned real budgets.
  9. Sandbox experiments — separate app, separate keys, disposable data.
  10. Know which mode you’re in — vibing or engineering, chosen on purpose.

Common use cases

  • Prototypes and MVPs — the founding use case: test the idea this weekend, not this quarter.
  • Personal and internal tools — small audience, known users, low blast radius.
  • Hackathons and demos — speed is the entire rubric.
  • Learning by building — the loop as a tutor, with the caveat that unread code teaches less.
  • UI iteration over a stable backend — the inverted-risk architecture: vibes above, contracts below.

Should you vibe code it? A decision matrix

The thing you’re buildingVerdict
Weekend throwaway, demo, experimentVibe freely — that’s the habitat
Internal tool, real but smallVibe, then review the data paths
Anything with user accountsThe backend comes from a hardened platform, not the prompt
Anything handling payments or PIIFull review — this is engineering now
A startup’s actual productAI-assisted with ownership; prototypes graduate, never ship as-is
The frontend over a managed backendThe sweet spot — speed where it’s safe

Limitations and trade-offs

  • Debugging unread code is archaeology. When the loop stalls, someone must finally read everything at once — the review you skipped, with interest.
  • Comprehension debt compounds. Every accepted-unread change widens the gap between what the app does and what anyone can explain; the gap is the risk.
  • AI defaults are permissive. Generated configs favor “it works” over “it’s safe” — open access rules, embedded keys — and the user who most needs to notice is least equipped to.
  • The term is drifting. “Vibe coding” increasingly means any AI coding, which launders prototype-grade practices into production conversations; precision about which mode you’re in is the defense.
  • Skill atrophy is real but misframed. The skill that matters shifts from writing code to specifying, reviewing, and judging it — atrophy happens only if review is skipped too.

Vibe coding with Back4app

Back4app is an open-source Backend-as-a-Service (BaaS) platform that combines a managed database, auto-generated REST and GraphQL APIs, authentication, file storage, and Cloud Code serverless functions. The pairing is the inverted-risk architecture made practical: point the generated frontend at a backend where the load-bearing parts are already engineered — signup, sessions, and social login from the platform; ACLs and class-level permissions enforced server-side on every request, deny-by-default; publishable client keys with the master key held server-side; and the code tabs’ beforeSave guard as the pattern for every invariant the AI-written client must not be trusted with. The vibe-coded surface stays what Karpathy meant it to be — fast, fun, disposable — while the parts that end up in incident reports come from a platform, reviewed once, enforced always.

Frequently asked questions

What is vibe coding?

Building software by describing what you want to an AI in natural language and accepting the generated code largely without line-by-line review — iterating by running, testing, and re-prompting rather than editing. The not-reviewing part is the defining trait, per the term's strictest readings.

Who coined the term vibe coding?

Andrej Karpathy, in an X post in February 2025 — "fully give in to the vibes, embrace exponentials, and forget that the code even exists." Collins made it Word of the Year for 2025, and dictionaries tracked it as slang within weeks of the coinage.

Is vibe coding the same as AI-assisted development?

No, and the distinction matters. In vibe coding you don't review or fully understand the output. In AI-assisted engineering the human keeps architectural control and reviews everything — Simon Willison's rule: if you reviewed, tested, and could explain every line, that isn't vibe coding; that's software development.

Is vibe coding real programming?

It produces real, working software — and it is not engineering. What's missing is accountability: review, understanding, and the ability to reason about failure. For throwaway scopes that's fine, which was Karpathy's own framing; for anything with users and data, the missing parts are the load-bearing ones.

Can non-programmers vibe code?

Yes — a majority of users on prompt-to-app platforms have no programming background, and they genuinely ship working tools. The walls they hit are predictable: authentication, data modeling, security, and debugging — precisely the parts where not understanding the code is most expensive.

Is vibe-coded software safe for production?

Not without review. Industry scans put security flaws in roughly 45% of AI-generated code, and the incident record is concrete: apps shipped with database access rules disabled, broken authentication letting any user read others' data, and secrets embedded in client code. The pattern in every case was backend security accepted unreviewed.

What tools are used for vibe coding?

Two families: agentic coding IDEs and CLIs aimed at developers — Cursor was named in the original coinage — and prompt-to-app builders aimed at non-developers, which generate and host the whole application. The families differ mainly in how much of the result you're expected to look at.

Will vibe coding replace developers?

The consensus is no — it moves the work rather than removing it: toward specification, review, and architecture. Vibe-coded prototypes that succeed typically get rebuilt or heavily hardened by engineers before scaling, and the coiner himself now distinguishes casual vibe coding from serious "agentic engineering."

Where does vibe coding shine?

Exactly where its coiner put it: throwaway weekend projects — plus prototypes, MVPs, hackathons, internal tools, and learning. Anywhere iteration speed matters more than correctness, and where the blast radius of unreviewed code is deliberately small.

What are vibe coding best practices?

Small, scoped prompts; one task at a time; version-control checkpoints before "accept all"; tests as the safety net; human review of anything touching auth, data, or money; secrets kept out of prompts and client code; and a hardened, managed backend under the generated frontend.

Related terms

Compare with

Further reading

Ready to build your backend?

Start your project on Back4app in minutes — database, auth, APIs, and Cloud Code included. No credit card required.

Written and reviewed by Back4app Engineering, Back4app Engineering · Published 2026-07-30