# Why AI behaves this way

> The mechanics behind the surprises: confident errors, differing results, drifting threads, and what to do about each.

The agent is a large language model, and models have habits that surprise people meeting them for the first time. None of the behaviors on this page are bugs; each has a mechanical cause, and knowing the cause turns frustration into technique. This is the theory behind the [prompting guide](/docs/building/better-results); read that one for the practice.

## It predicts, it does not look up

A language model generates each response by predicting what comes next, shaped by everything it has read and everything in the current conversation. That is why it is astonishing at "build a booking page like the thousands it has seen" and why it can also state something wrong with total confidence: it has no internal flag that separates knowing from plausibly guessing.

What to do with that: treat confidence as tone, not evidence. The preview is the evidence. Vaulter is built around this reality; changes land where you can see and test them immediately, and [auto-fix](/docs/building/auto-fix) catches the class of errors that are mechanically checkable before you ever see them.

## Why the same prompt can give different results

Generation is probabilistic on purpose; a little randomness is what keeps output from being rigid and repetitive. Ask twice, get siblings, not twins. This is why "regenerate and hope" is a weak strategy but "correct the specific thing that is off" is a strong one: your correction constrains the next prediction far more than rolling the dice again.

## Why specific beats vague

A vague prompt does not produce a vague result; it produces a *specific guess* at what you meant, because the model must fill every gap you leave with the statistically likeliest filler. "Make me a website for my business" has thousands of plausible completions, and you get one of them. Every concrete detail you supply (names, prices, who sees what) removes a place where the likeliest guess can diverge from your intent.

## Why long threads drift

The agent's working memory for a conversation, its context, is large but finite, and everything competes for its attention: your messages, its replies, the code it has read. A thread that has wandered across many unrelated topics fills the context with things that no longer matter, and the leftovers can bleed into new work ("why did it just restyle the header? We finished that an hour ago").

That is the mechanical reason behind the habit of [starting a fresh chat for a new task](/docs/building/better-results): a clean context aimed at one goal outperforms a long one aimed at twelve. Your app loses nothing; the code, the data, and your project's structure carry over. Only the conversation's clutter is left behind.

## Why it misreads a request that was "perfectly clear"

Language carries ambiguity people resolve with shared context a model does not have. "Add a discount field": on the product, the order, or the customer? A human colleague would ask; the agent sometimes asks ([Plan mode](/docs/building/plan-mode) makes it ask first, always) and sometimes commits to its best reading. When it commits wrongly, the fastest repair is naming the misreading, not repeating the request louder: "the discount belongs on the order, not the product".

## What this adds up to

- **Show, don't describe**, when you can: screenshots and examples anchor prediction better than adjectives.
- **Correct, don't re-roll**: specific feedback beats regenerating.
- **One task per thread**, and fresh chats between tasks.
- **Test what matters**: the two-account privacy test and a walk through the live flow are how you verify, because confident prose is not verification.

None of this is unique to Vaulter; it is what building with any AI is like in 2026. The platform's job is making the loop around the model (preview, auto-fix, undo, [versions](/docs/your-app/undo-and-versions)) tight enough that its misses are cheap.
