[BUG] In-process teammates lack extended thinking — capability gap with tmux teammates and team lead

Resolved 💬 2 comments Opened Apr 29, 2026 by Butanium Closed May 31, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code (2.1.119)

What's Wrong?

When a teammate is spawned via Agent(team_name=...) and routed to the in-process backend (the default in headless / non-tmux contexts), the teammate runs without extended thinking enabled at the API level — just like a subagent.

Tmux-backed teammates do get thinking. So the same Agent(team_name=...) call produces silently different capability sets depending on which backend gets selected, with no API surface for the caller to ensure they get a full peer.

This is the same architectural pattern as #31977 (in-process teammates also lack the Agent tool). And it's adjacent to #14321 (subagents broadly can't get extended thinking). The new finding: in-process teammates fall on the subagent side of that line, despite being spawned with team_name.

What Should Happen?

A teammate should be a teammate. A team is a coordination construct, not a hierarchy — there's no good architectural reason for the team lead to have extended thinking and the Agent tool while in-process teammates don't. They share the lead's process; they should share its capabilities.

Concretely, one of:

  • (a) In-process teammates get full team-member capabilities (thinking, Agent tool) at parity with the tmux backend, OR
  • (b) The two backends are unified so "teammate" means one thing regardless of how it's wired up.

The status quo — silent backend selection that determines whether a teammate is a peer or a subagent-in-disguise — is the worst case, because callers can't tell which they got without inspecting the JSONL.

Steps to Reproduce

  1. Spawn a teammate in-process (default in headless contexts):
TeamCreate(team_name="thinking-test")
Agent(
  name="worker",
  team_name="thinking-test",
  subagent_type="general-purpose",
  prompt="Reason carefully about a non-trivial question — say, why is the sky red at sunset specifically."
)
  1. Locate the resulting JSONL: ~/.claude/projects/<project>/<team-lead-session-id>/subagents/agent-XXX.jsonl (the agent-XXX.meta.json at the same path identifies which one is yours via agentType).
  1. Count thinking blocks vs assistant text blocks:
import json
n_thinking = n_assistant = 0
with open(JSONL) as f:
    for line in f:
        d = json.loads(line)
        msg = d.get('message', {})
        content = msg.get('content', [])
        if isinstance(content, list):
            for block in content:
                if isinstance(block, dict):
                    if block.get('type') == 'thinking':
                        n_thinking += 1
                    if block.get('type') == 'text' and msg.get('role') == 'assistant':
                        n_assistant += 1
print(f'thinking: {n_thinking} / assistant text: {n_assistant}')
  1. Result: 0 thinking blocks across all assistant turns from the in-process teammate.
  1. Run the same script on the team lead's session JSONL (~/.claude/projects/<project>/<lead-session-id>.jsonl) — thinking blocks are present.

Concrete data point from a real session

Same project, same Opus 4.7 model, same workday:

| Role | Thinking blocks | Assistant text blocks | Notes |
|---|---|---|---|
| Team lead (interactive) | 112 | 74 | ~1.5 thinks per turn |
| In-process teammate (Agent + team_name, ran ~3 hours doing real work — debugging CUDA mismatches, setting up envs, submitting SLURM jobs, writing reports) | 0 | 96 | No thinking despite handling non-trivial tasks |

The teammate handled substantial work (environment debugging, infra setup, report writing) without thinking. Not destructive, but meaningfully degraded — the bug is most painful precisely when you delegate substantial work, which is the natural use case for teammates.

Related Issues

  • #14321 — extended thinking not available for subagents broadly. In-process teammates effectively fall under this constraint despite being spawned as teammates.
  • #31977 — in-process team agents lack the Agent tool. Same architectural pattern: in-process teammates are missing teammate features that tmux teammates have.

The pair of #31977 + this issue establishes the broader pattern: in-process teammates are silently degraded relative to tmux teammates. The fix space probably wants to address them together, since the underlying architectural decision (in-process = subagent-in-disguise) drives both bugs.

Environment

  • Claude Code: 2.1.119
  • Platform: Linux (headless / SSH session)
  • Backend: in-process (default, not explicitly selected)

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