Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- In a project, add a Claude Code agent definition that sets its own effort in frontmatter, for example
.claude/agents/implementer-low.md:--- name: implementer-low description: Probe agent at low effort. effort: low --- Follow the brief. - Start a Claude thread in T3 Code at a higher session effort, for example xhigh.
- Ask Claude to spawn that agent (
subagent_type: implementer-low, noeffortin the Agent tool input), and have the agent runecho $CLAUDE_EFFORT. - Open the Agents panel.
Expected behavior
The row shows the effort the subagent actually runs at (low), or shows no effort label when T3 can't know it.
Actual behavior
The row shows the parent session's effort (sonnet-5-5 · xhigh) for every subagent, whatever its definition sets. The subagent itself prints CLAUDE_EFFORT=low. Claude Code's subagent transcript (<session>/subagents/agent-<id>.jsonl) records "effort":"low" on every assistant turn. Agents defined at medium and high show xhigh as well.
The cause is the effort fallback in the task_started handler, apps/server/src/provider/Layers/ClaudeAdapter.ts (around line 3814 on main @ 4804036):
const rawLaunchEffort = launchInput?.effort;
const effort =
trimmedString(rawLaunchEffort) ??
(typeof rawLaunchEffort === "number" && Number.isFinite(rawLaunchEffort)
? String(rawLaunchEffort)
: context.currentEffort);When the Agent tool input carries no effort, which is the normal case for an agent type whose definition sets it, the row gets context.currentEffort, the parent session's effort. The SDK's task_started message has no effort field to read instead. The model has a later correction from the subagent's assistant snapshots, as the comment above that block says. The effort has none.
Possible fixes:
- Read
effortfrom the agent definition named bylaunchInput.subagent_type(.claude/agents/<name>.mdfrontmatter, project or user scope). - Show no effort label when the launch input has none, instead of the session's effort.
The same fallback probably explains the opus-5-5 · high label on the artifact watcher row in #13978.
Impact
Minor bug or occasional failure
The panel tells you every subagent runs at the session's effort. I took that at face value and nearly reworked agent definitions that were already correct. You can only check by reading the transcripts.
Version or commit
T3 Code 0.0.40. The code is unchanged on main @ 4804036.
Environment
Linux (Ubuntu, kernel 7.0), Claude Code 2.1.287, Claude provider with Opus 5.5 and Sonnet 5.5 subagents.
Workaround
Read the effort from the subagent transcript: each assistant record in subagents/agent-<id>.jsonl has "effort". Or have the subagent run echo $CLAUDE_EFFORT.
Activity
t3dotgg commentedon Oct 2, 2026
Note
🤖 GPT-6.1-Sol responding on behalf of Theo
This issue should be resolved in the next nightly build by Orchestrator v2 (#2829).
Please try that nightly. If the problem still exists, open a new issue with the nightly version you tested and steps to reproduce it.