Summary
Add OpenAI Codex support alongside Claude Code. Every command now takes a repeatable --tool flag to pick which tools a run touches, moves are crash-safe across both tools, and non-fatal findings surface as warnings instead of silent skips.
Changes
Features
- Add OpenAI Codex as a second supported tool.
move,export,import,push,pull, andstatsall operate on Codex projects, and with--toolomitted a command runs against every tool it detects. Pass--tool codexor--tool claude(repeatable) to limit a run. (#55) - Make moves crash-safe. A move stages its writes and publishes them by atomic rename; an in-process failure rolls back and restores file modification times, and a move killed mid-apply re-runs to convergence. (#55)
- Surface non-fatal findings as warnings.
move,import, andpullnow report a malformed history line, an active writer, or a rules file that references the project instead of silently skipping the entry or refusing the whole run. (#55)
Fixes
- Stop Claude import from answering the destination machine's security prompts. Import used to copy the
.claude.jsontrust-dialog and external-include approval keys verbatim, pre-accepting the folder-trust checkpoint that gates the archive'sallowedToolsandmcpServers. Those keys are now destination-owned, so Claude Code asks its own questions the first time an imported project opens. (#62) - Raise the Go floor to 1.26.5 so release binaries pick up the stdlib fixes for the crypto/tls and os vulnerabilities. (#54)
- Render
push,pull, andmove --applyoutput after the progress ledger tears down. Plan summaries and result tables were interleaving with the ledger's live region and staircasing across the terminal. Apply runs also print a real command header instead of the[dry-run]prefix. (#64) - Reconstruct per-session witnesses on Claude import. An imported project used to land unwitnessed, so its identity check was skipped with a "no witness" warning.
importnow writes a~/.claude/sessions/<id>.jsonwitness for each staged session, attributed to the destination and recorded with pid 0 so it never blocks a later move. (#63) - Make Codex rollout imports converge. When an import stages a rollout, cc-port re-arms Codex's one-shot session backfill so the next Codex start rebuilds the missing
threadsrows. The old warning told users to rerun after opening the project, which never worked. (#61) - List Codex projects known only through a rollout file in all-projects stats.
statsbuilt its project set from thread cwd values andconfig.tomlkeys alone, so a project whose cwd appeared only in a rollout was missing entirely. (#58) - Close the pull dry-run and push warning parity gaps. Pull's dry-run now refuses every archive
--applywould refuse by running the same preflight gates, and push now prints the export warnings it was silently dropping. (#59)
Documentation
- Refresh the export/import, push/pull, and move demo clips to show both Claude Code and Codex. (#65)
Dependencies
Breaking Changes
The --claude-dir flag is gone. Use --claude-home or --codex-home to override a tool's state location, and --tool <name> (repeatable) to limit a run to specific tools.
metadata.xml changed shape. The old root-level <export><categories> block and top-level <placeholders> are replaced by one <tool name="..."> block per exported tool, each carrying its own categories and placeholders. Archives produced by v0.6.0 and earlier don't import.
Upgrade Notes
- Replace any
--claude-dir <path>invocation with--claude-home <path>. - Re-export any archives you still need to import. Archives from v0.6.0 and earlier no longer load under the new
metadata.xmlschema.