thinking-steering-and-cost changedbuild-with-claude/thinking-steering-and-cost
Nearest release: v2.1.281, published an hour before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+15added
Lines−15removed
From line
43
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits13to this page, all time
The whole hunk
from line 43, old and new numbered
/
from line 43
4343
4444Effort is the primary steering lever for thinking. Each level sets a different default for how often Claude thinks and how deeply:
4545
46| Effort level | Thinking behavior |
47| ---------------- | ------------------------------------------------------------------------------------------------ |
48| `max` | Claude thinks the most readily and at the greatest depth, with no constraint on thinking length. |
49| `xhigh` | Claude thinks more readily and at greater depth than at `high`, suited to extended exploration. |
50| `high` (default) | Claude thinks on most requests that benefit from it. Provides deep reasoning on complex tasks. |
51| `medium` | Claude uses moderate thinking. May skip thinking for simple queries. |
52| `low` | Claude minimizes thinking. Skips thinking for simple tasks where speed matters most. |
46| Effort level | Thinking behavior |
47| ------------------------------------- | ------------------------------------------------------------------------------------------------ |
48| `max` | Claude thinks the most readily and at the greatest depth, with no constraint on thinking length. |
49| `xhigh` | Claude thinks more readily and at greater depth than at `high`, suited to extended exploration. |
50| `high` (default on most models) | Claude thinks on most requests that benefit from it. Provides deep reasoning on complex tasks. |
51| `medium` (default on Claude Opus 5.5) | Claude uses moderate thinking. May skip thinking for simple queries. |
52| `low` | Claude minimizes thinking. Skips thinking for simple tasks where speed matters most. |
5353
5454At every level, Claude decides per request whether to think. In a tool-use loop, the first request after new user input typically carries most of the reasoning, and follow-up requests that only process tool results can skip thinking, including at `xhigh` and `max`. Thinking per request also tends to decrease as a conversation grows longer. No level guarantees a thinking block on every request.
5555
from line 206
206206 model="claude-opus-5-5",
207207 max_tokens=16000,
208208 thinking={"type": "adaptive"},
209 output_config={"effort": "medium"},
209 output_config={"effort": "low"},
210210 messages=MESSAGES,
211211 )
212212
from line 286
286286 model: "claude-opus-5-5",
287287 max_tokens: 16000,
288288 thinking: { type: "adaptive" },
289 output_config: { effort: "medium" },
289 output_config: { effort: "low" },
290290 messages
291291 });
292292
from line 380
380380 Thinking = new ThinkingConfigAdaptive(),
381381 OutputConfig = new OutputConfig
382382 {
383 Effort = Effort.Medium
383 Effort = Effort.Low
384384 },
385385 Messages =
386386 [
from line 506
506506 OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{},
507507 },
508508 OutputConfig: anthropic.OutputConfigParam{
509 Effort: anthropic.OutputConfigEffortMedium,
509 Effort: anthropic.OutputConfigEffortLow,
510510 },
511511 Messages: messages,
512512 })
from line 579
579579 .maxTokens(16000L)
580580 .thinking(ThinkingConfigAdaptive.builder().build())
581581 .outputConfig(OutputConfig.builder()
582 .effort(OutputConfig.Effort.MEDIUM)
582 .effort(OutputConfig.Effort.LOW)
583583 .build())
584584 .addUserMessageOfBlockParams(List.of(
585585 ContentBlockParam.ofText(TextBlockParam.builder()
from line 723
723723 ],
724724 model: 'claude-opus-5-5',
725725 thinking: ['type' => 'adaptive'],
726 outputConfig: ['effort' => 'medium'],
726 outputConfig: ['effort' => 'low'],
727727 );
728728
729729 echo "Third response usage: " . json_encode($response3->usage) . "\n";
from line 818
818818 type: "adaptive"
819819 },
820820 output_config: {
821 effort: "medium"
821 effort: "low"
822822 },
823823 messages: [
824824 {
from line 872
872872 Third response usage: { cache_creation_input_tokens: 3546, cache_read_input_tokens: 0, input_tokens: 2706, output_tokens: 1468 }
873873 ```
874874
875 With the cache breakpoint in the messages array, changing effort from the default `high` to `medium` invalidates it: the third request shows `cache_creation_input_tokens=3546` and `cache_read_input_tokens=0` where the second showed a full cache read.
875 With the cache breakpoint in the messages array, changing effort from `medium`, the default on Claude Opus 5.5, to `low` invalidates it: the third request shows `cache_creation_input_tokens=3546` and `cache_read_input_tokens=0` where the second showed a full cache read.
876876</Accordion>
877877
878878### Cost control
No line in this hunk matches that.