fix: include non-configurable toolsets (messaging/send_message) in gateway reverse-map - #7333
Closed
akhater wants to merge 1 commit into
Closed
fix: include non-configurable toolsets (messaging/send_message) in gateway reverse-map#7333akhater wants to merge 1 commit into
akhater wants to merge 1 commit into
Conversation
…-mapping _get_platform_tools() uses a reverse-mapping loop to infer which toolsets are enabled when no explicit platform_toolsets config exists. The loop iterated only over CONFIGURABLE_TOOLSETS, silently dropping any toolset not listed there — including "messaging", which is the toolset containing send_message. send_message is in _HERMES_CORE_TOOLS and is fully present in the hermes-telegram composite toolset, but because "messaging" was not in CONFIGURABLE_TOOLSETS, it was never added to the enabled set. The check_fn was never even evaluated — the tool was excluded before runtime. Fix: after the CONFIGURABLE_TOOLSETS loop, also iterate over all toolsets defined in TOOLSETS that are neither configurable nor platform defaults. Any whose tools are fully covered by the base composite toolset are added to enabled_toolsets. Adds a logger.debug line for visibility. This only affects the else-branch (no explicit saved config), so profiles that have run `hermes tools` and saved explicit toolset lists are unaffected. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
akhater
force-pushed
the
fix/messaging-toolset-reverse-map
branch
from
April 12, 2026 10:05
33ccace to
9d4d9b4
Compare
Closed
4 tasks
Contributor
|
This is an automated hermes-sweeper review. The bug described here —
Thank you for the investigation and the well-structured PR — the root cause analysis here was accurate, and an independent fix landed just a few days later. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
_get_platform_tools()builds the enabled toolset list via a reverse-mapping loop that only iterated overCONFIGURABLE_TOOLSETS. Themessagingtoolset (containingsend_message) is intentionally not user-configurable, so it was never added to the enabled set.Result:
send_messagewas silently excluded beforecheck_fnwas even evaluated. The tool never appeared in the agent's schema when running via gateway.Root cause
send_messageis in_HERMES_CORE_TOOLSand fully present inhermes-telegram, butmessagingwas never reverse-mapped.Fix
After the
CONFIGURABLE_TOOLSETSloop, also scan toolsets defined inTOOLSETSthat are neither configurable nor platform defaults. Any whose tools are fully covered by the base composite toolset are auto-included. Adds alogger.debugline for visibility.Only affects the
elsebranch (no explicit saved config) — profiles that have runhermes toolsand saved explicit toolset lists are unaffected.Test plan
platform_toolsetsconfig: confirmsend_messageappears in agent tool schemaplatform_toolsetssaved viahermes tools: confirm existing behaviour unchangedcheck_fnis now actually evaluated (and passes when gateway is running)🤖 Generated with Claude Code