#LLM provider used that I not have configured for agent.

1 messages · Page 1 of 1 (latest)

stiff yew
#

I have a Primary LLM minimax m2.7 and fallback m2.5. for hearbeats I have same but other way around. But I see that I have 2 agents that have used Claude Pus provider. I do have this provider in my openclaw.json file but not configured for agent work. I cannot find why claude llm is used.

sinful mirageBOT
#

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

nocturne pulsarBOT
#

First check: what does openclaw --version show?

Most likely places Claude/Anthropic can sneak in:

  1. Session override — /model or Control UI model picker persists per session. Check the same chat/thread with:

    /model status
    /status
    

    And globally:

    openclaw sessions --all-agents --json
    
  2. Sub-agents inherit caller model unless configured:

#
   agents: {
     defaults: {
       subagents: {
         model: "minimax/...",
       },
     },
   }

Heartbeat model settings do not control sub-agent model choice. Docs: https://docs.openclaw.ai/tools/subagents

  1. Heartbeat has only a single model override:
    agents: { defaults: { heartbeat: { model: "minimax/..." } } }
    
    It is not a separate primary/fallback object. If fallback happens, check normal agents.defaults.model.fallbacks / per-agent fallbacks. Docs: https://docs.openclaw.ai/gateway/heartbeat
#
  1. Claude in agents.defaults.models is only an allowlist/catalog, not active routing by itself. Active routing is agents.defaults.model.primary, fallbacks, per-agent agents.list[].model, session overrides, cron payloads, and sub-agent settings.

  2. Agent runtime — check for:

    agentRuntime: { id: "claude-cli" }
    

    under agents.defaults or agents.list[].

Useful safe checks:

openclaw models status
openclaw config get agents.defaults.model
openclaw config get agents.defaults.heartbeat
openclaw config get agents.defaults.subagents
openclaw config get agents.list
stiff yew
#

