October 18, 2026•11 min

How to Compact a Long ChatGPT Conversation Yourself

The word compact reaches ChatGPT from two directions, and the two are rarely the same request. Sometimes the product has done it to you — a long conversation quietly condensed itself, and you want to know what was lost. Sometimes you want to do it on purpose, because the thread has grown to a size where answers have started drifting and you would rather hand the useful part to a fresh chat than keep dragging the whole history along. The first is explained in What ChatGPT Compacting Context Actually Means. This post is the second one: the manual version, which you have to do yourself because there is no button for it.

That is the first thing worth saying plainly, because a good deal of searching ends in frustration over it. In the consumer ChatGPT interface there is no compact command, no compress button and no setting that triggers a condense-and-continue. Instructions that describe one are describing a different tool.

Where the Command People Are Looking For Comes From

The expectation is reasonable, because the command exists elsewhere.

Developer-facing agent tools — command-line coding assistants in particular — frequently expose an explicit compaction step. You type something like a slash command, the tool summarises the session so far, replaces the transcript with the summary, and carries on in the same session with most of its working room returned. It is a real, documented, user-triggered operation in those products, and people who use both naturally go looking for the equivalent in the chat window.

The consumer chat interface does not have it. What it has instead is automatic behaviour you do not trigger and are not really shown: as a conversation approaches the limit of what can be sent to the model, the oldest material either stops being included or gets replaced by a condensed version of itself. Some surfaces announce this, some do not. None of them ask you what to keep.

So the practical question is not how to find the command. It is how to get the same outcome by hand, and how to get a better one than the automatic version would have given you, since you know which parts of the conversation mattered and the summariser does not.

What Automatic Compaction Keeps, and What It Drops

Worth understanding before you replace it, because the manual version is mostly an exercise in correcting its biases.

Summarisation is lossy in a predictable direction. Narrative survives; specifics do not. A condensed version of a long working session will reliably retain that you were building a pricing page, that you went back and forth on the layout, and that you settled on something. It will reliably lose the exact hex value you chose, the three library versions you pinned, the wording of the constraint you agreed in message forty, and — most expensively — the options you considered and rejected along with the reasons you rejected them.

That last category is the one that costs real time. Rejected options leave no trace in a summary because nothing in them reads as a conclusion, so the next stretch of conversation cheerfully re-proposes the approach you spent twenty minutes ruling out. You then have to rule it out again, from memory, without the reasoning you had the first time.

The other predictable loss is anything you supplied rather than discussed. Pasted code, a long specification, a block of data: these get compressed into a description of themselves. The model will know that you pasted a configuration file and will not know what was in it.

A manual compaction fixes both of those, because you can simply decide that the rejected options and the pinned versions are the parts that survive.

The Manual Procedure

Five steps. It takes about three minutes and it is the whole technique.

  1. Decide the conversation is long enough. Do not wait for symptoms. By the time the model is contradicting a decision you made earlier, the material that would have told it otherwise is already outside what is being sent.
  2. Ask the conversation to summarise itself, with explicit instructions about what to keep. The default summary is the one you do not want. The prompt below is the part that does the work.
  3. Read what it produced and correct it. This is not optional and it is the step people skip. The summary is generated by the same model that has been drifting, and it will drop something you needed. Add the missing specifics by hand.
  4. Open a new chat and paste the corrected block in as the first message, with one line of framing: this is the state of an ongoing piece of work, here is where we are, continue from here.
  5. Keep the block. Save it somewhere outside the chat, because you will want it again in a week when the new conversation has also grown long.

Step five is the one that converts a one-off rescue into something sustainable. The block you just wrote is a better record of the work than either conversation, and it is plain text that will paste into any assistant.

A Prompt That Produces a Usable Handoff

The quality of the result is almost entirely determined by how specific you are about the categories. Asking for a summary gets you prose. Asking for these six things gets you a handoff:

Produce a handoff summary of this conversation for a fresh session that has none of this context. Use these headings and nothing else. Decisions: what we settled on, stated as conclusions. Rejected: options we considered and ruled out, each with the reason. Constraints: requirements, limits, versions, names and exact values that must be preserved verbatim. Open: questions still unresolved. State: where we stopped and what the immediate next step is. Verbatim: any exact strings, identifiers or snippets that would be expensive to reconstruct. Be specific rather than readable. Do not summarise the Verbatim section.

Two things make this work better than a generic request. The Rejected heading forces out the material that a default summary always discards, and the instruction to prefer specificity over readability stops the model from producing the smooth paragraph it would rather write.

Expect it to be imperfect. The common failure is that the Constraints section comes back with four of your six constraints, and the two it dropped are the ones you had stated only once, early on. That is exactly why step three exists.

Why Asking How Much Room Is Left Does Not Work

A natural instinct at this point is to ask the conversation how close it is to the limit, or whether it has been compacted yet. Both questions produce confident answers and neither answer is reliable.

The model does not have dependable access to its own remaining capacity, and it will not decline the question — it will generate a plausible figure, because a question was asked. Percentages obtained this way are invented. The same applies to asking whether earlier messages are still visible to it: the answer is a guess dressed as a report.

Use behaviour instead. A conversation that has started losing its early context shows it in specific ways: a constraint you set at the start gets violated, a name you defined gets replaced with a generic one, an option you rejected comes back, or the model asks you for something you already gave it. Any one of those is your signal, and it is more trustworthy than anything the conversation will tell you about itself. The related question of whether the limit can simply be raised is covered in Can You Increase ChatGPT's Context Window?.

Compacting Is Lossy by Design, So Choose the Losses

There is a temptation to make the handoff block comprehensive, on the theory that more context is strictly better. It is not, for two reasons.

The first is mechanical: a handoff that reproduces the whole conversation has compacted nothing, and the new chat starts in the same position the old one ended in. If your block is as long as the thread it replaces, you have moved the problem rather than solved it. A good handoff for a long working session is usually a few hundred words.

The second is about attention. A short block of dense, specific context gets used. A very long one competes with itself, and the material you most needed to survive gets buried among restatements of things that did not matter. The exercise is explicitly one of throwing things away, and the only question worth asking about each item is whether reconstructing it later would be expensive.

By that test: exact values, identifiers, versions and rejected options are expensive to reconstruct and belong in the block. The order in which you discussed things, the model's explanations of concepts you already understand, and anything you can look up in a second are cheap, and do not.

Do It Early, Not at the Cliff Edge

The worst time to compact is when the conversation has already degraded, because the summary you get is generated from a context that is already missing the early material. You are asking a model that has forgotten the first third of the session to write you a faithful record of it, and it will produce something fluent and incomplete without flagging the gap.

A conversation that has visibly started drifting has usually lost the beginning already. The fix is to compact on a schedule rather than in response to symptoms — at a natural break, after a decision is reached, at the end of a working session — while everything is still in range.

This is also the answer to the related problem of the interface telling you the thread is full and offering to start a new one with an automatic summary, which is its own decision and is covered in What the ChatGPT Chat Memory Full Message Means. If you have already made your own handoff block, that prompt stops being a dilemma: you take the new chat and paste in your version rather than accepting theirs.

What Compacting Does Not Fix

One boundary, and it is the one that sends people round in circles.

Compacting operates entirely inside a single conversation. It is a response to the conversation's own capacity, which is a different mechanism from anything that persists between conversations — a distinction worth having straight, and set out in Context Window vs Memory. Compacting a thread perfectly does nothing at all for the fact that tomorrow's unrelated chat starts blank.

If the complaint is that you keep re-explaining the same project at the start of every new session, compaction is not the tool. What that needs is a record kept outside the chat and supplied deliberately, which is the same handoff block from step five, maintained rather than written once. The equivalent manoeuvre in Claude, which has the same shape for the same reasons, is in Continuing a Long Claude Chat in a New Conversation.

The other boundary is that nothing you do in the chat window can reach backwards. A conversation whose early material has already been dropped cannot have it restored; the text is still in your chat history and still readable by you, but it is not coming back into the model's view except by being pasted in again. Which is a decent argument for keeping the transcript of anything that mattered.

Where MindLock Sits

MindLock exists for step five — the part where the handoff block stops being a thing you write once and becomes something maintained.

The capture is manual, because it has to be: no third-party software can read your conversations in the background. You press Ctrl or Cmd plus S on a conversation in ChatGPT, Claude, Gemini or Perplexity to save the page, then upload it, or you use the one-click Save to Memory button in the Chrome extension, which is loaded unpacked in developer mode rather than installed from a store. The import step is described in Importing Conversations.

What happens next is the part that is automated. Saved conversations are distilled into memory documents — a profile memory plus topic memories — using a model running locally in your browser on a WebGPU-capable GPU, with Llama 3.2 3B as the default, or in the cloud on the paid tier for hardware that cannot run it. On the free tier everything stays in your browser's own storage. When you start a new chat, semantic search finds the relevant material and a context block is generated for you to paste in, which is the same manoeuvre as the handoff above with the writing and the finding taken off your hands. That output is covered in Generating Context, and the split between free and paid is on the pricing page.

The pasting stays manual, for the same reason the capture does. Nothing can type into a conversation on your behalf, and any tool that suggests otherwise is describing a copy button.