[BUG] Parallel Task calls: Claude states intent for 16 but only emits 1; stop_reason: null on all messages

Resolved 💬 4 comments Opened Feb 2, 2026 by coygeek Closed Mar 27, 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

What's Wrong?

When asking Claude to launch 16 parallel Task tool calls, Claude:

  1. States "Let me launch all 16 agents in parallel"
  2. Only emits 1 Task call instead of 16
  3. Session transcript shows stop_reason: null on all 32 assistant messages (should be "tool_use" or "end_turn")
  4. The Task message shows output_tokens: 1 but contains a ~2000 token prompt (impossible)

The session transcript shows clear intent-execution mismatch: Claude said it would do 16 parallel Tasks but only generated 1.

What Should Happen?

  1. Claude should emit 16 Task calls in a single assistant message when asked
  2. stop_reason should be "tool_use" when tool calls are present
  3. output_tokens should accurately reflect the actual output length

Error Messages/Logs

**Task message showing anomalous token count:**

{
  "message": {
    "content": [
      {
        "type": "tool_use",
        "name": "Task",
        "input": {
          "subagent_type": "general-purpose",
          "description": "Auth & access control audit",
          "prompt": "[~2000 tokens of prompt content]"
        }
      }
    ],
    "stop_reason": null,
    "usage": {
      "output_tokens": 1
    }
  }
}


**All assistant messages have null stop_reason:**

06:30:12 - stop_reason: null - content_types: ["thinking"]
06:30:12 - stop_reason: null - content_types: ["tool_use"]
06:30:18 - stop_reason: null - content_types: ["thinking"]
06:30:19 - stop_reason: null - content_types: ["text"]
[... 28 more messages, ALL with stop_reason: null ...]

Steps to Reproduce

  1. Create a workflow that requires 16 parallel Task calls
  2. Ask Claude to launch all 16 agents in parallel
  3. Observe: Claude states intent to launch 16 but only 1 Task appears
  4. Check session transcript:
  • All stop_reason values are null
  • The Task message shows output_tokens: 1 despite ~2000 token content

Session transcript location:
~/.claude/projects/[project]/419e58d7-0445-4172-873e-18bee28c2d2a.jsonl

JQ commands to verify:

# Check stop reasons (all should NOT be null)
jq -r 'select(.type == "assistant") | .message.stop_reason' "$SESSION_FILE" | sort | uniq -c

# Check Task call details
jq 'select(.type == "assistant" and (.message.content[]? | select(.type == "tool_use" and .name == "Task"))) | .message.usage.output_tokens' "$SESSION_FILE"

# Verify only 1 Task was called
jq -s '[.[].message.content[]? | select(.type == "tool_use" and .name == "Task")] | length' "$SESSION_FILE"
# Returns: 1 (should be 16)

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.29

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Timeline of the session:
| Time (UTC) | Event |
|------------|-------|
| 06:30:09 | User asks to launch 16 parallel agents |
| 06:30:26-35 | Claude reads 19 files sequentially (not parallel) |
| 06:30:45 | Claude says "Let me launch all 16 agents in parallel" |
| 06:31:31 | Only 1 Task call emitted |
| 06:32:24 | User interrupts |

Key anomalies:

  1. Intent vs Execution Gap: Claude explicitly stated it would launch 16 agents in parallel, but only 1 Task appeared in the message
  2. Universal null stop_reason: Every assistant message in the session has stop_reason: null — this is abnormal
  3. Token count mismatch: output_tokens: 1 for a message containing ~2000 tokens of content

This could indicate:

  • A streaming/logging bug where partial responses are logged
  • Token counting error at the API level
  • Response truncation without proper stop_reason

View original on GitHub ↗

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