openclaw - ✅(Solved) Fix [Bug]: web_search misses external Brave provider when active runtime registry has no web-search providers [1 pull requests, 2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#77233Fetched 2026-05-05 05:50:54
View on GitHub
Comments
2
Participants
3
Timeline
5
Reactions
2
Author
Timeline (top)
commented ×2closed ×1cross-referenced ×1referenced ×1

In OpenClaw 2026.5.3, the agent-facing web_search tool can report web_search is disabled or no provider is available even when an external Brave web-search plugin is installed, enabled, and callable through the lower-level runtime provider path.

Error Message

Observed agent tool error: [tools] web_search failed: web_search is disabled or no provider is available. raw_params={"query":"OpenClaw 2026.5.3 release notes","count":1}

Sanitized investigation notes:

  • openclaw plugins inspect brave showed plugin status loaded, version 2026.5.3, capability web-search: brave.
  • Direct runtime provider invocation returned provider brave and search results for the same query.
  • The failing path was narrowed to runtime provider resolution: when an active runtime registry existed but mapped to zero web-search providers, the resolver returned the empty active-registry result instead of falling back to plugin provider discovery.
  • A local test patch that falls back to plugin provider discovery when the active runtime registry has zero providers made the agent-facing web_search tool return Brave results.

Root Cause

In OpenClaw 2026.5.3, the agent-facing web_search tool can report web_search is disabled or no provider is available even when an external Brave web-search plugin is installed, enabled, and callable through the lower-level runtime provider path.

Fix Action

Fix / Workaround

Sanitized investigation notes:

  • openclaw plugins inspect brave showed plugin status loaded, version 2026.5.3, capability web-search: brave.
  • Direct runtime provider invocation returned provider brave and search results for the same query.
  • The failing path was narrowed to runtime provider resolution: when an active runtime registry existed but mapped to zero web-search providers, the resolver returned the empty active-registry result instead of falling back to plugin provider discovery.
  • A local test patch that falls back to plugin provider discovery when the active runtime registry has zero providers made the agent-facing web_search tool return Brave results.

Affected: installations using external web-search provider plugins such as Brave on 2026.5.3.
Severity: Medium; blocks the agent-facing `web_search` tool while lower-level provider code can still work.
Frequency: Reproduced repeatedly before local patching.
Consequence: agents cannot use configured external web-search providers and report that search is disabled or unavailable.

PR fix notes

PR #77239: fix(web-search): remove origin:"bundled" filter so globally-installed plugins are discoverable

Description (problem / solution / changelog)

Problem

web_search fails with "disabled or no provider is available" for providers installed via openclaw plugins install (e.g. Brave Search). The root cause is four origin: "bundled" constraints hardcoded into src/web-search/runtime.ts:

  • resolveWebSearchProviderIdresolvePluginWebSearchProviders(..., origin: "bundled")
  • resolveExplicitWebSearchProviderPluginIdsresolveManifestContractOwnerPluginId(..., origin: "bundled")
  • resolveWebSearchDefinitionresolvePluginWebSearchProviders(..., origin: "bundled")
  • resolveWebSearchCandidatesresolvePluginWebSearchProviders(..., origin: "bundled")

Externally installed plugins have origin: "global", so they are silently excluded from all four resolution paths.

Fix

Remove the four origin: "bundled" arguments. Both resolvePluginWebSearchProviders and resolveManifestContractOwnerPluginId already treat a missing origin as "search all origins", so no changes to those helpers are needed.

Tests

  • Updated existing assertion that checked origin: "bundled" was forwarded to resolveManifestContractOwnerPluginId — the assertion now only checks contract and value.
  • Added regression test: a preferRuntimeProviders: false runWebSearch call with a "brave" provider succeeds when resolvePluginWebSearchProviders returns it, and verifies the mock was called without an origin field.
  • All 23 runtime.test.ts tests pass.

Fixes #77233.

🤖 Generated with Claude Code

Changed files

  • CHANGELOG.md (modified, +1/-0)
  • src/web-search/runtime.test.ts (modified, +34/-1)
  • src/web-search/runtime.ts (modified, +0/-4)

Code Example

Observed agent tool error:
[tools] web_search failed: web_search is disabled or no provider is available. raw_params={\"query\":\"OpenClaw 2026.5.3 release notes\",\"count\":1}

Sanitized investigation notes:
- `openclaw plugins inspect brave` showed plugin status loaded, version 2026.5.3, capability `web-search: brave`.
- Direct runtime provider invocation returned provider `brave` and search results for the same query.
- The failing path was narrowed to runtime provider resolution: when an active runtime registry existed but mapped to zero web-search providers, the resolver returned the empty active-registry result instead of falling back to plugin provider discovery.
- A local test patch that falls back to plugin provider discovery when the active runtime registry has zero providers made the agent-facing `web_search` tool return Brave results.
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

In OpenClaw 2026.5.3, the agent-facing web_search tool can report web_search is disabled or no provider is available even when an external Brave web-search plugin is installed, enabled, and callable through the lower-level runtime provider path.

Steps to reproduce

  1. Run OpenClaw 2026.5.3 with an external web-search provider plugin such as @openclaw/[email protected] installed and enabled.
  2. Configure web search to use that provider with a valid credential.
  3. From an agent turn, call the built-in web_search tool.
  4. Separately, call the lower-level runtime web-search path against the same provider/plugin setup.

Expected behavior

The agent-facing web_search tool should discover the configured external web-search provider and return provider results, matching the lower-level runtime provider path.

Actual behavior

The agent-facing web_search tool failed with web_search is disabled or no provider is available. The same provider setup returned Brave results when invoked through the lower-level runtime provider path.

OpenClaw version

OpenClaw 2026.5.3 (06d46f7)

Operating system

Linux x64, kernel 6.17.0-23-generic; Node.js v24.15.0

Install method

npm global / packaged CLI update to 2026.5.3

Model

openai-codex/gpt-5.5

Provider / routing chain

agent tool web_search -> OpenClaw runtime web-search provider resolver -> external Brave web-search plugin

Additional provider/model setup details

External Brave web-search plugin version observed: @openclaw/[email protected]. Credential details and local configuration are intentionally omitted/redacted.

Logs, screenshots, and evidence

Observed agent tool error:
[tools] web_search failed: web_search is disabled or no provider is available. raw_params={\"query\":\"OpenClaw 2026.5.3 release notes\",\"count\":1}

Sanitized investigation notes:
- `openclaw plugins inspect brave` showed plugin status loaded, version 2026.5.3, capability `web-search: brave`.
- Direct runtime provider invocation returned provider `brave` and search results for the same query.
- The failing path was narrowed to runtime provider resolution: when an active runtime registry existed but mapped to zero web-search providers, the resolver returned the empty active-registry result instead of falling back to plugin provider discovery.
- A local test patch that falls back to plugin provider discovery when the active runtime registry has zero providers made the agent-facing `web_search` tool return Brave results.

Impact and severity

Affected: installations using external web-search provider plugins such as Brave on 2026.5.3. Severity: Medium; blocks the agent-facing web_search tool while lower-level provider code can still work. Frequency: Reproduced repeatedly before local patching. Consequence: agents cannot use configured external web-search providers and report that search is disabled or unavailable.

Additional information

No private configuration, credentials, hostnames, channel IDs, or local account details are included in this report. The likely fix area is the runtime web provider resolver path that consults the active runtime plugin registry before plugin provider discovery.

extent analysis

TL;DR

The issue can be fixed by modifying the runtime web provider resolver to fall back to plugin provider discovery when the active runtime registry has zero providers.

Guidance

  • Verify that the external web-search provider plugin is correctly installed, enabled, and configured with a valid credential.
  • Check the runtime provider resolver code to ensure it correctly handles the case where the active runtime registry has zero providers.
  • Consider applying a local patch to the runtime provider resolver to fall back to plugin provider discovery in this case, as described in the investigation notes.
  • Test the agent-facing web_search tool after applying any changes to ensure it returns the expected results.

Example

No code snippet is provided, as the exact implementation details are not specified in the issue.

Notes

The issue appears to be specific to OpenClaw version 2026.5.3 and may not affect other versions. The fix may require modifications to the runtime web provider resolver code.

Recommendation

Apply a workaround by modifying the runtime web provider resolver to fall back to plugin provider discovery when the active runtime registry has zero providers, as this has been shown to resolve the issue in local testing.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

The agent-facing web_search tool should discover the configured external web-search provider and return provider results, matching the lower-level runtime provider path.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING