You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
agentop timeline shows workflow subagents as 'subagent <id>' #1756
When Claude Code's Workflow tool starts subagents, the agentop timeline pane labels each one subagent <id>. Subagents that the Agent tool starts show their description, for example "Implement Task 3: SSE and decode".
Seen on session f3cff1d8-c329-4b45-b03e-f6041bec8187 (25 workflow agents, all unlabeled).
Cause
The timeline takes a subagent's label from the Agent tool call on the wire (core/session/timeline/agents.go, the spawn.desc match). A workflow starts its agents inside Claude Code, so no such call goes over the wire.
Claude Code still writes each label to disk, in <session>/subagents/workflows/<run>/agent-<id>.meta.json ("description": "merge T2"). readSubagents in core/observe/claude/harvest.go reads only <session>/subagents/agent-*.meta.json, one level up.
Only the events pane uses harvested labels (cmd/agentop/tui/events_blocks.gosubagentLabel). The timeline pane does not.
The incremental harvest skips a session when its main transcript did not change. During a workflow run, the main transcript stays almost unchanged, so new labels do not arrive while the run is live.
Fix
readSubagents also reads subagents/workflows/*/agent-*.meta.json.
An incremental harvest that skips a transcript still re-reads that session's meta files. They are small.
The timeline pane uses the harvested description for a subagent that has no spawn call on the wire.
The timeline pane asks for a harvest when it shows a subagent with no label, at most once per 15 s.
Activity
Fix: Label workflow subagents in the agentop timeline