"key": "agent:neon:telegram:direct:@neonnajef",
"updatedAt": 1777228378141,
"ageMs": 265543368,
"sessionId": "beebe403-f080-4815-9648-3fcb33c5aa08",
"totalTokens": null,
"totalTokensFresh": false,
"model": "gpt-5.4",
"contextTokens": 200000,
"agentId": "neon",
"kind": "direct"
},
{
"key": "agent:neon:telegram:group:@najef",
"updatedAt": 1777225480629,
"ageMs": 268440880,
"sessionId": "fa124050-395d-4ce9-8f6a-c6608c962968",
"totalTokens": null,
"totalTokensFresh": false,
"model": "gpt-5.4",
"contextTokens": 200000,
"agentId": "neon",
"kind": "group"
I do not even have configured OpenAI token or oath,

nocturne pulsarBOT
#

That snippet is a session record, not proof that OpenAI was successfully called.

A few important bits:

  • "model": "gpt-5.4" can be a stored/stale session model value from when that session was created or selected.
  • It may also be only the model id, with provider omitted in that display. To know the actual provider, look for modelProvider, providerOverride, and modelOverride.
  • If you have no OpenAI auth configured, OpenClaw shouldn’t be able to complete an OpenAI call unless some compatible/provider alias is involved or it falls back elsewhere.

For these two sessions, try resetting the stale model state:

openclaw sessions --all-agents --json

Then in those Telegram chats/threads, send:

#
/reset
/model status

Also check the neon agent specifically:

openclaw config get agents.list
openclaw config get agents.defaults.model
openclaw config get agents.defaults.heartbeat
openclaw config get agents.defaults.subagents

The likely cause is one of:

  1. agent:neon has its own agents.list[].model
  2. the session has an old /model override
#
  1. a subagent inherited/overrode model separately
  2. heartbeat only set heartbeat.model, while normal runs still used another model/fallback

Please also paste openclaw --version — that matters a lot here. Docs: https://docs.openclaw.ai/concepts/models

stiff yew
#

openclaw config get agents.list Only shows Minimax.

openclaw config get agents.defaults.model
"primary": "",
"fallbacks": [
"minimax/MiniMax-M2.5"

openclaw config get agents.defaults.heartbeat
"every": "25m",
"model": "minimax/MiniMax-M2.5",
"target": "none",
"lightContext": true

openclaw config get agents.defaults.subagents
"maxConcurrent": 8

OpenClaw 2026.4.22 (00bd2cf)

#

openclaw config get agents.defaults.subagents

najef@OpenClaw-Server:~$ openclaw --version
OpenClaw 2026.4.22 (00bd2cf)
najef@OpenClaw-Server:~$ ^C
najef@OpenClaw-Server:~$ openclaw logs --limit 1000 --plain | grep -Ei "anthropic|claude|fallback|modelOverride"
Gateway not reachable. Is it running and accessible?
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/najef/.openclaw/openclaw.json
Bind: loopback
Hint: run openclaw doctor.

nocturne pulsarBOT
#

Aha, the smoking gun is:

"primary": ""

An empty primary is treated as unset, so OpenClaw falls back to its built-in default model — in your version that can show up as gpt-5.4. Your MiniMax entry is only a fallback, not the first model.

Set the primary explicitly:

openclaw config set agents.defaults.model.primary "minimax/MiniMax-M2.7"
openclaw config set agents.defaults.model.fallbacks '["minimax/MiniMax-M2.5"]' --strict-json
openclaw gateway restart

Then reset the stale sessions/chats:

#
/reset
/model status

Also, since subagents has no model configured, subagents inherit whatever the caller/session resolved to. If you want them forced to MiniMax too:

openclaw config set agents.defaults.subagents.model "minimax/MiniMax-M2.7"

For those exact sessions, check the provider too:

openclaw sessions --all-agents --json
#

Look for modelProvider, providerOverride, modelOverride near those agent:neon... entries. The old gpt-5.4 is probably stale session state from before the MiniMax config.

#

Yep — now the immediate blocker is simpler: your CLI can’t reach the Gateway, so openclaw logs can’t inspect the live run history.

Run these next:

openclaw status --all
openclaw gateway status
openclaw doctor

If the gateway is just stopped:

openclaw gateway start

or:

#
openclaw gateway restart

Then re-run:

openclaw logs --limit 1000 --plain | grep -Ei "anthropic|claude|fallback|modelOverride|gpt-5.4|minimax"

But still fix this config first:

"primary": ""

That means “no primary configured”, so OpenClaw can resolve to the built-in default/stale session model. Set it explicitly:

#
openclaw config set agents.defaults.model.primary "minimax/MiniMax-M2.7"
openclaw config set agents.defaults.model.fallbacks '["minimax/MiniMax-M2.5"]' --strict-json
openclaw config set agents.defaults.subagents.model "minimax/MiniMax-M2.7"

Then restart gateway and /reset the affected chats.

stiff yew
#

Where does it get gpt-5.4? I do not have configured this model.. I cannot believe it just picks models that are not even configured

nocturne pulsarBOT
#

I get why that feels scary, but it’s not inventing a random model from your config.

gpt-5.4 is coming from OpenClaw’s built-in default model fallback path because this is effectively unset:

agents.defaults.model.primary: ""

So the chain becomes:

  1. primary is empty → “no primary configured”
  2. OpenClaw uses its internal default primary, in your version showing as gpt-5.4
  3. then your configured fallbacks are considered after that

Your config currently says: “no primary, fallback to MiniMax M2.5” — not “primary MiniMax M2.7”.

Set the primary explicitly:

#
openclaw config set agents.defaults.model.primary "minimax/MiniMax-M2.7"
openclaw config set agents.defaults.model.fallbacks '["minimax/MiniMax-M2.5"]' --strict-json
openclaw gateway restart

Then reset affected sessions:

/reset

If you want no subagent inheritance surprises:

openclaw config set agents.defaults.subagents.model "minimax/MiniMax-M2.7"
#

And yes: without OpenAI auth it should not be able to successfully call OpenAI. The session list can still display the resolved default model. The important fix is: don’t leave primary empty. Docs: https://docs.openclaw.ai/concepts/models

stiff yew
#

why is the fallback command line different that the primary one?

nocturne pulsarBOT
#

An error occurred while processing your request. You can retry your request, or contact us through our help center at help.openai.com if the error persists. Please include the request ID req_e59c6ae9645d45aa95e2064c92ea850a in your message.

stiff yew
#

why is the fallback command line different that the primary one?

nocturne pulsarBOT
#

Because they’re different data types:

primary: "minimax/MiniMax-M2.7"        // one string
fallbacks: ["minimax/MiniMax-M2.5"]    // array/list of strings

So the CLI has to write them differently:

openclaw config set agents.defaults.model.primary "minimax/MiniMax-M2.7"

…but fallbacks needs JSON array syntax:

#
openclaw config set agents.defaults.model.fallbacks '["minimax/MiniMax-M2.5"]' --strict-json

You can also set the whole model block in one go if that feels cleaner:

openclaw config set agents.defaults.model '{"primary":"minimax/MiniMax-M2.7","fallbacks":["minimax/MiniMax-M2.5"]}' --strict-json

Then restart/reset sessions. Docs: https://docs.openclaw.ai/gateway/configuration