Problem
An answer arrives in metric units, or mentions a project by name, or assumes a job title nobody stated. The assistant is drawing on something it retained from a previous conversation. The viewer didn’t watch it being saved, can’t see what else is in there, and has no idea what the thing knows about them.
Solution
Make the two moments visible: the moment something is written, and the moment something is used.
The write is the one products skip. A silent save is how a viewer ends up surprised weeks later, and the fix is small: a quiet inline marker at the turn where the memory was created, naming what was stored in the words it was stored in. Saved: prefers metric units. That marker has to be dismissible and reversible on the spot, because the moment of capture is the only moment the viewer has full context to judge whether it should be kept.
The read is the more interesting one and the harder to do without clutter. When an answer leaned on a stored fact, saying so converts an unexplained assumption into a visible inference. Google’s shipped version of this is worth copying as a floor: a viewer can ask Gemini directly whether it used information from past chats. Having to ask is a weak affordance next to marking the turn inline. It’s also far better than nothing, and it concedes the principle that matters: the viewer is entitled to an answer.
Underneath both moments there has to be a plain list. Every stored item, in readable language, individually deletable, with the date it was captured. People almost always want to strike one wrong fact rather than start over, so a store that can only be wiped wholesale gives them nothing to work with. HAX guideline 17 asks for global controls over what the system remembers and learns; the per-item version is what makes the global one usable.
Scope is the failure nobody anticipates until it happens. A detail absorbed from a personal conversation surfacing in a work document, or a client’s name appearing in a draft for a different client, is the kind of error that ends use of a product. Separating memory by project or workspace contains it. So does the simpler move of making memory opt-in per context rather than global by default.
Use when
The assistant is used repeatedly by the same person for related work, and repeating context is a real tax on them.
Don’t use when
Use is occasional, anonymous, or shared across people on one account. Memory built from a shared login models a person who doesn’t exist and produces confidently wrong personalisation.
Trade-offs
Memory makes an assistant feel attentive and makes its behaviour harder to predict, because the same prompt now produces different answers for reasons invisible in the prompt. For anyone doing careful work, that’s a real debugging cost. Surfacing every write is honest and noisy, and the noise lands on the people using the product most. Hiding writes is calm and produces the surprise this pattern exists to prevent. Once memory is a feature it becomes a data surface, with retention, export and deletion obligations that reach well past the interface.
Checklist
- Is there a visible moment when something is written to memory?
- Can that write be undone at the moment it happens?
- Is every stored item listed in plain language, with a date, individually deletable?
- When an answer used a memory, can the viewer tell?
- Is memory scoped by workspace or project, or global to the account?
- What’s the default, and was it opted into?
- What does deleting a memory actually delete, and by when?
- Can the viewer see what would change if they turned memory off?
- Does a shared or team account build one merged profile?
- Is memory carried into exports, shared conversations, and screenshots?
Compare
ChatGPT keeps an editable list of stored details and marks the turn where a memory is written. The write is visible at the one moment a viewer can still judge it. Gemini ties personalisation to past chats as a whole rather than to extracted facts, and answers the recall question on request, which trades per-item precision for a simpler mental model. Claude leans on projects, so the persistent material is a body of documents the viewer assembled deliberately rather than inferences drawn from conversation. Notion keeps the equivalent state in the workspace itself, where what the assistant knows is whatever the viewer already wrote down and has permission to read.
Related
Conversation history is the other persistence layer and the one this gets confused with. Custom instructions is the version the viewer writes deliberately rather than the system infers. Scoped context is memory bounded to a workspace. First-run state is where the data question gets raised before any of this starts. Citation chip is the same idea applied to sources rather than to stored facts.