## What — 現在表示されているもの
herdr のエージェント一覧は、設定しなければ組み込みのデフォルトで描画される。
```toml
rows = [["state_icon", "workspace", "tab"], ["agent"]]
```
2行目の `agent` は**エージェント種別名**(`claude` / `codex`)であって、Opus や Sonnet といったモデル名ではない。herdr にモデル名のトークンは存在しない。
使える組み込みトークンは `herdr --default-config` に載っている 8 つ。
- `state_icon`
- `state_text`
- `workspace`
- `tab`
- `pane`
- `agent`
- `terminal_title`
- `terminal_title_stripped`
このうち `terminal_title_stripped` に、Claude Code のセッション名がそのまま入っている。Claude Code が OSC タイトルとして流しているものを herdr が拾っているだけなので、**transcript の jsonl を読む仕掛けも hook もいらない**。
```
$ herdr agent list
... "terminal_title":"✳ 技術知識の洗い出しとまとめ",
"terminal_title_stripped":"技術知識の洗い出しとまとめ" ...
```
## How — config.toml に1セクション足す
`~/dotfiles/.config/herdr/config.toml` の末尾に追記する(`~/.config/herdr/config.toml` はここへのシンボリックリンク)。
```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
```
## 落とし穴
> [!warning] rename していなくても名前が出る
> Claude Code は `/rename` した名前(transcript の `custom-title`)と、会話から自動生成した要約タイトル(`ai-title`)を**同じ OSC タイトルに流している**。herdr 側では区別できない。しかも自動タイトルは会話の途中で勝手に書き換わる(実測で1セッション中に1回変わった)ので、サイドバーの見出しは安定した目印にはならない。
もう一つ、working 中はスピナー記号 `◐ ` が `terminal_title_stripped` に残る(herdr 0.7.5 で確認。idle の `✳ ` は除去される)。1行目の `state_icon` と重複するだけなので実害はない。
## 関連
- [[開発環境]]
- [[herdrが撒く環境変数と入れ子判定]] — 同じく herdr の挙動を実データで確かめた話