Skip to content

Claude Code subagent transcripts aren't clickable: outputFile is dropped before it reaches the UI #2314

Description

@technicalpickles

The workflow

When a Claude Code thread runs the Agent tool as a background task (the local_subagent/backgroundTask path, distinct from the inline delegation tree that Explore-style subagents use), I want to click through from the collapsed one-line summary in the thread timeline into that subagent's full transcript, the same way the delegation work-kind already lets you drill into a subagent's child rows.

What happens today

The subagent's full transcript exists on disk as a real JSONL file and bb already threads a pointer to it most of the way through the pipeline:

  • packages/domain/src/provider-event.ts defines outputFile on the background task schema.
  • plugins/provider-claude-code/src/task-translation.ts populates it from the Claude Code SDK's message.output_file.
  • packages/provider-bridge-protocol/src/assembler/delta-assembler.ts (around line 757) carries outputFile through intact.

It then gets dropped. packages/thread-view/src/background-task-projection.ts copies every other field (summary, status, taskStatus, usage, error, etc.) in both applyBackgroundTaskItem and the initial EventProjectionWorkflowMessage construction, but never copies item.outputFile. It never reaches the TimelineRow/UI layer, so WorkflowWorkRowBody.tsx (around lines 22-28) renders only plain, non-interactive summary text when there's no workflow snapshot.

Verified against 9375a5495464c16fd9c3d03176add0a1dfca5172 on main by spawning a real subagent, then dumping bb thread log --self --format json --all and cross-referencing the emitted outputFile path against background-task-projection.ts and WorkflowWorkRowBody.tsx.

What I would expect

The timeline row for a completed Claude Code background subagent should be clickable (or expandable), opening the subagent's full transcript, the JSONL at outputFile parsed into the same childRows shape the delegation work-kind already renders, or opened as a file pane the way bb thread open <path> opens other files.

Context and alternatives

Precedent already exists in this codebase for the target UX: TimelineDetailScroll in apps/app/src/components/thread/timeline/ThreadTimelineRows.tsx (around lines 1376-1417) already renders a real nested TimelineRowsList for delegation work rows. This issue is scoped to the backgroundTask/outputFile path specifically; the other bb providers (Codex, Pi, ACP) don't use this concept at all, they resolve subagents straight to delegation rows.

Today, the only way to see this data is to grep the raw event log for outputFile and cat the JSONL by hand.

AGENT GENERATED

Metadata

Metadata

Assignees

No one assigned

    Labels

    provider-claude-codeBuilt-in plugin: provider-claude-codeprovidersCross-provider bridges, models, loginuiApp shell, sidebar, composer, rendering

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions