From 07271a6f628bcc6a3e8a2f921f2ab298dae2c68d Mon Sep 17 00:00:00 2001 From: teknium1 <127238744+teknium1@users.noreply.github.com> Date: Thu, 9 Jul 2026 20:15:24 -0700 Subject: [PATCH] fix(tools_config): widen null guard to known_plugin_toolsets write path Sibling of the salvaged #53196 read-path fix: setdefault() does not replace a present-but-null key, so saving platform tools with known_plugin_toolsets: null in config.yaml crashed on indexing None. --- hermes_cli/tools_config.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hermes_cli/tools_config.py b/hermes_cli/tools_config.py index acadd4b81fc..9dbfe51b877 100644 --- a/hermes_cli/tools_config.py +++ b/hermes_cli/tools_config.py @@ -1980,7 +1980,10 @@ def _save_platform_tools(config: dict, platform: str, enabled_toolset_keys: Set[ # Track which plugin toolsets are "known" for this platform so we can # distinguish "new plugin, default enabled" from "user disabled it". if plugin_keys: - config.setdefault("known_plugin_toolsets", {}) + # setdefault does NOT replace a present-but-null key ("known_plugin_toolsets:" + # in config.yaml parses to None) — normalize before indexing into it. + if not isinstance(config.get("known_plugin_toolsets"), dict): + config["known_plugin_toolsets"] = {} config["known_plugin_toolsets"][platform] = sorted(plugin_keys) # Reconcile with agent.disabled_toolsets. _get_platform_tools() applies