{"version":"2.1.283","anchor":"sdk-set-max-thinking-tokens-can-change-only-the-thinking-dis","canonical_anchor":"new-at-internal-thinking-display-field-on-sdk-stream-events","heading":"SDK hosts can change only the thinking display, and stream events report which display was used","tier":"use","area":"Agents","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.283\/e\/sdk-set-max-thinking-tokens-can-change-only-the-thinking-dis","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.283","markdown":"### SDK hosts can change only the thinking display, and stream events report which display was used\n\nset_max_thinking_tokens can now change thinking_display without resetting the budget, and SDK stream events carry thinking_display\n\n**What**\n\nThe SDK is the kit that lets other programs drive Claude Code. The thinking display controls how Claude's reasoning is shown, and the thinking budget controls how much Claude may reason before answering. This release changes how SDK programs work with the display:\n\n- `set_max_thinking_tokens` requests can now leave out `max_thinking_tokens`. Leaving it out keeps the current budget. Sending null still resets it to the session default. Before, both leaving it out and sending null reset it.\n\n- A request that only changes `thinking_display` no longer changes whether thinking is enabled.\n\n- When a display set in the terminal takes priority over the request, the error now says \"budget unchanged\" or \"budget applied\", depending on what happened to the budget. Before, it always said \"budget applied\".\n\n- `stream_event` messages now include `thinking_display` next to `ttft_ms` whenever a display value is set. It records the `thinking.display` value Claude Code put in the request it sent to the API. It appears on message start, on the start of a thinking block and on each piece of thinking text, and it is absent on Remote Control sessions. The field is marked `@internal` in the schema.\n\n**Why**\n\nAn SDK program can switch the thinking display without accidentally throwing away the thinking budget it set. It can also tell from each streamed event which display, for example \"highlights\", the response was requested with.\n\n- Area: Agents\n- Names: `set_max_thinking_tokens`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 2\/5"}