Continue the same coding task across Claude Code and Codex.
Continuum is a local plugin that maintains a small, portable checkpoint for each Git repository and branch. When you stop working in one coding agent and open the other, Continuum automatically injects the latest checkpoint so the new agent can continue with the relevant objective, recent results, and working tree state.
It does not copy hidden reasoning or transplant either agent's native session. Claude Code and Codex keep their own conversations and authentication.
Claude Code ── saves checkpoint ──┐
├── local Continuum store
Codex ── loads checkpoint ───┘
Continuum currently records:
- The recent user request and assistant result
- Which agent wrote the checkpoint
- Repository and branch identity
- Current commit and commit subject
- Modified and untracked file names
- A Git diff summary
Only the three most recent turns are rendered into the portable context. The checkpoint is capped at 12,000 characters by default.
Continuum does not make an additional model call to create the checkpoint. Its first release uses deterministic capture, keeping the token cost limited to the context the receiving agent reads.
- Claude Code and/or Codex with plugin support
- Git
- Python 3.10 or newer, available as
python3 - Linux, macOS, or WSL
Native Windows is not supported yet because the current locking implementation
uses the Unix fcntl module.
For context switching, install Continuum in both Claude Code and Codex on the same machine and operating-system user. Installing it in only one agent is still useful for inspecting checkpoints, but automatic handoff requires both.
Add the public Continuum marketplace and install it at user scope:
claude plugin marketplace add CytSoftware/continuum
claude plugin install continuum@continuum --scope userStart a new Claude Code session. If you installed it from an existing session, run:
/reload-plugins
User scope makes Continuum available in every project for that Claude Code installation. Continuum is a Claude Code plugin; it does not run in ordinary conversations on claude.ai.
Add the public Continuum marketplace and install the plugin:
codex plugin marketplace add CytSoftware/continuum
codex plugin add continuum@continuumStart a new Codex thread after installation. Codex will ask you to review the three Continuum hooks the first time they load. Review them, then choose Trust all and continue so automatic capture can run.
If you use multiple Codex homes or wrappers, install Continuum separately in
each environment. For example, an Orca-managed Codex runtime may have a
different CODEX_HOME from a standalone Codex installation.
There is no handoff command in the normal workflow:
- Work normally in Claude Code or Codex.
- When the agent finishes a turn, Continuum updates the local checkpoint.
- Open the other agent in the same repository and Git branch.
- Its startup hook automatically loads the checkpoint written by the first agent.
- Continue working. The second agent now maintains the checkpoint in the same way.
Continuum only injects a checkpoint when it was written by the other agent. Opening another session in the same agent does not add redundant context.
To ask an installed agent to inspect the checkpoint, say:
Show the current Continuum context and status.
The bundled context skill can show the context path, display the checkpoint,
or clear it. Clearing context is always explicit.
By default, checkpoints are stored outside the repository:
${XDG_DATA_HOME:-$HOME/.local/share}/continuum/
└── projects/
└── <repository-id>/
└── <branch-id>/
├── context.md
├── state.json
├── history.jsonl
└── lock
Files are created with user-only permissions. Continuum applies best-effort redaction to common API key, bearer token, and access token patterns. Treat the checkpoint store as sensitive anyway: arbitrary prompts and assistant results can contain private information that no regular expression recognizes.
Continuum never commits checkpoint data to your project and does not upload it to a Continuum service. The plugin has no service, account, API key, or network backend.
Set these environment variables before starting Claude Code or Codex:
| Variable | Default | Purpose |
|---|---|---|
CONTINUUM_HOME |
XDG data directory | Override checkpoint storage |
CONTINUUM_MAX_CONTEXT_CHARS |
12000 |
Limit injected Markdown size |
CONTINUUM_MAX_AGE_DAYS |
14 |
Ignore stale checkpoints |
Both agents must resolve CONTINUUM_HOME to the same directory.
Claude Code:
claude plugin marketplace update continuumThen apply the available update through /plugin, or enable automatic updates
for the Continuum marketplace.
Codex:
codex plugin marketplace upgrade continuum
codex plugin add continuum@continuumAn update that changes hooks may require reviewing and trusting the new hook hashes.
Claude Code:
claude plugin uninstall continuum@continuum --scope user
claude plugin marketplace remove continuumCodex:
codex plugin remove continuum@continuum
codex plugin marketplace remove continuumUninstalling the plugin does not delete saved checkpoints. Remove the Continuum data directory separately if you also want to erase its history.
Clone the repository:
git clone https://github.com/CytSoftware/continuum.git
cd continuumLoad the checkout directly in Claude Code:
claude --plugin-dir "$PWD"Run the CLI directly from a target project:
python3 /path/to/continuum/scripts/continuum.py status
python3 /path/to/continuum/scripts/continuum.py show
python3 /path/to/continuum/scripts/continuum.py path
python3 /path/to/continuum/scripts/continuum.py clearRun the test suite and validate both plugin manifests:
python3 -m unittest discover -s tests -v
claude plugin validate .- Context is a compact checkpoint, not a byte-for-byte conversation transfer.
- Deterministic capture may miss decisions that are not present in recent turns.
- Transcript parsing is a fallback because native transcript schemas can change.
- Checkpoints are local to one machine unless you explicitly provide a shared
CONTINUUM_HOME. - Concurrent work on the same repository and branch shares one rolling checkpoint.
- Native Windows is not supported in the first release.