Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The fastest way to make an AI-generated app look finished is to stop checking what it actually does. A convincing demo does not prove that the app handles unusual input, protects data, or can be safely changed later. These nine habits show where vibe coding goes wrong—and what to do instead.

Vibe coding is not automatically reckless. The UK National Cyber Security Centre (NCSC) frames AI-assisted development as a spectrum: the amount of human oversight should match the risk. A throwaway local prototype and an app handling real users’ personal information should not get the same level of scrutiny.

1. Prompting without defining success

A vague prompt such as “build a booking app” leaves crucial decisions to the model: who can book, what happens when a slot is taken, which fields are required, and what the user sees when something fails. The result may look plausible while solving the wrong problem.

Do this instead

  • Describe expected behavior, constraints, and important edge cases before asking for code.
  • Give concrete examples of valid and invalid inputs, and state what the app should do in each case.
  • Check the finished behavior against those requirements instead of treating the generated explanation as proof.

2. Trusting the happy path

A successful click-through usually tests only one sequence of actions with expected values. It says little about what happens when a field is blank, a value is too long, a request is repeated, or an unexpected value reaches the app. A 2026 arXiv study of vibe-coded applications identifies unfiltered input among recurring risk patterns; it does not establish how often every app has that problem. Read the study.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do this instead

  • Try invalid, boundary, and unexpected inputs—not just the example data used to build the interface.
  • Check that input is validated where the app processes it, not only hidden or restricted in the interface.
  • Observe the result of errors and failed requests; confirm they do not reveal sensitive information or leave the app in a misleading state.

3. Accepting placeholder behavior

Generated code can contain mock values, unfinished functions, or a success message that appears without the claimed work being done. A prototype can still look complete when its key action is only a stub. Placeholder logic is one of the patterns noted in the 2026 arXiv study.

Do this instead

  • Search for TODOs, mock data, stubbed functions, and hard-coded success responses.
  • Trace each important action from the user’s click to the actual result: for example, verify that a “saved” item persists after a reload.
  • Mark incomplete features clearly and keep them out of any release where users could mistake them for working functionality.

4. Letting secrets travel with the code

Credentials pasted into prompts, committed in source files, or bundled into public client-side code can be exposed to people who should not have them. Sensitive data can also travel through third-party integrations in ways the app’s builder did not intend. The 2026 study identifies secret exposure as a recurring pattern, while ISACA highlights exposure through integrations as a governance concern.

Do this instead

  • Do not put credentials or sensitive real-user data in prompts or public code.
  • Use an appropriate server-side secret store or environment-based configuration, and check that secrets are not included in client bundles or repository history.
  • Map which data goes to each connected service and verify that the flow is appropriate before using real information.

5. Assuming authentication and authorization are included

A login screen is not proof that access is controlled correctly. Authentication answers who a user is; authorization determines what that user may view or do. An app may identify a user but still let them access another person’s records or perform an action they should not be allowed to perform. ISACA identifies omitted or incorrectly implemented controls as a governance risk.

Do this instead

  • For each sensitive action and record, identify who should be allowed to access it.
  • Check permissions on the server or service that handles the data, rather than relying only on what the interface displays.
  • Test with different account roles and confirm that one user cannot access another user’s information.

6. Adding dependencies by name alone

A generated import statement is not evidence that a package is the intended project, trustworthy, maintained, or suitable for the app. Dependencies can introduce their own security and maintenance risks. ISACA calls out dependency validation as a governance concern.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do this instead

  • Confirm that each package exists and is the intended project before installing it.
  • Check whether the package is appropriate for the job and whether the project’s team can maintain it.
  • Review the dependency list as part of code review, especially before deploying software that handles sensitive data.

7. Skipping independent tests and review

An assistant saying “it works” is not an independent check. The NCSC warns: “When you let an AI loose on your code base with minimal oversight, there’s a real risk it produces code with security vulnerabilities.” The statement appears in its 18 June 2026 article, “The ‘vibe coding spectrum’ approach to AI-assisted software development”.

Do this instead

  • Run tests that exercise the behavior the app is meant to provide; review consequential code changes rather than accepting a generated summary.
  • Ask another person to review changes that affect access controls, data handling, or important business logic.
  • Scale scrutiny to the consequences of failure: a local experiment may need lightweight checks, while a public app warrants stronger human review and security testing.

8. Building a real-data app as if it were a toy

Risk is about what an app does, not how simple its interface looks. An app that stores personal information, connects to external platforms, supports consequential decisions, or operates in a regulated setting deserves more care than a local demonstration. ISACA recommends categorizing AI-assisted development use cases by risk and applying suitable review, traceability, and accountability. Its guidance discusses those contextual factors in “Vibe Coding and the Future of Software Development”.

Do this instead

  • Before deployment, list the data the app handles, the services it connects to, and the decisions or actions it supports.
  • Identify whether users, customers, employees, or regulated information could be affected by a defect or exposure.
  • Use that assessment to decide what human review, security checks, and accountability the release needs.

The scale of possible failures should not be confused with a universal failure rate. In a 29 July 2026 article, ISACA reported that RedAccess analyzed more than 5,000 applications built with popular vibe-coding platforms and found that nearly 40% of that analyzed set exposed sensitive information. The figure applies to that described set—not to all vibe-coded apps or all apps made on those platforms. Read ISACA’s account.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

9. Optimizing only for the first successful run

Code that is easy to generate quickly may be hard to understand or change later. A 2025 arXiv article discusses this as a “flow-debt trade-off”: smooth code generation can come alongside architectural inconsistency, security vulnerabilities, and maintenance overhead. This is a research discussion, not a claim that every fast-generated app accumulates those costs. Read the article.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do this instead

  • Keep the structure understandable enough that someone can trace important behavior and change it safely.
  • Record key decisions and known limitations, especially around data flows, access controls, and integrations.
  • As a prototype grows, revisit its architecture and replace shortcuts that no longer fit its use or risk.

How much checking does your app need?

There is no validated score that turns an app’s risk into a precise review requirement. A useful practical distinction is whether the app is a disposable local experiment or something exposed to real users, sensitive data, or consequential actions. NCSC’s spectrum framing and ISACA’s risk-categorization guidance support adjusting oversight to context.

Consideration Local, throwaway prototype App for real users or consequential use
Human review Check whether the core behavior matches the intended experiment. Review material changes, particularly data handling, permissions, and business logic.
Data exposure Use test data and avoid placing secrets in prompts or public code. Identify sensitive data and third-party flows before deployment.
Testing and security checks Exercise the main behavior and basic failure cases. Test invalid and boundary inputs, permissions, and failure paths; add stronger security review.
Maintenance Keep enough notes to understand what is experimental. Make important code paths and decisions understandable to whoever must maintain the app.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.