Mistral Vibe: Models Can Define Their Own Thinking Levels

Mistral VibeView original changelog

Mistral Vibe 3.0.4 lets a model's thinking_levels list levels of its own, such as ["low", "turbo"]. Each level is offered in /thinking and sent to the provider as written. Unknown values are now kept instead of ignored, and levels from the Mistral model catalog are preserved.

Key Takeaways

  • Mistral Vibe 3.0.4 lets thinking_levels include custom names such as turbo.
  • Custom levels appear in /thinking and are sent to the provider as written.
  • Unknown values are kept rather than silently dropped, with a config warning where needed.
  • Levels from the Mistral model catalog are preserved even when Vibe has no name for them.
  • On Chat Completions and Responses providers, minimal is now sent as minimal, not low.
  • A fix prevents 400 errors on Mistral Large 4 image descriptions and compaction when no levels are configured.

Custom Thinking Levels

A model's thinking_levels setting in Mistral Vibe can now list levels of its own, for example ["low", "turbo"]. Every level appears in the /thinking picker and is sent to the provider exactly as written. This lets users reach provider-specific reasoning modes that Vibe has no built-in name for.

Unknown Levels Are Kept

Previously, an unrecognized value was ignored or dropped. In 3.0.4, any word is treated as a level. A level that is neither standard nor listed in the model's thinking_levels is sent as written along with a config warning. A value that is not a word, such as a blank, is still ignored with a warning. Levels the Mistral model catalog lists are kept as written, including ones Vibe has no name for. On a Mistral provider, a config warning flags a level the Mistral SDK does not support, since the SDK leaves it out of the request.

Provider Behavior

On providers using the Chat Completions or Responses API, a model whose thinking_levels lists minimal now sends minimal instead of low. A related fix stops image descriptions and compaction on Mistral Large 4 from failing with a 400 error when its config lists no thinking levels.