dotbabel

Handoff — Cross-CLI Session Context Transfer

Thin wrapper around the dotbabel handoff binary. The binary is the authoritative contract; run dotbabel handoff --help for the full sub-command list and flag reference. This file maps natural language to the right invocation.

Auto-trigger phrase mapping

Trigger phrase Invocation
handoff <id> / resume-command fragments dotbabel handoff pull <id>
continue in <cli> / switch to <cli> / pull from <cli> dotbabel handoff pull <id> --from <cli>
what was that session about + identifier dotbabel handoff pull <id> --summary
push handoff / send to other machine / save this dotbabel handoff push --from <host-cli> [--tag …]
pull handoff / fetch handoff / continue from yesterday's machine dotbabel handoff fetch [<query>]

Extract <id> from the user message (UUID, short UUID, or a deliberate-label alias: claude customTitle/aiTitle, codex thread_name, copilot workspace.yaml:name, or gemini checkpoint). Aliases match case-insensitively. Resolution precedence: UUID > short-UUID > latest > alias (no fall-through on miss). The resolver probes Claude / Copilot / Codex / Gemini roots automatically. If the query is missing or ambiguous, ask one clarifying question before proceeding.

The --from filling rule

When invoking dotbabel handoff push without a query positional, include --from <your-cli> where <your-cli> is the agent the host LLM is running in (claude for Claude Code, copilot for GitHub Copilot CLI, codex for Codex). The flag is required in that mode; the binary exits 64 without it.

Tool execution failures

When the dotbabel binary cannot be executed for any reason — permission denied, binary not found, network failure, sandbox restriction — do NOT fabricate, reconstruct, or synthesize a <handoff> block from raw session JSONL files. Report the tool-execution error verbatim and stop; instruct the user to run the command manually in a shell where dotbabel is available.

Specifically:

  1. Quote the exact command attempted and the failure message.
  2. Tell the user to run it themselves and paste the output back.
  3. Do not infer, summarize, or proceed as if the call had succeeded.

Why: the binary is the authoritative producer of <handoff> blocks — it owns the scrub passes (push redaction) and the extraction logic §4 data flow depends on. Fabricated output may pass shape validation but bypasses scrubbing entirely; the consumer cannot distinguish a hand-rolled block from a real one.

Cross-cutting flags

Brief reference. dotbabel handoff --help is authoritative.

Out of scope

Internal references