Memory for Agents That Forget the Right Things
The goal is not an agent that remembers everything. The goal is an agent that remembers the few facts that should change next week’s work.
By Julian Hale · Portland, Oregon

Every team I have sat with this year has a memory slide. Vectors, graphs, “episodic” stores, a little brain icon. Then you watch the agent and it either remembers nothing useful or remembers a joke you made in March and applies it as policy. Both failures come from the same wish: that memory could be a pile instead of a decision.
People forget on purpose. We forget the wrong compile flag from a laptop we no longer own. We remember that this customer invoices in yen and hates surprise emails. Agent memory should be at least that opinionated.
Three drawers, not one soup
- Working memory: the current trace. Cheap, noisy, disposable. This is the context window. Do not romanticize it.
- Task memory: artifacts for this job — the spec, the failing test, the last patch. Lives for hours or days. Delete it when the ticket closes.
- Durable memory: facts that should outlive the ticket. Preferences, invariants, scars. Small on purpose.
Most systems dump all three into one store and retrieve with cosine similarity. Similarity is a fine way to find a paragraph. It is a poor way to decide what is true. “The user likes concise answers” and “the user said ‘be concise’ while angry about a specific bug” will sit near each other and take turns steering the next run.
Write less than you retrieve
The write path is the product. I want a human or a strict schema to approve anything that enters durable memory. Free-form “notes to self” from the model are how you grow a folklore. Folklore is charming in a company handbook. It is dangerous when a loop can act on it.
type DurableFact = {
claim: string;
sourceRun: string;
expiresAt?: string;
confirmedBy: "user" | "eval" | "human-review";
};If you cannot name who confirmed a fact, it does not belong in the durable drawer. Put it in the ticket and let it die with the ticket. Forgetting is not a defect in a system that can act. Forgetting is hygiene.
I would rather an agent ask me the same preference twice a year than silently obey a preference I outgrew. The first is slightly annoying. The second is how you get a system that feels haunted.
Letters on this piece
Priya Nair · July 30, 2026
We added expiry to “user preferences” after the agent kept using a deprecated package name from a chat in January. Haunted is the right word.
Continue
agents
The Agent Is a Loop, Not a Person
An agent is not a colleague. It is a loop with tools, memory, and a stopping rule. Treat it like a person and you will design the wrong system.
agents
Tool Use Is the Real Intelligence
The model is not the product. The tools are. Most “agent intelligence” is a well-named function with a strict schema and a boring implementation.
agents
Why Multi-Agent Systems Collapse
Add a second agent and you have not added a colleague. You have added a coordination problem, a shared lie about memory, and twice the ways to stop too late.