Earlier this week, OpenAI announced an update to ChatGPT's memory.
OpenAI is in the unique position of building memory for close to a billion users, across free and paid tiers, many of whom now have years' worth of conversations with ChatGPT (time flies!). As someone who studies memory systems, I think that's exactly what makes their choices worth decoding: the scale forces tradeoffs no one else has to make.
That said, this update has left me stumped. After reverse-engineering it and speculating on the thinking behind it, I struggle to see how it makes the product better. Before I get into what changed and why I feel this way, a quick primer on how the memory system works.
The Stack
As I broke down in a post from September, ChatGPT injects four layers of context about users:
User Metadata: auto-generated signals about how you use ChatGPT: location, device and OS, light/dark mode, and usage patterns like typical message length and model preferences.
Model Set Context: a remnant of the original memory system, where users could explicitly ask ChatGPT to remember facts and then manage that list in settings.
Recent Conversation Context: timestamped messages from your recent chats, best thought of as a working memory of what you've been using ChatGPT for lately. (Notably, only your messages are surfaced, not the assistant's replies.)

How conversation history is presented to the model
User Knowledge memories: dense, LLM-generated summaries ChatGPT periodically updates from your conversation history. This forms the core of the memory system — effectively a running user profile. An excerpt from my summary:
You are an avid traveler and planner, frequently organizing detailed multi-day itineraries and budgets for trips: you have documented extensive travel plans and experiences for Bali (Aug 2024), Koh Phangan/Koh Tao (May–June 2025), San Francisco (June–July 2025), Yosemite/North Fork (July 2025), Big Sur/Monterey (July 2025), and upcoming Japan (Oct–Nov 2025) and Shey Phoksundo trek (Nov 2025), often specifying budgets, gear lists (e.g., Osprey vs Granite Gear backpacks, Salomon vs Merrell shoes, etc.), local transport (ferries, buses, rental cars, etc.), and photography gear (Sony A7III, DJI Mini 4 Pro, etc.), and you meticulously track costs (fuel, hostels, rental insurance, etc.) and logistics (e.g., Hertz/Enterprise rental policies, hostel bookings, etc.).
Separately, ChatGPT also gained the ability to run natural-language searches across your past conversations earlier this year — but that's a different system, and not what this update is about.
Dreaming
While the update touches the entire stack, the consequential changes are all in User Knowledge Memories. OpenAI calls this mechanism "dreaming" — a periodic, asynchronous pass in which the model revisits your recent conversations and updates your profile, adding new facts, correcting stale ones, and dropping what's no longer relevant.
Before this update, if you wanted to know what was in your User Knowledge Memories, you could ask ChatGPT what it remembered about you, or — with the right prompting — extract the raw text directly. The raw contents were hidden by default.
Whether that is the right call is worth thinking through as there's a real case on both sides.
The case for transparency is straightforward: the surest way to earn a user's trust is to let them see, and correct, everything the product believes about them — especially when that information is being injected into every query.
The case for hiding it starts with how people actually use assistants. We talk to ChatGPT when we have a problem to solve, and we rarely circle back when the situation changes. I might research a trip to Japan in detail and never tell ChatGPT I decided not to go. Staleness isn't a bug in the memory system. It's a natural consequence of how we use these tools.
In practice, a stale profile matters less than it sounds like it should. Models are good at updating their priors mid-conversation and ignoring context that isn't relevant to what's being asked. But the user reading their raw memory has no way to know that. An outdated "fact" staring back at them risks breaking trust in a different way — by making the system look wrong, even when it isn't.
The Update
The recent memory update is, at its core, an attempt to resolve this trust tension.
Inside settings, users now have access to a "Memory Summary" — an LLM-generated summary of the memory components we discussed earlier, including User Knowledge Memories. Apart from viewing the summary, users can make edits to it through natural language.

