AI glossary
Vibe Coding
Vibe coding is a software development style where a person describes desired functionality in plain natural language, and an AI coding assistant generates the code. The developer runs the output, fixes issues by re-prompting, and iterates without reading or closely reviewing the generated code line by line.
The term was coined by AI researcher Andrej Karpathy (former Tesla AI director and OpenAI founding member) in a February 2025 post on X. He described a moment of surrender to AI-generated code, noting he had “forgotten that the code even exists” and was fixing bugs simply by re-prompting the AI rather than reading the source. Collins Dictionary subsequently named “vibe coding” its Word of the Year for 2025. The phrase builds on internet slang for “vibes,” reflecting a shift where the developer directs outcomes and describes intent rather than authoring the underlying syntax.
What is vibe coding?
At its core, vibe coding is defined by a specific level of trust. While standard AI-assisted coding involves using an ai coding assistant to autocomplete lines or generate a snippet that you then read carefully to ensure it fits your logic, vibe coding skips the deep review. You provide a prompt, the tool generates the code, and you verify the result based on whether it appears to work, not whether the code itself is correct.
This approach lowers the barrier to producing working software. It allows non-programmers or beginners to build functional prototypes by simply describing what they want. For experienced developers, it offers a way to move faster on boilerplate tasks and initial explorations. However, it fundamentally changes the role of the developer from an author of code to a director of behavior.
How vibe coding works
The workflow for vibe coding is distinct from traditional development loops. It generally follows these steps:
- Describe: The developer writes a natural language prompt describing a feature, an app, or a specific fix.
- Generate: An AI tool, typically built on a large language model, generates the code. This often happens directly inside an editor or a chat interface connected to your codebase.
- Iterate: The developer runs the code. If it fails or behaves unexpectedly, they describe what is wrong or what to change next in natural language. The assistant revises the code.
- Repeat: This loop continues with minimal manual code reading. The developer focuses on the output behavior rather than the implementation details.
This process relies heavily on the ability of the tool to understand context and execute commands. Some modern tools act as ai agent systems that can edit files and run commands directly, further reducing the need for manual intervention.
Vibe coding tools
Several categories of tools support this workflow. The specific tool you use often determines how much autonomy the AI has.
Editor-integrated assistants
Tools like Cursor, GitHub Copilot, and Windsurf sit directly in your code editor. They provide context-aware suggestions and can generate entire functions or files based on your prompt. They are designed to assist you within your existing workflow.
Agentic coding tools
These tools go further by having the ability to edit multiple files and run commands in your terminal. Examples include Claude Code, OpenAI Codex, Replit Agent, and Devin (by Cognition). They can act more like a junior developer, executing a plan and fixing their own errors.
Chat-based generation
General-purpose generative ai platforms like ChatGPT, Claude, and Gemini are often used to generate full scripts or components. In a vibe coding context, you might paste the output directly into your project without reviewing the internal logic.
Vibe coding vs traditional programming
The difference between vibe coding and traditional programming lies in where you place your attention and effort.
In traditional programming, you design the logic, write the code (or carefully review every line), and ensure you understand exactly how the code works. You are responsible for the syntax, the architecture, and the edge cases.
In vibe coding, you specify the desired behavior and accept the generated code largely on the basis of whether it appears to work. You trade code-level understanding for speed. This makes it easier to produce a working prototype quickly, but it means you may not fully understand the underlying mechanics of the solution you are using.
Vibe coding risks
While efficient, vibe coding introduces specific risks that developers must manage.
Security and correctness
Code that “looks like it works” can still contain bugs, security vulnerabilities, or edge-case failures. Because you are not reading the code carefully, these issues can go unnoticed until they cause a problem in production.
Technical debt
Code generated without a consistent architecture or understanding of the existing codebase can become difficult to maintain. If multiple people use different prompting styles or tools, the codebase can become fragmented and hard to navigate.
Not for high-stakes environments
Vibe coding is generally not suited to production systems with high reliability, security, or compliance requirements. For critical systems, a separate review step is necessary.
Some practitioners distinguish between “vibe coding” (accepting code without review, appropriate for throwaway prototypes) and “AI-assisted development” (using AI to write code that a developer still reviews and understands, appropriate for production work). Knowing which mode you are in is crucial for managing risk.
When it makes sense
Vibe coding is a powerful tool when used appropriately. It is well suited for:
- Quick prototypes: Testing an idea without committing significant engineering time.
- Personal scripts and tools: Automating small tasks where reliability is less critical.
- Hackathon projects: Building something functional quickly under time pressure.
- Learning by experimentation: Exploring how different solutions work without getting bogged down in syntax.
It is poorly suited for:
- Production systems handling user data: Where security and correctness are paramount.
- Security-sensitive code: Where a single vulnerability can be costly.
- Long-term maintenance: Code that must be maintained by a team over years, especially if the original author doesn’t understand it.
- Regulated industries: Where you need to prove exactly how the code works for compliance.
FAQ
What is vibe coding?
Vibe coding is a development style where you describe functionality in natural language and accept AI-generated code without reading it line by line. You verify the output by running it, not by reviewing the source.
Is vibe coding safe for production?
Generally, no. Because the code is not carefully reviewed, it may contain hidden bugs or security vulnerabilities. It is best used for prototypes, personal tools, or as a starting point for code that will be refactored and reviewed later.
What tools are used for vibe coding?
Tools include editor-integrated assistants like Cursor and GitHub Copilot, agentic tools like Devin and Claude Code, and chat-based models like ChatGPT. The choice depends on whether you need the AI to just suggest code or to run commands and edit files autonomously.
How is vibe coding different from AI-assisted coding?
In AI-assisted coding, you still read and understand the code you generate or autocomplete. In vibe coding, you trust the AI to produce working code based on your prompt, focusing on the result rather than the implementation.