Pick the work up on the other machine.
A context window ends. The work doesn't. Write what the session knows into the workspace, and resume it somewhere else — a fresh session, a different machine, or a different agent entirely.
The session is the memory, and the session is temporary.
Two hours into a debugging session your agent has genuinely learned things. It knows which three files matter, that the obvious fix breaks a test for a non-obvious reason, that you already rejected the refactor, and what the actual next step is.
All of that lives in the conversation. Close the laptop, hit a context limit, or move to the desktop upstairs, and it's gone. What survives is the code — which shows the half-finished state without any of the reasoning that produced it. So you start again, re-explain the constraints from memory, and watch the new session propose the approach you spent an hour ruling out.
A handoff is a document, not a transcript
The instinct is to save the conversation. That's the wrong artifact — it is long, mostly redundant, and the useful parts are buried in tool output. What the next session needs is short and structured:
- The goal. What you're actually trying to achieve, in a paragraph, written for someone with no prior context.
- Where it stands. What works, what doesn't, what's half-done and in which file.
- Decisions already made — including the rejected ones. This is the part that saves the most time, because it's the part a fresh agent will otherwise re-derive and get wrong.
- The next step, specific enough to start on.
- Gotchas. The flaky command, the misleading error, the thing that cost you twenty minutes.
Written that way it's a page of Markdown — and a page of Markdown is exactly what a workspace holds.
The code has to travel with the notes
A handoff that points at a commit the other machine can't fetch is worse than no handoff at all, because the next session resumes against different code and everything looks fine until it doesn't.
So the handoff carries the branch and the commit in its frontmatter, and the work gets pushed before it's written. Making those typed fields rather than prose is the whole trick: the receiving agent can check that the commit exists locally before it acts on anything the document says, and tell you plainly when it doesn't.
Give each handoff a short name you can type
You're going to read this off one screen and type it into another, so a
UUID is the wrong identifier. A short dated ID —
ctx-20260817-a3f9 — is enough to be unique and short enough
to retype without squinting. On the other machine, "resume
ctx-20260817-a3f9" is the entire prompt.
Never put secrets in one
A workspace is shared team memory, not a private buffer. Tokens, API
keys, .env contents, connection strings and customer data
don't belong in a handoff. If the context genuinely depends on a
credential, name where it lives — never the value.
What Markbase does and doesn't do here
Markbase stores the handoff and serves it to whatever connects next. It doesn't watch your context window, capture sessions, or decide when to write one — that glue lives in your harness, as a skill or a slash command you write once and reuse. It's a short piece of prompting: gather these facts, push the branch, write the document, print the ID.
We use exactly that pair — one command to export, one to resume — across two machines every week. The interesting half is small. The half that's hard to build yourself is the durable, reachable, versioned place to put it.
In practice
The receiving end.
A fresh session on a second machine, given nothing but a handoff ID — reading the document, reconciling it against Git, and reporting where the work actually stands before touching anything.
What makes it work
Three primitives, doing the work.
Reachable from both ends
A hosted endpoint, not a folder on one laptop. The machine you're moving to needs your MCP client and a sign-in — not a sync client, a VPN, or the first machine still being awake.
Typed, so it stays complete
Make Handoffs/ a collection and the frontmatter contract is fixed: branch, commit, status, whether the work is pushed. The receiving agent knows what to verify before it trusts a word of the prose.
Queryable when you forget
Ask for open handoffs on this repo, newest first, and the workspace answers. A handoff you can't find is a handoff you didn't write.
More use cases
Other jobs a shared workspace does.
- Decisions & precedent An agent that can't see why you chose Postgres over Redis will cheerfully propose Redis again. A decision log it can query turns settled questions into constraints.
- Agents from different vendors Different models are genuinely better at different jobs. The one thing they have in common is MCP — so make the memory the thing they share.
- Parallel agent fleets Fan a job out across a fleet and they all reach for the same file. Every write says which version it's changing, so the loser of a race is told, not silently overwritten.
- Onboarding an agent The first thing a fresh agent does is read the workspace — what the system is, what's settled, how to work here — instead of asking you or guessing.
- Background & scheduled agents A nightly run has nowhere to put what it found. Give it a folder and the report is waiting in the morning — for you, and for the next run.
- Research & deliverables Agents produce spreadsheets, PDFs and rendered charts. Keeping them at the same paths as the notes that cite them is what makes the analysis reproducible later.
Free plan, no card
If you've re-explained the same task twice today.
Working across two machines, or losing an afternoon of context every time a session ends, is the setup this was built for. Write your next handoff into a workspace instead of a scratch file — free to try, no card.