Docs/Trust boundary

Trust boundary

Constant does not claim shared native memory between agent CLIs. It reads visible local session evidence and authors a new session that the target runtime can resume. It still moves conversation content across a trust boundary, so read this before using it on sessions you care about.

Originals are seeds, never targets (F1)

A switch never overwrites your original session. Constant reads it as a seed and maintains its own Constant-owned projections per thread, kept in sync as you switch back and forth. A codex to claude to codex round trip leaves your untouched original plus exactly two stable projections: no proliferation, no silent data loss. All writes are atomic — a tmp sibling is written, fsynced, and renamed into place — so a crash mid-switch cannot destroy the newest turns.

What Constant writes

~/.claude/projects/<cwd-slug>/<id>.jsonl
~/.claude/history.jsonl
~/.codex/sessions/YYYY/MM/DD/rollout-<timestamp>-<id>.jsonl
~/.codex/session_index.jsonl
~/.codex/state_5.sqlite
~/.constant/trail.jsonl
~/.constant/snapshots/<conversation>/chNN-from-<runtime>.json   (the record, 0700)

OpenCode is never written directly: Constant hands export-shaped JSON to opencode import, opencode's own validated door, and reads its store with read-only sqlite queries. Gemini stores are read-only (carry source).

Command write behavior

CommandWrites?
doctorreads CLI/version/store presence only
statusreads runtime readiness, latest sessions, the trail
trail, route, snapshots, psread the ledger, projection paths, the record, the process table
sessionsreads metadata; --titles also reads transcripts
carry --dry-runreads and distills, writes nothing
carrywrites a record snapshot, a target-native projection, and the trail
hostwrites only when you switch runtimes
resumere-hosts; reprints a projection from the record only if all are gone
restoremints a fresh native session; never overwrites anything
renameupdates the ledger and re-stamps native picker titles
packwrites only the requested bundle file
unpackadds volumes and ledger rows; never overwrites existing volumes
exportwrites only the requested --out file, or stdout

Redaction

Constant redacts common secrets from carried text — API keys, AWS access keys, PEM private-key blocks, JWTs, tokens, auth headers, emails — and strips runtime scaffold (system prompts, skill/plugin/memory blocks). With --with-tools, every string inside tool payloads goes through the same redactor set. Redaction happens before the record snapshot is written, so the record holds only redacted text. See What carries.

Limits

Constant is early, alpha software. Session formats are private and can change between runtime releases; Constant has round-trip tests for the current shapes (CI runs them against the real opencode binary), but a runtime update can require a codec refresh. Validated against codex 0.139.x, claude 2.1.x, opencode 1.14.x, and gemini 0.40 (source only).