[FEATURE] Let Workflow (dynamic workflow) subagents render in tmux panes, like teammateMode: "tmux" does for agent teams
Open 💬 2 comments Opened Jun 9, 2026 by hkiessle
Problem
Agent teams already have first-class tmux visibility: with teammateMode: "tmux", every TeamCreate teammate gets its own visible pane — you can watch each agent think and intervene. This is excellent.
Workflow subagents (the dynamic-workflow orchestration engine) have no equivalent. They run as headless API loops with no TTY. The only views are the /workflows progress tree in the launching session and the raw per-agent agent-*.jsonl transcripts on disk.
Why it matters
- Large fan-outs are exactly where visibility matters most. Today I ran a ~70-agent repo review workflow; a network blip silently killed 26 agents (including 10 of 12 finders). Diagnosing that required manually grepping
agent-*.jsonlfiles forisApiErrorMessage. In a pane view the carnage would have been visible at a glance. - Users who built tmux-based multi-agent setups (iTerm2
tmux -CC+ agent teams in panes) get a confusing asymmetry: TeamCreate members are watchable, Workflow agents are invisible — even though workflows are the recommended tool for big orchestration. - Headless/VM use (systemd-managed tmux sessions running autonomous Claude) has no
/workflowsTUI at all; transcript files are the only signal.
Ask
Any of these would help, in descending order of preference:
- A
workflowAgentMode: "tmux"setting mirroringteammateMode: each running workflow agent gets a (read-only is fine) pane showing its streaming activity, panes opening/closing as agents spawn/finish. - A supported CLI command to live-tail a workflow agent's activity in human-readable form (e.g.
claude workflow tail <runId> [agentId]), so users can wire their own pane layouts. - At minimum: document the
agent-*.jsonltranscript layout as a stable interface for external watchers.
Environment
- Claude Code 2.1.170, macOS (darwin 25.2.0), iTerm2 + tmux -CC
- Also relevant on Linux/systemd headless setups
🤖 Filed via Claude Code on behalf of the user after a live debugging session of exactly this gap.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