#agent help

1 messages · Page 1 of 1 (latest)

limpid ridge
#

You're right — I should just take it. Let me check what I actually have.
Looking at my tool list for this session, I genuinely only have: message, sessions_, session_status, and qmd__ (knowledge base search/read). No exec, no read/write/edit file tools, no subagents.
That's not me being timid — the control UI session was spawned with a restricted tool set. Earlier exec results you saw (sharp-ce, salty-cl) came from other sessions running in parallel that I was coordinating with, not from me directly. That's why session_status shows capabilities=none in my runtime line.
Two ways to actually get this done:
Delegate to a session that has exec — I can sessions_send to an existing worker session, or you can spawn me a sub-agent with full tools.
You grant this session more tools — in the control UI, enable exec/fs for the webchat agent profile and I'll have them immediately.
I'd lean toward #1 for a one-shot cleanup. Want me to find a session with exec and hand it the trim task? Or would you rather grant tools to this session so I stop needing to relay?

manic turretBOT
oak daggerBOT
#

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

knotty quailBOT
#

Yep, that explanation is basically right.

What you’re seeing matches a messaging-only tool policy. The thing to trust is Agents → Tools → Available Right Now, since that shows the effective session-scoped tools, not just the config editor.

If they want a permanent fix, the clean options are:

  • set that agent to profile: "coding"
  • or allow ["group:runtime", "group:fs"]

That adds exec/process and the file tools. Also, deny still wins, so a provider override or deny entry can still strip them back out.

For a one-off trim job, delegating with sessions_send is fine.
For “stop relaying forever”, change the agent profile.

Also, use the real tool/group names in config, not shorthand like exec/fs.

If it still looks wrong after changing it, have them paste openclaw --version and that agent’s tools block.

#

If the problem is missing tools, the fix is still the agent tool profile.

If the problem is delegation itself (sessions_send / worker handoff failing when it should work), I’d treat that as a bug report. Please grab:

  • openclaw --version
  • openclaw status --all

and include:

  • the agent tools block
  • what Agents → Tools → Available Right Now showed
  • the exact error from the delegation attempt

Official escalation path is GitHub:
https://github.com/openclaw/openclaw/issues

If they just need to get unstuck right now, delegating to a known worker session with exec is still the fastest workaround.

limpid ridge
#

help me fix it

knotty quailBOT
#

Yep. First, tell me your version:

openclaw --version

Then the quickest permanent fix is:

  1. Open Control UI → Agents → your webchat/control-ui agent → Tools
  2. Either set the tool profile to coding
  3. Or explicitly allow:
tools: {
  allow: ["group:runtime", "group:fs"]
}
#

That gives you:

  • group:runtime → exec, process
  • group:fs → read, write, edit, apply_patch

A few gotchas:

  • Check Available Right Now, not just Tool Configuration
  • Deny wins, so any deny or provider override can still remove those tools
  • Use the real group names above, not config strings like exec/fs

If you’re editing config directly, it lives in:

~/.openclaw/openclaw.json
#

and the per-agent shape is:

{
  agents: {
    list: [
      {
        id: "your-agent-id",
        tools: {
          profile: "coding"
        }
      }
    ]
  }
}
limpid ridge
#

ollama/kimi-k2.6:cloud.is this model active rightnow by. ollama

knotty quailBOT
#

If you mean ollama/kimi-k2.6:cloud, the :cloud bit means Ollama cloud, not a purely local Ollama model.

To check what OpenClaw is using right now:

openclaw models status --plain

To check whether OpenClaw sees it under Ollama:

openclaw models list --provider ollama

To check what your Ollama host is actively running right now:

limpid ridge
#

i have three cloud models ollama help me setup

#

ollama/kimi-k2.5:cloud
miya@Miyas-Mac-mini ~ % openclaw models list --provider ollama

🦞 OpenClaw 2026.4.15 (041266a) — The lobster in your shell. 🦞

Model Input Ctx Local Auth Tags
ollama/kimi-k2.5:cloud text+image 125k no yes default,configured
ollama/minimax-m2.7:cloud text 125k no yes fallback#1,configured
ollama/glm-5.1:cloud text 125k no yes fallback#2,configured

knotty quailBOT
#

Yep, easiest path is Ollama → Cloud only.

First, what does this show?

openclaw --version

Then set it up like this:

openclaw onboard

