#Rate limit not resetting

1 messages ยท Page 1 of 1 (latest)

high geyser
#

i cannot do anything. It is hitting rate limit every time on say anything. started when I switched from Claude to gemini-2.5-flash

gloomy ironBOT
plain lilyBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> โœ… Mark Solution

gloomy ironBOT
high geyser
#

in openclaw control it does not respond. In slack it says rate limit

remote jungleBOT
#

This sounds a lot more like the Gemini provider quota/rate limit than Discord rate limiting.

gemini-2.5-flash can trip 429 / RESOURCE_EXHAUSTED / quota errors pretty easily, and OpenClaw treats those as rate limits too. If you only have that one model active, every prompt will keep failing until the provider window resets or a fallback takes over.

First, what does this show?

openclaw --version

Then please paste:

openclaw status --all
openclaw models status --json
openclaw logs --follow
#

Yep, that points to the model provider, not Control itself.

If Slack says rate limit, Control will look dead too, because both are hitting the same backend model and failing there.

Two fastest things:

openclaw --version
openclaw models set <your-previous-working-model>

If that unsticks it, then Gemini was the problem and not the UI.

After that, please paste:

high geyser
#

the fail message was enormous. but here is some of it:

"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_contenโ€ฆ","rawErrorHash":"sha256:b799413857d7","rawErrorFingerprint":"sha256:83edfd19289a","providerRuntimeFailureKind":"rate_limit","providerErrorMessagePreview":"{\n "error": {\n "code": 429,\n "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-aโ€ฆ"} embedded run failover decision
18:44:50+00:00 info gateway/ws {"subsystem":"gateway/ws"} โ‡„ res โœ“ sessions.list 58ms conn=d17d7537โ€ฆe0c5 id=5ce585e0โ€ฆ50ac
18:46:26+00:00 info slack-auto-reply {"module":"slack-auto-reply"} {"channel":"C0AJ56E2WF6","reason":"no-mention"} skipping channel message
18:49:48+00:00 info slack-auto-reply {"module":"slack-auto-reply"} {"channel":"C03FGPA5PL6","reason":"no-mention"} skipping channel message
18:53:08+00:00 info slack-auto-reply {"module":"slack-auto-reply"} {"channel":"C0AHML257TR","reason":"no-mention"} skipping channel message
18:53:32+00:00 info slack-auto-reply {"module":"slack-auto-reply"} {"channel":"C0A6524P6LQ","reason":"no-mention"} skipping channel message

remote jungleBOT
#

Yep, that confirms it.

This is Google quota exhaustion, not OpenClaw getting stuck:

  • code: 429
  • You exceeded your current quota
  • Quota exceeded for metric ... generate_content
  • providerRuntimeFailureKind: "rate_limit"

So the Control UI looks dead because the backend model is failing on every request.

Immediate fix

  1. Switch back to the previous working model from CLI:
    openclaw models set <your-previous-working-model>
    
  2. If it still feels stuck after that:
#
   openclaw gateway restart

What to do for Gemini

  • wait for Googleโ€™s quota window to reset, or
  • add billing / higher quota on the Google side, or
  • keep Gemini as primary but add a fallback model so 429s fail over instead of bricking replies

Fallback docs:

Also, those slack-auto-reply ... no-mention lines are just noise, not the cause.

If you want, paste your current agents.defaults.model block and I can show the exact fallback config.

high geyser
#

I have a credit balance currently: "add billing / higher quota on the Google side"

remote jungleBOT
#

Yep, you can still hit this even with credit balance.

Google separates money from quota:

  • rate limits are per project, not per API key
  • you can have credits, but the specific project/key OpenClaw is using may still be on a lower tier
  • any of RPM / TPM / RPD can trip the error
  • preview/flash models can have tighter limits

Your error is specifically saying Google rejected generate_content with a 429 quota exceeded, so OpenClaw is just reporting that upstream failure.

What Iโ€™d check next in AI Studio:

  1. the exact project tied to the API key OpenClaw is using
  2. that projectโ€™s Billing Tier is actually paid/upgraded
  3. that projectโ€™s active rate limits for the Gemini model you selected

Common gotcha: billing is enabled on one project/account, but the API key in OpenClaw belongs to a different project still on free/lower tier.

high geyser
#

how do i check this:
the exact project tied to the API key OpenClaw is using

remote jungleBOT
#

Assuming youโ€™re using the Gemini API key path, not Gemini CLI OAuth:

  1. First check which credential source OpenClaw is using:

    openclaw models status --json
    

    You want the google provider entry and its source, usually something like env/config/auth profile.

  2. Then check where that key is coming from:

    • if it says env, look for GEMINI_API_KEY or GOOGLE_API_KEY in the environment or .env the gateway is using
    • if it says auth profile/config, it was likely stored during onboarding/auth setup
  3. Once you know which key OpenClaw is using, go to Google AI Studio โ†’ API Keys.
    Each key is attached to a project there, and that is the project whose quota/billing tier matters.

Important: do not paste the API key here.

#

Honestly, the easiest no-ambiguity fix is:

  • create a new Gemini API key in the exact Google project you want
  • update OpenClaw to use that key
  • restart the gateway

Then you know for sure which project/key pair OpenClaw is hitting.

Docs:

If you paste the google section from openclaw models status --json with secrets redacted, I can help you read it.

high geyser
#

it all matches

remote jungleBOT
#

Then I think weโ€™ve narrowed it down pretty cleanly: this is upstream Google quota behavior, not an OpenClaw mismatch.

If the key, project, and billing all match, the remaining checks are:

  • AI Studio active rate limits for that exact project/model
  • whether you hit RPM / TPM / RPD
  • whether billing was enabled only recently and the tier upgrade has not fully propagated yet

Important bit: credit balance does not mean unlimited quota. Google still enforces per-project limits, and 429 quota exceeded means one of those limits is what blocked you.

So at this point your practical options are:

  • wait for the quota window to reset
  • use your previous working model for now
  • add a fallback model in OpenClaw
  • if AI Studio shows you should have plenty of headroom but Google still returns 429, that is a Google-side billing/quota issue, not an OpenClaw bug

OpenClaw docs:

high geyser
#

how do i check thesE:
AI Studio active rate limits for that exact project/model
whether you hit RPM / TPM / RPD
whether billing was enabled only recently and the tier upgrade has not fully propagated yet

high geyser
#

how can I switch while the rate limit blocks all activity?

#

I'll switch to gemini-2.5-flash-lite

remote jungleBOT
#

You have to switch out of band, not through chat/Control.

Use the CLI on the machine running OpenClaw:

openclaw models set <your-previous-working-model>
openclaw gateway restart

That should work even if Slack/Control replies are failing, because you are changing the local config directly, not asking the current model to respond.

If models set does not stick, then edit your config file manually:

  • change agents.defaults.model.primary
  • restart the gateway

If you are not sure which config file the service is using:

#

Thatโ€™s a reasonable next try.

Iโ€™d still do it via CLI, then restart:

openclaw models set google/gemini-2.5-flash-lite
openclaw gateway restart

And honestly, Iโ€™d add a fallback after that so one Google quota spike does not take the whole thing down again.

If this works, please right-click the solution message โ†’ Apps โ†’ โœ… Mark Solution so Answer Overflow can index it for the next person.

high geyser
#

I am lost about what to do

remote jungleBOT
#

No worries. Do this exactly:

  1. Open a terminal on the machine running OpenClaw.
  2. Run:
    openclaw models set google/gemini-2.5-flash-lite
    
  3. Then run:
    openclaw gateway restart
    
  4. Then try sending one message again.

Do not use Control for this part, use the terminal only.

If that still fails, paste the output of:

high geyser
#

how do I know if it fails or works?

remote jungleBOT
#

Three easy checks:

  1. Did the model actually change?
    Run:

    openclaw models status
    

    If it shows the new default model, that part worked.

  2. Did the gateway restart cleanly?
    Run:

    openclaw gateway status
    

    It should show the gateway is up.

  3. Does one test message get a normal reply?

#

Send one message in Slack/Control.

  • Works = you get a normal response
  • Fails = you still get rate limit, 429, quota exceeded, or no reply

