What
The 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:
set_max_thinking_tokensrequests can now leave outmax_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.- A request that only changes
thinking_displayno longer changes whether thinking is enabled. - 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".
stream_eventmessages now includethinking_displaynext tottft_mswhenever a display value is set. It records thethinking.displayvalue 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@internalin the schema.
Why
An 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.
Names in the bundleset_max_thinking_tokens