HERDR_SUPPORT

Herdr Support: Claude vs Codex (This Machine)

Snapshot 2026-09-25. herdr 0.8.2 at ~/.local/bin/herdr, config ~/.config/herdr/config.toml. Local source clone ~/projects/repositories/herdr is stale (v0.6.1, May 2026) — pull before source-diving.

TL;DR

The gap was real and had one root cause: herdr’s official agent integration was installed for Codex (v8) but not for Claude. Fixed 2026-09-25: herdr integration install claude run; both now current (v8).

What v8 integrations actually do (verified by reading both installed hooks): they report pane.report_agent_session (native session id) on SessionStart — session-resume refs only. Semantic state (working/blocked/…) in herdr 0.8.2 comes from core detection/heuristics for all agents; the old v3-era pane.report_agent state hooks are gone. So the practical Claude/Codex delta was native session resume, not state fidelity.

How herdr sees an agent (three signal layers)

SignalClaudeCodex
Process detection + screen heuristics (automatic; drives agent_status)yesyes
Official integration (session refs over socket API, v8)yes — installed 2026-09-25yes

Codex side (the good state)

Claude side

What Claude lost vs Codex pre-install (now closed)

Native session resume — after a herdr server restart, Codex panes could resume their native threads ([session] resume_agents_on_restore, default true); Claude panes restarted cold because no session ref was ever reported. Fixed by the integration install.

State (blocked/working/done, toasts, sounds, agent_panel_sort = "priority") was never integration-fed in 0.8.2 — both agents get it from core detection, and a live check showed agent_status: "working" on a Claude pane pre-install.

Shared skill surface (parity here is fine)

Gap closure log (2026-09-25)

  1. ✅ herdr integration install claude — wrote ~/.claude/hooks/herdr-agent-state.sh (v8), added SessionStart entry to settings.json. herdr integration status now shows both claude and codex current (v8). herdr integration uninstall claude reverses cleanly.
  2. ✅ Coexistence verified: agent-state hook only sends pane.report_agent_session; it never touches labels/titles/display_agent, so herdr-session-name.sh (source user:claude-session-name) is unaffected — ✳ glyph confirmed intact on a live pane post-install.
  3. ✅ Resume parity: claude v8 asset is byte-for-byte the same shape as codex v8 (pane.report_agent_session with session id + transcript path). Sessions already running at install time report nothing — restart Claude sessions to get resume refs.

Remaining follow-ups

File map

PathRole
~/.config/herdr/config.tomlherdr config; rows_by_agent claude/codex rows, agent_panel_sort, [session] resume
~/.codex/herdr-agent-state.shofficial Codex integration (v8, herdr-managed)
~/.codex/hooks.jsonwires integration + ⬢ glyph hook
~/.claude/hooks/herdr-session-name.shhand-rolled name/glyph mirror (cosmetic only)
~/.claude/settings.jsonwires herdr-session-name.sh on 4 events
~/.claude/hooks/herdr-agent-state.shofficial Claude integration (v8, herdr-managed; installed 2026-09-25)
claude-jmchilton-plugins:plugins/jmchilton/skills/herdr-{config,open-worktree}shared skills, both hosts
~/projects/repositories/herdrsource clone, stale at v0.6.1