> ## Documentation Index
> Fetch the complete documentation index at: https://docs.v3code.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Memory

> What the agent remembers across sessions.

The worst part of working with an agent is that it forgets. Close the chat and the next session starts cold — you re-explain your stack, your conventions, the quirk in that one file. V3Code is built so that never happens, and it does it without stuffing everything into the model's context.

## The idea: never forgets ≠ never forgets *on the wire*

"Never forgets" is a **pull guarantee, not a push burden**. Everything the agent ever saw — every prompt, reply, tool result, edit, and decision — is written to disk and instantly recallable. That does **not** mean it's all shoved into the model every turn. The opposite: the agent holds only the **live task** in context and pulls the rest the instant it needs it.

A chat assistant's job is the conversation, so it clings to the transcript. An editor's job is your **code and your current intent** — the conversation is scaffolding. So V3Code keeps the live wire small *because* nothing is lost and recall is excellent. This also dodges "context rot": a stuffed context window makes a model perform worse, not better, so bounded-but-generous beats racing toward a million tokens.

## The tiers

<CardGroup cols={2}>
  <Card title="Native window">
    The recent raw turns the model holds itself. Cheapest, highest-fidelity memory there is — V3Code doesn't interpose on it.
  </Card>

  <Card title="Session digest">
    A running fact-sheet of the middle turns that scrolled off. Once it exists it stays on the wire for the rest of the session — the agent's own memory of what it already did.
  </Card>

  <Card title="Cross-session memory">
    Workspace facts, symbol notes, past sessions, other projects. Salience-ranked, scoped to what you're touching, mostly pulled on demand.
  </Card>

  <Card title="Shadow floor">
    A raw, append-only record of every event. Never pruned. The break-glass guarantee behind "never forgets" — always recallable, never auto-injected.
  </Card>
</CardGroup>

## What persists across sessions

* **Workspace memory** — decisions, conventions, and notes tied to a project, surfaced when you're in that project. Symbol notes live in `.v3code/notes.json` (see [Context Bridge](/editor/context-bridge)).
* **Global profile** — style and preferences that travel with you across every project.
* **The full record** — anything condensed or elided off the wire is still retrievable by the agent on demand; decay changes *ordering*, never what's on disk.

## How the agent keeps the wire lean

As a session grows, V3Code intervenes cheapest-first: hold the raw thread while it fits, elide old bulky tool outputs, then fold the conversation middle into the running digest only if still over budget — and it compacts *rarely*, near a large effective-context ceiling, not on every turn. Human-authored and test-verified facts are treated as evergreen.

<Tip>
  Tell the agent to **remember** something directly — a convention, a gotcha, a decision *and the reason behind it*. The reason is the valuable part; save the why, not just the what, and it carries forward.
</Tip>

## Memory that follows your code

V3Code's memory isn't a flat list — notes are **pinned to your code's structure** and resurface by walking it. This is the "graph-anchored" part, and it's what makes memory feel like the agent just *knows* your project.

* **The graph.** The native symbol sidecar parses every file (tree-sitter) into a code graph — files → the symbols they define → the files that reference them. That's the real dependency structure of your project.
* **Anchoring (write).** When the agent saves a memory about code, it's pinned to the relevant file/symbol nodes in that graph. Save it again and it's re-confirmed — its confidence goes up.
* **The ripple (read).** When a prompt is assembled, V3Code looks at the files you're actively working in and recalls notes *near* them — rippling outward through the graph (the file's symbols, the files that reference them, their neighbors). A note on the exact file arrives at full strength; one a couple of hops away still surfaces, just discounted.

The payoff: **memory follows code structure, not keywords.** Open a file and the agent automatically remembers the decisions, gotchas, and history attached to that neighborhood of the codebase — including notes on files it hasn't even opened — without running a single search. And it gets richer on its own: as the agent explores code, what it learns is recorded automatically, so the map of your project deepens just from working in it.

<Note>
  Honest limits: this pulls from your few most-active files (a handful of notes each) per prompt; it uses the symbol sidecar (without it, memory gracefully falls back to the editor's own store); and every workspace starts empty — nothing is pre-populated.
</Note>

<Note>
  Working in a blank/greenfield folder? V3Code deliberately suppresses cross-project memory there, so the agent grounds in the empty project in front of it instead of hallucinating off unrelated history. Everything stays recallable on demand.
</Note>
