Memory is the feature that makes an assistant feel like it knows you, and the feature most likely to make it wrong in ways that are hard to trace.
Three stores, three lifetimes
Conflating them is the root of most memory problems.
- Working context — this task only, discarded at the end.
- Episodic record — what happened and when: decisions, outcomes, corrections. Append-only, timestamped.
- Semantic memory — durable facts about the user or domain. Small, curated, editable.
Semantic memory is where damage accumulates, because a wrong fact there is silently applied to every future conversation.
Store the reason, not just the fact
“Prefers TypeScript” is a fact with no expiry and no provenance. “Chose TypeScript for the billing service in March 2026, citing existing tooling” is a fact you can re-evaluate when the context changes. Memories without provenance cannot be audited, and memories that cannot be audited cannot safely be trusted a year later.
Recall narrowly
The temptation is to inject the whole profile into every prompt. This costs tokens on every call and actively degrades quality — irrelevant facts compete for attention with the actual task. Retrieve memories the way you retrieve documents: by relevance to the current request, with a small budget, ordered by recency where facts conflict.
Decide expiry at write time
Some facts are stable — a name, a native language. Others rot fast: current project, team structure, tooling preferences. Write an expectation of durability when you store the memory, and treat conflicts as evidence the older one is stale rather than something to average.
Make it inspectable and deletable
Anyone whose data is remembered should be able to see the list and remove entries. This is partly regulatory and mostly practical: memory systems accumulate errors, and the fastest correction path is a human reading the list and deleting the wrong line.
What to take away
Remember generously, recall stingily, and record why. Most memory failures are recall failures wearing a storage costume — the fact was there, it just should not have been in this prompt.