The new Memory Summary, viewable and editable inside settings
So on first read, OpenAI's solution to the profile visibility dilemma seems to be making the profile accessible and editable. But once you dig a little deeper, that isn't quite what's happening. This is where things start getting confusing.
The Memory Summary is a user-facing artifact, not what gets inserted into context during your ChatGPT conversations. The actual memory components in context remain unchanged. With enough prodding, you can get ChatGPT to confirm this: the active memory layers are still user profile, recent conversation context, user interaction metadata, and user knowledge memories. (Model Set Context is not part of the default active layers after the update.)

The memory layers ChatGPT actually sees in context
So if this component never reaches the context window, what is it?
The Memory Summary is a just-in-time view of the current memory snapshot. The first time you open the panel, it gets generated on demand. You can also regenerate the Summary every time you make an edit or have new conversations. But it never makes its way into the model's context.
It is also not exhaustive, but a subset of your full memory snapshot. If you can coax ChatGPT into surfacing your raw User Knowledge Memories, you'll find them significantly more detailed than what the Summary shows. And each time you regenerate the Summary, the new version will surface some memories the previous one omitted and drop others it had included.
Which raises the obvious question: if the Summary doesn't reach the context window, what happens to the natural-language edits you make to it? Turns out those edits are indeed passed to the model, but as part of your recent conversation history. You'll actually find them sitting in your main chat list, like any other conversation.

An edit made in natural language—"Memory updated"

The edit lands in recent conversation history, not the raw User Knowledge Memories
At this point, you might start to appreciate why I find all of this confusing.
Presumably, one of the goals of the Memory Summary was to give users more visibility and control. And it sort of does. I can open my Summary, correct stale entries, and add new information. I might spend a few minutes making sure it reflects what I actually want the tool to carry forward.
But the next time I open that same Summary, I find a different set of memories staring back at me, because the view is partial and regenerated each time. What am I supposed to do? Spend more time correcting everything? How do I remember which changes I made last time? How do I avoid making this a process I have to repeat indefinitely?
It is not a great product experience. And it doesn't make me trust ChatGPT's memory more than I did before the update.
Motivations
Obviously, the ChatGPT memory team already knows everything I've just laid out, and chose this design with tradeoffs in mind. Let me try to work out what those might be.
The obvious question is why generate a summary of the memory snapshot at all? Why not just expose User Knowledge Memories directly?
One possibility is that User Knowledge Memories are simply too dense to put in front of a user. Information overload is a real product risk — you don't want people spending hours curating their memory profile instead of, you know, talking to ChatGPT.
You could also imagine a more cynical reason: OpenAI doesn't want users seeing the full picture of what's been inferred about them. But this seems unlikely, given that it takes almost no prodding to get ChatGPT to reveal the underlying details anyway.
The likelier explanation is cost. Generating and updating User Knowledge Memories — a dense, inference-heavy profile of the user — is expensive. It almost certainly requires multiple LLM calls with meaningful reasoning. Regenerating that profile every time a user wants to tweak a memory would be cost-prohibitive at any scale, let alone a billion users.
My guess is that User Knowledge Memories continue to update on their own cadence, independent of the Summary. Those updates fold in regular conversations along with any explicit memory edits the user makes (which, as we saw, are stored as conversations anyway).
Viewed this way, the Memory Summary is actually a clever workaround. If you can't afford to regenerate the underlying profile on demand, you generate a cheaper, summary-level artifact the user can interact with — and let the real profile update on its own schedule in the background. It gives users some degree of control without forcing the system to do expensive work every time they open a settings panel.
If that is the case, I just wish it were packaged better.
Related
- ChatGPT Memory and the Bitter Lesson - How ChatGPT's memory system actually works, reverse-engineered
- Claude Memory: A Different Philosophy - How Claude's approach to memory is the complete opposite of ChatGPT's
- Google Has Your Data. Gemini Barely Uses It. - Inside Gemini's deliberately cautious memory system