-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
Silent failure when web_search is in toolsAllow but no search provider plugin is enabled #97654
Copy link
Copy link
Closed
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.no-staleExclude from stale automationExclude from stale automation
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.no-staleExclude from stale automationExclude from stale automation
Type
Fields
Priority
None yet
Summary
When a cron job has
web_searchin itstoolsAllowlist but every web search provider plugin is disabled, openclaw silently makes the tool unavailable at runtime. The model then either fails to call it or explains it cannot search, and delivers an apology as the output. The run completes withstatus: okandlastDeliveryStatus: delivered— so the operator has no signal that anything is wrong.Behaviour
Given a cron job with:
And all search provider plugins disabled (
duckduckgo,exa,firecrawl,tavily,searxngallenabled: false):status: ok,lastDeliveryStatus: deliveredare recordedcron_run_logs.diagnostics_summaryopenclaw logsshows nothing actionableExpected Behaviour
One or more of:
At run start: a preflight check detects that
web_searchis intoolsAllowbutlistWebSearchProviders()returns an empty list, and either fails fast with a clear error or adds a diagnostic warning:In run diagnostics:
diagnostics_summaryincludes the above when the model's tool call toweb_searchreceives no registered handler.At job creation /
openclaw cron add: warn if a tool intoolsAllowhas no registered provider at the time the job is created.Why It's a Silent Failure
bundled-capability-runtime-D0Uof9U-.jsbuildswebSearchProviders = []when no plugin fulfils thewebSearchProviderscontract. The empty array is passed through to the tool registry without any warning.toolsAllowonly gates whether a registered tool is permitted — it does not validate whether the tool is registered. There is no cross-check between the two.The run therefore reaches
status: okbecause the agent session itself completed without a system-level error; the apology from the model is a valid text response, not an exception.Reproduction
toolsAllow: ["web_search"]and a prompt that instructs the model to useweb_search.openclaw cron run <job-id>.status: ok,delivered: true, content is a "cannot search" apology. No warning anywhere.Fix Suggestion
In the preflight path of cron/agent execution (e.g.
attempt-execution-B_ltmss6.jsor the cron runner), before the turn is dispatched:The same pattern applies to
web_fetchandbrowsertools.Environment
toolsAllow: ["web_search"]