Agent Awareness

Running several agents at once, you can’t watch every terminal — each node needs to tell you when it needs you and where it’s working, so you can act instead of babysitting. TermTree does this by recognizing agent CLIs running in a terminal: it works with Claude Code today and detects Codex too, though a node’s terminal doesn’t have to run an agent at all — it’s just a regular shell that TermTree can additionally recognize as running one.

Worktree indicator

An agent that enters a git worktree changes its own working directory there and, from then on, reports paths — in its output, a stack trace, git status — relative to that worktree’s root, not the pane’s shell directory. Lose track of which worktree an agent is in and you can end up reviewing the wrong copy of a file, so TermTree surfaces it automatically.

When TermTree detects that a terminal’s foreground agent is working inside a git worktree, it shows a worktree icon on that node and on the terminal’s title bar. Hover the icon to see the worktree’s branch name.

The indicator persists across restarts — reopen TermTree and a node whose agent was in a worktree still shows it.

Not available on native Windows. Worktree detection relies on POSIX-style path resolution, so it doesn’t work in a native Windows shell. It is also unavailable across a WSL boundary, which hides the agent’s working directory from the host — TermTree falls back to the shell’s reported directory there.

Resuming a Claude session

Press Cmd+Shift+R / Ctrl+Shift+R with a node selected to resume its Claude Code session (claude --resume) — useful if the terminal closed or you want to jump back into a conversation without retyping the resume command. See Session Persistence for how this also happens automatically across app restarts.

How TermTree knows an agent is waiting on you

The INPUT status (orange dot) means an agent is blocked, waiting for your response. TermTree detects this two ways:

  • Claude Code — authoritative. TermTree registers a Notification hook in ~/.claude/settings.json and injects a TERMTREE_NODE_ID into each terminal’s environment. When Claude fires a notification (for example, to ask permission for a tool call), TermTree knows definitively which node needs your attention — it isn’t guessing from the terminal’s text.
  • Other CLIs — pattern-matching fallback. For agents without a hook integration, TermTree scans terminal output for common blocking-prompt patterns (like [y/N]-style confirmations) to infer that the terminal is waiting on input.