Docs/What carries

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
  • The conversation's name, chapter, and handle, so the carried session is recognizable in /resume

For a pure thinking or conversation session, this is essentially complete.

Carried on request: tool history

--with-tools (experimental, on carry, host, and resume) carries tool calls and results across the runtime boundary instead of dropping them. Every string anywhere in their JSON payloads goes through the full redactor set, oversized tool outputs are capped, and the receipt distinguishes kept N tool events from dropped N tool events. Reasoning stays dropped either way — it is model-internal and never carried.

Stripped on purpose

  • Runtime scaffold: system prompts, injected environment blocks, skill lists, plugin lists, memory blocks
  • Secrets: API keys, AWS access keys, PEM private-key blocks, JWTs, 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, unless you opt in with --with-tools
  • Reasoning traces — never carried
  • Approvals, sandbox state, prompt-cache state, and hidden provider state

Reasoning is often an opaque payload and stays behind by design. For coding sessions the narrative usually survives even without tool history, because the assistant says what it did. The hidden provider state is a hard ceiling — physics, not a TODO.

See The alembic cartridge for how the carry works, and the Trust boundary for exactly what Constant writes.