Upgrade default model to Gemini 3.6 Flash - #108
Merged
Conversation
Replace the default model `google-gla:gemini-3.5-flash` with `google-gla:gemini-3.6-flash` across config defaults, the bundled Google search server, unit tests, and documentation. Model id verified against the live Gemini API: `models/gemini-3.6-flash`, version `3.6-flash-07-2026`. No dependency changes required; the existing `google-genai>=2.4.0` and `pydantic-ai>=1.99.0,<2` constraints already support it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the default model from
gemini-3.5-flashtogemini-3.6-flash.Model
Verified against the live API via
client.models.list():These are distinct entries, not aliases. Note the id has no
-previewsuffix.Changes
13 replacements across 9 files:
DEFAULT_MODEL_NAMEinconfig/schema.py, the default TOML template inconfig/load.py, the grounded search call intools/gsearch.py, two assertions intests/unit/test_config.py, and five docs pages.gemini-embedding-001is deliberately untouched — it is the embedding model, unrelated to the agent default, and still present in all 7 of its original locations (tools/pytools/hybrid/embed.py,tools/pytools/hybrid/server.py,config/resolve.pyand tests).Dependencies
No changes. The
pydantic-ai>=1.99.0,<2cap added in d4fc2ab is intact and effective:uv lock --upgrade --dry-runtops out at pydantic-ai 1.107.1 and google-genai 2.13.0, with nothing reaching 2.x despite pydantic-ai 2.15.0 being on the index.uv.lockis unchanged.thinking_budgetdoes not appear anywhere in the repo — it already usesthinking_levelthroughout, so the Gemini 3.x rejection ofthinking_budget: 0does not apply.Verification
invoke ccclean.invoke test --parallel: 786 passed, 2 skipped.Beyond the suite, a real end-to-end interaction was run through the TUI on the new default. The agent was asked to compute the 30th Fibonacci number and the SHA-256 hex digest of the string
"gemini-3.6-flash". It emitted a thinking block (confirminginclude_thoughtsstreaming works on 3.6), generated a genuinehashlib+ Fibonacci code action, passed the approval gate, and executed it in the ipybox kernel:832040cf27b68ecf3890286c2922bbe05c9858f24b71c8e015dedb126e9a99c573d8beBoth were recomputed independently in plain Python and match exactly, confirming the kernel really executed the code rather than the model producing a plausible digest. The session log contains 6 occurrences of
gemini-3.6-flashand none ofgemini-3.5-flash.web_search()was also exercised live on 3.6 with the grounding tool atthinking_level="medium"— that is the path where a Gemini 3.x config rejection would surface, and it returned cleanly.