[BUG] In-process teammates lack extended thinking — capability gap with tmux teammates and team lead
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
- 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."
)
- Locate the resulting JSONL:
~/.claude/projects/<project>/<team-lead-session-id>/subagents/agent-XXX.jsonl(theagent-XXX.meta.jsonat the same path identifies which one is yours viaagentType).
- 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}')
- Result: 0 thinking blocks across all assistant turns from the in-process teammate.
- 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)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