From 92f5a2e2525838a4c755b36c6e0528f068316d66 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 7 Mar 2026 21:10:42 +0000 Subject: [PATCH] fix(models): refresh gpt/gemini alias defaults (#38638, thanks @ademczuk) Co-authored-by: ademczuk --- CHANGELOG.md | 1 + extensions/google-gemini-cli-auth/index.ts | 2 +- src/agents/models-config.providers.ts | 6 ++++++ src/commands/google-gemini-model-default.ts | 2 +- src/config/defaults.ts | 6 +++--- src/config/model-alias-defaults.test.ts | 12 ++++++------ .../delivery-dispatch.double-announce.test.ts | 1 + 7 files changed, 19 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 212b839e49f..6c17941983b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -278,6 +278,7 @@ Docs: https://docs.openclaw.ai - Telegram/status SecretRef read-only resolution: resolve env-backed bot-token SecretRefs in config-only/status inspection while respecting provider source/defaults and env allowlists, so status no longer crashes or reports false-ready tokens for disallowed providers. (#39130) Thanks @neocody. - Agents/OpenAI WS max-token zero forwarding: treat `maxTokens: 0` as an explicit value in websocket `response.create` payloads (instead of dropping it as falsy), with regression coverage for zero-token forwarding. (#39148) Thanks @scoootscooob. - Podman/.env gateway bind precedence: evaluate `OPENCLAW_GATEWAY_BIND` after sourcing `.env` in `run-openclaw-podman.sh` so env-file overrides are honored. (#38785) Thanks @majinyu666. +- Models/default alias refresh: bump `gpt` to `openai/gpt-5.4` and Gemini defaults to `gemini-3.1` preview aliases (including normalization/default wiring) to track current model IDs. (#38638) Thanks @ademczuk. ## 2026.3.2 diff --git a/extensions/google-gemini-cli-auth/index.ts b/extensions/google-gemini-cli-auth/index.ts index 9a7b770502f..dd84e93ba4e 100644 --- a/extensions/google-gemini-cli-auth/index.ts +++ b/extensions/google-gemini-cli-auth/index.ts @@ -8,7 +8,7 @@ import { loginGeminiCliOAuth } from "./oauth.js"; const PROVIDER_ID = "google-gemini-cli"; const PROVIDER_LABEL = "Gemini CLI OAuth"; -const DEFAULT_MODEL = "google-gemini-cli/gemini-3-pro-preview"; +const DEFAULT_MODEL = "google-gemini-cli/gemini-3.1-pro-preview"; const ENV_VARS = [ "OPENCLAW_GEMINI_OAUTH_CLIENT_ID", "OPENCLAW_GEMINI_OAUTH_CLIENT_SECRET", diff --git a/src/agents/models-config.providers.ts b/src/agents/models-config.providers.ts index 985b82c6ef2..1d2463ee6f4 100644 --- a/src/agents/models-config.providers.ts +++ b/src/agents/models-config.providers.ts @@ -544,6 +544,12 @@ export function normalizeGoogleModelId(id: string): string { if (id === "gemini-3-flash") { return "gemini-3-flash-preview"; } + if (id === "gemini-3.1-pro") { + return "gemini-3.1-pro-preview"; + } + if (id === "gemini-3.1-flash") { + return "gemini-3.1-flash-preview"; + } return id; } diff --git a/src/commands/google-gemini-model-default.ts b/src/commands/google-gemini-model-default.ts index 385f1cc849d..491fdd3c6d9 100644 --- a/src/commands/google-gemini-model-default.ts +++ b/src/commands/google-gemini-model-default.ts @@ -1,7 +1,7 @@ import type { OpenClawConfig } from "../config/config.js"; import { applyAgentDefaultPrimaryModel } from "./model-default.js"; -export const GOOGLE_GEMINI_DEFAULT_MODEL = "google/gemini-3-pro-preview"; +export const GOOGLE_GEMINI_DEFAULT_MODEL = "google/gemini-3.1-pro-preview"; export function applyGoogleGeminiModelDefault(cfg: OpenClawConfig): { next: OpenClawConfig; diff --git a/src/config/defaults.ts b/src/config/defaults.ts index 735c59b7e5d..71a046fb8d4 100644 --- a/src/config/defaults.ts +++ b/src/config/defaults.ts @@ -24,12 +24,12 @@ const DEFAULT_MODEL_ALIASES: Readonly> = { sonnet: "anthropic/claude-sonnet-4-6", // OpenAI - gpt: "openai/gpt-5.2", + gpt: "openai/gpt-5.4", "gpt-mini": "openai/gpt-5-mini", // Google Gemini (3.x are preview ids in the catalog) - gemini: "google/gemini-3-pro-preview", - "gemini-flash": "google/gemini-3-flash-preview", + gemini: "google/gemini-3.1-pro-preview", + "gemini-flash": "google/gemini-3.1-flash-preview", }; const DEFAULT_MODEL_COST: ModelDefinitionConfig["cost"] = { diff --git a/src/config/model-alias-defaults.test.ts b/src/config/model-alias-defaults.test.ts index 30efe8451d2..dfe0d70a103 100644 --- a/src/config/model-alias-defaults.test.ts +++ b/src/config/model-alias-defaults.test.ts @@ -35,7 +35,7 @@ describe("applyModelDefaults", () => { defaults: { models: { "anthropic/claude-opus-4-6": {}, - "openai/gpt-5.2": {}, + "openai/gpt-5.4": {}, }, }, }, @@ -43,7 +43,7 @@ describe("applyModelDefaults", () => { const next = applyModelDefaults(cfg); expect(next.agents?.defaults?.models?.["anthropic/claude-opus-4-6"]?.alias).toBe("opus"); - expect(next.agents?.defaults?.models?.["openai/gpt-5.2"]?.alias).toBe("gpt"); + expect(next.agents?.defaults?.models?.["openai/gpt-5.4"]?.alias).toBe("gpt"); }); it("does not override existing aliases", () => { @@ -67,8 +67,8 @@ describe("applyModelDefaults", () => { agents: { defaults: { models: { - "google/gemini-3-pro-preview": { alias: "" }, - "google/gemini-3-flash-preview": {}, + "google/gemini-3.1-pro-preview": { alias: "" }, + "google/gemini-3.1-flash-preview": {}, }, }, }, @@ -76,8 +76,8 @@ describe("applyModelDefaults", () => { const next = applyModelDefaults(cfg); - expect(next.agents?.defaults?.models?.["google/gemini-3-pro-preview"]?.alias).toBe(""); - expect(next.agents?.defaults?.models?.["google/gemini-3-flash-preview"]?.alias).toBe( + expect(next.agents?.defaults?.models?.["google/gemini-3.1-pro-preview"]?.alias).toBe(""); + expect(next.agents?.defaults?.models?.["google/gemini-3.1-flash-preview"]?.alias).toBe( "gemini-flash", ); }); diff --git a/src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts b/src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts index b41b88576e9..fdb77fc22ba 100644 --- a/src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts +++ b/src/cron/isolated-agent/delivery-dispatch.double-announce.test.ts @@ -83,6 +83,7 @@ function makeResolvedDelivery(): Extract to: "123456", accountId: undefined, threadId: undefined, + mode: "explicit", }; }