Skip to content

feat(web): subagent rows show model, effort, and fast mode - #17420

Open
RakshithBhat03 wants to merge 2 commits into
pingdotgg:mainfrom
RakshithBhat03:feat/subagent-model-details
Open

RakshithBhat03 wants to merge 2 commits into
pingdotgg:mainfrom
RakshithBhat03:feat/subagent-model-details

Conversation

@RakshithBhat03

@RakshithBhat03 RakshithBhat03 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

The "N subagents" panel told you each subagent's title, status, and runtime, but not what it was running on. When I fan work out to a mix of models, efforts, and fast mode, I had to hover each row or open the child thread to see which was which.

Each row now shows the model, then the reasoning effort, with the same bolt icon the hover card uses when the subagent runs in Fast or Ultrafast mode. Normal speed shows nothing. Mobile rows show the same details as text after the provider name.

The details come only from where they're reliable:

  • Codex-native subagents report their own selection, so they get model, effort, and speed.
  • Delegated (delegate_task) subagents now record a snapshot of the selection they were launched with. Their child thread's selection can change on later turns, so it's no longer the source of truth. Subagent records created before this change still fall back to the child thread.
  • Claude-native subagents don't report effort or speed, so they show the model only. Their child thread's selection is inherited from the parent, not what the provider actually ran, and ThreadRelationshipsControl.agents.test.tsx already guards against inferring from it.

Speed is only shown when the model's catalog actually offers that option. Service tiers only count for Codex, and they match by option id, because some catalogs list a fast tier under the same id as their generic Standard choice. The row and the hover card now share one resolver in client-runtime.

Before After
Subagent panel before: rows show only title, status and runtime Subagent panel after: rows show model, fast-mode bolt and effort

Screenshots are from a demo thread: GPT-6.1-Sol on high effort with fast mode, Claude Haiku 5.5 on low, and GPT-6.1-Sol on medium at standard speed.

Verification

  • vp test run on subagentDisplay.test.ts, ThreadRelationshipsControl.agents.test.tsx, and Orchestrator.control-reads.test.ts: 29 passed. New cases cover snapshot precedence, the app-owned-only child fallback, Codex tiers including the shared-id case, and Claude ignoring service tiers.
  • Typecheck on client-runtime, web, mobile, and server; lint and format on the changed files.
  • Checked in the web client against an isolated dev server. Not run on a mobile device.

Made by Claude Opus 5.5 in T3 Code through the Claude Code harness, reviewed by GPT-6.1-Sol through the Codex harness.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Oct 9, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds new default-visible model, effort, and speed information to existing web and mobile subagent rows and changes server-side subagent snapshots to support it. The cross-layer production behavior is broader than a self-contained UI tweak, so it warrants human review.

You can add or adjust custom eligibility rules. Learn more.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 9, 2026

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 1b88ddd4-254e-4471-9c9c-4f47f3fe02c2
📥 Commits

Reviewing files that changed from the base of the PR and between 43f8a8d and 1a3040a.

📒 Files selected for processing (9)
  • apps/mobile/src/features/threads/SubagentRow.tsx
  • apps/mobile/src/features/threads/thread-subagent-group.tsx
  • apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts
  • apps/server/src/orchestration-v2/Orchestrator.ts
  • apps/web/src/components/chat/SubagentTooltipContent.tsx
  • apps/web/src/components/chat/TraitsSpeed.tsx
  • apps/web/src/components/chat/V2LifecycleRow.tsx
  • packages/client-runtime/src/state/subagentDisplay.test.ts
  • packages/client-runtime/src/state/subagentDisplay.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Delegated-task records and live subagent data now carry model selections. A shared resolver validates selections against provider and model, then derives effort and speed traits. Mobile and web subagent views display available traits alongside model labels. Tests cover selection precedence and supported option values.

Changes

Subagent Model Traits

Layer / File(s) Summary
Store and pass subagent model selections
apps/server/src/orchestration-v2/Orchestrator.ts, apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts, apps/web/src/components/chat/V2LifecycleRow.tsx
Delegated-task records now store the full model selection. Live subagent data includes the selection when present. A test verifies that the parent’s subagent projection retains the delegated selection.
Resolve subagent model traits
packages/client-runtime/src/state/subagentDisplay.ts, packages/client-runtime/src/state/subagentDisplay.test.ts
The shared resolver checks that a selection matches the provider instance and model before deriving effort and speed. It uses child-thread selections only for app-owned subagents. Tests cover selection precedence, option labels, speed values, and mismatches.
Display traits in mobile and web subagent views
apps/mobile/src/features/threads/SubagentRow.tsx, apps/web/src/components/chat/SubagentTooltipContent.tsx, apps/web/src/components/chat/TraitsSpeed.tsx, apps/web/src/components/chat/V2LifecycleRow.tsx
Mobile and web subagent views display available effort and speed traits alongside model labels. The web tooltip uses the shared resolver, and the previous local speed-display helper is removed.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Feature

Suggested reviewers: juliusmarminge

Merge Risk

Merge Risk: ⚪ Minimal · up to 1a304

No actionable merge-blocking issue was established; the change is ready for normal merge checks.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 1a304

The change records launch settings and displays additional details without granting new permissions in the inspected paths. No introduced security defect was established, but lifecycle and access-control coverage is not exhaustive.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The demonstrated exposure is additional launch-setting data retained in the parent subagent projection and presented to existing web and mobile viewers. The inspected additions do not increase execution privileges or create a new service entrypoint. This conclusion is limited to the changed paths, not a verification of all viewer authorization.

Trust Boundaries and Controls

  • observed — Selections and catalog labels flow into text and fixed speed indicators, not command or HTML construction in the inspected additions. Provider-instance and canonical model mismatches suppress traits. Mobile shell reads and the added web legacy fallback preserve the caller's environment identifier; the web fallback reads a shell atom rather than opening a child transcript.

Resilience and Maintainability Implications

  • observed — Inspected terminal completion and stale-recovery updates spread the existing subagent record, preserving its launch snapshot. Startup recovery invokes delegated finalization under the parent lock. Projection updates replace records rather than independently protecting modelSelection, so preservation still depends on producer behavior; exhaustive producer coverage was not established.
🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check Warning The description explains the problem, implementation, behavior by subagent type, verification results, screenshots, and agent attribution. It does not include the required Scope and approval section o… Add a Scope and approval section. Link the triaged issue or approval discussion with the relevant approval comment, or explain why this focused change qualifies for an exemption.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check Passed The title clearly and concisely describes the primary change: displaying model, effort, and fast-mode details in subagent rows.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the problem, implementation, behavior by subagent type, verification results, screenshots, and agent attribution. It does not include the required Scope and approval section or a linked issue, maintainer approval, or valid exemption rationale.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

This branch has not been deployed

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

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant