1. Adjustable Reasoning: High Is Useful, Just Not All the Time
Medium 3.5 supports a reasoning_effort setting.
Use "none" and it responds faster. Use "high" and the model spends more compute on the problem.
The difference becomes obvious with code.
For autocomplete, explaining a function, or fixing a small and obvious bug, I would leave reasoning low. High mode often makes you wait longer without giving you much back.
Cross-file changes are a different story.
If the model has to trace dependencies or figure out why some old code was written the way it was, High starts earning its keep. It checks more relationships before committing to a fix.
I noticed this while working through a cross-file issue. The model had already found the source of the error on the first pass, but High reasoning kept going and followed the dependency chain one level deeper.
The final fix was better.
The wait was also very noticeable.
That was the moment the setting clicked for me: High does not always feel smarter. Sometimes it just feels less willing to hand in an answer early.
And that is not necessarily a bad thing.
I just would not pay for that behavior on every request.
2. Native Vision: Fine on Its Own, Much Better Next to Code
Medium 3.5 can work directly with images, including UI screenshots, flowcharts, and images containing equations.
That part did not excite me much by itself. Vision is table stakes for this class of model now.
Then you put it next to the coding features.
A frontend developer can give it a screenshot and the source code in the same task. A debugging workflow can include an error screenshot, an architecture diagram, and the relevant files without handing the job off to another model.
That is where it becomes useful.
The vision system is not the headline feature. It is one more source of context the agent can use while working.
3. Function Calling and Agents: This Is Where the Model Actually Clicks
Function calling and structured JSON output are built in.
With 256K of context, Medium 3.5 can keep code, tool outputs, previous actions, and task history around for fairly long workflows.
Mistral is already using it in its Vibe Coding Agent, where a session can modify code, install dependencies, run tests, and submit pull requests through the CLI or Le Chat.
This is where the whole model starts to make sense.
The long context is there because agents need to keep a lot of state.
reasoning_effort is there because some steps deserve more compute than others.
Function Calling gives the model something to actually do.
Vision lets it see screenshots, interfaces, and diagrams that would otherwise sit outside the loop.
Individually, none of that is surprising.
Together, it feels like Mistral designed Medium 3.5 backward from the question: what does a coding agent actually need to keep working without falling apart after three steps?
That is a much more interesting product decision than simply adding another benchmark point.
Comments (0)