openclaw - ✅(Solved) Fix [Bug]: Disabling a skill fails via `skills.update` [1 pull requests]

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…

Disabling a skill fails via skills.update with this error: This happens even though the active config validates cleanly and tools.web.search does not appear to contain legacy provider-owned config.

Error Message

Disabling a skill fails via skills.update with this error: 5. Gateway logs show skills.update failing with the legacy tools.web.search validation error Skill is disabled, no error in log Disabling a skill fails via skills.update with this error: Error: Config validation failed: tools.web.search: tools.web.search provider-owned config moved to plugins.entries.<plugin>.config.webSearch. Run "openclaw doctor --fix".

Root Cause

Disabling a skill fails via skills.update with this error: This happens even though the active config validates cleanly and tools.web.search does not appear to contain legacy provider-owned config.

Fix Action

Fixed

PR fix notes

PR #69602: Fix skills.update writes from runtime-derived config

Description (problem / solution / changelog)

Summary

  • update skills.update to mutate the source config snapshot instead of rewriting the runtime-loaded config
  • keep the existing skill field normalization logic while avoiding runtime-only compatibility fields during writes
  • add regression coverage for skill API key updates and skill disabling when runtime-only legacy web-search config is present

Testing

  • pnpm vitest --config test/vitest/vitest.gateway-methods.config.ts run src/gateway/server-methods/skills.update.normalizes-api-key.test.ts src/gateway/server-methods/skills.clawhub.test.ts
  • pre-commit check:changed (auto-ran during commit, includes gateway test suite)

Closes #69554

Changed files

  • src/gateway/server-methods/skills.ts (modified, +39/-39)
  • src/gateway/server-methods/skills.update.normalizes-api-key.test.ts (modified, +102/-3)

Code Example

## What I checked
- Ran `openclaw doctor --fix`
- Checked active config file with:
  
bash
  openclaw config file
  
  Output:
  
text
  ~/.openclaw/openclaw.json
- Checked `tools.web.search`:
  
bash
  openclaw config get tools.web.search --json
  
  Output:
  
json
  {
    "enabled": true
  }
  
- Validated config:
  
bash
  openclaw config validate --json
  Output indicated the config is valid.

- Searched recursively under `~/.openclaw` for `tools.web.search`
  - Only hit was in a session file, not the active config.
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

Disabling a skill fails via skills.update with this error: This happens even though the active config validates cleanly and tools.web.search does not appear to contain legacy provider-owned config.

Steps to reproduce

  1. Open the Skills UI / settings surface that triggers skills.update
  2. Disable a skill
  3. Save/apply the change
  4. The change does not stick
  5. Gateway logs show skills.update failing with the legacy tools.web.search validation error

Expected behavior

Skill is disabled, no error in log

Actual behavior

Disabling a skill fails via skills.update with this error: Error: Config validation failed: tools.web.search: tools.web.search provider-owned config moved to plugins.entries.<plugin>.config.webSearch. Run "openclaw doctor --fix". This happens even though the active config validates cleanly and tools.web.search does not appear to contain legacy provider-owned config.

running openclaw doctor --fix doesn't change anything.

OpenClaw version

OpenClaw 2026.4.15 (041266a)

Operating system

Ubuntu 24.04.4 LTS

Install method

No response

Model

qwen35-35b-a3b though this command isn't using a model

Provider / routing chain

openclaw -> llama.cpp -> qwen35

Additional provider/model setup details

No response

Logs, screenshots, and evidence

## What I checked
- Ran `openclaw doctor --fix`
- Checked active config file with:
  
bash
  openclaw config file
  
  Output:
  
text
  ~/.openclaw/openclaw.json
- Checked `tools.web.search`:
  
bash
  openclaw config get tools.web.search --json
  
  Output:
  
json
  {
    "enabled": true
  }
  
- Validated config:
  
bash
  openclaw config validate --json
  Output indicated the config is valid.

- Searched recursively under `~/.openclaw` for `tools.web.search`
  - Only hit was in a session file, not the active config.

Impact and severity

skills must be manually disabled in config

Additional information

No response

extent analysis

TL;DR

The issue can be resolved by manually updating the tools.web.search configuration to use the new plugins.entries.<plugin>.config.webSearch format.

Guidance

  • Verify that the tools.web.search configuration is not present in the active config file by running openclaw config get tools.web.search --json and checking the output.
  • Check the plugins.entries section in the active config file to ensure that the webSearch configuration is correctly set up.
  • Manually update the tools.web.search configuration to use the new format by running openclaw config set plugins.entries.<plugin>.config.webSearch.enabled true (replace <plugin> with the actual plugin name).
  • Validate the config again after making changes using openclaw config validate --json to ensure that the issue is resolved.

Example

No code snippet is provided as the issue is related to configuration and not code.

Notes

The issue seems to be related to a legacy configuration format that is no longer supported. The openclaw doctor --fix command does not seem to be effective in resolving the issue. Manual intervention is required to update the configuration to the new format.

Recommendation

Apply workaround: Manually update the tools.web.search configuration to use the new format, as the openclaw doctor --fix command does not seem to be effective.

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

Skill is disabled, no error in log

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Bug]: Disabling a skill fails via `skills.update` [1 pull requests]