Skip to content

Why ChatGPT forgets what I said earlier in the chat

The short answer

A chat has a fixed size, counted in tokens, and that size has to hold the whole conversation plus the reply. When the conversation outgrows it, the oldest messages simply stop being sent — the model is not forgetting them, it is not being shown them. Nothing you say inside the chat makes the box bigger.

your chat with the AI

not sent — the model never sees this
you
Budget is €2,000 — hard limit.
the AI
Understood: €2,000 ceiling.
the context window — fixed size
two and a half thousand messages later
Worth a look: the AirLite 13, the ProBook 16, the Zen X14.
So which one should I buy?
the AI replies
The ProBook 16 — €3,100 well spent.
The budget line is gone — not forgotten, just not in the request. The model answered using only what it could read.
What falls out of the window

The default four-line exchange comes to about 92 tokens for Claude Haiku 4.5, whose tokenizer Anthropic has not published. Repeat it 2,500 times and the chat is 230,000 tokens against a 200,000-token window: the oldest 1,305 of 10,000 messages are outside it, and only the most recent 8,695 are still in front of the model.

What’s actually happening

Nothing is stored between your messages. OpenAI’s documentation puts it plainly:

each text generation request is independent and stateless
OpenAI — Conversation state

A conversation feels continuous because the app resends the transcript every single time — your first message, the reply, your second message, and so on, all of it, on every turn.

That resent bundle has to fit in one fixed space. Anthropic’s documentation lists what counts towards it: “the system prompt, every message in messages (including tool results, images, and documents), and your tool definitions”. The reply counts too, because it is generated inside the same budget.

And the bundle only grows. The same page calls this progressive token accumulation: as the conversation advances, “each user message and assistant response accumulates within the context window, and previous turns are preserved completely”.

every turn resends the whole conversation

turn 1
turn 2
turn 3
turn 2,500 — the card above

Preserved completely — until they cannot be. When the transcript passes the window, something has to go, and in a chat product the thing that goes is the beginning. Anthropic notes it in a footnote on that same page:

[chat interfaces such as claude.ai] can also manage the context window on a rolling ‘first in, first out’ basis
Anthropic — Context windows

Run the demo above and the arithmetic is unremarkable. Four short messages, about 92 tokens for Claude Haiku 4.5. Two and a half thousand exchanges later the transcript is 230,000 tokens, the window holds 200,000 — and 1,305 messages are on the wrong side of the line. In the raw arithmetic nothing is summarised or half-remembered: the oldest messages are simply not in the request. Whether your app softens that cut is a product choice, and the next paragraphs come back to it.

This is why the failure feels so unlike human forgetting. A person who forgets your budget constraint still knows they had a conversation with you. A model that never received it answers as though the constraint was never mentioned, with complete confidence — because for that request it never was.

Products differ in how gracefully they handle the edge. The blunt version is the cut above. The gentler version has a name — compaction: before old turns fall off, the app condenses them into a short summary and keeps that summary inside the window. A summary is smaller, and it is also lossy — your exact words do not survive it, they get paraphrased. That is why a long chat sometimes half-remembers: the model is no longer reading what you wrote, it is reading an abridgement of it. Other products retrieve pieces back on demand, or keep a separate memory store. What none of them can do is exceed the window.

What to do about it

Restate the constraint next to the work. The rule you typed in message three has an expiry date. If it still matters at message eighty, type it again in message eighty. This costs you one line and removes the entire failure mode.

Start a new chat with a written brief. A fresh conversation that opens with a tight summary of the decisions so far beats a long conversation whose beginning has already fallen off. You choose what survives instead of letting the oldest-first rule choose for you.

Watch for the moment it starts contradicting the setup. Answers that quietly drop an earlier requirement — the budget, the tone, the format, the language — are the visible symptom of the line being crossed. Treat that as a signal to restart rather than to argue.

Do not paste the same long document twice. Every paste is charged against the same space, and two copies push the beginning out twice as fast. Paste once, then refer back to it.

Measure before you paste. Context fit counts a document in tokens and shows what share of each model’s window it takes, so you can see whether the thing you are about to add leaves room for the conversation around it.

Common questions

1 Does a more expensive subscription give the model a longer memory?
Not directly. The window belongs to the model, not to the account: Anthropic's comparison table gives Claude Haiku 4.5 a 200,000-token window and Claude Opus 5 a million. A plan can change which model you are talking to, and that does change the number — but no plan makes a given model hold more than it holds.
2 Is this the same thing as the memory feature my app advertises?
No, and the difference matters. A memory feature stores notes outside the conversation and writes them back into later requests. That is a second mechanism sitting on top of this one, and whatever it recalls still arrives as tokens inside the same fixed window.
3 Why does it half-remember — paraphrasing my earlier details instead of forgetting them?
That is usually compaction at work. Instead of letting old messages fall off whole, some apps condense them into a summary and keep the summary in the window. A summary is smaller and lossy: the gist survives, but exact figures, wording and conditions often do not. Complete absence and confident paraphrase are two faces of the same fixed window.
4 If I ask whether it remembers something, why does it say yes?
Because you just told it. Your question contains the thing you are asking about, so it is in front of the model when it answers. Asking a chat what it remembers tests nothing.

Related

Sources

Last checked: