Skip to content

[Bug]: Subagent thread bar shows Medium for a Claude subagent that runs at high effort #15896

Description

@Aniketvish0

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Run a Claude thread at high effort.
  2. Have Claude start a subagent with the Agent tool. In my case the agent type was a custom definition with model: opus and effort: high in its frontmatter. General-purpose agents with no effort show the same thing.
  3. Open the subagent's thread and look at the bar above the composer.

Expected behavior

The bar shows the effort the subagent runs at (High), or shows no effort when T3 doesn't know it.

Actual behavior

The bar says Claude Opus 5.5 Medium. The subagent runs at high. Its Claude Code transcript (<session>/tasks/<agentId>.output) records "model":"claude-opus-5-5" and "effort":"high" (with "perTurnEffort":"high") on every request. That held on all 75 requests of the subagent in the screenshot, and on every request of four other subagents in the same session (101, 120, 224 and 244 requests). None of them said medium.

Subagent thread bar showing Claude Opus 5.5 Medium

The label made me think my subagents were running at medium. I rewrote my agent setup and told the user they had been, which was wrong.

Where it comes from (my reading, not verified)

ProviderSubagentBar takes effortLabel from formatModelSelectionEffort(selectedThread.modelSelection, provider.models, reportedModelSelection) (apps/mobile/src/features/threads/ThreadDetailScreen.tsx around line 1307 at a1d9d72; I assume the web caller is the same). A Claude subagent's child thread carries no effort. #15214 found that OrchestrationV2Subagent has no effort field and projectedSubagentsToRuntime sets effort: null. So my guess is that the bar falls back to the model's default effort, medium, instead of returning null.

Related:

Activity

  1. isinghmitesh commented on Oct 5, 2026

    @isinghmitesh

    Also seeing an effort-display mismatch on macOS with T3 Code Nightly 0.0.46-nightly.20261005.2667 on 2026-10-05, in the opposite direction to this report.

    A Claude Opus 5.5 parent launched three native Explore agents whose definitions pin model: claude-sonnet-5-5 and effort: medium. T3 displayed all three as Sonnet 5.5 at high effort. Their underlying Claude Code JSONL transcripts recorded effort: "medium" and perTurnEffort: "medium" on every Sonnet assistant record: 29, 40, and 5 records respectively, 74 total.

    The child model selections in orchestration_v2_projection_threads lacked effort options. Two were { "instanceId": "claudeAgent", "model": "claude-sonnet-5-5" }; the third became <synthetic> after a usage-limit error. Its preceding Sonnet records still consistently showed medium.

    We have verified the transcript values and missing stored options, but have not traced which UI formatting path produced the high label. This supports the broader mismatch between displayed effort and recorded runtime effort, without establishing that the exact fallback in this issue is responsible for our variant.

    Added the fuller reproduction to #15214 as well. Showing the actual recorded effort, or unknown when unavailable, would make the subagent label reliable.

    Investigated and posted with Codex on the user's behalf, using local transcript metadata and read-only T3 state inspection.

  2. LunarRed commented on Oct 7, 2026

    @LunarRed

    Same on T3 Code nightly 2026-10-07. A Claude Opus 5.5 subagent started with the Agent tool and effort: "max" showed Claude Opus 5.5 Medium in the subagent bar. Its transcript (tasks/<agentId>.output) recorded "effort":"max" and "perTurnEffort":"max" on all 143 requests. Here the effort came from the Agent tool's effort parameter, not from agent frontmatter, so the bar ignores both sources.

  3. NicolasStuff commented on Oct 8, 2026

    @NicolasStuff

    Additional confirmation on macOS with T3 Code Nightly 0.0.46-nightly.20261005.2702, investigated on 2026-10-08.

    The parent was explicitly asked to launch three Opus 5.5 subagents at xhigh. These were native Claude Agent children, not T3 delegate_task children.

    For all three children:

    • The native launch metadata records model: "opus" and effort: "xhigh".
    • Their own Claude Code JSONL transcripts record both effort: "xhigh" and perTurnEffort: "xhigh" on every assistant record that includes those fields: 100, 146, and 174 records, respectively, at inspection time. None of those records says medium.
    • T3's read-only orchestration_v2_projection_threads state contains the following child selection, with no effort options:
    {"instanceId":"claudeAgent","model":"claude-opus-5-5"}

    This confirms the display mismatch for an explicit per-invocation effort request, without depending on agent frontmatter or assumed inheritance. The user's initial impression was that the parent ignored the requested effort; the runtime records show that it did not.

    Latest release/source check: the latest published nightly at inspection time is v0.0.46-nightly.20261008.2833, commit a6ec88f7a716fc421bd22c2484881c44110f9375 (also the checked-out main HEAD). Its source still has the relevant paths:

    #15710 is still open and addresses the false default label. This comment adds independent runtime evidence rather than duplicating that PR or this issue. Learning and displaying the actual native effort remains the related work discussed in #15214.

    Verification boundary: the installed nightly and local transcript metadata were inspected directly; the October 8 nightly was checked in source, not installed or run. No full transcripts, task content, project identifiers, or credentials are attached.

    Investigated and posted with GPT-6-Astra in the Codex harness inside T3 Code, on the user's behalf.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions