hermes - 💡(How to fix) Fix Feature: Per-tool enable/disable in config (below toolset granularity)

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…

Root Cause

The search toolset exists in TOOLSETS (toolsets.py) with only web_search, but it's missing from CONFIGURABLE_TOOLSETS (tools_config.py). Adding it there is a one-line fix for this specific case — but the broader issue remains: there's no way to disable a single tool from within a toolset via config.yaml.

Fix Action

Fix / Workaround

A concrete example: users who have an MCP server for web scraping (e.g. fastcrw) may want the built-in web_search but NOT web_extract. The current workaround is setting web.extract_backend: '' so web_extract appears as a tool but fails harmlessly — which pollutes the tool list and wastes tokens on a useless schema.

Code Example

agent:
  disabled_tools:
    - web_extract       # disable just this tool
    - computer_use      # or specific tools from any toolset

---

platform_toolsets:
  telegram:
    - search        # web_search only
    # no 'web'     # no web_extract
RAW_BUFFERClick to expand / collapse

Problem

Currently, tool configuration only works at the toolset level. The web toolset bundles both web_search and web_extract — there's no way to enable one without the other via config.

A concrete example: users who have an MCP server for web scraping (e.g. fastcrw) may want the built-in web_search but NOT web_extract. The current workaround is setting web.extract_backend: '' so web_extract appears as a tool but fails harmlessly — which pollutes the tool list and wastes tokens on a useless schema.

Root Cause

The search toolset exists in TOOLSETS (toolsets.py) with only web_search, but it's missing from CONFIGURABLE_TOOLSETS (tools_config.py). Adding it there is a one-line fix for this specific case — but the broader issue remains: there's no way to disable a single tool from within a toolset via config.yaml.

Current State

  • disabled_toolsets — disables entire toolsets ✅
  • platform_toolsets — enables entire toolsets per platform ✅
  • MCP servers support tools.exclude for per-tool filtering ✅
  • Built-in tools: toolset-level only ❌

Proposed Solution

Add a config key for per-tool filtering that works alongside disabled_toolsets:

agent:
  disabled_tools:
    - web_extract       # disable just this tool
    - computer_use      # or specific tools from any toolset

Or alternatively, make toolset definitions more granular (split web into web_search and web_extract as separate toggles in CONFIGURABLE_TOOLSETS), so users can mix-and-match:

platform_toolsets:
  telegram:
    - search        # web_search only
    # no 'web'     # no web_extract

The search toolset already exists in TOOLSETS but just needs to be added to CONFIGURABLE_TOOLSETS to make this work.

Related

  • MCP servers already support tools.exclude — built-in tools should have equivalent granularity
  • Issue #21849 (Tool Permission Gating) is about runtime permissions, not config enable/disable

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING