Skip to content

Upgrade default model to Gemini 3.6 Flash - #108

Merged
krasserm merged 1 commit into
mainfrom
upgrade/gemini-3.6-flash
Jul 22, 2026
Merged

Upgrade default model to Gemini 3.6 Flash#108
krasserm merged 1 commit into
mainfrom
upgrade/gemini-3.6-flash

Conversation

@krasserm

Copy link
Copy Markdown
Member

Moves the default model from gemini-3.5-flash to gemini-3.6-flash.

Model

Verified against the live API via client.models.list():

models/gemini-3.6-flash | Gemini 3.6 Flash | 3.6-flash-07-2026
models/gemini-3.5-flash | Gemini 3.5 Flash | 3.5-flash-05-2026

These are distinct entries, not aliases. Note the id has no -preview suffix.

Changes

13 replacements across 9 files: DEFAULT_MODEL_NAME in config/schema.py, the default TOML template in config/load.py, the grounded search call in tools/gsearch.py, two assertions in tests/unit/test_config.py, and five docs pages.

gemini-embedding-001 is 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.py and tests).

Dependencies

No changes. The pydantic-ai>=1.99.0,<2 cap added in d4fc2ab is intact and effective: uv lock --upgrade --dry-run tops 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.lock is unchanged.

thinking_budget does not appear anywhere in the repo — it already uses thinking_level throughout, so the Gemini 3.x rejection of thinking_budget: 0 does not apply.

Verification

invoke cc clean. 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 (confirming include_thoughts streaming works on 3.6), generated a genuine hashlib + Fibonacci code action, passed the approval gate, and executed it in the ipybox kernel:

  • F₃₀ = 832040
  • SHA-256 = cf27b68ecf3890286c2922bbe05c9858f24b71c8e015dedb126e9a99c573d8be

Both 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-flash and none of gemini-3.5-flash.

web_search() was also exercised live on 3.6 with the grounding tool at thinking_level="medium" — that is the path where a Gemini 3.x config rejection would surface, and it returned cleanly.

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>
@krasserm
krasserm merged commit f31371d into main Jul 22, 2026
9 checks passed
@krasserm
krasserm deleted the upgrade/gemini-3.6-flash branch July 22, 2026 17:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant