AI EngineerGuide

Claude Sonnet 5.5 thinks by default when thinking is omitted

Behavior change Applies to claude-sonnet-5-5 on the Anthropic Messages API.

Anthropic's docs describe this behavior change but don't quote the exact message, so we don't either.

How to fix it

Read content blocks by type (not content[0].text), pass thinking blocks back unchanged in tool loops, and revisit max_tokens, which covers thinking plus text. To keep running without up-front thinking, send thinking: {"type": "between_tools"}.

Before
{
  "max_tokens": 1024,
  "messages": [
    {
      "content": "Summarize this ticket.",
      "role": "user"
    }
  ],
  "model": "claude-sonnet-4-5-20250929"
}
After (Claude Sonnet 5.5)
{
  "max_tokens": 1024,
  "messages": [
    {
      "content": "Summarize this ticket.",
      "role": "user"
    }
  ],
  "model": "claude-sonnet-5-5",
  "thinking": {
    "type": "adaptive"
  }
}

Official source

On Claude Sonnet 5.5, a request with no thinking field runs with adaptive thinking

https://platform.claude.com/docs/en/models/sonnet-5-5/migration-guide#thinking-on-by-default (last checked 2026-11-02)

Other changes for the same models

All migration errors

FAQ

How do I fix this when moving to claude-sonnet-5-5?

Read content blocks by type (not content[0].text), pass thinking blocks back unchanged in tool loops, and revisit max_tokens, which covers thinking plus text. To keep running without up-front thinking, send thinking: {"type": "between_tools"}.

Where is this documented?

In Anthropic’s official docs: https://platform.claude.com/docs/en/models/sonnet-5-5/migration-guide#thinking-on-by-default, last checked 2026-11-02.