Skip to content
Harness Engineering2026-08-067 min readRev. 2026-10-02

Your Chat History Is Not a Lab Notebook: Make Agent Work Resumable

Keep a lab notebook for agent-driven research: the commit, config, data version, results with their error bars and unresolved jobs. Then test whether a fresh session can continue from it alone.

Key takeaways

  • A transcript mixes proposals, abandoned attempts and decisions; a notebook entry states which result was accepted, from which commit, config and data.
  • Each entry should let someone else check it: question and decision, code and config, data version, result with n and interval, unfinished jobs, next check.
  • Session data expires, conversations get compacted, and resumed teams lose their in-process teammates, so resume is not a continuity plan.
  • Test resumption: a fresh session should find the revision, accepted results, unfinished jobs and next check without a private briefing.
  • A notebook is worth its upkeep only if it shortens recovery and prevents repeated work, which you can measure.

Rod Rivera

Author

Your Chat History Is Not a Lab Notebook: Make Agent Work Resumable

Rod's note: read with a pencil; the margins are for you.

The resumption test

You may already keep code in git, runs in an experiment tracker and notes in a document. In agent-driven work the gap is often between them: the code exists, but why a baseline was changed, which eval run was accepted and whether a submitted job ever finished live only in a conversation with the agent.

Try this. Take a bounded task, such as adding an ablation to an evaluation, and stop at a known point. Start a fresh session with only the repository and your written records, no private briefing. Can it identify the commit, the accepted results, the jobs still running and the next check?

If it needs you to reconstruct those facts from memory, the handover is incomplete. This article covers what to record, why the chat is not that record, and how to test that another session can use it. Do not make your first resumption test one that touches shared compute or a shared dataset.

What goes in the notebook

Write down what the next person or session must be able to verify. For research work with an agent, that is close to a lab notebook:

FieldExample of a checkable entry
Question and decision"Does the new tokenizer change pass@1 on the held-out set? Decision: adopt, pending the second seed."
Code and configCommit hash, config file hash, model identifier and sampling settings
DataDataset name, version or content hash, split used
ResultMetric, n, value and its interval, with the run ID that produced it
Unresolved effectsJobs submitted and not yet finished, with their IDs
Next checkThe command to run and what outcome would change the decision

Separate a proposed action from an attempted one and from a confirmed outcome. "Eval done" is ambiguous. A useful entry names the commit, the dataset version, the command and its result, and whether anyone looked at failing cases. It gives the receiver something to verify without turning a summary into proof. Chapter 16 of the book has a section on saving evidence that survives the conversation.

Durable records support a checked resumption. Session; Chat history; Notebook entries in the repository; May be missing or compacted; Persists across sessions; Check revision and evidence before resuming
Durable records support a checked resumption

Why resume cannot be the continuity plan

A saved conversation is useful working context. It is one input to continuity, with a different job from a decision record or a result receipt.

The documented runtime gives several reasons. Claude Code deletes session data older than its cleanupPeriodDays setting, 30 days by default, at startup. Long conversations are compacted, which replaces the message history with a summary. The agent-teams page says /resume and /rewind do not restore in-process teammates. And an edit to CLAUDE.md mid-session does not reach the running session until /clear, /compact or a restart.

A committed notebook survives a conversation boundary and can be inspected. That helps only if each entry names the revision it applies to and is updated when the plan changes. A stale committed entry is durable misinformation: persistence and correctness are separate properties.

The transcript is not a record, even before it expires

A transcript mixes proposals, abandoned attempts, tool output and decisions. It may contain the answer to a later question without saying which statement was accepted or still applies.

A record is curated at the moment of writing: a plan, a decision note, a results table with its run IDs, a pull request description. Keep transcripts for diagnosis, and make the accepted state explicit enough to inspect without replaying the conversation.

Keep the repository readable for the receiver

The notebook points at commits, so the history has to be usable too.

  • Commit as checkpoint. Claude Code's checkpoints rewind edits made with its file tools, but the docs say they do not track changes made by shell commands and are not a replacement for version control.
  • Write messages for someone who was not there. State the trigger, the resulting behavior and the validation, so a teammate or a future session can assess the change without the chat.
  • Make each parallel session carry its evidence. If you run several agent sessions at once, each should report the command, commit, environment and result. Several branches can each pass their checks and still conflict when merged, so whoever merges them needs the dependency picture, and a local pass on one branch is not evidence about another.
Case study: how this site is run

This site is produced by agents working in parallel sessions, and each claim of finished work is recorded with the commit it landed in and the check that proves it. The history is internal, so treat the following as a first-party example, not an auditable study. Once, three participants spent a day reasoning about a question that a decision on disk had settled weeks earlier. Nobody looked, because the question felt new. A record helps only if it is read before it is added to.

Check a record before relying on it

Quick check — A fresh session finds a committed note: 'Baseline rerun done, accuracy 71.2%.' What is the most important thing missing before it can build on this result?

Check the decision

Why this matters in a lab

Research teams depend on results someone else can rerun: a table in a paper, a number in a launch decision, an ablation a colleague builds on. Agent-driven work adds more sessions and more intermediate results, so the gap between what happened and what was recorded widens unless you close it on purpose. A candidate who keeps a checkable notebook while working with agents is showing the habit that makes their results usable by others, which research engineer roles test for directly.

This is a proposal, not a measured gain. To evaluate it, track the time to resume a task, the work repeated because a record was missing, and the cost of keeping records current. A record system should improve an observable handover, not just produce more documents.

The honest limits

Records do not decide which results matter, and they do not assign responsibility. Someone still owns the decision to adopt a result, and adding a record system does not make a workflow safe to leave unattended.

Failure modes to include in the handover

What to do this week

Run the bounded resumption test. Stop a task at a known point, close the session and continue from records alone. Note each fact you had to supply from memory, then record it at the moment future work produces it. Repeat after a real change in your workflow, and check that the record leads to the right revision, evidence and unresolved action, not only that it exists.

Register of claims to recheck

Sources reviewed 2026-09-30. The linked documentation supports the stated runtime behavior; it is not execution evidence for every configuration, nor a public audit of the case study.

ClaimRecheck at
Session data removed after cleanupPeriodDays, 30 days by defaultcode.claude.com/docs/en/costs
Compaction replaces history; CLAUDE.md edits apply after /clear, /compact or restartcode.claude.com/docs/en/prompt-caching
Checkpoints skip shell-command changes and are not version controlcode.claude.com/docs/en/checkpointing
Agent teams: no resume of in-process teammatescode.claude.com/docs/en/agent-teams
Read Chapter 13: recover work after a crash

The chapter builds leases, fencing and crash recovery so that a replacement worker continues from durable state instead of from memory.

Learn the mechanism. Test the claim.

Join the Prof Rod newsletter for one educational lesson a week, with worked examples attached. It is free to register for and separate from the Zero Employee community.