herdr のエージェント一覧は、設定しなければ組み込みのデフォルトで描画される。
rows = [["state_icon", "workspace", "tab"], ["agent"]]
2行目の agent はエージェント種別名(claude / codex)であって、Opus や Sonnet といったモデル名ではない。herdr にモデル名のトークンは存在しない。
使える組み込みトークンは herdr --default-config に載っている 8 つ。
state_iconstate_textworkspacetabpaneagentterminal_titleterminal_title_strippedこのうち terminal_title_stripped に、Claude Code のセッション名がそのまま入っている。Claude Code が OSC タイトルとして流しているものを herdr が拾っているだけなので、transcript の jsonl を読む仕掛けも hook もいらない。
$ herdr agent list
... "terminal_title":"✳ 技術知識の洗い出しとまとめ",
"terminal_title_stripped":"技術知識の洗い出しとまとめ" ...
~/dotfiles/.config/herdr/config.toml の末尾に追記する(~/.config/herdr/config.toml はここへのシンボリックリンク)。
[ui.sidebar.agents]
row_gap = 0
[ui.sidebar.agents.rows_by_agent]
claude = [
["state_icon", "workspace", "tab"],
[{ token = "terminal_title_stripped", fg = "#58a6ff", dim = false }],
]
グローバルの rows を丸ごと差し替えず、rows_by_agent で claude だけ上書きしている。**codex など他のエージェントが OSC タイトルを出さない場合に2行目が空欄になる事故を避けるため。**他は既定のまま種別名が出る。
反映は再起動不要。
herdr config check # → config: ok
herdr server reload-config # → status: applied
Claude Code は /rename した名前(transcript の custom-title)と、会話から自動生成した要約タイトル(ai-title)を同じ OSC タイトルに流している。herdr 側では区別できない。しかも自動タイトルは会話の途中で勝手に書き換わる(実測で1セッション中に1回変わった)ので、サイドバーの見出しは安定した目印にはならない。
もう一つ、working 中はスピナー記号 ◐ が terminal_title_stripped に残る(herdr 0.7.5 で確認。idle の ✳ は除去される)。1行目の state_icon と重複するだけなので実害はない。