imu-note
いむたろ
いむたろ
@imutaroh
新卒エンジニア / データ基盤 × AI

What — 撒かれる5つの変数

herdr の入れ子判定は環境変数を見ているだけ。 本当に herdr のペイン内かどうかは見ていない。

変数意味
HERDR_ENV1herdr 配下のシェルという印
HERDR_WORKSPACE_IDw2G所属ワークスペース
HERDR_PANE_IDw2G:p1所属ペイン
HERDR_TAB_IDw2G:t1所属タブ
HERDR_SOCKET_PATH~/.config/herdr/herdr.sockサーバとの接続先

HERDR_ENV=1 が立っているシェルから herdr を起動すると、入れ子とみなして拒否する。変数が「本物のペイン由来か、死んだペインの残骸か」は区別されない。 ここが誤検知の入口。

How — 実際に見た食い違いと、紛らわしいケース

実際に確認した食い違い(2026-08-06):

  • あるシェルの env → HERDR_WORKSPACE_ID=w2G
  • herdr workspace list の実在ワークスペース → w31 w32 w34 w36 w3A

w2G はもう存在しない。サーバ再起動や herdr server live-handoff で ID が振り直された後も、古いシェル(およびそこから起動した子プロセス)が旧 ID の env を持ち続けたと考えられる。この状態のシェルは、見た目は素のターミナルなのに herdr からは「入れ子」と判定される。

紛らわしい別ケースが2つあるので、切り分けが要る。どちらも env が正しく、拒否も正しい動作になる。

  • サイドバーを畳んだ herdrCtrl+Qb)は素の Ghostty と見分けがつかない
  • popup スクラッチシェルCmd+P)も浮いた単独ターミナルに見えるが、中身は herdr のペイン
見分け方

env の HERDR_WORKSPACE_IDherdr workspace list に載っているなら本物のペイン内、載っていないなら残骸。この1手で上の2ケースと env 残留を分けられる。

関連