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.
| 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.
--from filling ruleWhen 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.
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:
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.
Brief reference. dotbabel handoff --help is authoritative.
--from <cli> narrows source-CLI auto-detection on push, fetch, pull; filters list, search, and prune.
For pull latest, omitting --from triggers host auto-detection: CLAUDECODE=1 / COPILOT_* / CODEX_* / GEMINI_CLI* env signals → narrowed to that CLI’s root; host undetectable → cross-root union (newest mtime across all four roots).--summary is pull-only; fetch --summary exits 64 because fetch retrieves the rendered remote handoff.md.-o <path> (on pull) controls output: - forces stdout; auto writes to <repo>/docs/handoffs/<date>-<cli>-<short>.md; any other string is a literal path.--since <ISO> cuts off list and search (default 30 days for search).--limit <N> caps the row count.--tag <label> annotates a push (repeatable). On fetch <tag>, exact-tag matches are preferred over description substring fallback.--fixed / -F treats the search query as a literal string instead of a regex.--json is honoured by list, pull, search.push runs the scrubber and fails closed (exit 2) if it can’t run. Best-effort pattern pass — see references/redaction.md.search is substring/regex only.dotbabel handoff --help — authoritative flag and sub-command list.references/prerequisites.md — install matrix and remote-transport setup.references/from-codex.md — Codex-specific notes.references/redaction.md — scrubber behavior.