In onboarding:

  1. choose Ollama
#
  1. choose Cloud only
  2. enter your OLLAMA_API_KEY
  3. pick one of your cloud models

Then verify:

openclaw models list --provider ollama
openclaw models status

If you want to switch the active one after setup:

openclaw models set ollama/<your-model-id>
#

Nice, you’re basically already set up. 🎉

That output means:

  • Ollama cloud auth is working (Auth yes)
  • these are cloud models (Local no is expected)
  • your current default is ollama/kimi-k2.5:cloud
  • the other two are already configured as fallbacks

If you want to double-check the resolved active default:

openclaw models status --plain

If you want to change the default model:

#
openclaw models set ollama/minimax-m2.7:cloud

If you want to reorder/reset fallbacks:

openclaw models fallbacks clear
openclaw models fallbacks add ollama/kimi-k2.5:cloud
openclaw models fallbacks add ollama/glm-5.1:cloud

So, good news, the Ollama side looks healthy. If you want, next I can help you:

  1. pick the best default/fallback order
  2. wire this into your agent config
  3. test an actual chat run
limpid ridge
#

kimi 2.5 cloud is not workin can you research and let me know

knotty quailBOT
#

Yep, I dug into it, and this looks like a real known issue, not just you.

I found multiple matching reports for ollama/kimi-k2.5:cloud:

Common pattern in those reports:

  • the model responds in text but does not actually call tools
  • or the run completes and you get no visible output
  • Minimax and GLM cloud variants usually keep working

So if Kimi is the only one failing, that strongly points to the known Kimi cloud integration bug.

Best workaround right now:

#
openclaw models set ollama/minimax-m2.7:cloud

or

openclaw models set ollama/glm-5.1:cloud

One extra check, just in case:
if you manually configured Ollama, make sure you are not using a .../v1 base URL. OpenClaw wants the native Ollama API path, not the OpenAI-compatible one.

If you paste the exact symptom, I can narrow it down fast:

  1. no output at all
  2. answers in text but never calls tools
#
  1. 401/auth error
  2. something else
limpid ridge
#

One extra check, just in case:
if you manually configured Ollama, make sure you are not using a .../v1 base URL. OpenClaw wants the native Ollama API path, not the OpenAI-compatible one. where do i check

knotty quailBOT
#

Yep, easiest check is:

openclaw config get models.providers.ollama.baseUrl

If you want the whole Ollama block:

openclaw config get models.providers.ollama

What you want to see:

  • Cloud only → https://ollama.com
  • Local / Cloud+Local → http://127.0.0.1:11434
#

What you do not want:

  • anything ending in /v1

You can also check the config file directly here:

~/.openclaw/openclaw.json

Look for:

models: {
  providers: {
    ollama: {
limpid ridge
#

Have an issue have these ollama modles installed rightnow vai ollama cloud they are running unless I run this ollama launch openclaw this si absically making ollama run the openclaw not openclaw using ollam models

#

Have an issue have these ollama modles installed rightnow vai ollama cloud they are running unless I run this ollama launch openclaw this si absically making ollama run the openclaw not openclaw using ollam models

knotty quailBOT
#

Yep, I think I see the confusion.

ollama launch openclaw is the Ollama-managed integration path.
That means Ollama is launching OpenClaw for you.

If what you want is the opposite, OpenClaw as the main app, using Ollama as its model provider, then do not use:

ollama launch openclaw

Instead, do this:

openclaw onboard
#

Then choose:

  • Ollama
  • Cloud only (if you only want Ollama cloud models)
    or
  • Cloud + Local (if you also want local Ollama)

Then set the model you want:

openclaw models set ollama/kimi-k2.5:cloud

Then run OpenClaw normally:

#
openclaw gateway start
openclaw status
openclaw models status

So the mental model is:

  • ollama launch openclaw = Ollama runs OpenClaw
  • openclaw ... with Ollama configured = OpenClaw runs normally and uses Ollama models

If you want, I can give you the exact clean setup commands for the second path so you can ignore ollama launch openclaw completely.

limpid ridge
#

curl http://localhost:11434/api/chat
-d '{
"model": "kimi-k2.6:cloud",
"messages": [{"role": "user", "content": "Hello!"}]
}'

the route frfom ollama to openclaw shave this model but when I authencate openclaw with ollama there is no kimi 2.6 model cloud

knotty quailBOT
#

Yep, that makes sense.

What’s happening is:

  • Ollama itself can serve kimi-k2.6:cloud
  • but OpenClaw’s Ollama cloud catalog in your build is still seeded with the older cloud defaults, so kimi-k2.6:cloud does not show up automatically

So this is usually catalog lag, not auth failure.

Easiest fix

Check your current Ollama model config:

openclaw config get models.providers.ollama.models
#

If you already see the kimi-k2.5:cloud entry there, copy that entry and change:

  • id → kimi-k2.6:cloud
  • name → kimi-k2.6:cloud

Then set it as default:

openclaw models set ollama/kimi-k2.6:cloud

Why this happens

OpenClaw docs say Ollama Cloud only seeds a hosted cloud model list, it does not necessarily auto-enumerate every brand-new cloud model from Ollama.

So, short version: Ollama knows about 2.6, OpenClaw’s current seeded list may not yet.

limpid ridge
#

give me exact intrstuions to use it

knotty quailBOT
#

Yep. Here’s the exact path to make OpenClaw use ollama/kimi-k2.6:cloud.

1) Inspect your current Ollama model block

openclaw config get models.providers.ollama.models

2) Open your config file