If you want the shortest version:
models status shows new model + test message replies normally = success.

high geyser
#

still hit rate limit

remote jungleBOT
#

Okay, then this is not just gemini-2.5-flash, it is your Google Gemini quota/project getting blocked.

At this point, stop trying Gemini for now.

Do this instead:

openclaw models set <the-Claude-model-you-were-using-before>
openclaw gateway restart

Then test again.

If that works, you are unblocked, and the real issue is Google quota on that project, not OpenClaw itself.

If you want to keep Gemini later, do it after you:

  • wait for quota reset, or
#
  • fix the Google project/tier/quota side, or
  • add a non-Google fallback

If this fixed it, please right-click the solution message โ†’ Apps โ†’ โœ… Mark Solution so it gets indexed on Answer Overflow.

high geyser
#

I should set claude as Fallbacks (0) : -

remote jungleBOT
#

Yes, Fallbacks (0): - means you currently have no fallback configured.

So yes, if you want to keep Gemini as primary later, add Claude as a fallback.

But right now, since Gemini is already quota-blocked, I would do this order:

  1. make Claude your primary again so you are unstuck
  2. later, if you want, make Gemini primary and Claude the fallback

Conceptually it should look like:

{
  agents: {
    defaults: {
      model: {
high geyser
#

I need more clear instructions

remote jungleBOT
#

Yep. Ignore fallbacks for the moment. First, just get yourself unstuck.

Do this now

  1. Open a terminal on the machine running OpenClaw.
  2. Run:
    openclaw models set <the Claude model you were using before>
    
  3. Then run:
    openclaw gateway restart
    
  4. Then check:
    openclaw models status
    
#
  1. Send one test message.

How to tell if it worked

  • If openclaw models status shows Claude as the default model, the switch worked.
  • If your test message gets a normal reply, you are fixed.
  • If you still get rate limit, it did not fix it.

If you do not know the old Claude model name

Run:

openclaw models list --provider anthropic

Then pick the same Claude model you were using before the Gemini switch.

#

Important

Do not worry about Fallbacks (0) yet.
That is a later step.
Right now the goal is only: switch off Gemini so the bot works again.

Docs: https://docs.openclaw.ai/cli/models

high geyser
#

says: No models found.

remote jungleBOT
#

Got it. No models found means OpenClaw does not currently see any Anthropic models available.

So do not guess the model name. Next step is:

openclaw models status

Paste the full output here.

What Iโ€™m looking for:

  • whether Anthropic is configured at all
  • whether the auth is missing/expired
  • what your current default model is

If models status only shows Google, then the fix is: first restore a non-Google provider, then switch models.

high geyser
#

๐Ÿฆž OpenClaw 2026.4.12 (1c0672b)
I can grep it, git blame it, and gently roast itโ€”pick your coping mechanism.

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : google/gemini-2.5-flash-lite
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (1): google/gemini-2.5-flash-lite

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...tLTKQAAA
  • google effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=2 (oauth=0, token=1, api_key=1) | google:default=REMOVED, google:manual=token:REMOVED | 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 ~ %
remote jungleBOT
#

Perfect, this helps a lot.

You do have an Anthropic key, but OpenClaw currently has only one configured model, and it is Google:

  • Configured models (1): google/gemini-2.5-flash-lite
  • Fallbacks (0): -

So the next move is:

Step 1

Run:

openclaw models scan

Step 2

#

Then run:

openclaw models list --provider anthropic

Step 3

If that now shows Anthropic models, set one of them as default:

openclaw models set <the anthropic model shown in step 2>

Step 4

Restart:

#
openclaw gateway restart

What this means

Right now you are not blocked by missing Anthropic credentials.
You are blocked because your config only points at Google, and Google is quota-limited.

If Step 2 still says No models found

Then your Anthropic key exists in storage but is not usable, and the next command is:

openclaw models auth add

Then choose Anthropic and re-add the key.

high geyser
#

we jsut did that

remote jungleBOT
#

Youโ€™re right, sorry, we already burned that step.

Based on your output, the next real step is to re-add Anthropic auth.
The key is present in storage, but OpenClaw is not actually seeing usable Anthropic models from it.

Do this:

openclaw models auth add

Then:

  1. choose Anthropic
  2. re-enter the Anthropic API key
  3. after that, run:
#
   openclaw models list --provider anthropic
  1. if you now see Anthropic models, run:
    openclaw models set <one of those anthropic models>
    openclaw gateway restart
    

So the short version is: do not keep fighting Google right now, fix Anthropic auth and switch back.

If you want, paste the output right after openclaw models auth add and Iโ€™ll stay with you on the next step.

high geyser
#

says: โ”” Expected token starting with sk-ant-oat01-

remote jungleBOT
#

Ah, good catch. That means you picked the wrong Anthropic auth method.

sk-ant-oat01-... is an Anthropic setup-token.
A normal Anthropic API key will not work in that prompt.

Do this instead

  1. Run:
    openclaw models auth add
    
  2. Choose Anthropic
  3. Do not choose setup-token
  4. Choose Anthropic API key
  5. Paste your normal Anthropic API key there

Then run:

#
openclaw models scan
openclaw models list --provider anthropic

If Anthropic models appear, then:

openclaw models set <one of those anthropic models>
openclaw gateway restart

If models auth add does not offer an Anthropic API key option, use:

openclaw onboard
high geyser
#

says:
โ—† Token provider
โ”‚ โ— anthropic (Docs: /providers/models)
โ”‚ โ—‹ custom (type provider id)
โ””

remote jungleBOT
#

Yep, that confirms it, you are still in the token flow.

That is not where you want to be for a normal Anthropic API key.

Do this instead

  1. Press Ctrl+C to exit that prompt.

  2. Run:

    openclaw onboard
    
  3. In onboarding, choose:

    • Anthropic
    • Anthropic API key
    • not setup-token
  4. Paste your normal Anthropic API key there.

#

Then after onboarding finishes:

openclaw models scan
openclaw models list --provider anthropic

If Anthropic models now show up:

openclaw models set <one of those anthropic models>
openclaw gateway restart

So the key point is: stop using the token prompt, use onboarding and choose Anthropic API key instead.

high geyser
#

says: โ”‚
โ—† I understand this is personal-by-default and shared/multi-user use
โ”‚ requires lock-down. Continue?
โ”‚ โ—‹ Yes / โ— No
โ””

remote jungleBOT
#

Choose Yes.

That is just the normal onboarding safety warning, not the Gemini issue.

So:

  • select Yes
  • continue onboarding
  • choose Anthropic
  • choose Anthropic API key
  • do not choose setup-token

Youโ€™re on the right path now.

high geyser
#

says:
โ—† Setup mode
โ”‚ โ— QuickStart (Configure details later via openclaw configure.)
โ”‚ โ—‹ Manual
โ””

remote jungleBOT
#

Choose Manual.

QuickStart is for getting going fast and configuring details later.
You need to fix the provider/auth right now, so Manual is the right choice.

high geyser
#

says:
โ—‡ Existing config detected โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ workspace: ~/.openclaw/workspace โ”‚
โ”‚ model: google/gemini-2.5-flash-lite โ”‚
โ”‚ gateway.mode: local โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—† Config handling
โ”‚ โ— Use existing values
โ”‚ โ—‹ Update values
โ”‚ โ—‹ Reset
โ””

remote jungleBOT
#

Choose Update values.

  • Use existing values keeps the broken Gemini model
  • Reset is overkill
  • Update values lets you change the model/auth without nuking everything
high geyser
#

says:
โ—† Anthropic auth method
โ”‚ โ— Anthropic Claude CLI (Reuse a local Claude CLI login on this
โ”‚ host)
โ”‚ โ—‹ Anthropic API key
โ”‚ โ—‹ Anthropic setup-token
โ”‚ โ—‹ Back
โ””

remote jungleBOT
#

Choose Anthropic API key.

Do not pick:

  • Claude CLI, unless you specifically want to reuse a local Claude login on that machine
  • setup-token

For your case, Anthropic API key is the cleanest recovery path.

high geyser
#

says:
โ”‚
โ—‡ Model configured โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ Default model set to anthropic/claude-sonnet-4-6 โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—† Default model
โ”‚ โ— Keep current (anthropic/claude-sonnet-4-6)
โ”‚ โ—‹ Enter model manually
โ”‚ โ—‹ anthropic/claude-3-haiku-20240307
โ”‚ โ—‹ anthropic/claude-3-5-haiku-20241022
โ”‚ โ—‹ anthropic/claude-3-5-haiku-latest
โ”‚ โ—‹ anthropic/claude-haiku-4-5-20251001
โ”‚ โ—‹ anthropic/claude-haiku-4-5
โ”‚ โ—‹ anthropic/claude-3-opus-20240229
โ”‚ โ—‹ anthropic/claude-opus-4-20250514
โ”‚ โ—‹ anthropic/claude-opus-4-0
โ”‚ โ—‹ anthropic/claude-opus-4-1-20250805
โ”‚ โ—‹ anthropic/claude-opus-4-1
โ”‚ โ—‹ anthropic/claude-opus-4-5-20251101
โ”‚ โ—‹ anthropic/claude-opus-4-5
โ”‚ โ—‹ anthropic/claude-opus-4-6
โ”‚ โ—‹ anthropic/claude-3-sonnet-20240229
โ”‚ โ—‹ anthropic/claude-3-5-sonnet-20240620
โ”‚ โ—‹ anthropic/claude-3-5-sonnet-20241022
โ”‚ โ—‹ anthropic/claude-3-7-sonnet-20250219
โ”‚ โ—‹ anthropic/claude-sonnet-4-20250514
โ”‚ โ—‹ anthropic/claude-sonnet-4-0
โ”‚ โ—‹ anthropic/claude-sonnet-4-5-20250929
โ”‚ โ—‹ anthropic/claude-sonnet-4-5
โ”‚ โ—‹ anthropic/claude-sonnet-4-6
โ””

remote jungleBOT
#

Nice, that means the recovery is working.

Choose Keep current (anthropic/claude-sonnet-4-6) and finish the wizard.

After onboarding completes:

openclaw gateway restart
openclaw models status

If models status still shows anthropic/claude-sonnet-4-6, send one test message.
That should get you out of the Google rate-limit trap.

high geyser
#

says:
โ—† Select channel (QuickStart)
โ”‚ โ—‹ Feishu/Lark (้ฃžไนฆ)
โ”‚ โ—‹ Google Chat (Chat API)
โ”‚ โ—‹ Nostr
โ”‚ โ—‹ Microsoft Teams (Bot Framework)
โ”‚ โ—‹ Mattermost (plugin)
โ”‚ โ—‹ Nextcloud Talk (self-hosted)
โ”‚ โ—‹ Matrix (plugin)
โ”‚ โ—‹ BlueBubbles (macOS app)
โ”‚ โ—‹ LINE (Messaging API)
โ”‚ โ—‹ Zalo (Bot API)
โ”‚ โ— Zalo (Personal Account) (recommended ยท QR login)
โ”‚ โ—‹ Synology Chat (Webhook)
โ”‚ โ—‹ Tlon (Urbit)
โ”‚ โ—‹ Discord (Bot API)
โ”‚ โ—‹ iMessage (imsg)
โ”‚ โ—‹ IRC (Server + Nick)
โ”‚ โ—‹ QQ Bot
โ”‚ โ—‹ Signal (signal-cli)
โ”‚ โ—‹ Slack
โ”‚ โ—‹ Telegram (Bot API)
โ”‚ โ—‹ Twitch (Chat)
โ”‚ โ—‹ WhatsApp (QR link)
โ”‚ โ—‹ Skip for now
โ””

remote jungleBOT
#

Choose Skip for now.

You are fixing the model/auth, not setting up a new channel.
Picking a channel here just adds extra moving parts you do not need right now.

#

Choose Skip for now here too.

You do not want to keep wiring more Google-dependent stuff while Google quota is the thing breaking you.
Finish the wizard with the minimum changes, then test the bot again.

high geyser
#

says:
โ”‚
โ—† Configure skills now? (recommended)
โ”‚ โ— Yes / โ—‹ No
โ””

remote jungleBOT
#

Choose No.

Same reason as before, keep this as small as possible.
Right now you only want to recover the model, not add skills.

high geyser
#

says:
โ—‡ Hooks โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ Hooks let you automate actions when agent commands are issued. โ”‚
โ”‚ Example: Save session context to memory when you issue /new or /reset. โ”‚
โ”‚ โ”‚
โ”‚ Learn more: https://docs.openclaw.ai/automation/hooks โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—† Enable hooks?
โ”‚ โ—ป Skip for now
โ”‚ โ—ป ๐Ÿš€ boot-md
โ”‚ โ—ป ๐Ÿ“Ž bootstrap-extra-files
โ”‚ โ—ป ๐Ÿ“ command-logger
โ”‚ โ—ป ๐Ÿ’พ session-memory
โ””

remote jungleBOT
#

Select Skip for now only.

You are very close, and hooks are unrelated to the rate-limit fix.
Finish with the smallest setup possible.

high geyser
#

says:
โ”” Please select at least one option.
Press space to select, enter to submit

remote jungleBOT
#

Yep, it is a checkbox list.

Press space on Skip for now so it gets selected, then press enter.

high geyser
#

says:
โ—‡ Gateway service runtime โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ QuickStart uses Node for the Gateway service (stable + supported). โ”‚
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—† Gateway service already installed
โ”‚ โ— Restart
โ”‚ โ—‹ Reinstall
โ”‚ โ—‹ Skip
โ””

remote jungleBOT
#

Choose Restart.

That is exactly what you want, apply the new config and bring the gateway back up.

high geyser
#

says:
โ”‚ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—† How do you want to hatch your bot?
โ”‚ โ— Hatch in TUI (recommended)
โ”‚ โ—‹ Open the Web UI
โ”‚ โ—‹ Do this later
โ””

remote jungleBOT
#

Choose Hatch in TUI.

That is the fastest way to verify the bot now answers again with Claude instead of hitting the Google rate limit.

high geyser
#

long response. end says:
gateway connected | idle
agent main (main) | session main (slack:g-agent-main-main) |
google/gemini-2.5-flash | think low | tokens 389k/200k (195%)

remote jungleBOT
#

Aha, that explains it.

Your config changed, but the current session is still pinned to the old Google model, and it is also badly over context limit:

  • google/gemini-2.5-flash
  • tokens 389k/200k (195%)

So now do this in the TUI:

/new anthropic/claude-sonnet-4-6

Then send one simple test message.

That does two things at once:

  1. starts a fresh session
#
  1. forces the session onto the Anthropic model

So the real issue now is not setup anymore, it is that your existing session is still the old Gemini session.

high geyser
#

says:
openclaw tui - ws://127.0.0.1:18789 - agent main (main) - session
tui-20009142-143e-4f0b-8051-82d6d62f560a

session agent:main:tui-20009142-143e-4f0b-8051-82d6d62f560a

new session: tui-20009142-143e-4f0b-8051-82d6d62f560a
connected | idle
agent main (main) | session tui-20009142-143e-4f0b-8051-82d6d62f560a
(slack:g-agent-main-main) | google/gemini-2.5-flash | think adaptive | tokens
?/200k

remote jungleBOT
#

Okay, so the TUI is still attached to the old Slack-bound session, and that session is still on Google.

Do this inside the TUI now, exactly:

/model anthropic/claude-sonnet-4-6

Press Enter.

Then type:

/reset

Then send one normal test message.

#

What you should see

The status line should stop saying:

google/gemini-2.5-flash

and switch to:

anthropic/claude-sonnet-4-6

If it does not change after /model ..., then run:

#
/model status

and paste that output.

high geyser
#

says:
(openclaw-tui) | anthropic/claude-sonnet-4-6 | think adaptive | tokens ?/200k

remote jungleBOT
#

Perfect, that is the fix. ๐ŸŽ‰

You are now on:

anthropic/claude-sonnet-4-6

If you have not already, do one quick:

/reset

Then send a simple test message like โ€œhiโ€.

If it replies normally, you are unstuck.

#

After that, if this solved it, please right-click the solution message โ†’ Apps โ†’ โœ… Mark Solution so Answer Overflow can index it for the next person.

high geyser
#

I am being given a couple of errors this morning:

  1. "The AI service is temporarily overloaded. Please try again in a moment."
  2. "terminated"

I havent done anything yet this morning. These are immediate responses. Every time I switch to ANY gemini option I get rate limit and other errors right away,

Something is wrong.

remote jungleBOT
#

Yeah, thatโ€™s frustrating, and I think there are two separate provider-side failures happening now:

  1. Gemini is still getting immediate Google quota/rate-limit failures on your project.
  2. Claude is now sometimes returning overloaded, and OpenClaw surfaces that as:

    โ€œThe AI service is temporarily overloaded. Please try again in a moment.โ€

terminated is usually the follow-on abort, not the root cause.

So I do not think this points to one local config typo anymore. It looks like upstream provider failures.

Next check, exact commands

Run these on the OpenClaw host:

openclaw status
#
openclaw gateway status
openclaw logs --follow

Then, in the TUI, force a fresh Claude session:

/new anthropic/claude-sonnet-4-6
hi

Then paste the 10-20 log lines around the failure.

What I expect

  • If the logs show overloaded_error, that is Anthropic-side overload.
  • If the logs show 429, quota, or resource exhausted, that is still Google-side quota.
#
  • If the gateway itself is unhealthy, openclaw gateway status will show it.

So, short version:
Gemini still looks quota-blocked, and Claude may be temporarily overloaded.
Paste the logs and we can stop guessing.

high geyser
#

I'm trying to be on Gemini 2.5 pro

remote jungleBOT
#

Got it, but the important part is this:

Switching to Gemini 2.5 Pro will not fix a Google project/quota problem.

If your Google project is what is failing, then:

  • flash
  • flash-lite
  • pro

can all fail immediately for the same root reason.

If you want to test specifically whether Pro works, do it in a fresh session:

/new google/gemini-2.5-pro
#

If that immediately gives you:

  • rate limit
  • quota exceeded
  • resource exhausted
  • or similar

then the problem is not โ€œwrong Gemini modelโ€, it is your Google project/tier/quota state.

So my honest recommendation is:

  • keep Claude as your working default for now
  • only test Gemini 2.5 Pro in a fresh session
  • if Pro fails immediately too, go back to the Google quota/project investigation

If you run /new google/gemini-2.5-pro and paste the exact error, I can tell you very quickly which bucket it is.

high geyser
#

ok but if i look at Gemini API Rate Limit I am nowhere near the limit on ANY model.

remote jungleBOT
#

Okay, that does change the diagnosis.

If AI Studio shows you are nowhere near the limit, then I stop assuming this is normal quota exhaustion.

At that point the likely causes are:

  1. OpenClaw is not actually using the Google credential you think it is
  2. it is using a different Google auth lane/profile
  3. the 429 is coming from a different Google quota surface than the one you are looking at

Best next check

Run these on the OpenClaw host:

openclaw models auth order get --provider google
#
openclaw models status --probe --probe-provider google --json
openclaw logs --follow

Then trigger one Gemini request.

Why this matters

models status --probe will tell us what OpenClaw actually sees for Google:

  • which provider/profile it is trying
  • whether the probe result is ok, rate_limit, auth, etc.
  • the real live failure bucket

If that probe says rate_limit while AI Studio still shows plenty of headroom, then I would strongly suspect credential/profile mismatch or a Google-side weirdness, not ordinary usage.

Paste the probe output and I can read it.

high geyser
#

does this mean in terminal?
Run these on the OpenClaw host:

remote jungleBOT
#

Yes, exactly, in a terminal on the machine where OpenClaw is running.

So:

  • not in the TUI chat box
  • not in Slack
  • not in Control

If OpenClaw runs on your Mac, open Terminal there.
If it runs on a server/VPS, SSH into that machine first, then run them.

high geyser
#

16:47:27+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"probe-663d77ea-426b-4b26-afb6-6728f3c79794","isError":true,"error":"LLM error: {\n "error": {\n "code": 400,\n "message": "Budget 0 is invalid. This model only works in thinking mode.",\n "status": "INVALID_ARGUMENT"\n }\n}","failoverReason":null,"model":"gemini-2.5-pro","provider":"google","rawErrorPreview":"{"error":{"message":"{\n \"error\": {\n \"code\": 400,\n \"message\": \"Budget 0 is invalid. This model only works in thinking mode.\",\n \"status\": \"INVALID_ARGUMENT\"\n }\n}\n","code":400,"status":""}}","rawErrorHash":"sha256:c7a5e9857a06","rawErrorFingerprint":"sha256:e991f999ca0d","providerRuntimeFailureKind":"unknown","providerErrorMessagePreview":"{\n "error": {\n "code": 400,\n "message": "Budget 0 is invalid. This model only works in thinking mode.",\n "status": "INVALID_ARGUMENT"\n }\n}"} embedded run agent end

remote jungleBOT
#

Nice, this is actually a different error, and it is not a rate limit.

This line tells the story:

Budget 0 is invalid. This model only works in thinking mode.

So for Gemini 2.5 Pro, OpenClaw is sending thinking budget = 0, and Google rejects it.

Try this in the TUI

/think low
/new google/gemini-2.5-pro

Then send a test message.

#

What this means

  • Gemini 2.5 Pro needs thinking mode on
  • your current run/probe is effectively sending thinking off
  • that produces a 400 INVALID_ARGUMENT, not a quota error

So for Pro, the fix is: enable thinking.

If it still fails after /think low, paste the next error, because then we can separate:

  • thinking config problem
    from
  • actual Google quota problem

Docs: https://docs.openclaw.ai/tools/slash-commands

high geyser
#

how do I turn thinking on permanently

#

I did this yesterday.
and I think yesterday Gemini was trying to use auth rather than api

remote jungleBOT
#

Yes. If you want it permanently, put it in config, not just /think.

Best option for your case, only Gemini 2.5 Pro

Add this to ~/.openclaw/openclaw.json:

{
  agents: {
    defaults: {
      models: {
        "google/gemini-2.5-pro": {
          params: { thinking: "low" },
        },
      },
    },
#
  },
}

Then restart:

openclaw gateway restart

If you want thinking on by default for everything

Use this instead:

#
{
  agents: {
    defaults: {
      thinkingDefault: "low",
    },
  },
}

Quick summary

  • /think low = current session
  • thinkingDefault = all sessions by default
  • models["google/gemini-2.5-pro"].params.thinking = just Gemini 2.5 Pro

Docs:

#

Yeah, I think youโ€™re right that yesterday there was some Google auth/API confusion.

But the log you pasted today is clearer:

  • provider: "google"
  • model: "gemini-2.5-pro"
  • code: 400
  • Budget 0 is invalid. This model only works in thinking mode.

That means this specific failure is on the Google API path, not the Gemini CLI/OAuth path.

So I think there were actually two separate problems:

  1. Yesterday: Google auth/API path confusion
  2. Today: Gemini 2.5 Pro is being called with thinking off / budget 0

So for todayโ€™s Pro error, the fix is still:

#
  • force the model to google/gemini-2.5-pro
  • turn thinking on for that model/session

If you want, I can help you cleanly separate the two Google providers so OpenClaw only uses the API path for Gemini.

high geyser
#

says:
Last login: Wed Apr 15 09:47:04 on ttys000
/Users/calebmarkus/.openclaw/completions/openclaw.zsh:3719: command not found: compdef
calebmarkus@Mac ~ % {
agents: {
defaults: {
models: {
"google/gemini-2.5-pro": {
params: { thinking: "low" },
},
},
},
cursh> openclaw gateway restart
cursh> json5
cursh> {
agents: {
defaults: {
thinkingDefault: "low",
},
},
}
cursh>

remote jungleBOT
#

Yep, you pasted JSON into the shell, so it is waiting for more input. That cursh> prompt means โ€œstill inside the unfinished blockโ€.

Do this

  1. Press Ctrl+C once, to get back to a normal prompt.
  2. Then run these exact commands:
openclaw config set agents.defaults.thinkingDefault low
openclaw gateway restart
  1. Optional check:
openclaw config get agents.defaults.thinkingDefault
#

It should print:

low

Important

Do not paste the JSON block into Terminal.
Use the openclaw config set ... command instead.

Also, this line:

command not found: compdef
#

is just a shell completion annoyance, not the Gemini problem.

high geyser
#

now what?

remote jungleBOT
#

Now test it.

1. Confirm the config stuck

openclaw config get agents.defaults.thinkingDefault

It should say:

low

2. Start a fresh Gemini Pro session

In the TUI, run:

#
/new google/gemini-2.5-pro

3. Send one simple test

hi

4. What to expect

  • If it replies normally, the thinking-mode issue is fixed.
  • If it still errors, paste the exact new error and weโ€™ll know what is left.
high geyser
#

seemed to be workin yesterday and now it is not responding. plenty of rate limit. it must still be something to do with the wau that gemini is set up. ike auth vs API. because it basically stops working when i switch to gemini

#

claude works perfectly and immediately

remote jungleBOT
#

Yeah, Iโ€™m starting to suspect the same thing.

Your earlier setup showed both of these Google paths present:

  • google = Gemini API
  • google-gemini-cli = Gemini CLI/OAuth

So the cleanest next step is to separate them instead of guessing.

In Terminal, run these two commands separately

openclaw models status --probe --probe-provider google --json
openclaw models status --probe --probe-provider google-gemini-cli --json

Then, in the TUI, force the API path explicitly

#
/new google/gemini-2.5-pro

Important: use the full google/... model id, not just gemini-2.5-pro.

Why

If:

  • google probe works but google-gemini-cli probe fails, then it really is an auth-path problem
  • both fail, then it is not just CLI vs API
  • TUI only breaks when you use fuzzy Gemini names, then model/provider resolution is probably picking the wrong Google lane

Paste those two probe outputs and we can stop hand-waving and pin it down.

#

Thatโ€™s actually very helpful.

If Claude works perfectly and immediately, then:

  • the gateway is alive
  • your session routing is fine
  • OpenClaw itself is basically okay

So the problem is now isolated to the Google/Gemini provider path, not the whole bot.

That makes the next step much more targeted:

openclaw models status --probe --probe-provider google --json
openclaw models status --probe --probe-provider google-gemini-cli --json
#

If Claude works and Gemini does not, I would stop treating this as a generic โ€œrate limitโ€ problem and start treating it as a Google provider/config/auth-lane problem.

Paste those two probe outputs and we should be able to pin down whether it is:

  • API vs CLI auth confusion
  • thinking config
  • or a Google-side provider error.
high geyser
#

i am guessing I have no idea. also these instructions arent good enough. i know nothing. is this somthing i do in terminal?

remote jungleBOT
#

Yes, this is in Terminal on the Mac where OpenClaw is running.

Youโ€™re right, let me make this dead simple.

Do exactly this

  1. Open the Terminal app
  2. Copy and paste this, then press Enter:
openclaw models status --probe --probe-provider google --json
  1. Wait for it to finish
  2. Copy all the output and paste it here

Then do the second one:

#
openclaw models status --probe --probe-provider google-gemini-cli --json
  1. Wait for it to finish
  2. Copy all the output and paste it here

Important

Do this in:

  • Terminal โœ…

Do not do it in:

  • Slack
  • TUI chat
  • Control UI

If you want, just do the first command only right now and paste the result. That is enough for the next step.

high geyser
#

the response is too big to copy paste here. here is a section of it:
r 15 09:53:16 on ttys000
/Users/calebmarkus/.openclaw/completions/openclaw.zsh:3719: command not found: compdef
calebmarkus@calebs-Mac-mini ~ % openclaw models status --probe --probe-provider google --json
โ”‚
โ—‡
{
"configPath": "/Users/calebma
kus/.openclaw/openclaw.json",
"agentDir": "/Users/calebmarkus/.openclaw/agents/main/agent",
"defaultModel": "google/gemini-2.5-pro",
"resolvedDefault": "google/gemini-2.5-pro",
"fallbacks": [],
"imageModel": null,
"imageFallbacks": [],
"aliases": {
"sonnet": "anthropic/claude-sonnet-4-6",
"opus": "anthropic/claude-opus-4-6",
"gemini": "google/gemini-3.1-pro-preview"
},
"allowed": [
"anthropic/claude-sonnet-4-6",
"anthropic/claude-opus-4-6",
"google/gemini-3.1-pro-preview"
],
"auth": {
"storePath": "/Users/calebmarkus/.openclaw/agents/main/agent/auth-profiles.json",
"shellEnvFallback": {
"enabled": false,
"appliedKeys": []
},
"providersWithOAuth": [
"google (1)"
],
"missingProvidersInUse": [],
"providers": [
{
"provider": "anthropic",
"effective": {
"kind": "profiles",
profiles.json

    },
#

here is some of that response:
"probes": {
"startedAt": 1776347747501,
"finishedAt": 1776347751685,
"durationMs": 4184,
"totalTargets": 1,
"options": {
"provider": "google-gemini-cli",
"profileIds": [],
"timeoutMs": 8000,
"concurrency": 2,
"maxTokens": 8
},
"results": [
{
"provider": "google-gemini-cli",
"model": "google-gemini-cli/gemini-2.0-flash",
"profileId": "google-gemini-cli:default",
"label": "google-gemini-cli:default",
"source": "profile",
"mode": "api_key",
"status": "ok",
"latencyMs": 1382
}

remote jungleBOT
#

This snippet already shows one real config problem.

Your config says:

  • defaultModel: google/gemini-2.5-pro

But your allowlist says:

  • allowed:
    • anthropic/claude-sonnet-4-6
    • anthropic/claude-opus-4-6
    • google/gemini-3.1-pro-preview

So google/gemini-2.5-pro is not even in the allowed model list. That mismatch can absolutely cause weird Gemini behavior.

Do this next, in Terminal

#
openclaw models set google/gemini-3.1-pro-preview
openclaw gateway restart

Then test Gemini again.

Why this matters

Before we chase API vs CLI auth, we should first stop using a Gemini model that is outside your current allowlist.

If google/gemini-3.1-pro-preview works but google/gemini-2.5-pro does not, then we have narrowed it down a lot:

  • not โ€œGemini is brokenโ€
  • more like your 2.5 Pro config/model selection is broken

So, short version:
Yes, something is wrong, and this snippet already proves a config mismatch.

#

This is actually really useful.

It tells us:

  • google-gemini-cli probe = ok
  • so Gemini in general is not dead
  • the failure is much more likely in the plain google provider path or in the specific 2.5 Pro config/model setup

So weโ€™ve narrowed it down a lot.

Next thing I need

Please paste the matching results block from the other probe, the one for:

openclaw models status --probe --probe-provider google --json
#

I only need the part that looks like:

"results": [
  {
    ...
  }
]

What this already means

If:

  • google-gemini-cli = ok
  • google = fails

then this is not โ€œGemini is brokenโ€, it is specifically:

#
  • google API provider path
  • or the selected Google model/config

That is a much better place to be than before.

high geyser
#

"results": [
{
"provider": "google-gemini-cli",
"model": "google-gemini-cli/gemini-2.0-flash",
"profileId": "google-gemini-cli:default",
"label": "google-gemini-cli:default",
"source": "profile",
"mode": "api_key",
"status": "ok",
"latencyMs": 1382

remote jungleBOT
#

That is the same google-gemini-cli result again.

I need the one where it says:

"provider": "google"

not:

"provider": "google-gemini-cli"

Easiest way

Run this in Terminal:

#
openclaw models status --probe --probe-provider google --json | grep -A 20 '"results"'

Then paste that output here.

What Iโ€™m trying to compare is:

  • google-gemini-cli โ†’ already ok
  • google โ†’ still unknown

That comparison is the key.

high geyser
#

"provider": "google",
"effective": {
"kind": "profiles",
"detail": "~/.openclaw/agents/main/agent/auth-profiles.json"
},
"profiles": {
"count": 2,
"oauth": 0,
"token": 1,
"apiKey": 1,
"labels": [
"google:default=AIzaSyCN...1s3h2O5A",
"google:manual=token:AIzaSyCN...1s3h2O5A"
]
},
"env": {
"value": "AIzaSyCN...1s3h2O5A",
"source": "env: GEMINI_API_KEY"
}
},
{

remote jungleBOT
#

Okay, this is actually a strong clue.

Your google provider has the same key stored multiple ways:

  • google:default = API key
  • google:manual = token
  • env: GEMINI_API_KEY = API key

So yes, you were basically right, this does look like Google auth/API confusion.

Simplest next step

Force OpenClaw to use only the normal Google API-key profile:

openclaw models auth order set --provider google google:default
#
openclaw gateway restart

Then test again in a fresh session with the full model id:

/new google/gemini-2.5-pro

Why

The suspicious part is this:

google:manual=token:...
#

That token-style Google profile is weird, and I do not trust it.

So for now we want:

  • not google:manual
  • not guessing between multiple Google creds
  • just google:default

If you want, after you run those two terminal commands, paste the output of:

openclaw models auth order get --provider google

and Iโ€™ll confirm it is locked to the right one.

high geyser
#

it didnt respond to my test message

this was the response from the restart:

๐Ÿฆž OpenClaw 2026.4.12 (1c0672b) โ€” No $999 stand required.

Restarted LaunchAgent: gui/501/ai.openclaw.gateway
calebmarkus@calebs-Mac-mini ~ %

remote jungleBOT
#

The restart itself looks fine.

So now we need to catch the actual failure, because โ€œno responseโ€ by itself is not enough.

Do these two things

1. Confirm Google auth order is really pinned

In Terminal:

openclaw models auth order get --provider google

Paste that output here.

2. Watch logs while you test

#

In another Terminal window:

openclaw logs --follow

Then in the TUI, do this exactly:

/new google/gemini-2.5-pro
hi

Then paste the 10-20 log lines that appear right after you send hi.

Why

#

Right now we know:

  • restart worked
  • Claude works
  • Gemini still fails silently

So the next useful thing is the live Gemini failure line, not another restart.

high geyser
#

๐Ÿฆž OpenClaw 2026.4.12 (1c0672b)
Type the command with confidenceโ€”nature will provide the stack trace if needed.

Agent: main
Provider: google
Auth state file: ~/.openclaw/agents/main/agent/auth-state.json
Order override: google:default
calebmarkus@calebs-Mac-mini ~ %

remote jungleBOT
#

Good, that confirms the Google auth order is now pinned correctly:

Order override: google:default

So we have ruled out the google:manual token profile stealing the request.

That means the remaining problem is more likely:

  • the Google provider/model request itself
  • or the Gemini 2.5 Pro config/thinking path

Next step, exactly

  1. Open a second Terminal window
  2. Run:
#
openclaw logs --follow
  1. Then in the TUI run:
/new google/gemini-2.5-pro
hi
  1. Copy the 10-20 log lines that appear right after you send hi

We are very close now.
The auth-lane confusion was real, but it is not the last problem.

high geyser
#

nothing appeared after "hi"

remote jungleBOT
#

That actually helps.

If nothing appeared in the logs after hi, then letโ€™s stop using the TUI as the test path and hit Gemini directly from Terminal.

Run this in Terminal

openclaw infer model run --model google/gemini-2.5-pro --prompt "hi" --json

Then paste the output here.

Why

This bypasses the TUI/session layer and tests the Google model directly.

So now we can separate:

#
  • TUI/session issue
    from
  • Gemini provider/model issue

If this command errors, weโ€™ll get the real Gemini failure directly.
If it works, then the problem is in the session/TUI path, not Gemini itself.

high geyser
#

there is no output

remote jungleBOT
#

Okay, letโ€™s make this binary so we can tell whether it is hanging or exiting silently.

Run this exact command in Terminal:

openclaw infer model run --model google/gemini-2.5-pro --prompt "hi"; echo EXIT:$?

Then tell me exactly what happened:

  • did it hang and never return to the prompt?
  • or did it return to the prompt and print something like EXIT:0 or EXIT:1?

If it hangs, that points one way.
If it exits immediately with a code, that points another way.

Right now I just need to know hang vs exit.

high geyser
#

nothing happened

remote jungleBOT
#

Got it, that means it is hanging, not returning an error.

That is useful.

Next comparison test

Run the same command with Claude:

openclaw infer model run --model anthropic/claude-sonnet-4-6 --prompt "hi"; echo EXIT:$?

What this tells us

  • If Claude returns but Gemini hangs, then the hang is specific to the Google/Gemini path
  • If both hang, then the issue is not Gemini-specific and we need to look at the infer/runtime path
#

So right now I just want to know:

Does Claude hang too, or does Claude return normally?

high geyser
#

what does: Run the same command with Claude:

remote jungleBOT
#

It means: copy and paste this exact command into Terminal, then press Enter:

openclaw infer model run --model anthropic/claude-sonnet-4-6 --prompt "hi"; echo EXIT:$?

That is the Claude version of the Gemini test.

So:

  • Gemini test was:

    openclaw infer model run --model google/gemini-2.5-pro --prompt "hi"; echo EXIT:$?
    
  • Claude test is:

#
  openclaw infer model run --model anthropic/claude-sonnet-4-6 --prompt "hi"; echo EXIT:$?

Run the Claude one and tell me:

  • did it hang
  • or did it print a reply / EXIT:...
gloomy ironBOT
high geyser
#

ok nothing happened

remote jungleBOT
#

Okay. If both direct infer commands hang, then I do not think this is a simple โ€œyou configured Gemini wrongโ€ problem anymore.

I think this is likely a real bug/regression in 2026.4.12, especially because:

  • Claude works in normal use
  • Gemini breaks when you switch to it
  • google-gemini-cli probe came back ok
  • your Google auth order is pinned to google:default
  • AI Studio shows you are not near rate limits
  • direct infer commands are hanging instead of giving clean errors

My honest recommendation

For today, use:

  • Claude as the working model
  • or try the google-gemini-cli lane as a workaround
#

And for the actual bug, please file a GitHub issue here:

https://github.com/openclaw/openclaw/issues

Include these facts in the issue

  • OpenClaw version: 2026.4.12
  • Claude works immediately
  • Switching to Gemini causes hangs / no response
  • AI Studio shows plenty of quota remaining
  • google-gemini-cli probe status = ok
  • google auth order pinned to google:default
  • openclaw infer model run ... hangs with both Google and Claude in Terminal

That is enough signal that I would stop blaming your setup and start treating this as a bug.

If you want, I can help you write the issue text cleanly so you can paste it.

high geyser
#

I want to use gemini and there a bunch of models and available rate limit. Lets get it working!

remote jungleBOT
#

Iโ€™m with you, letโ€™s get Gemini working, but I want to use the path that already proved healthy.

The one thing we know works is:

google-gemini-cli

Its probe came back ok.

So letโ€™s test that exact Gemini lane first

In the TUI, run:

/new google-gemini-cli/gemini-2.0-flash
#

Then send:

hi

Why this is the best next move

Right now we have two Gemini paths:

  • google โ†’ messy / inconsistent / hanging
  • google-gemini-cli โ†’ probe says ok

So instead of fighting the broken path, letโ€™s try the Gemini path that already passed a live probe.

What this tells us

#
  • If google-gemini-cli/gemini-2.0-flash replies, then Gemini works and the broken thing is specifically the plain google API path
  • If even that fails, then the problem is broader

So, one very concrete step:

/new google-gemini-cli/gemini-2.0-flash

Then tell me whether it replies.

high geyser
#

i missed this:
openclaw infer model run --model google/gemini-2.5-pro --prompt "hi"; echo EXIT:$?

14:14:17+00:00 info agents/tool-images {"subsystem":"agents/tool-images"} {"label":"session:history","sourceMimeType":"image/png","sourceWidth":1333,"sourceHeight":949,"sourceBytes":150411,"maxBytes":5242880,"maxDimensionPx":1200,"triggerOverBytes":false,"triggerOverDimensions":true,"outputMimeType":"image/jpeg","outputBytes":65241,"outputQuality":85,"outputMaxSide":1200,"byteReductionPct":56.6} Image resized to fit limits: 1333x949px 146.9KB -> 63.7KB (-56.6%)

remote jungleBOT
#

Ah, that is a real clue.

This line means your tiny "hi" test was not actually a clean tiny text-only request:

"label":"session:history"

and it was even processing an old image from session history.

So OpenClaw is still dragging old session history/media into the Gemini run. That can absolutely make the test misleading.

What this means

The problem is not just auth anymore.
Part of the problem is that your Gemini test is not starting from a truly clean session.

#

So, do not use that infer model run test anymore

Instead, do this in the TUI:

/new google/gemini-2.5-pro

Then immediately send:

hi

What I want you to watch for

If the logs still mention:

#
session:history

or image resizing again, then the session is not actually fresh, and that is a big part of the bug.

So this was a very good catch, it tells us:

  • the test path was polluted by old history/media
  • Gemini is not getting a clean request
  • we need a truly fresh Gemini session, not a reused one with baggage

If you do /new google/gemini-2.5-pro and still see session:history image processing, paste that, because then we have a very concrete bug report.

high geyser
#

what is the tui?
terminal?

remote jungleBOT
#

Yes, the TUI is the text interface inside Terminal.

So:

  • Terminal = the Mac app/window
  • TUI = the OpenClaw screen running inside Terminal

If you see something like this:

openclaw tui - ws://127.0.0.1:18789 ...

that is the TUI.

If you see something like:

#
calebmarkus@Mac ~ %

that is the normal Terminal prompt.

So when I say:

/new google/gemini-2.5-pro

I mean: type that inside the OpenClaw TUI, not at the normal shell prompt.

high geyser
#

here is some of it: /new google/gemini-2.5-pro
14:24:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat disconnected code=1001 reason=n/a conn=dd34fd7b-f8ac-4b2d-a6ca-4d3be7ef6032
14:24:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} webchat connected conn=ff7c7067-cb29-4fa5-b87f-a51267652033 remote=127.0.0.1 client=openclaw-control-ui webchat v2026.4.12
14:24:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} โ‡„ res โœ“ commands.list 69ms conn=ff7c7067โ€ฆ2033 id=78202f96โ€ฆ0687
14:24:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} โ‡„ res โœ“ chat.history 99ms conn=ff7c7067โ€ฆ2033 id=d7bc1210โ€ฆ3cdc
14:24:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} โ‡„ res โœ“ models.list 71ms conn=ff7c7067โ€ฆ2033 id=5114c0daโ€ฆ3536
14:24:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} โ‡„ res โœ“ node.list 102ms conn=ff7c7067โ€ฆ2033 id=ea66c0c1โ€ฆ5e53
14:24:03+00:00 info gateway/ws {"subsystem":"gateway/ws"} โ‡„ res โœ“ device.pair.list 103ms conn=ff7c7067โ€ฆ2033 id=78f32256โ€ฆb3a6

#

what now?

remote jungleBOT
#

Do this, step by step:

1. Open the TUI

In normal Terminal, run:

openclaw tui

2. In the OpenClaw TUI, type:

/new google/gemini-2.5-pro

Press Enter.

#

3. Then type:

hi

Press Enter.

4. Tell me what happens

  • does it reply?
  • does it hang?
  • does it show an error?

That is the next exact step.

high geyser
#

I have been doing all of this in terminal. no idea where to find openclaw TUI

remote jungleBOT
#

Got it. The TUI is not a separate app.

You open it from Terminal by running this command:

openclaw tui

Then press Enter.

If it opens, your Terminal window will stop showing the normal shell prompt and instead show an OpenClaw screen that starts with something like:

openclaw tui - ws://127.0.0.1:18789 ...

That screen is the TUI.

#

So the exact flow is:

  1. Open Terminal
  2. Type:
    openclaw tui
    
  3. Press Enter
  4. When that OpenClaw screen appears, type:
    /new google/gemini-2.5-pro
    
  5. Then type:
    hi
    
#

If openclaw tui itself does not open, tell me what it prints.

high geyser
#

openclaw tui
this has no reaction

remote jungleBOT
#

Okay, forget the TUI. It is just getting in the way.

Letโ€™s do the simplest terminal-only Gemini workaround with the one Gemini lane that already probed ok.

In Terminal, run these exact commands

openclaw models set google-gemini-cli/gemini-2.0-flash
openclaw gateway restart

Then test OpenClaw normally again

Try it in the place where Claude already works for you.

Why this is the best next step

#

We already know:

  • google-gemini-cli probe = ok
  • plain google path = messy / inconsistent
  • TUI is not helping

So this is the cleanest way to get Gemini working today without fighting the broken path.

If those two commands do not behave normally, tell me exactly what Terminal prints.

high geyser
#

what openclaw screen? nothing is popping up

I ran this:
openclaw models set google-gemini-cli/gemini-2.0-flash
openclaw gateway restart

got this:
openclaw gateway restart
14:29:16+00:00 warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"88537601-f518-4ced-996b-d616f422a787","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

remote jungleBOT
#

Good, this actually tells us something important.

The key line is this:

"model":"gemini-2.5-pro","provider":"google"

So even after you changed the default model, the live session is still pinned to the old Gemini API model.

In other words:

  • openclaw models set ... changed the default
  • but your current conversation/session is still trying to use:
    • google/gemini-2.5-pro

So forget the TUI for now, you do not need it

#

Go to the actual chat where OpenClaw responds and send this exact command there:

/new google-gemini-cli/gemini-2.0-flash

Then send:

hi

Why this matters

That command resets the current session and forces it onto the Gemini lane that already probed ok.

Right now the problem is:

#
  • not just default model config
  • your current session is stuck on the old broken Gemini path

So the next exact move is:

/new google-gemini-cli/gemini-2.0-flash

in the chat where the bot replies. Not in Terminal.

high geyser
#

I dont care what I use right now. 2.5 pro is fine. I just want it to WORK
the chat is now gone and unresponsive

remote jungleBOT
#

Okay, then do not send a normal message first.

In the stuck chat itself, send this exact command:

/new google-gemini-cli/gemini-2.0-flash

Then send:

hi

Why this is different

/new ... is a session command, not a normal model reply.

#

OpenClaw handles it before the broken Gemini run, so it can reset the stuck session and switch models.

So the next exact step is:

  1. in the unresponsive chat, send:
    /new google-gemini-cli/gemini-2.0-flash
    
  2. then send:
    hi
    

That is the cleanest way to get a dead session unstuck without using the TUI.

high geyser
#

the message is not sticking. I press enter and it ignored it completely.
It is sitting on the chat page that says "assistant ready to assist"

remote jungleBOT
#

Okay, that means the web chat page itself is wedged. That is a separate problem from Gemini.

Do not keep fighting the page that says โ€œassistant ready to assistโ€.

Do this instead

Use the actual chat surface where OpenClaw normally replies, for example Slack, and send this there:

/new google-gemini-cli/gemini-2.0-flash

Then send:

hi
#

So, to be very clear

  • Do not use the stuck โ€œassistant ready to assistโ€ page
  • Do use the real chat where Claude already works
  • Send the /new ... command there

If Slack also ignores /new ..., tell me that, because then we are dealing with a session/UI bug, not just Gemini.

high geyser
#

says: /new failed because the app did not respond. Please try again or contact the app developer.

#

openclaw now says: The AI service is temporarily overloaded. Please try again in a moment.

remote jungleBOT
#

That is actually better than before.

It means OpenClaw is now reaching the Gemini path, and the failure is no longer โ€œnothing happensโ€ or the old rate-limit mess.

What it means:

  • not a quota error
  • not the dead/stuck session problem
  • it is now a provider busy / overloaded response

So the state is now

  • session command worked
  • Gemini provider responded
  • provider said: temporarily overloaded

What to do right now

#

Wait a minute, then try again.

If it keeps happening repeatedly on the google-gemini-cli path too, then I would treat that as Gemini-side instability, not your setup.

So honestly, this is progress:

  • before = silent / stuck / mixed auth confusion
  • now = a real provider response from Gemini

If you want, try once more in a minute, and if it still says overloaded, paste that result and Iโ€™ll tell you whether thereโ€™s anything left to tune locally.

high geyser
#

how is overloaded? i am not even doing anything. that cant be correct

#

not responding in the openclaw chat

remote jungleBOT
#

Youโ€™re right, and this is the important distinction:

โ€œOverloadedโ€ does not mean you did too much.

It means the upstream Gemini service said something like:

  • Iโ€™m busy
  • Iโ€™m at capacity
  • try again later

That can happen even on the first request of the day.

So:

  • rate limit = your project/account usage bucket
  • overloaded = provider/server capacity problem
#

Those are different.

Also, one โ€œhiโ€ in OpenClaw is not literally just hi, the runtime can still send:

  • system prompt
  • model params
  • session state
  • sometimes extra context/history

So the provider may still reject it even though you personally did almost nothing.

So yes, I agree with you:

  • it does not look like normal user quota exhaustion
  • it looks more like Gemini-side/provider-path weirdness
  • or OpenClawโ€™s Google path is surfacing provider/network problems as overloaded

That is why Iโ€™ve been getting less convinced this is your fault and more convinced this is a Google/OpenClaw path issue.

#

Okay, then I think weโ€™re past the point of โ€œone more settingโ€.

If it is still not responding in the OpenClaw chat, after all of this, I would treat it as a real bug in the Gemini path/session handling on your setup, not user error.

My recommendation now

Use Claude as the working model for now, and file a bug here:

https://github.com/openclaw/openclaw/issues

You can paste this

OpenClaw 2026.4.12

Problem:
#
Gemini becomes unresponsive / hangs in OpenClaw chat, while Claude works immediately.

What I observed:
- Claude works perfectly
- Switching to Gemini causes hangs / no response / occasional โ€œtemporarily overloadedโ€
- AI Studio shows plenty of Gemini quota remaining
- google-gemini-cli probe returns ok
- google auth order pinned to google:default
- direct infer tests hang
- one infer/log path showed session:history image processing even on a tiny โ€œhiโ€ test
- changing default model did not fix the active session, which appeared stuck on google/gemini-2.5-pro

Why this seems like a bug:
This does not behave like a normal quota problem. It looks like Gemini provider/session handling or provider-path selection is getting wedged.
#

Iโ€™m sorry, I know thatโ€™s frustrating. But I really do think weโ€™ve gathered enough signal that this is not just you misconfiguring something.

If you want, I can help tighten that bug report into a cleaner final version before you post it.

high geyser
#

not possible this is google

#

no. i want to solve this here

remote jungleBOT
#

Fair, and I think that is a good correction.

I do not mean:

  • โ€œyour Google account is wrongโ€
  • or โ€œGoogle itself is definitely brokenโ€

What I mean is:

  • the failure only appears on the Google/Gemini path inside OpenClaw
  • while Claude works
  • so the bug could absolutely be in OpenClawโ€™s Gemini integration, session handling, request shaping, or provider-path routing

So yes, I think the more accurate wording is:

This looks like an OpenClaw bug on the Gemini/Google provider path, not necessarily โ€œGoogle is downโ€ or โ€œyour Google setup is wrong.โ€

#

That is actually consistent with everything youโ€™ve shown so far.

high geyser
#

let's start from the beginning then

#

rediagnose everything

#

I have no other choice

#

you are my only hope to get this working again

#

all my friends are using Gemini like crazy

#

something is wrong with the set up

remote jungleBOT
#

Okay, then letโ€™s stop trying to save the dead chat page.

That page is probably still bound to the old stuck session.

Do this now

  1. Close that OpenClaw chat page/tab completely
  2. After your models set ... + gateway restart, open a brand new OpenClaw chat page
  3. In the new chat, send:
hi

Why

We already saw that:

#
  • changing the default model did not fix the old live session
  • the old session kept trying to use the broken Gemini path

So the cleanest move now is:

  • new page
  • new chat session
  • new default model

If the new chat page still comes up dead after a restart and new default, then we know it is not just one stuck session, it is the web chat/session path itself.

#

Good idea. Letโ€™s wipe the mental stack and do the simplest possible clean test.

Goal

Get any Gemini working first.
We are not touching google/gemini-2.5-pro yet.

Step 1, in Terminal

Run these exact commands:

openclaw models set google-gemini-cli/gemini-2.0-flash
openclaw gateway restart

Step 2

Close all OpenClaw chat pages/tabs you already have open.

#

Step 3

Open a brand new OpenClaw chat page.

Step 4

In the new chat, send:

hi

Step 5

Tell me only one thing:

  • did it reply?
  • yes or no

That is it. One clean test, one clean answer.

#

Hereโ€™s the clean re-diagnosis.

What we know

Not a total OpenClaw failure

  • Claude works
  • so the gateway, routing, and general chat setup are basically alive

Not just โ€œyou hit Google quotaโ€

  • AI Studio says you still have headroom
  • you got different failure shapes, not just one clean 429:
    • rate limit / quota-looking errors
    • Budget 0 is invalid. This model only works in thinking mode.
    • network connection error
    • temporarily overloaded
    • silent hangs / no response
#

Not โ€œGemini is completely deadโ€

  • google-gemini-cli probe came back ok

What is actually broken

I think there are multiple overlapping issues on the Gemini path:

  1. Plain google provider path is unstable or misconfigured

    • we saw mixed Google auth sources:
      • profile api key
      • token-style profile
      • env key
    • that is messy and can cause weird routing/selection behavior
  2. google/gemini-2.5-pro had a model-specific config problem

    • it returned:
      • Budget 0 is invalid
#
  • which means thinking/config was wrong for that model
  1. Your active chat/session got wedged
    • changing the default model did not move the live session off the old broken model
    • some tests were also polluted by old session:history / image baggage

What I think is most likely

The simplest honest diagnosis is:

Claude path is healthy.
Gemini path inside OpenClaw is messy right now because of a combination of stale session state, mixed Google auth sources, and a bad google/gemini-2.5-pro request path.

What I would do next, if we want the highest chance of success

Do not start with google/gemini-2.5-pro.

#

Start with the Gemini lane that already proved healthy:

openclaw models set google-gemini-cli/gemini-2.0-flash
openclaw gateway restart

Then use a brand new chat/session and test hi.

That is still the cleanest path to getting Gemini working at all before going back up to 2.5 Pro.

#

Okay. Then letโ€™s take the safest Gemini route we have.

In Terminal, run these exactly:

openclaw models set google-gemini-cli/gemini-2.0-flash
openclaw gateway restart

Then:

  1. close the current dead OpenClaw chat
  2. open a brand new OpenClaw chat
  3. send:
#
hi

If it still does not reply, tell me exactly what the new chat shows, word for word.

#

Iโ€™ve got you. Weโ€™ll keep this mechanical and do one thing at a time.

Do this now, exactly

In Terminal, copy and paste these two commands:

openclaw models set google-gemini-cli/gemini-2.0-flash
openclaw gateway restart

Then do this

  1. close the broken OpenClaw chat page
  2. open a new OpenClaw chat page
  3. send:
#
hi

Then tell me only this

  • did it reply, yes or no?

No extra debugging yet. Just that one clean test.

#

I believe you, and that actually fits what weโ€™ve been seeing.

That is exactly why I do not think the problem is โ€œGemini is broken everywhereโ€.

I think the problem is much narrower:

  • your OpenClaw Gemini path
  • your current Gemini session state
  • or how this install is routing Gemini

So this is almost certainly not โ€œGemini doesnโ€™t workโ€.
It is โ€œGemini in this OpenClaw setup is wedgedโ€.

That is why Iโ€™m trying to get you onto the cleanest possible Gemini lane first:

#
openclaw models set google-gemini-cli/gemini-2.0-flash
openclaw gateway restart

Then:

  • new chat
  • send hi

Tell me yes or no if it replies.

#

Yes, I agree.

Something is wrong with the Gemini setup path in this install.

Not the whole install, because:

  • Claude works
  • the gateway runs
  • chats exist

But the Gemini side is clearly unhealthy.

So the goal right now is not to debate that anymore.
It is to force the cleanest Gemini path we have and see if it responds:

openclaw models set google-gemini-cli/gemini-2.0-flash
#
openclaw gateway restart

Then:

  • close the dead chat
  • open a new one
  • send hi

That is the shortest path to proving whether the setup can be made to work again right now.