v2.18.0

Added

  • A new weekly model watcher opens an issue when Anthropic, OpenAI or Google lists a newer model than the pinned defaults. model-watch.yml (Mondays 10:00 UTC, or on demand with an optional dry run) lists the models each provider offers and opens one issue per model that is newer than a pinned default. It never changes a default. Anthropic uses the same API key secret as the live model canary. OpenAI and Google are checked when the OPENAI_API_KEY and GOOGLE_API_KEY repository secrets are set, and a provider without a secret is skipped. OpenAI renames tiers between versions (GPT-5.6 had luna / terra / sol, GPT-6 has luna / sol / astra), so the watcher also reports any model in a newer version whose tier neither default uses. For Google it watches stable Flash-Lite and Flash models, and also reports a stable Gemini Pro for the premium slot. Previews and -tts, -live or -image variants are never reported.

Changed

  • Behavior change: the default Google models are now gemini-3.5-flash-lite (standard) and gemini-3.8-flash (premium) (were gemini-2.5-flash / gemini-2.5-pro). Google now serves the 2.5 models only to projects that have used them before, so a new project could not call the old defaults. There is no stable Gemini 3.x Pro model, so the premium default is a Flash model. Gemini 3 models now get thinkingConfig.thinkingLevel: low (except Flash-Lite, whose default is lower), because the default level used up to 30,938 thinking tokens on the stress diff against a 32,768-token output limit that includes thinking. Temperature is omitted for them, as Google advises. gemini-3.8-flash is priced at its 2027-01-01 rate ($1.50 / $7.50 per MTok), not its introductory rate ($0.75 / $3.75 through 2026-12-31), so cost estimates and AI_MAX_COST_USD do not under-count it after the introductory period. To keep the previous models, set model-standard: gemini-2.5-flash and model-premium: gemini-2.5-pro in the action inputs (or the AI_REVIEW_MODEL_STANDARD / AI_REVIEW_MODEL_PREMIUM repository variables in the example workflow). AI_MODEL_STANDARD / AI_MODEL_PREMIUM work only when running the container directly, because the action sets them from its inputs.
  • Behavior change: the default OpenAI models are now gpt-6-luna (standard) and gpt-6.1-sol (premium) (were gpt-5.4-mini / gpt-5.4). Both are cheaper: $0.10 / $0.50 and $2 / $10 per MTok, against $0.75 / $4.50 and $2.50 / $15. Temperature is omitted for gpt-5.6* and gpt-6*, and pricing rows cover every GPT-5.6 and GPT-6 model, so a user who picks one of them keeps the AI_MAX_COST_USD ceiling. OpenAI reasoning tokens are now shown as thinking tokens. To keep the previous models, set model-standard: gpt-5.4-mini and model-premium: gpt-5.4 in the action inputs (or the AI_REVIEW_MODEL_STANDARD / AI_REVIEW_MODEL_PREMIUM repository variables in the example workflow). AI_MODEL_STANDARD / AI_MODEL_PREMIUM work only when running the container directly, because the action sets them from its inputs.
  • Both default changes were verified with the live model canary on the 1200-line stress diff: 4 of 4 calls per provider finished cleanly, each with a valid findings block, and the review text was read, not only the stop reason. Not verified: review quality on other diffs, and whether GPT-6 rejects an explicit temperature (none was sent).
  • The judge pass runs at the provider’s default temperature on the new OpenAI and Google defaults. It asks for temperature 0.0, and those models now get no temperature at all, the same as Claude Sonnet 5 and Opus 5 already did. Judge verdicts on them may vary more between runs.
  • The live model canary can now test OpenAI, Google and bedrock-proxy when their keys are set (for example in a local run). The scheduled Live Model Canary workflow still has only an Anthropic key. It fails a response whose findings block is missing or is not a JSON array, reports findings, output tokens and time per call, and saves each review’s text when CANARY_OUTPUT_DIR is set.

The bedrock-proxy and Anthropic defaults are unchanged.

Known issues

  • AI_MAX_COST_USD is not enforced for a model that has no row in config/model-pricing.json. Such a model is estimated at $0, so the ceiling never stops it. Every default model is priced. A model you choose yourself (for example another Gemini 3 model or any openai-compatible model) may not be. See #977. Fixed in v2.18.1.

See CHANGELOG.md for full technical detail.