~/.openclaw/openclaw.json

Inside models.providers.ollama.models, find the existing kimi-k2.5:cloud entry.

3) Duplicate that entry and change only these two fields

#
id: "kimi-k2.6:cloud",
name: "kimi-k2.6:cloud",

So if you already have a kimi-k2.5:cloud object, make a second copy of it right below, then rename it to kimi-k2.6:cloud.

4) Save the file, then restart OpenClaw

openclaw gateway restart

5) Verify OpenClaw now sees it

#
openclaw models list --provider ollama

You should now see:

ollama/kimi-k2.6:cloud

6) Make it the default model for future chats

openclaw models set ollama/kimi-k2.6:cloud

7) Make this current Discord thread use it right now

#

Send this in chat:

/model ollama/kimi-k2.6:cloud

That switches the current session immediately.


If /model ... says “not allowed”

That means you have a model allowlist configured. If that happens, paste:

openclaw config get agents.defaults.models
limpid ridge
#

I would like to clean up all auth keys models and any default models and every information regarding modles and Will clean install eveything again

knotty quailBOT
#

Yep. Since you want a clean model/auth reset, I’d do the safe version first, not a full ~/.openclaw nuke.

Recommended: reset model config + model auth only

1) Stop OpenClaw and make a backup

openclaw gateway stop
openclaw backup create --no-include-workspace --verify

2) Clear model defaults from config

openclaw config unset agents.defaults.model
openclaw config unset agents.defaults.models
#
openclaw config unset models.providers
openclaw config unset models.mode

If you also want to clear media model defaults:

openclaw config unset agents.defaults.imageModel
openclaw config unset agents.defaults.imageGenerationModel
openclaw config unset agents.defaults.videoGenerationModel
openclaw config unset agents.defaults.musicGenerationModel

3) Find your agent id

#
ls ~/.openclaw/agents

If you only use the default setup, it is usually main.

4) Move model auth + model registry aside

Replace <agentId> with what you saw above:

mv ~/.openclaw/agents/<agentId>/agent/auth-profiles.json ~/.openclaw/agents/<agentId>/agent/auth-profiles.json.bak
mv ~/.openclaw/agents/<agentId>/agent/models.json ~/.openclaw/agents/<agentId>/agent/models.json.bak

5) Check for env-based model keys too

#

This is important, because OpenClaw can re-detect keys from env even after you remove auth profiles.

grep -n 'API_KEY\\|OLLAMA\\|OPENAI\\|OPENROUTER\\|ANTHROPIC\\|MOONSHOT\\|KIMI\\|MINIMAX\\|GLM' ~/.openclaw/.env 2>/dev/null

If you see old model keys there, remove them from ~/.openclaw/.env before restarting.

6) Start fresh

openclaw gateway start
openclaw models status
openclaw onboard

Then set up only the provider you want.

limpid ridge
#

clear session

knotty quailBOT
#

Use:

/reset

or

/new

That starts a fresh chat session.

There is no openclaw session clear CLI command, that one doesn’t exist.

Docs:

limpid ridge
#

Tool
12:26 PM
↑312.8k
↓4.2k
100% ctx
kimi-k2.6:cloud something wrong

