An AI handoff template for moving work to a new chat or tool
A handoff is a short written record of where the work stands, and the next session reads it before doing anything else. It covers the goal, what is done, what is half done, the decisions and the reasons for them, how to check the current state, and the next step. Ask the assistant to write it before you start a new chat or switch tools, check it yourself, and save it somewhere the next session can read it, not only in the old chat.
When a handoff saves you
- You are starting a fresh chat. A new chat does not reliably carry everything from the old one. OpenAI says ChatGPT memory “does not retain every detail from every conversation”.
- You are switching assistants. If you plan in ChatGPT and draft in Claude, neither can read the other’s conversations.
- Someone else picks up the work. Or you do, the next week, after the details have faded.
- A coding tool is about to compact the conversation. Claude Code summarizes long conversations to free up space. Its documentation warns that instructions you give only in the conversation do not last: “Add conversation-only instructions to CLAUDE.md to make them persist.”
What each tool keeps without a handoff
| Tool | Carries over on its own | Does not carry over |
|---|---|---|
| ChatGPT | In a project, chats can use other chats and files in the same project. You can save a useful response to the project’s sources. | Exact decisions, unless ChatGPT judges them relevant. With project-only memory, nothing from chats outside the project. |
| Claude | In a project, the files in its project knowledge and its project instructions apply to every chat. Each project also has its own memory. | Memory from your other projects, and anything from ChatGPT or other assistants unless you paste or import it. |
| Claude Code | CLAUDE.md files at the start of every session, and again after it compacts a conversation. Auto memory: notes Claude Code writes from your corrections. /resume or claude -c reopens an earlier conversation. | Decisions you only made in chat. There is no dedicated handoff command; the closest built-in commands are /compact, /resume, /branch, /fork and /export. |
| Codex | “Codex reads AGENTS.md files before doing any work”: one from ~/.codex/, then up to one per folder from the project root down to the folder where you start Codex. | Anything from earlier sessions that is not written in those files or in the repository. |
The handoff template
Keep it under 60 lines. A handoff that tries to record everything gets skimmed, and its stale lines get trusted.
HANDOFF
Updated: [date] by [person or assistant]
Goal: [one sentence: what done looks like]
Where things live: [links to the draft, sheet, folder or code]
Done so far:
- [item] | checked by: [how you confirmed it]
In progress:
- [item]: [exact state]
Decisions (do not reopen without asking):
- [decision] because [reason]
Tried and ruled out:
- [approach]: [why]
Open questions:
- [question] (waiting on [person or fact])
How to check the current state:
- [what to open or run] should show [what you expect]
Next step: [one concrete action]
Ask me before: [sending, publishing, spending, deleting]
Why each part is there
- “Checked by” separates what was confirmed from what the assistant believes. “The proposal is updated” is a claim. “Section 3 of the proposal now has the new price, checked in the doc” is a state.
- “Tried and ruled out” keeps the next session from suggesting an option you already rejected.
- “How to check the current state” lets the next session confirm the handoff is still true before it builds on it.
- One next step gives a fresh session a place to start. Ten next steps are a backlog, and a backlog belongs in your task list.
Prompt to write the handoff
Before we stop, write a handoff using the template below.
Rules:
- Include only what happened in this conversation. Mark anything you did not confirm as UNVERIFIED.
- Under "Done so far", say how each item was checked.
- Record each decision with the reason we agreed on, not the discussion.
- Keep it under 60 lines.
- Do not include passwords, keys or private client data.
[paste the template]
Read it before you close the chat. Fixing one wrong line now costs less than untangling it next week.
Prompt to start the next session
Here is the handoff from my last session. Before doing anything:
1. Summarize the goal, the current state and the next step in five lines.
2. List anything that looks unclear, stale or contradictory.
3. Ask me any question you need answered before you start.
Then wait for my go-ahead.
[paste the handoff]
Where to keep it
- ChatGPT. Keep the work in a project, and save the handoff to the project with “Save to project” or “Add to project sources” (the label depends on your account). New chats in that project can then use it.
- Claude. In a project, add the handoff to project knowledge with the + button. Claude uses project knowledge in every chat in that project. Replace the old version when you add a new one.
- Both. Keep the handoff in one document you control, and paste it into whichever assistant you open. Overwrite it each time rather than appending: an appended log keeps growing until nobody reads it.
For coding tools: a HANDOFF.md file
In a code project, save the handoff as HANDOFF.md in the project root. Then point your instructions file at it, so every session finds it without being told:
## Session handoff
If HANDOFF.md exists, read it before starting work and update it before you stop.
Put that line in AGENTS.md for Codex and Cursor, and in CLAUDE.md for Claude Code. Claude Code re-reads the project-root CLAUDE.md after it compacts a conversation, so the line survives compaction even when the details of the conversation do not.
The two tools look for different files, which is the most common reason a handoff gets ignored without any warning. Codex reads AGENTS.md and not CLAUDE.md. Claude Code reads CLAUDE.md. From version 2.1.277 it also reads AGENTS.md, by default only when the project has no CLAUDE.md or CLAUDE.local.md. A setup that works in both is to keep shared instructions in AGENTS.md and make CLAUDE.md import it with a line that reads @AGENTS.md. The CLAUDE.md and AGENTS.md guide has a full template.
Commit the file if teammates or cloud agents need it. If it only holds your own working notes, add it to .gitignore.
Common handoff failures
- The next session trusts a stale handoff. Run the checks in it first, because the work may have moved on.
- The handoff describes the discussion, not the state. “We talked about timing” tells the next session nothing. “Send the proposal Friday because the client’s budget meeting is Monday” tells it what was decided and why.
- Two versions disagree. Keep one current handoff per piece of work, and delete or replace the old one.
- It lives only in the old chat. A handoff left in a conversation is gone when you move on. Save it where the next session can read it.
When one handoff is not enough
A single handoff works well for one piece of work and one or two assistants. It gets harder when you run several client projects at once, use three assistants, or need to see what each one changed.
Flori is built for that case. The same fields (goal, decisions with reasons, tasks, results, next step) live in a shared project record. Each assistant you connect can read it at the start of a session and save what it did when you ask, and you check the saved result in Flori before you continue somewhere else. The template above still works without Flori.
Frequently asked questions
Does ChatGPT or Claude have a built-in handoff?
Not as a single feature. Projects keep files, instructions and project memory between chats, but neither writes a handoff for you. In Claude Code, Anthropic documents /compact, /resume, /branch, /fork and /export, and no command that writes a handoff file.
Is Claude Code’s /compact enough?
For carrying on in the same conversation, often yes. It is not a handoff, though. The summary stays inside that conversation, it is written for the model rather than for you, and other assistants and teammates cannot read it.
How long should a handoff be?
Short enough to read in a minute. Anthropic’s guidance is that CLAUDE.md files over 200 lines “consume more context and may reduce adherence”, and the same applies to a handoff that the next session reads first.
Should the handoff include the whole task list?
Include only the work in progress and the next step. Keep the backlog in your task tool so the handoff stays a snapshot.
Sources
Checked October 19, 2026. Vendors change these pages often, so check the source before you rely on a plan detail.
- OpenAI: Memory in ChatGPT
- OpenAI: Projects in ChatGPT
- Anthropic: Create and manage projects in Claude
- Anthropic: Claude Code memory and CLAUDE.md
- Anthropic: Claude Code context window and compaction
- Anthropic: Claude Code commands
- OpenAI: Codex and AGENTS.md
- Cursor: Rules