An adapter teaches Halfhand how to parse a specific agent’s JSONL stream
into structured events (prompts, tool calls, tool results). When you
hh run -- <cmd>, Halfhand auto-detects the adapter from the command; force
one with --adapter.
| Adapter | Detect from | Records |
|---|---|---|
claude-code |
claude |
Claude Code’s JSONL turns |
claude-desktop |
Claude Desktop | Desktop session turns |
codex-cli |
codex |
OpenAI Codex CLI turns |
gemini-cli |
gemini |
Gemini CLI turns |
Any command without a matching adapter is still recorded — you get the PTY output and file changes, just not the parsed agent turns.
Adapters consume untrusted JSONL, so per the 1.0 stability addendum every adapter parser must:
fuzz/ (e.g. fuzz/fuzz_targets/<name>.rs).tests/fixtures/<adapter>/ for
integration tests.See CONTRIBUTING.md (“Adding an adapter”) for the fixture-capture guide and
the exact files to touch (hh-core’s adapter module, the detection rules, the
fuzz target, and the fixture corpus).