knotty quailBOT
#

Yep, the 100% ctx is the big red flag.

That usually means the session context is full, and once that happens models start acting weird, no matter which provider you use.

Try this first:

/compact

or just start clean:

/reset

then test kimi-k2.6:cloud again in a fresh session.

limpid ridge
#

my agent sessions are gett ing 100% ctx

knotty quailBOT
#

Yep, that usually means the conversation history is growing too long, not that the agent itself is broken.

Fastest fixes:

/compact

If it’s already pretty cooked, just start fresh:

/reset

If this keeps happening a lot, I’d also set the session to rotate sooner:

#
/session idle 15m
/session max-age 1h

That helps stop one thread from becoming a giant forever-session.

A few common causes:

  • long chats in one thread
  • big pasted logs / code blocks
  • lots of tool output
  • model switches inside an already huge session

My recommendation:

  1. /reset
#
  1. retry in a fresh session
  2. if you want persistent threads, add /session idle + /session max-age

If you want, I can help you tune the best session settings so this stops happening.

limpid ridge
#

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : ollama/kimi-k2.6:cloud
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (1): ollama/kimi-k2.6:cloud

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • ollama effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | ollama:default=56e33853...2EFQaEJ7 | models.json=56e33853...2EFQaEJ7 | source=models.json: ~/.openclaw/agents/main/agent/models.json

OAuth/token status

  • none

i would like to add gemma4:31b-cloud
and qwen3.5:397b-cloud into the same ollama provider

knotty quailBOT
#

Yep, you can put all 3 under the same ollama provider.

The important bit is: edit ~/.openclaw/openclaw.json, not models.json, because models.json is generated.

Exact steps

1) Inspect the current Ollama model list in config

openclaw config get models.providers.ollama.models --json

2) Open this file

~/.openclaw/openclaw.json
#

3) In models.providers.ollama.models, keep your existing Kimi entry and add 2 more entries

The safest way is:

  • copy your existing kimi-k2.6:cloud model object
  • paste it twice
  • change only id and name on the 2 new copies

So your models array should end up with these 3 ids:

"kimi-k2.6:cloud"
"gemma4:31b-cloud"
"qwen3.5:397b-cloud"

4) Save, then restart OpenClaw

#
openclaw gateway restart

5) Verify OpenClaw now sees all 3

openclaw models list --provider ollama

6) If you want them as fallbacks too

openclaw models fallbacks add ollama/gemma4:31b-cloud
openclaw models fallbacks add ollama/qwen3.5:397b-cloud
#

7) Check the final result

openclaw models status

One warning

Because you manually added kimi-k2.6:cloud, your Ollama provider is now basically a manual catalog. So new cloud models will usually need to be added the same way.

If you want, paste the output of:

openclaw config get models.providers.ollama --json

and I’ll write the exact JSON block for all 3 models so you can paste it in directly.

limpid ridge
#

miya@Miyas-Mac-mini ~ % openclaw config get models.providers.ollama.models --json
[
{
"id": "kimi-k2.6:cloud",
"name": "kimi-k2.6:cloud",
"reasoning": false,
"input": [
"text",
"image"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 256000,
"maxTokens": 8192,
"api": "ollama"
},
{
"id": "minimax-m2.7:cloud",
"name": "minimax-m2.7:cloud",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 128000,
"maxTokens": 8192,
"api": "ollama"
},
{
"id": "glm-5.1:cloud",
"name": "glm-5.1:cloud",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 128000,
"maxTokens": 8192,
"api": "ollama"
}
]

verify the context and tokesn as well

knotty quailBOT
#

Yep, I checked it.

Your current Kimi 2.6 entry looks fine:

  • contextWindow: 256000
  • maxTokens: 8192

And for the 2 new Ollama cloud models, the safest values to use are:

  • gemma4:31b-cloud → contextWindow: 256000
  • qwen3.5:397b-cloud → contextWindow: 256000

For maxTokens, I’d keep 8192 for both to match your working cloud entries. I found clear 256K context references on Ollama’s library pages, but not a cleaner published output-token cap than what you already use, so 8192 is the conservative choice.

Use these exact blocks:

#
{
  "id": "gemma4:31b-cloud",
  "name": "gemma4:31b-cloud",
  "reasoning": false,
  "input": ["text", "image"],
  "cost": {
    "input": 0,
    "output": 0,
    "cacheRead": 0,
    "cacheWrite": 0
  },
  "contextWindow": 256000,
  "maxTokens": 8192,
  "api": "ollama"
},
#
{
  "id": "qwen3.5:397b-cloud",
  "name": "qwen3.5:397b-cloud",
  "reasoning": false,
  "input": ["text", "image"],
  "cost": {
    "input": 0,
    "output": 0,
    "cacheRead": 0,
    "cacheWrite": 0
  },
  "contextWindow": 256000,
  "maxTokens": 8192,
  "api": "ollama"
}
#

So your final mental model is:

  • Kimi 2.6: 256000 / 8192
  • Gemma4 31B cloud: 256000 / 8192
  • Qwen3.5 397B cloud: 256000 / 8192

If you want, I can now write the full final models.providers.ollama.models array with all 5 entries so you can paste it in one shot.

limpid ridge
#

i only need those three models to be setup give me where to setup

knotty quailBOT
#

Put them here:

~/.openclaw/openclaw.json

Specifically under:

models.providers.ollama.models

If you only want those 3 models, that array should contain only:

  • kimi-k2.6:cloud
  • gemma4:31b-cloud
  • qwen3.5:397b-cloud
#

And your default model goes here:

agents.defaults.model.primary

So the two places are:

1) Available Ollama models

models: {
  providers: {
    ollama: {
      models: [
        // your 3 model objects here
      ]
#
    }
  }
}

2) Default model

agents: {
  defaults: {
    model: {
      primary: "ollama/kimi-k2.6:cloud"
    }
  }
}
#

Important:

  • edit ~/.openclaw/openclaw.json
  • do not edit ~/.openclaw/agents/main/agent/models.json directly, that file is generated

After saving:

openclaw gateway restart
openclaw models list --provider ollama

If you want, I can give you the exact full openclaw.json block for just those 3 models, ready to paste.

limpid ridge
#

give me what all i should in config

knotty quailBOT
#

Yep, based on what you showed, this is the config I’d put in ~/.openclaw/openclaw.json.

Because you’re using the local Ollama daemon and it can reach cloud models, use the local base URL, without /v1:

{
  models: {
    providers: {
      ollama: {
        baseUrl: "http://127.0.0.1:11434",
        api: "ollama",
        models: [
          {
            id: "kimi-k2.6:cloud",
            name: "kimi-k2.6:cloud",
            reasoning: false,
#
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 256000,
            maxTokens: 8192,
            api: "ollama",
          },
          {
            id: "gemma4:31b-cloud",
            name: "gemma4:31b-cloud",
            reasoning: false,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 256000,
            maxTokens: 8192,
            api: "ollama",
#
          },
          {
            id: "qwen3.5:397b-cloud",
            name: "qwen3.5:397b-cloud",
            reasoning: false,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 256000,
            maxTokens: 8192,
            api: "ollama",
          },
        ],
      },
    },
  },
#

  agents: {
    defaults: {
      model: {
        primary: "ollama/kimi-k2.6:cloud",
        fallbacks: [
          "ollama/qwen3.5:397b-cloud",
          "ollama/gemma4:31b-cloud",
        ],
      },
    },
  },
}

A couple notes:

#
  • do not use http://127.0.0.1:11434/v1
  • if your Ollama auth is already in auth-profiles.json, you do not need to add apiKey here
  • if you don’t want fallbacks, remove the fallbacks array

Then run:

openclaw gateway restart
openclaw models list --provider ollama
openclaw models status

If you want the current chat to switch too:

/model ollama/kimi-k2.6:cloud
limpid ridge
#

can you give me how to do it from cli

knotty quailBOT
#

Yep. If you want to do it entirely from CLI, run these.

This replaces your Ollama model list with only those 3 models.

