Migrated to Gemini 3.5 Flash? Your model may be dumber than yesterday.
A copy-paste model-ID swap from gemini-3-flash-preview to gemini-3.5-flash silently drops your thinking_level from high → medium. No error. No warning. Your eval scores drop quietly.
What changed silently
thinking_level = "high"
# ~8K thinking tokens/call
thinking_level = "medium" ← silently changed
# ~4K thinking tokens/call
Everything you need to migrate safely
Migration Checklist
Step-by-step diff from gemini-3-flash-preview to gemini-3.5-flash. Copy-paste Python, TypeScript, REST configs.
Thinking Level Guide
minimal / low / medium / high — use-case table, token cost impact, config snippets for each level.
Parameter Changes
temperature/top_p/top_k removed. thought preservation default-on. FunctionResponse now requires id + name.
Function Calling Gotchas
400 errors from mixing thinking_level + thinking_budget. Multi-turn token blowup from thought preservation.
Pricing Calculator
Pick thinking_level + tokens/call + calls/day → monthly cost vs old default. Interactive, no backend.
System Prompt Examples
5 domains: code agent, chat, RAG, classifier, agentic loop. Each with recommended thinking_level.
Why this matters
Hacker News score on launch day (May 19, 2026) — 658 comments, mostly about the silent behavior change
Fewer thinking tokens per call if you migrate without setting thinking_level (high→medium default)
The API returns 200 OK. No warning, no log line. You only find out when eval scores drop weeks later.
Fix it in 30 seconds
Add one line to your Gemini config to preserve previous reasoning quality: