Claude enters extended thinking mode after tool execution when free-form input parsing is required, blocking subsequent tool calls

Resolved 💬 3 comments Opened Jan 12, 2026 by jcs89000 Closed Jan 16, 2026

Summary

When a skill instruction requires Claude to parse free-form user input and then execute multiple sequential tool calls, Claude enters extended thinking mode after the first tool call and fails to execute subsequent tools. This causes pipeline automation to hang indefinitely.

Environment

  • Claude Code version: 2.1.5
  • Model: Claude Opus 4.5 (claude-opus-4-5-20251101)
  • OS: macOS Darwin 24.6.0
  • Subscription: Claude Max

Reproduction Steps

Minimal Reproduction

  1. Create a skill with two sequential bash commands where the second command depends on parsed user input:
---
name: test-parsing-hang
description: Test skill that demonstrates parsing hang
---

# Test Skill

1. Ask user for a name
2. Create directory: `mkdir -p "test-dir"`
3. Create file with parsed name: `echo "Hello {parsed_name}" > "test-dir/greeting.txt"`
  1. Invoke the skill and provide free-form input like "name is John Smith"
  2. Observe: mkdir executes, then Claude enters thinking mode ("Calculating...", "Cooking...", "Bloviating...") and never executes the echo command

Full Reproduction (from our pipeline)

  1. Run pipeline skill that:
  • Extracts metadata from YouTube video (Phase 1)
  • Displays metadata preview with placeholder values
  • Prompts user for corrections (e.g., "guest is Jensen Huang, host is Sana Uqaili")
  • Should execute mkdir -p then python3 script.py --guest "Jensen Huang" --host "Sana Uqaili"
  1. When user selects Option 1 (proceed without corrections): ✅ Works
  • Both mkdir and python3 execute immediately
  1. When user provides corrections (free-form text): ❌ Hangs
  • mkdir -p executes
  • Claude enters extended thinking mode
  • python3 never executes
  • Pipeline hangs until manually killed

Observed Behavior

❯ guest is Jensen Huang, host is Sana Uqaili 

⏺ Bash(mkdir -p "wip-prompts/CTS260109")
  ⎿  (No content)

✶ Bloviating… (ctrl+c to interrupt · thinking)

✽ Bloviating… (ctrl+c to interrupt · thought for 1s)

[hangs indefinitely until ctrl+c]

Expected Behavior

After mkdir completes, Claude should immediately execute the python3 command with the parsed guest/host values, as instructed by:

**2. IMMEDIATELY run the Python script (do not pause after mkdir):**

Investigation Findings

We spawned 5 parallel investigation agents and conducted web research. Key findings:

1. Parsing Free-Form Input Triggers Deliberation

When Claude must:

  • Parse "guest is Jensen Huang, host is Sana Uqaili"
  • Extract guest name and host name
  • Construct command with --guest and --host flags

This implicit cognitive work triggers extended thinking mode.

2. Extended Thinking Blocks Tool Forcing

From Anthropic's documentation:

"When using extended thinking with tool use, tool_choice: {"type": "any"} and tool_choice: {"type": "tool", "name": "..."} are not supported."

Once Claude enters thinking mode, there is no mechanism to force tool execution.

3. "IMMEDIATELY" Instructions Are Insufficient

We tried multiple instruction patterns:

  • **IMMEDIATELY run the Python script (do not pause after mkdir):**
  • **CRITICAL: Execute both commands in sequence without stopping**
  • Numbered steps with explicit sequencing

None prevented the hang. The parsing requirement triggers deliberation regardless of instruction language.

4. Structured Input Works, Free-Form Fails

| Input Type | Behavior | Result |
|------------|----------|--------|
| Option "1" (numbered selection) | Direct execution | ✅ Works |
| Free-form "guest is X, host is Y" | Parse → Think → Hang | ❌ Fails |

5. No Gap = No Hang

When commands are combined into a single tool call:

mkdir -p "dir" && python3 "script.py" --guest "Name"

There's no opportunity for thinking mode between commands.

Root Cause Analysis

The issue stems from skill instruction architecture:

**Wait for user input. Parse correction to extract guest name and/or host name.**

**Proceed to Step 2B with corrections (if any).**
  • Line says "parse" but provides no parsing rules
  • Claude must infer format, handle edge cases, decide quoting
  • This triggers deliberation after the first tool call
  • Deliberation prevents subsequent tool execution

Workarounds Attempted

| Workaround | Result |
|------------|--------|
| Add "IMMEDIATELY execute" language | ❌ Still hangs |
| Add "CRITICAL" and "do not pause" | ❌ Still hangs |
| Number steps explicitly | ❌ Still hangs |
| Add inline reminders | ❌ Still hangs |
| Combine commands with && | ✅ Works (eliminates gap) |
| Remove parsing requirement entirely | ✅ Works (no free-form input) |

Suggested Solutions

For Users (Workarounds)

  1. Combine sequential commands into single && chains
  2. Use structured input (numbered menus) instead of free-form parsing
  3. Move parsing to after file creation (fix files later, not before)

For Anthropic (Product)

  1. Allow tool_choice during thinking - Enable forcing tool execution even when model is deliberating
  2. Provide "no-think" directive - Instruction that prevents extended thinking for specific sections
  3. Sequential tool batching - Allow skills to specify "execute these N tools in sequence without deliberation"
  4. Parsing helpers - Built-in extraction functions that don't require model deliberation

Related Issues

  • #15136 - Skills not invoking immediately despite "BLOCKING REQUIREMENT" language
  • #13224 - Claude stuck in continuous thinking state
  • #10881 - Performance degradation over long sessions

Additional Context

  • This affects any skill that requires parsing user input before tool execution
  • The issue is reproducible 100% of the time with the corrections path
  • The issue never occurs with structured (numbered) input
  • Web research confirms others have encountered similar deliberation issues (see Scott Spence's research on skill activation achieving only 20% success with simple instructions)

Test Case

Happy to provide our full skill file (PY0 Pipeline Orchestrator, ~1000 lines) if helpful for reproduction.

View original on GitHub ↗

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