Path 01Lesson 1 / 6

Vibe coding: uses and limits

Help people explore ideas with AI. Use a banking prototype to understand why live data and API permissions need security evidence.

Foundation11 minReviewed

Published by How we write

What you will learn

  • Distinguish exploration from a release decision.
  • Identify the missing responsibilities in a convincing demo.
  • Choose a safe boundary for a first experiment.

Give people room to build

An enterprise CTO can help more people turn their knowledge into software ideas. Invite people from finance, operations, sales, and engineering. Give them time, synthetic data, sandbox APIs, and support.

Let people use different tools for exploration within clear boundaries for installation, accounts, and permitted inputs. A browser builder, coding assistant, or local agent can help them test an idea. Tool choice does not grant permission to upload company information or connect a live system.

Publish a simple route for bringing a useful prototype to the engineering or platform team. The creator contributes the problem, example workflow, and observed value. They do not need to become the service’s security and operations team.

Identify what you need to learn

Vibe coding usually starts with a description of the software you want. You accept generated code and use the visible result to direct the next change. The term has different meanings. In this guide, the person who directs the work does not necessarily understand each implementation decision.

This method can help you learn. A simple interface can show that an approval process has too many steps. A temporary script can help you assess a file format. A prototype gives people a specific design to discuss. You can keep this knowledge when you discard the code.

First, define a question with an observable answer. For example: “Can a team manager understand this approval process?” This question has a clear scope. A request to build an expense system also includes data protection, access control, operation, and ownership.

Tuesday’s banking prototype

Consider a fictional example. On Tuesday, a finance colleague uses Lovable to build a dashboard from invented bank transactions. It groups spending and shows unpaid invoices. The team can now discuss a useful workflow.

Someone suggests connecting the company’s bank account. That changes the consequences, even if the app still carries a “prototype” label.

Read access can reveal balances, transaction history, customer names, or payment references, depending on the API. If the connection also permits payments, errors can move real money. Confirm the actual permission scope; a bank connection does not always include payment access.

The demo does not establish that a user can see only their authorized accounts. A hidden button does not enforce a permission. OWASP describes how missing account or record checks can expose another user’s data.

What could fail?Why it mattersEvidence before live access
A private API credential appears in browser code or logsAnother party could use its permissionsInspect secret handling; test access revocation
The backend accepts an account ID without checking the caller’s rightsOne user could read another accountTest denied requests for other users and accounts
A payment request times out and the app submits it againA retry could create a second paymentTest retry handling and reconcile the result with the provider
The app sends transaction details to an unapproved AI serviceConfidential information leaves the approved boundaryTrace requests, logs, recipients, and retention
A dependency becomes vulnerable after launchThe unchanged app can still require a security fixAssign continuous scanning, remediation, and deployment verification

For payment APIs, idempotency means a repeated request does not repeat the intended effect. Stripe documents one implementation. Check the actual provider’s behavior, limits, and retry rules. An application rollback does not reverse a payment that the bank has processed.

This example is not evidence of a Lovable defect. Lovable’s own security guidance calls for protected secrets, server-side checks, tested data policies, and ongoing review. Apply the same evidence standard to any builder, agent, or manually written app.

Check access before connecting real systems

Keep testing the workflow with synthetic data and sandbox accounts. Before live access, have the service, security, and platform owners verify the application and its operating environment.

Use the bank or provider’s approved connection flow. Grant only the required accounts and permissions. Keep private credentials in approved secret storage, outside prompts and browser code. Assign payment approvals and limits where payments are required. Verify how to revoke access, investigate failures, and respond to suspicious activity.

These decisions belong before confidential input or live credentials enter the system. Waiting for a formal production release can be too late. Continue with data boundaries and enterprise infrastructure.

Define responsibilities before you increase use

An experiment with invented data can have a short life and a small audience. When other people depend on the app, define the responsibilities for its use.

  1. Name the owner.
  2. Identify the permitted users and data.
  3. Define the response to a failure.
  4. Keep the source code and configuration in a repository.
  5. Verify that another person can inspect and reproduce the system.

Each script does not need an enterprise platform. A personal formatter without sensitive data needs fewer controls than a payment approval app. Assess the consequences of an error. Check whether you can detect the error and reverse its effects.

Before you expand the prototype, separate what you learned about the problem from the evidence about the implementation. You can keep the interface and replace the internal code. You can restrict the intended use. You can also keep the prototype as a temporary experiment.

Plan for vulnerabilities after the demo

A successful demo can hide a serious maintenance gap. A dependency can acquire a new vulnerability advisory without any change to your code. A release-time scan describes one point in time.

If the app remains in use, someone must keep finding, assessing, and fixing vulnerabilities. The correction must reach production and pass verification. A scanner without this response process leaves the exposure unresolved.

Check what your actual tool and configuration provide. Later, continuous vulnerability management explains the full process, including scan failures and deployed versions.

Make the next change easy to review

Give the agent one small change with explicit acceptance criteria. State which actions the agent can take. Inspect the resulting diff. Do checks that can reject an incorrect implementation. Keep deployment as a separate decision until the release responsibilities are clear.

The NIST Secure Software Development Framework describes broader practices for secure development. Use it as a reference when you assess the missing controls. You do not need to memorize the framework. You need to identify the missing evidence before the software affects other people.

Do the exercise

Select a feature from a recent demonstration. 1. Record one result that the demonstration established. 2. Record three questions that remain open. 3. Assign an owner to each question. 4. Name a specific check that can detect each possible failure. Do not use “make it secure” as a substitute for a specific check.

Download worksheet (Markdown)

Check your understanding

A bank dashboard works with fictional transactions. A colleague suggests connecting a real account with read-only access. What should you do?

Sources & further reading

Related reading from Taiga