What carries
Constant carries the conversation, not the machinery. The honest verdict is lossy-but-resumable: the conversation crosses cleanly, but the agentic substrate does not, because the schemas are not 1:1 across runtimes.
Carried
- Every user and assistant turn, verbatim
- The working directory recorded by the source runtime
- A trail name, so the carried session is recognizable in
/resume
For a pure thinking or conversation session, this is essentially complete.
Stripped on purpose
- Runtime scaffold: system prompts, injected environment blocks, skill lists, plugin lists, memory blocks
- Secrets: API keys, GitHub and Slack tokens, authorization headers, password/token assignments, and email addresses
This is not just tidiness. A naive transcode can dump an entire system prompt into the target session and leak a real token. Constant redacts and strips scaffold before anything crosses the boundary.
Not carried
- Tool calls and tool results
- Reasoning traces
- Approvals, sandbox state, prompt-cache state, and hidden provider state
A Codex tool call is not a Claude tool call; the schemas are not 1:1, and reasoning is often an opaque payload. For coding sessions the narrative usually survives, because the assistant says what it did, but the machine-level tool history does not. This ceiling is physics, not a TODO.
See The alembic cartridge for how the carry works, and the Trust boundary for exactly what Constant writes.