Docs/Carrying a thread

Carrying a thread

constant carry does the same carry as a host switch, but without opening a hosted terminal. It writes the target runtime's native session and prints the resume command.

Sources: codex, claude, opencode (ses_… ids resolve automatically), and gemini (source only — existing gemini conversations carry out; carrying into gemini lands after one live check). Targets: codex, claude, opencode.

Preview first

--dry-run reads and distills but writes nothing:

constant carry --from codex --to claude --dry-run
constant carry --from codex --to claude --dry-run --debug

Carry

constant carry --from codex --to claude
# carried → claude session 8da587a7  (auth bug · ch02 ← codex · cobalt-37)
# carried 14 turns · dropped 3 tool events · 2 redactions
# resume with: claude -r 8da587a7

Then resume in the target runtime with the printed command. The second line is the receipt — every carry declares what crossed, what was dropped, and how many secrets were redacted. The parenthesized stamp is the conversation's name, chapter, and handle.

Carry tool history too

--with-tools (experimental) carries tool calls and results instead of dropping them — every string in their payloads is redacted, oversized outputs are capped, and reasoning stays dropped. The receipt then reads kept N tool events:

constant carry --from codex --to claude --with-tools

Continue vs. new

By default carry continues the current target projection for the conversation. If codex[1] already has claude[1.1], another carry to Claude updates that same Claude session. Use --new for a separate continuation:

constant carry --from codex --to claude --new
# codex[1] -> claude[1.2]

Target a specific session

Instead of the latest session in the current directory, point at one explicitly:

constant carry --session <path-or-session-id> --to codex

Machine-readable output

constant carry --from codex --to claude --json

distill is kept as an alias for carry, but carry is the public verb.

Next: Sessions & trail.