#Switching to Gemini from Claude
1 messages Β· Page 1 of 1 (latest)
Hello. I am a Senior Software Engineer. I think I can help you resolve your issue. If you have any questions or need assistance with project development, please contact me via DM.
Letβs keep troubleshooting in-thread instead of DMs, so the fix stays searchable for everyone.
For a clean restart on Gemini, please paste these first:
openclaw --version
openclaw status
openclaw models status
Also tell me which path you want:
- Gemini API key via
google(usually the simplest), or - Gemini CLI OAuth via
google-gemini-cli
Docs Iβm using:
https://docs.openclaw.ai/help/faq
https://docs.openclaw.ai/providers/google
https://docs.openclaw.ai/concepts/models
Once you post those, Iβll walk you through the reset step by step.
API
Here is OpenClaw's response:
Update available (npm 2026.4.14). Run: openclaw update
Next steps:
Need to share? openclaw status --all
Need to debug live? openclaw logs --follow
Need to test channels? openclaw status --deep
π¦ OpenClaw 2026.4.12 (1c0672b)
Your config is valid, your assumptions are not.
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : google/gemini-3.1-pro-preview
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (3) : sonnet -> anthropic/claude-sonnet-4-6, opus -> anthropic/claude-opus-4-6, gemini -> google/gemini-3.1-pro-preview
Configured models (3): anthropic/claude-sonnet-4-6, anthropic/claude-opus-4-6, google/gemini-3.1-pro-preview
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (1): google (1)
- anthropic effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | anthropic:default=sk-ant-a...2d34EgAA
- google effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=2 (oauth=0, token=1, api_key=1) | google:default=AIzaSyCN...1s3h2O5A, google:manual=token:AIzaSyCN...1s3h2O5A | env=AIzaSyCN...1s3h2O5A | source=env: GEMINI_API_KEY
- google-gemini-cli effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | google-gemini-cli:default=AIzaSyCN...1s3h2O5A
OAuth/token status
- google
- google:manual static
calebmarkus@calebs-Mac-mini ~ %
- google:manual static
This is actually pretty close.
From what you pasted, OpenClaw is already configured to use Gemini via the google provider:
- default model is on
google/... - auth is resolving from
GEMINI_API_KEY - Anthropic still being present is not a problem by itself
So this does not look like βstill stuck on Claudeβ at the config level.
The next thing Iβd check is whether live Gemini requests are succeeding. Please run:
openclaw models status --probe --probe-provider google
Then paste that output.
A couple of notes:
- Since you said API, stick to
googlefor now. - Do not mix in
google-gemini-cliunless you explicitly want the Gemini CLI OAuth route. - If the probe passes but chat still feels βstuck on Claudeβ, start a fresh session/thread after the switch. Old sessions can keep a pending model switch.
Docs:
https://docs.openclaw.ai/providers/google
https://docs.openclaw.ai/cli/models
https://docs.openclaw.ai/help/faq
Paste the probe result and Iβll help you from there.
π¦ OpenClaw 2026.4.12 (1c0672b)
Type the command with confidenceβnature will provide the stack trace if needed.
β
β
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : google/gemini-3.1-pro-preview
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (3) : sonnet -> anthropic/claude-sonnet-4-6, opus -> anthropic/claude-opus-4-6, gemini -> google/gemini-3.1-pro-preview
Configured models (3): anthropic/claude-sonnet-4-6, anthropic/claude-opus-4-6, google/gemini-3.1-pro-preview
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (1): google (1)
- anthropic effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | anthropic:default=sk-ant-a...2d34EgAA
- google effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=2 (oauth=0, token=1, api_key=1) | google:default=AIzaSyCN...1s3h2O5A, google:manual=token:AIzaSyCN...1s3h2O5A | env=AIzaSyCN...1s3h2O5A | source=env: GEMINI_API_KEY
- google-gemini-cli effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | google-gemini-cli:default=AIzaSyCN...1s3h2O5A
OAuth/token status
- google
- google:manual static
Auth probes
ββββββββββββββββββββ¬βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββ
β Model β Profile β Status β
ββββββββββββββββββββΌβββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β google/gemini-3. β google:default (api_ β ok Β· 9.3s β
β 1-pro-preview β key) β β
β google/gemini-3. β google:manual (token) β unknown Β· - β
β 1-pro-preview β β β³ Excluded by auth.order for β
β β β this provider. β
ββββββββββββββββββββ΄βββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Probed 1 target in 12.2s
Thatβs the plain openclaw models status output again, not the live probe. No worries.
Please run this exactly and paste the result:
openclaw models status --probe --probe-provider google
That makes a real Gemini request, which is the part we still havenβt verified.
Also tell me the exact symptom youβre seeing right now:
- no reply
- auth error
- still seems to use Claude
- tools fail
- something else
From the config you pasted, Gemini is already the default, so the remaining problem is probably either:
- a live Google request/auth issue, or
- an old session not picking up the switch
Docs for the command: https://docs.openclaw.ai/cli/models
Perfect, thatβs the key result.
Your Gemini API path is working. The live probe succeeded, so this is not a Google auth/config failure anymore.
That means the likely issue is now one of these:
- an old session still carrying the previous model choice, or
- a channel/runtime issue unrelated to Gemini auth
Next test
In the chat where you actually use your bot, do this from a fresh conversation/session:
- start a new chat/thread
- run
/model statusonce, or/model - send a simple test prompt
A fresh session matters because old sessions can keep earlier model selection state.
Important
The leftover Anthropic entries in your config are not the blocker right now. Iβd leave them alone until we confirm behavior.
If the fresh session still fails, paste these next:
openclaw status --deep
openclaw logs --follow
and tell me what the bot does on one test message, for example no reply, error, wrong model, etc.
Docs:
https://docs.openclaw.ai/concepts/models
https://docs.openclaw.ai/help/faq
π¦ OpenClaw 2026.4.12 (1c0672b) β Ah, the fruit tree company! π
β
β
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : google/gemini-3.1-pro-preview
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (3) : sonnet -> anthropic/claude-sonnet-4-6, opus -> anthropic/claude-opus-4-6, gemini -> google/gemini-3.1-pro-preview
Configured models (3): anthropic/claude-sonnet-4-6, anthropic/claude-opus-4-6, google/gemini-3.1-pro-preview
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (1): google (1)
- anthropic effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | anthropic:default=sk-ant-a...2d34EgAA
- google effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=2 (oauth=0, token=1, api_key=1) | google:default=AIzaSyCN...1s3h2O5A, google:manual=token:AIzaSyCN...1s3h2O5A | env=AIzaSyCN...1s3h2O5A | source=env: GEMINI_API_KEY
- google-gemini-cli effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | google-gemini-cli:default=AIzaSyCN...1s3h2O5A
OAuth/token status
- google
- google:manual static
Auth probes
ββββββββββββββββββββ¬βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββ
β Model β Profile β Status β
ββββββββββββββββββββΌβββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€
β google/gemini-3. β google:default (api_ β ok Β· 9.4s β
β 1-pro-preview β key) β β
β google/gemini-3. β google:manual (token) β unknown Β· - β
β 1-pro-preview β β β³ Excluded by auth.order for β
β β β this provider. β
ββββββββββββββββββββ΄βββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ
Probed 1 target in 14.3s
I think weβre talking past each other a bit.
That βAh, the fruit tree company! πβ line is just an OpenClaw CLI joke banner, not evidence that Claude or Gemini answered.
From everything youβve pasted so far, the situation is:
- default model is Google/Gemini
- Gemini auth is valid
- live Gemini probe succeeded
So the switch itself is already working.
What I need now is the actual runtime symptom from your bot/chat surface.
Please answer this in one line:
- A: no reply
- B: explicit error
- C: replies, but seem wrong / βstill Claudeβ
- D: tools fail
- E: something else
If itβs A or B, then do one test message to your bot and paste the fresh log lines from:
openclaw logs --follow
right after that failed message.
Troubleshooting docs: https://docs.openclaw.ai/gateway/troubleshooting
That probe is green again. So the Claude β Gemini switch is verified.
At this point, there isnβt another Gemini auth/config setting left to debug from these outputs.
Please stop on the status/probe commands for a moment and do this instead
- Open a fresh chat/session with your bot
- Send one simple message, for example:
say hello - Paste one of these back here:
- the botβs exact reply, or
- the exact error, or
- if there is no reply, the fresh lines from:
openclaw logs --follow
right after that test message.
So, one sentence summary: your model switch is already working, now we need the actual bot behavior.
Troubleshooting: https://docs.openclaw.ai/gateway/troubleshooting
you want this in terminal or OpenClaw chat interface?
openclaw logs --follow
Terminal for the logs.
So:
-
In the terminal, run:
openclaw logs --follow -
In the OpenClaw chat interface, send one simple test message.
-
Then paste the new terminal log lines that appear right after that message.
If the chat shows an error directly, paste that too.
Log tail truncated (increase --max-bytes).
16:26:41+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1001 reason=n/a conn=9c8d82bf-fdf7-484b-9705-4b145f65caed
16:26:41+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=edb023d3-9fb4-4739-a41d-fd2e914f0ca2 remote=127.0.0.1 client=openclaw-control-ui webchat v2026.4.12
16:26:42+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β commands.list 65ms conn=edb023d3β¦0ca2 id=8db5d89aβ¦1a60
16:26:42+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β models.list 67ms conn=edb023d3β¦0ca2 id=d8366d31β¦bb90
16:26:42+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β node.list 106ms conn=edb023d3β¦0ca2 id=b33f690dβ¦3f95
16:26:42+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β device.pair.list 107ms conn=edb023d3β¦0ca2 id=e2434032β¦ee5d
16:26:50+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"08c9aa3e-876a-4da3-9acf-3c1b1e7d2e35","isError":true,"error":"The AI service is temporarily overloaded. Please try again in a moment.","failoverReason":"overloaded","model":"gemini-2.5-pro","provider":"google","rawErrorPreview":"{"error":{"message":"{\n \"error\": {\n \"code\": 503,\n \"message\": \"This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.\",\n \"status\": \"UNAVAILABLE\"\n
}\n}\n","code":503,"status":""}}","rawErrorHash":"sha256:6ac7f44fd30e","rawErrorFingerprint":"sha256:3341ffdd97b8","providerRuntimeFailureKind":"timeout","providerErrorMessagePreview":"{\n "error": {\n "code": 503,\n "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.",\n "status": "UNAVAILABLE"\n }\n}"} embedded run agent end
16:26:53+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"08c9aa3e-876a-4da3-9acf-3c1b1e7d2e35","isError":true,"error":"The AI service is temporarily overloaded. Please try again in a moment.","failoverReason":"overloaded","model":"gemini-2.5-pro","provider":"google","rawErrorPreview":"{"error":{"message":"{\n \"error\": {\n \"code\": 503,\n \"message\": \"This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.\",\n \"status\": \"UNAVAILABLE\"\n }\n}\n","code":503,"status":""}}","rawErrorHash":"sha256:6ac7f44fd30e","rawErrorFingerprint":"sha256:3341ffdd97b8","providerRuntimeFailureKind":"timeout","providerErrorMessagePreview":"{\n "error": {\n "code": 503,\n "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.",\n "status": "UNAVAILABLE"\n }\n}"} embedded run agent end
16:26:58+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":
["error_handling","lifecycle","agent_end","assistant_error"],"runId":"08c9aa3e-876a-4da3-9acf-3c1b1e7d2e35","isError":true,"error":"The AI service is temporarily overloaded. Please try again in a moment.","failoverReason":"overloaded","model":"gemini-2.5-pro","provider":"google","rawErrorPreview":"{"error":{"message":"{\n \"error\": {\n \"code\": 503,\n \"message\": \"This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.\",\n \"status\": \"UNAVAILABLE\"\n }\n}\n","code":503,"status":""}}","rawErrorHash":"sha256:6ac7f44fd30e","rawErrorFingerprint":"sha256:3341ffdd97b8","providerRuntimeFailureKind":"timeout","providerErrorMessagePreview":"{\n "error": {\n "code": 503,\n "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.",\n "status": "UNAVAILABLE"\n }\n}"} embedded run agent end
Those lines are just the Control UI reconnecting. They do not show a bot run yet.
Letβs do one tighter test:
-
In one terminal, run:
openclaw logs --follow --max-bytes 500000 -
Leave it running.
-
In the OpenClaw web chat, send a simple message like:
hello -
Paste the new log lines that appear immediately after that message.
If nothing new appears at all, tell me that too, because that narrows it down a lot.
Logs docs: https://docs.openclaw.ai/cli/logs
here are some:
16:28:01+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1001 reason=n/a conn=edb023d3-9fb4-4739-a41d-fd2e914f0ca2
16:28:01+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=cf9784bd-0918-468f-b8a7-b424892c6ab7 remote=127.0.0.1 client=openclaw-control-ui webchat v2026.4.12
16:28:01+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β commands.list 71ms conn=cf9784bdβ¦6ab7 id=e9cacd62β¦b16c
16:28:01+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β chat.history 105ms conn=cf9784bdβ¦6ab7 id=cfb615e6β¦c00b
16:28:01+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β models.list 74ms conn=cf9784bdβ¦6ab7 id=870a3f68β¦0029
16:28:01+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β node.list 108ms conn=cf9784bdβ¦6ab7 id=3d25c42eβ¦c2bc
16:28:01+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β device.pair.list 109ms conn=cf9784bdβ¦6ab7 id=069b3acfβ¦5a19
16:28:08+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"d0071e0d-c8b1-45a8-9043-8a61877b61f3","isError":true,"error":"The AI service is temporarily overloaded. Please try again in a moment.","failoverReason":"overloaded","model":"gemini-2.5-pro","provider":"google","rawErrorPreview":"{"error":{"message":"{\n \"error\": {\n \"code\": 503,\n \"message\": \"This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.\",\n \"status\": \"UNAVAILABLE\"\n
Nice, we finally found the real issue.
This is not a Claude vs Gemini switching problem.
Your logs show:
- OpenClaw is using
provider:"google" - the request reached Gemini successfully enough to fail at the model layer
- Google returned 503 UNAVAILABLE / high demand
- you currently have no fallbacks, so the run stops there
So the story is basically: the switch worked, Gemini was just overloaded.
Why the probe passed earlier
That probe was one successful request. Later, your normal chat request hit a temporary Google overload. Annoying, but it happens.
Best next step
Iβd add a Google fallback so overloads donβt hard-fail.
openclaw models list --provider google
openclaw models fallbacks add <provider/model>
openclaw models status
Pick a second Google model from the list and add it as a fallback.
Short version
- If you do nothing: retry later, it may work fine
- If you want this to be robust: add a fallback
Docs:
https://docs.openclaw.ai/cli/models
https://docs.openclaw.ai/concepts/model-failover
If this fixed the mystery, please right-click the solution message β Apps β β Mark Solution so Answer Overflow can index it for the next person.
Yep, thatβs the same failure repeating.
This confirms the issue is:
- not Claude
- not auth
- not the switch
- it is Google returning 503 overloads for the current Gemini model
So your next move is one of these:
Option 1, simplest
Wait a bit and retry. This is a provider-side capacity spike.
Option 2, better
Switch to a different Google model, or add one as a fallback:
openclaw models list --provider google
openclaw models set <google/...>
# or
openclaw models fallbacks add <google/...>
Iβd recommend the fallback route, so temporary overloads donβt kill replies.
Docs:
https://docs.openclaw.ai/cli/models
https://docs.openclaw.ai/concepts/model-failover
If you want, paste the output of:
openclaw models list --provider google
and Iβll help you with the exact next command shape.
Yep, same exact 503 again. Weβve got the diagnosis now, no more logs needed for this part.
Root cause: Google is rate/capacity-overloaded on the current Gemini model.
So please do one of these next:
- Retry later, or
- Paste this output so we can switch/add a fallback cleanly:
openclaw models list --provider google
At this point, the Claude β Gemini switch itself is confirmed working. The remaining problem is just the provider overload.
Thanks, but those are still the same overload logs. Weβve already got the diagnosis.
No more logs for now. The next useful output is a clean Google model list.
Please run this instead:
openclaw models list --provider google --plain
--plain keeps it short and avoids the noisy table output.
Then paste that here, and Iβll help you with the exact next command, either:
openclaw models set ...- or
openclaw models fallbacks add ...
If youβd rather not tune it right now, the simple fallback is just: wait a bit and retry. The switch itself is already working.
this does not explain why i hit a rate limit after 12 hours of not working. In the morning I say hello and get a rate limit. Fallback is great I set that up yesterday and apparently did it wrong but this thing doesnt even work at all right now. There is plenty of capacity in aistudio rate limit tracking. so I'll set the fallback but its gemini 2.5 pro is unusable. it fails or does not respond EVER
Yeah, thatβs frustrating, and youβre not crazy.
What your logs show is not βyou used up your AI Studio quota.β
They show Google returning:
503UNAVAILABLE- βhigh demandβ
That is a provider-side capacity/admission failure, not your personal usage counter. So AI Studio can show plenty of quota and the model can still refuse requests. Idle time overnight does not prevent that.
So if gemini-2.5-pro is basically unusable for you, I would stop treating it as the primary and move on.
What Iβd do
Pick a different Google primary, then add a second Google fallback:
openclaw models list --provider google --plain
openclaw models set <different google/...>
openclaw models fallbacks clear
openclaw models fallbacks add <second google/...>
openclaw models status
Iβm deliberately not naming specific models here because that changes fast. If you want current hands-on recommendations, ask in #models too.
If you paste the output of:
openclaw models list --provider google --plain
Iβll help you turn it into the exact commands.
my friends are using gemini-2.5-pro all day every day. are you making assumptions about it being usable?
No, not globally. Iβm making a narrow claim from your logs:
in your current OpenClaw setup, requests to Google for that model are coming back with repeated 503 high demand / UNAVAILABLE
That is different from saying βgemini-2.5-pro is broken for everyone.β
Your friends using it successfully is useful evidence, but it does not override the fact that your requests are getting 503s. Both can be true at once.
Possible reasons include differences in:
- account/project
- request path or request shape
- regional/backend routing
- plain bad luck with Googleβs admission/load balancing at that moment
If you want to separate Google issue vs OpenClaw issue, the next clean test is:
- try the same key with the same model outside OpenClaw, at the same time
(AI Studio or a minimal direct Gemini API request)
If that works consistently while OpenClaw still gets 503s, then Iβd stop blaming general model capacity and start looking at the OpenClaw request path/version next.
Docs:
https://docs.openclaw.ai/providers/google
https://docs.openclaw.ai/gateway/troubleshooting
Iβd do this in two tracks, one to unblock you now, one to debug the root cause.
1. Unblock yourself now
Stop using the currently failing model as your primary in OpenClaw.
Run:
openclaw models list --provider google --plain
Then:
openclaw models set <another google/... from that list>
openclaw models fallbacks clear
openclaw models fallbacks add <second google/... from that list>
openclaw models status
That gets you onto a different Google model and gives you a fallback.
2. Debug the root cause separately
Test the same key + same model outside OpenClaw, in AI Studio or a direct Gemini API request.
- If that also fails, itβs basically a Google-side availability issue for your path/account.
- If that works, then we dig into why OpenClawβs request path is getting 503s.
My recommendation
Do #1 first so youβre not blocked, then do #2 if you still want to understand why gemini-2.5-pro is bad in your setup.
If you paste the output of openclaw models list --provider google --plain, Iβll help you turn it into the exact commands.
Yep, do this:
openclaw models set google/gemini-3.1-pro-preview
openclaw models status
Then open a fresh chat/session in the OpenClaw UI and test with a simple message.
If you want to wipe the old fallback setup too, you can also do:
openclaw models fallbacks clear
I entered all that in terminal and nothing happened
That may be fine, openclaw models set ... can be pretty quiet.
Run this next:
openclaw models status --plain
If it prints:
google/gemini-3.1-pro-preview
then the switch worked.
After that, open a fresh chat/session in OpenClaw and test it.
If models status --plain also shows nothing, paste the exact terminal output you see, even if itβs just the prompt coming back.
this is what it said: 16:46:19+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"8cdb918c-7182-4abe-aa9f-d2e80db48f4f","isError":true,"error":"LLM request failed: network connection error.","failoverReason":"timeout","model":"gemini-2.5-pro","provider":"google","rawErrorPreview":"fetch failed","rawErrorHash":"sha256:e2c73a8fd237","providerRuntimeFailureKind":"timeout"} embedded run agent end
16:46:19+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","surface_error"],"runId":"8cdb918c-7182-4abe-aa9f-d2e80db48f4f","stage":"assistant","decision":"surface_error","failoverReason":"timeout","profileFailureReason":null,"provider":"google","model":"gemini-2.5-pro","profileId":"sha256:a94403a4f9d0","fallbackConfigured":false,"timedOut":false,"aborted":false,"rawErrorPreview":"fetch failed","rawErrorHash":"sha256:e2c73a8fd237","providerRuntimeFailureKind":"timeout"} embedded run failover decision
That log tells us something important:
you are still running on gemini-2.5-pro, not on Gemini 3.1 Pro yet.
So donβt chase the network error first, the model switch itself has not taken effect for the session youβre testing.
Do this next
In terminal:
openclaw models status --plain
If it prints:
google/gemini-3.1-pro-preview
then the config changed, and you need to test in a brand-new chat/session because the old session is still on gemini-2.5-pro.
If it prints google/gemini-2.5-pro or similar, then the switch did not apply, and I want the exact output from:
openclaw models set google/gemini-3.1-pro-preview
Right now the key fact is: the chat run you tested is still using the old model.
Docs:
https://docs.openclaw.ai/cli/models
https://docs.openclaw.ai/concepts/models
openclaw models set google/gemini-3.1-pro-preview
20:42:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1001 reason=n/a conn=cf9784bd-0918-468f-b8a7-b424892c6ab7
20:42:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=bee787e1-ffd6-465b-be37-28753aefb48c remote=127.0.0.1 client=openclaw-control-ui webchat v2026.4.12
20:42:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β commands.list 90ms conn=bee787e1β¦b48c id=f1fe4439β¦f488
20:42:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β chat.history 136ms conn=bee787e1β¦b48c id=0fd9462dβ¦d537
20:42:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β models.list 92ms conn=bee787e1β¦b48c id=d8d98039β¦9430
20:42:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β node.list 140ms conn=bee787e1β¦b48c id=7c7e7582β¦06c6
20:42:46+00:00 info gateway/ws {"subsystem":"gateway/ws"} β res β device.pair.list 140ms conn=bee787e1β¦b48c id=72bf1772β¦8ab1
Ah, I see whatβs happening.
Those lines are not the output of openclaw models set ....
Theyβre just from your still-running openclaw logs --follow session.
So letβs separate them.
Do this exactly
- In the terminal running logs, press:
Ctrl+C
- Open a fresh terminal window/tab
- Run:
openclaw models set google/gemini-3.1-pro-preview
openclaw models status --plain
- Paste only the output from
models status --plain
What we want to see is:
google/gemini-3.1-pro-preview
Right now youβve just got log noise mixed in with the command, which is why this feels cursed.
π¦ OpenClaw 2026.4.12 (1c0672b)
Runs on a Raspberry Pi. Dreams of a rack in Iceland.
Config overwrite: /Users/calebmarkus/.openclaw/openclaw.json (sha256 7a73835c583e53543bfcefe1bca75b077dc1da82ba2f17a3eeda703119f12b4e -> 1cb0a20960dd88f140658e747194643c15a871e7f35a4b85562a0a91909291a3, backup=/Users/calebmarkus/.openclaw/openclaw.json.bak)
Updated ~/.openclaw/openclaw.json
Default model: google/gemini-3.1-pro-preview
π¦ OpenClaw 2026.4.12 (1c0672b) β Half butler, half debugger, full crustacean.
google/gemini-3.1-pro-preview
calebmarkus@calebs-Mac-mini ~ %
Nice, that worked. π
Youβve now actually switched the default model to:
google/gemini-3.1-pro-preview
Next step
Go back to the OpenClaw UI and start a brand-new chat/session, then test with a simple message.
That part matters because an old session can stay on the previous model.
If the new chat works, youβre good.
If it still fails, paste the new log line from that fresh session and weβll check whether itβs now hitting 3.1 Pro correctly.
Docs: