#model doesnt recognize tools
1 messages Β· Page 1 of 1 (latest)
This usually means the Gateway is no longer offering any tools to the model (so the model correctly says βI donβt have tool accessβ), and it often happens right after a model/provider switch because of tool policy (allow/deny/profile/byProvider) or sandbox tool policy.
Can you paste these 3 things?
- Version (first!)
openclaw --version
- Status dumps (safe to share; redacts secrets)
openclaw status --all
openclaw models status
- The tool-policy part of your config (only this section is enough):
tools.profile
tools.allow/tools.denytools.byProvider(if present)- and if you use sandboxing:
tools.sandbox.tools.allow/tools.sandbox.tools.deny - plus any per-agent overrides:
agents.list[].tools...
Quick self-checks while you grab that
-
If you have any allowlist at all, remember itβs restrictive. For example:
tools.profile: "minimal"β basically no tools.tools.byProvider.google(orgoogle/gemini-β¦) set to minimal/empty β tools disappear only on Gemini.tools.sandbox.tools.deny: ["*"](or an empty allowlist) β tools disappear only in sandboxed chats (common if your Discord threads are βnon-mainβ sessions).
-
Also check logs for tool-policy warnings:
openclaw logs --follow
Look for lines like βunknown tools in allowlistβ / βtool policyβ / βallowlist ignoredβ around the time you send a message.
Once you paste the outputs/config snippet, I can tell you exactly which setting is stripping the tools for Gemini 3 Flash.
version 2026.3.2
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : google-gemini-cli/gemini-3-pro-preview
Fallbacks (8) : opencode/claude-opus-4-6, opencode/minimax-m2.5-free, qwen-portal/coder-model, qwen-portal/vision-model, openrouter/auto, openrouter/openrouter/auto, google-gemini-cli/gemini-3.1-pro-preview, openrouter/arcee-ai/trinity-large-preview:free
Image model : -
Image fallbacks (0): -
Aliases (3) : Opus -> opencode/claude-opus-4-6, qwen -> qwen-portal/coder-model, OpenRouter -> openrouter/auto
Configured models (9): opencode/claude-opus-4-6, opencode/minimax-m2.5-free, qwen-portal/coder-model, qwen-portal/vision-model, google-gemini-cli/gemini-3-pro-preview, openrouter/auto, openrouter/openrouter/auto, google-gemini-cli/gemini-3.1-pro-preview, openrouter/arcee-ai/trinity-large-preview:free
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (2): google-gemini-cli (1), qwen-portal (1)
- google-gemini-cli effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=1, token=0, api_key=0) | google-gemini-cli:redacted@gmail.com=OAuth (redacted@gmail.com)
- opencode effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | opencode:default=sk-leBBu...piAhjB33
- openrouter effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openrouter:default=sk-or-v1...2887df1b
- qwen-portal effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=1, token=0, api_key=0) | qwen-portal:default=OAuth | models.json=qw...th | source=models.json: ~/.openclaw/agents/main/agent/models.json
OAuth/token status
- google-gemini-cli usage: Pro 100% left Β· Flash 100% left
- google-gemini-cli:redacted@gmail.com (redacted@gmail.com) ok expires in 53m
- qwen-portal
OpenClaw status --all
Overview
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Item β Value β
βββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Version β 2026.3.2 β
β OS β linux 6.18.13-arch1-1 (x64) β
β Node β 25.7.0 β
β Config β ~/.openclaw/openclaw.json β
β Dashboard β http://192.168.31.176:18789/ β
β Tailscale β off β
β Channel β stable (default) β
β Update β pnpm Β· npm latest 2026.3.2 β
β Gateway β local Β· ws://127.0.0.1:18789 (local loopback) Β· β
β β reachable 113ms Β· auth password β
β Security β Run: openclaw security audit --deep β
β Gateway self β user-crestlineich8m (192.168.31.176) app 2026.3.2 linux β
β β 6.18.13-arch1-1 β
β Gateway service β systemd installed Β· enabled Β· running (pid 19262) β
β Node service β systemd not installed β
β Agents β 1 total Β· 0 bootstrapping Β· 1 active Β· 8 sessions β
βββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Diagnosis (read-only)
Gateway connection details:
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/user/.openclaw/openclaw.json
Bind: lan
β Config: /home/user/.openclaw/openclaw.json
β Restart sentinel: none
β Port 18789
! Tailscale: off Β· unknown
error: Error: spawn tailscale ENOENT
β Skills: 10 eligible Β· 0 missing Β· /home/user/.openclaw/workspace
β Channel issues (none)
Pasteable debug report. Auth tokens redacted.
Your models status output is the key clue: youβre not on the normal Gemini API provider (google/...) β youβre on Gemini CLI:
- Default:
google-gemini-cli/gemini-3-pro-preview
Thatβs a different integration path (βshell out to a local gemini binaryβ) and itβs known to behave differently re: streaming/tool support and schema quirks. (Docs call this out explicitly.)
Source: https://docs.openclaw.ai/help/testing (see the βGemini API vs Gemini CLIβ note)
1) Fastest fix (if you want reliable tool-calling)
Use the Gemini API key provider instead:
- Provider:
google - Model:
google/gemini-3-flash-preview(or pro)
Setup path from docs:
- Add
GEMINI_API_KEY=...to~/.openclaw/.env(or run onboarding with the Gemini API key auth choice), then restart the gateway and switch the model.
Source: https://docs.openclaw.ai/concepts/model-providers (Google Gemini section)
2) If you want to debug whatβs happening on google-gemini-cli/...
Run this and paste the output:
openclaw status --all
And also do:
openclaw logs --follow
Then send a message that would normally use a tool. In the logs, look for:
google tool schema snapshot(it printstoolCount)
If toolCount: 0 β your tool policy is stripping everything (even if you think βprofile is fullβ). Then paste just your tools: { ... } block from ~/.openclaw/openclaw.json.
If toolCount > 0 but the model still claims βno toolsβ β itβs almost certainly the Gemini CLI path ignoring/struggling with tool calling, and switching to google/... (API) is the pragmatic fix.
If you paste openclaw status --all + a ~20 line log snippet around google tool schema snapshot, I can tell which branch youβre in immediately.
Thatβs only the overview slice of status --all β the bit we need is further down.
Can you scroll a bit more and paste just these sections from openclaw status --all (theyβre safe; secrets are redacted):
- Models (shows the effective provider/model + any provider quirks)
- Tools / Tool policy (this is the smoking gun: itβll show whether your allow/deny/profile/byProvider collapsed to βno toolsβ)
- Any Warnings block (often includes βunknown tool namesβ / βtool allowlist ignoredβ / etc.)
Also: one log line will answer this immediately
Run:
openclaw logs --follow
Then send a message to your bot that would normally require a tool (anything like βfetch https://example.comβ / βread file β¦β / βlist sessionsβ).
In the logs, copy/paste the line that contains:
google tool schema snapshot
It prints toolCount. If that says toolCount: 0, itβs 100% tool-policy/config. If itβs >0, then the Gemini CLI path is receiving tools but not using them (schema/tool-calling mismatch).
Paste those bits and Iβll tell you the exact fix (usually either a tools.allow/deny issue, or you need to switch from google-gemini-cli/... to the normal google/... Gemini API provider for tool calling).
Got it β that status --all snippet still doesnβt include the tools policy, so weβre missing the one thing that decides whether the model even gets tools.
1) Please paste your tools config block
From ~/.openclaw/openclaw.json, copy/paste only the parts that match:
- top-level
tools: { ... } - and (if present)
agents: { defaults: { tools: ... } }or anyagents.list[].tools
Iβm specifically looking for anything like:
tools.allow/tools.denytools.profiletools.byProvider(this often bites people right after switching to a Google/Gemini provider)
Docs reference (so weβre talking about the same keys): https://docs.openclaw.ai/tools
2) Get one log line: google tool schema snapshot (it shows toolCount)
Right now weβre guessing whether the Gateway is sending 0 tools vs βtools are sent but Gemini ignores themβ.
Make sure your file logs include info (otherwise this line wonβt show up):
// in openclaw.json
{
logging: { level: "info" },
}
Restart gateway, then:
openclaw logs --follow --json
Send one message that would use a tool, and paste the single log event containing:
"google tool schema snapshot"
Itβll include toolCount.
- If
toolCount: 0β config/tool policy issue (almost alwaystools.byProvideror an allowlist) - If
toolCount > 0β provider/tool-calling mismatch (then the practical fix is usually switching fromgoogle-gemini-cli/...to the normalgoogle/...Gemini API provider)
Post the tools block + that one log event and we can pin this down in one round trip.
"tools": {
"profile": "full",
"allow": [
"group:openclaw",
"group:runtime",
"group:fs",
"exec",
"bash",
"process"
],
"loopDetection": {
"enabled": true,
"warningThreshold": 10
},
"message": {
"allowCrossContextSend": true,
"crossContext": {
"allowWithinProvider": true,
"allowAcrossProviders": true
},
"broadcast": {
"enabled": true
}
},
"exec": {
"host": "node",
"security": "full",
"ask": "off"
}
},
That tools block looks basically βwide openβ β so if youβre still getting βI donβt have access to any toolsβ, itβs almost certainly not because tools.allow is empty.
Two important gotchas I do see:
A) Your exec is configured to run on a node, but you have no node service
You have:
tools: {
exec: { host: "node", security: "full", ask: "off" }
}
β¦and your status --all earlier said βNode service: systemd not installedβ.
So if what youβre testing is βrun a commandβ, the bot may act like it has no tools because the only tool you care about (exec) canβt run anywhere.
Quick fix (test): change that to run on the gateway host:
tools: { exec: { host: "gateway" } }
(Also: security:"full" + ask:"off" is pretty dangerous with tool-capable models. At least for testing, Iβd recommend ask:"on-miss".)
B) Youβre using google-gemini-cli/... (Gemini CLI), which can be flaky with tool calling
This provider path is explicitly called out in the docs as having βtool support/version skewβ quirks vs the normal google/... Gemini API.
Source: https://docs.openclaw.ai/help/testing
The one log line that will tell us which it is
Please run:
- Set file logs to info (so the line actually appears):