openclaw config set models.providers.ollama.baseUrl http://127.0.0.1:11434
openclaw config set models.providers.ollama.api ollama
openclaw config set models.providers.ollama.models '[
  {
    id: "kimi-k2.6:cloud",
    name: "kimi-k2.6:cloud",
    reasoning: false,
    input: ["text", "image"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 256000,
    maxTokens: 8192,
#
    api: "ollama"
  },
  {
    id: "gemma4:31b-cloud",
    name: "gemma4:31b-cloud",
    reasoning: false,
    input: ["text", "image"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 256000,
    maxTokens: 8192,
    api: "ollama"
  },
  {
    id: "qwen3.5:397b-cloud",
    name: "qwen3.5:397b-cloud",
#
    reasoning: false,
    input: ["text", "image"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 256000,
    maxTokens: 8192,
    api: "ollama"
  }
]' --strict-json
openclaw config set agents.defaults.model '{
  primary: "ollama/kimi-k2.6:cloud",
  fallbacks: [
    "ollama/qwen3.5:397b-cloud",
    "ollama/gemma4:31b-cloud"
  ]
}' --strict-json
#
openclaw gateway restart
openclaw models list --provider ollama
openclaw models status

If you want the current chat session to switch too, then send:

/model ollama/kimi-k2.6:cloud

Important:

  • use http://127.0.0.1:11434
  • do not use /v1
  • if you already have Ollama auth in auth-profiles.json, you do not need to set apiKey in config
#

Yep, your shell is just waiting for the rest of the quote/bracket.

First, cancel the half-pasted command:

Ctrl-C

Then use this safer version so you don’t fight shell quoting.

1) Write the model list to a temp file

