Skip to content

ht claude

Verbs backing the Claude Code integration. Added in 0.5.0 (statusline / sessions / event) and 0.6.0 (install / uninstall / doctor).

Terminal window
ht claude statusline

Not called by hand — install it as Claude Code’s statusline:

~/.claude/settings.json
{ "statusLine": { "type": "command", "command": "ht claude statusline" } }

Reads the JSON Claude Code pipes on stdin, prints a τ-mux-styled status line (model · effort · directory · git branch · permission mode · PR · context bar · cost · ±lines · rate-limit warnings ≥80%), and tees the parsed data to the app (claude.statusline) so the sidebar ticker and session registry stay accurate. The print always happens and always comes first — a missing or hung app never degrades the line; exit code is always 0.

Terminal window
ht claude pane [--cwd P] [--split] [--direction right|down] [--resume ID]

Open a native Claude Code pane — the same entry point as the command palette, scriptable. --cwd sets the session directory (defaults to the focused pane’s), --split opens it beside the current pane, --resume ID reopens a previous session. Mirrors agent.create for the pi pane.

Terminal window
ht claude auto-approve # status
ht claude auto-approve on # accept prompts automatically
ht claude auto-approve off
ht claude auto-approve on --delay 300

Turns automatic acceptance of Claude Code’s terminal permission prompts on or off. Applies immediately and persists — this is the same setting as Settings → Auto-approve Claude Code prompts and the command-palette toggle.

--delay sets the pause before Enter is sent (ms). The prompt is re-checked when the delay expires, so a prompt you answered yourself never receives a stray keystroke.

Only Claude Code’s own terminal prompt is ever answered — never the τ-mux approval modal, never the Claude Code pane. After more than eight prompts in a minute it pauses itself and notifies you, and every approval is written to that pane’s sidebar log.

Terminal window
ht claude approve [--surface S]

Accept the permission prompt Claude Code is showing in a terminal pane by sending Enter. Without --surface it answers the longest-waiting session. Refuses (with a reason) when nothing is waiting, when the approval was routed to the τ-mux modal instead, or when the session is a Claude Code pane — see accepting terminal prompts.

Terminal window
ht claude sessions # live sessions
ht claude sessions --all # include recently-ended ones

Lists the Claude Code sessions the app has observed: short id, phase (working / waiting-input / waiting-approval / compacting / error), pane, title, and (model · ctx% · cost · turn N).

Terminal window
ht claude install [--features lifecycle,tasks,statusline,approvals]
[--dry-run] [--settings-path P] [--bridge-path P]
ht claude uninstall

Managed surgery on ~/.claude/settings.json:

  • timestamped backup beside the file before every write;
  • additive merge — entries you wrote yourself are never touched;
  • idempotent — a second install reports = unchanged lines;
  • refuses to rewrite a file it cannot parse;
  • a user-defined statusLine is kept (reported, not clobbered).

Default features: lifecycle,tasks,statusline. approvals is opt-in — it wires the PermissionRequest hook that routes permission prompts to a τ-mux modal + Telegram (see the integration page for the fail-safe contract). uninstall removes exactly the managed entries (identified by their command path) and keeps a backup.

Terminal window
ht claude doctor

One-screen health report: claude binary + version, settings file parse state, bridge presence, hooks wired vs missing, approvals state, statusline (ht claude statusline / user-defined / none), skill presence, and app reachability — including the specific “reachable but pre-0.5.0 — restart τ-mux” case.

Terminal window
ht claude event --json '<bridge-event JSON>'

Internal — the hook bridge’s transport into claude.event. Injects HT_SURFACE as the surface attribution when the payload lacks one.