Analyzed: March 31, 2026 leak snapshot

Thinking configuration model

src/utils/thinking.ts defines three runtime states:
  • adaptive
  • enabled with an explicit token budget
  • disabled
This is the internal representation used by the rest of the stack. It is not a marketing abstraction.

Default behavior

shouldEnableThinkingByDefault() enables thinking unless one of two conditions applies:
  • MAX_THINKING_TOKENS is set to 0
  • settings explicitly set alwaysThinkingEnabled to false
The code comments treat this as quality-sensitive behavior.

Provider-aware support

Thinking support is model-aware and provider-aware. modelSupportsThinking() in src/utils/thinking.ts behaves conservatively on third-party providers:
  • first-party and Foundry: all Claude 4+ models are treated as thinking-capable
  • Bedrock and Vertex: only Opus 4+ and Sonnet 4+ are treated as thinking-capable by default
Adaptive thinking is narrower. modelSupportsAdaptiveThinking() explicitly allowlists the 4.6 Opus and Sonnet families in this snapshot.

Ultrathink

ultrathink is a real runtime concept, not just prompt wording. The source provides:
  • isUltrathinkEnabled()
  • hasUltrathinkKeyword()
  • findThinkingTriggerPositions()
Two gates must pass:
  • the ULTRATHINK build feature
  • the tengu_turtle_carbon GrowthBook flag

Why the trigger utilities exist

The presence of keyword-detection helpers means the UI and runtime can respond to the literal word ultrathink rather than merely forwarding it as normal user text. That is stronger evidence than a system prompt comment would be.

Budget implications

Thinking is tied to token budgets. The main loop imports helpers such as getMaxThinkingTokensForModel() and consults model capability checks before attaching thinking config to requests. So the runtime decision is:
  • does this model support thinking?
  • does it support adaptive thinking?
  • is thinking enabled by settings or env?
  • what token budget is available for this turn?