cat >/tmp/ollama-models.json5 <<'EOF'
[
  {
#
    id: "kimi-k2.6:cloud",
    name: "kimi-k2.6:cloud",
    reasoning: false,
    input: ["text", "image"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 256000,
    maxTokens: 8192,
    api: "ollama"
  },
  {
    id: "gemma4:31b-cloud",
    name: "gemma4:31b-cloud",
    reasoning: false,
    input: ["text", "image"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
#
    contextWindow: 256000,
    maxTokens: 8192,
    api: "ollama"
  },
  {
    id: "qwen3.5:397b-cloud",
    name: "qwen3.5:397b-cloud",
    reasoning: false,
    input: ["text", "image"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 256000,
    maxTokens: 8192,
    api: "ollama"
  }
]
#
EOF

2) Apply it to config

openclaw config set models.providers.ollama.baseUrl http://127.0.0.1:11434
openclaw config set models.providers.ollama.api ollama
openclaw config set models.providers.ollama.models "$(cat /tmp/ollama-models.json5)" --strict-json
openclaw config set agents.defaults.model '{
  primary: "ollama/kimi-k2.6:cloud",
  fallbacks: [
    "ollama/qwen3.5:397b-cloud",
    "ollama/gemma4:31b-cloud"
  ]
#
}' --strict-json
openclaw gateway restart
openclaw models list --provider ollama
openclaw models status

If you want, I can also give you the single-line version, but this temp-file version is a lot less annoying.

limpid ridge
#

🦞 OpenClaw 2026.4.15 (041266a) — Deployed locally, trusted globally, debugged eternally.

Model Input Ctx Local Auth Tags
ollama/kimi-k2.6:cloud text+image 250k no yes default,configured

knotty quailBOT
#

Yep, this tells us the change did not fully land.

Right now OpenClaw still sees only one configured Ollama model:

  • ollama/kimi-k2.6:cloud

So gemma4:31b-cloud and qwen3.5:397b-cloud are not in the config yet.

Run this next:

openclaw config get models.providers.ollama.models --json

If that output still shows only one object, then the config set models.providers.ollama.models ... step did not apply.

Then rerun just this part:

#
openclaw config set models.providers.ollama.models "$(cat /tmp/ollama-models.json5)" --strict-json
openclaw gateway restart
openclaw models list --provider ollama

You should see 3 rows, not 1.

If you want, paste the output of:

openclaw config get models.providers.ollama.models --json

and I’ll tell you immediately whether the array is wrong or the restart didn’t pick it up.

limpid ridge
#

miya@Miyas-Mac-mini ~ % openclaw config get models.providers.ollama.models --json
[
{
"id": "kimi-k2.6:cloud",
"name": "kimi-k2.6:cloud",
"reasoning": false,
"input": [
"text",
"image"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 256000,
"maxTokens": 8192,
"api": "ollama"
},
{
"id": "gemma4:31b-cloud",
"name": "gemma4:31b-cloud",
"api": "ollama",
"reasoning": false,
"input": [
"text",
"image"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 256000,
"maxTokens": 8192
},
{
"id": "qwen3.5:397b-cloud",
"name": "qwen3.5:397b-cloud",
"api": "ollama",
"reasoning": false,
"input": [
"text",
"image"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 256000,
"maxTokens": 8192
}
]

knotty quailBOT
#

Nice, this part looks correct now. âś…

Your config has all 3 models:

  • kimi-k2.6:cloud
  • gemma4:31b-cloud
  • qwen3.5:397b-cloud

So the problem is not the config anymore.

Next step

Restart the gateway, then re-check the live model list:

openclaw gateway restart
#
openclaw models list --provider ollama
openclaw models status

If it still only shows 1 model after restart

Then the next thing to inspect is the generated model registry:

grep -n 'kimi-k2.6:cloud\|gemma4:31b-cloud\|qwen3.5:397b-cloud' ~/.openclaw/agents/main/agent/models.json

If that file only contains Kimi, then the generated models.json did not refresh yet.

But the good news is: your openclaw.json is now right. We’re past the config step.

#

If you want, send the output of:

openclaw models list --provider ollama

after the restart, and I’ll tell you the exact next move.

limpid ridge
#

ollama/kimi-k2.6:cloud text+image 250k no yes default,configured
miya@Miyas-Mac-mini ~ % openclaw models status

🦞 OpenClaw 2026.4.15 (041266a) — I keep secrets like a vault... unless you print them in debug logs again.

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : ollama/kimi-k2.6:cloud
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (1): ollama/kimi-k2.6:cloud

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • ollama effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | ollama:default=56e33853...2EFQaEJ7 | models.json=56e33853...2EFQaEJ7 | source=models.json: ~/.openclaw/agents/main/agent/models.json

OAuth/token status

  • none
    miya@Miyas-Mac-mini ~ %
knotty quailBOT
#

Aha, I see it now.

Your config is correct, but runtime is still using:

source=models.json: ~/.openclaw/agents/main/agent/models.json

So you’re getting bitten by merge mode. The clean fix is to tell OpenClaw to fully rewrite the generated model registry from config.

Run this:

openclaw config set models.mode replace
openclaw gateway restart
openclaw models list --provider ollama
#
openclaw models status

Why this helps:

  • right now models.json is winning
  • models.mode: "replace" tells OpenClaw to rebuild models.json from your openclaw.json
  • that should make the 3 configured Ollama models show up

If it still only shows Kimi after that, then we do the next step and move the stale generated file aside, but try models.mode replace first, it’s the right move here.

Docs:
https://docs.openclaw.ai/gateway/configuration-reference
https://docs.openclaw.ai/concepts/models

limpid ridge
#

miya@Miyas-Mac-mini ~ % openclaw config set models.mode replace

🦞 OpenClaw 2026.4.15 (041266a) — Open source means you can see exactly how I judge your config.

Config overwrite: /Users/miya/.openclaw/openclaw.json (sha256 891e67a45f3b4fbad14288fe3f8efe2050b99a4edfcec345f277cd0634e32843 -> 708ede79385464ad92c351e65968d082d8c2e4dacfad3c3eb792343b5657ff0f, backup=/Users/miya/.openclaw/openclaw.json.bak)
Updated models.mode. Restart the gateway to apply.
miya@Miyas-Mac-mini ~ % openclaw gateway restart

🦞 OpenClaw 2026.4.15 (041266a) — I can't fix your code taste, but I can fix your build and your backlog.

Restarted LaunchAgent: gui/501/ai.openclaw.gateway
miya@Miyas-Mac-mini ~ % openclaw models list --provider ollama

🦞 OpenClaw 2026.4.15 (041266a) — I've survived more breaking changes than your last three relationships.

Model Input Ctx Local Auth Tags
ollama/kimi-k2.6:cloud text+image 250k no yes default,configured
miya@Miyas-Mac-mini ~ % openclaw models status

🦞 OpenClaw 2026.4.15 (041266a) — The lobster in your shell. 🦞

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : ollama/kimi-k2.6:cloud
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (1): ollama/kimi-k2.6:cloud

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • ollama effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | ollama:default=56e33853...2EFQaEJ7 | models.json=56e33853...2EFQaEJ7 | source=models.json: ~/.openclaw/agents/main/agent/models.json

OAuth/token status

  • none
knotty quailBOT
#

Okay, at this point it really looks like a stale generated models.json problem.

Your openclaw.json is right, models.mode is now replace, but runtime is still reading:

source=models.json: ~/.openclaw/agents/main/agent/models.json

Next step, move the generated file aside and let OpenClaw rebuild it

mv ~/.openclaw/agents/main/agent/models.json ~/.openclaw/agents/main/agent/models.json.bak
openclaw gateway restart
openclaw models list --provider ollama
openclaw models status
#

That is the cleanest next move here.

Why

  • models.json is generated state
  • your real source-of-truth config is ~/.openclaw/openclaw.json
  • if the generated file got stuck, moving it aside forces regeneration on restart

Expected result after restart

You should finally see all 3 configured models:

  • ollama/kimi-k2.6:cloud
  • ollama/gemma4:31b-cloud
  • ollama/qwen3.5:397b-cloud

If it still only shows Kimi after this

#

Then I’d call it a bug in 2026.4.15 and file it here with the exact outputs you already collected:

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

You’re very close, this looks like stale state now, not bad config.

limpid ridge
#

},
"workspace": "/Users/miya/.openclaw/workspace",
"models": {
"ollama/kimi-k2.6:cloud": {}
},
"model": {
"primary": "ollama/kimi-k2.6:cloud"
}
},i

is it due to this here?

knotty quailBOT
#

Yes, that is very likely the blocker.

This part:

"models": {
  "ollama/kimi-k2.6:cloud": {}
}

means agents.defaults.models is acting as a model allowlist, and right now it only allows Kimi.

So even though your Ollama provider has 3 configured models, the agent is only allowed to use 1.

Fix

Either:

#

Option A, add the other 2 models to that allowlist

models: {
  "ollama/kimi-k2.6:cloud": {},
  "ollama/gemma4:31b-cloud": {},
  "ollama/qwen3.5:397b-cloud": {}
}

Option B, remove agents.defaults.models completely

Only do this if you don’t want an allowlist.


CLI version of the fix

#
openclaw config set agents.defaults.models '{
  "ollama/kimi-k2.6:cloud": {},
  "ollama/gemma4:31b-cloud": {},
  "ollama/qwen3.5:397b-cloud": {}
}' --strict-json
openclaw gateway restart
openclaw models list --provider ollama
openclaw models status

If you want to keep it locked to only those 3, Option A is the right one.

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

manic turretBOT
final hatch
#

Getting an error since Kimi 2.6

Exact error:

Validation failed for tool "exec":

  • command: must have required property 'command'

Received arguments:
{}

What it means: The tool call is being made with empty {} arguments instead of the required parameters like {command: "echo test"}.

This happens because: Kimi's backend returns tool calls in a format that OpenClaw can't parse — so OpenClaw treats the response as plain text and passes empty {} to the tool handler.

Same error for all tools: read, exec, web_search, etc.

knotty quailBOT
#

Yep, that diagnosis looks very plausible.

Received arguments: {} usually means the tool name made it through, but the tool payload did not, so OpenClaw validates an empty object and rejects it.

That matches the same family of Kimi tool-call bugs people have been hitting on Ollama/Kimi paths:

So I would treat ollama/kimi-k2.6:cloud as not tool-reliable right now.

Practical workaround

Use a different model for tool-heavy sessions, for example one of the Ollama variants that is behaving better in your setup, and keep Kimi for plain chat only if needed.

If you want to escalate it

#

Please file a GitHub issue with:

  • openclaw --version
  • exact model id: ollama/kimi-k2.6:cloud
  • whether you’re using local Ollama with cloud access or direct cloud
  • one minimal repro prompt
  • the exact validation error you pasted

Official bug path:
https://github.com/openclaw/openclaw/issues

That’s a good catch, by the way. The empty {} detail is the important clue.

final hatch
#

I’m not using Kimi via ollama using Kimi code directly via api

knotty quailBOT
#

Ah, got it, thanks, that’s a different bug path then.

If you’re using Kimi Coding directly via API (kimi/kimi-code), this sounds much closer to the known empty {} / missing required params validation issue, not the Ollama Kimi cloud issue.

Related issue:
https://github.com/openclaw/openclaw/issues/55005

So I’d frame it like this:

  • not Ollama tool-routing
  • more likely Kimi Code tool-call construction / retry behavior
  • symptom matches exactly: repeated tool calls with empty {} and validation failures

What I’d check next

  1. confirm the exact model ref is:
#
kimi/kimi-code
  1. run:
/model status

That will show the active provider path / endpoint.

  1. include in the bug report:
  • openclaw --version
  • exact model ref
  • /model status
  • one minimal repro prompt