Google's new reasoning voice model refuses synchronous tool calls outright and replaces the turn complete signal with a session status field. Two small breaking changes that will quietly kill a working voice agent if you swap the model ID and nothing else.
Google shipped Gemini 3.8 Live and Gemini 3.8 Live Extended Thinking on Tuesday, and the obvious move for anyone already running a voice agent on the Live API is to point the model ID at the Extended Thinking variant and see whether the completion rate goes up. Do that without reading the parameter notes and the agent will break in two specific, undramatic ways that are easy to misdiagnose as latency problems.
The first is tool declarations. For gemini-3.8-live-extended-thinking, only asynchronous non blocking function calling is supported. Every function declaration has to carry behavior set to NON_BLOCKING, and a synchronous blocking tool does not degrade gracefully. It returns an error. This is the direct consequence of what the model is doing: it reasons in the background while the conversation continues, so a tool that halts the turn until it returns contradicts the whole design. Most production voice agents built over the past year used blocking tools by default, because blocking is what the standard Live API allowed and what every tutorial showed.
The second is how the session tells you where it is. Instead of the turnComplete signal the standard Live API sends, an Extended Thinking session exposes an interaction_status field carrying IN_PROGRESS while the model is reasoning or executing tools, and IDLE when it is ready for input. Client code that watches for turn completion to decide when to unmute a microphone, start a barge in timer, or advance a state machine will simply never fire. The symptom looks like the model went quiet. The cause is that your client is listening for a signal this model does not send.
Reasoning depth is set through thinking_config with thinking_level, which accepts low, medium, or high. MINIMAL is not supported on this model, so a config copied from a text model that used the minimal setting will be rejected rather than silently downgraded. Note also that the plain gemini-3.8-live model does support thinking, as interleaved reasoning, but does not accept thinking_level at all. If you want a configurable reasoning budget in voice, the Extended Thinking variant is the only one that gives it to you.
Google's API documentation lists gemini-3.8-live-extended-thinking with an input token limit of 131,072 and an output token limit of 65,536. For voice that is generous, and it is not usually the constraint. The constraint is whether your client was written for a model that reasons silently in the background while the user is still talking, and almost none of them were.
Try it today
- Set behavior to NON_BLOCKING on every function declaration before you switch the model ID. A synchronous blocking tool returns an error rather than falling back.
- Replace every turnComplete listener in your client with a watcher on interaction_status, treating IN_PROGRESS as busy and IDLE as ready for input.
- Set thinking_config with thinking_level to low, medium, or high. Remove any MINIMAL value carried over from a text model config, because it is not supported here.
- If you only need interleaved reasoning and no configurable budget, use gemini-3.8-live instead and drop thinking_level entirely, since that model does not accept it.
- Run one full call end to end and watch for the microphone unmute step specifically. A client stuck waiting on a signal that never arrives looks exactly like a slow model.