Doctor falsely flags valid config keys as unknown
NousResearch/hermes-agent · cluster 67397 · hermes cli
Data as of
Nothing open on GitHub. Fix merged in #67891. Check it covers your case.
The short answer
- Known?
- Yes. 11 related items grouped here, 4 issues already closed.
- Fix event
- A fix was merged to main in PR #67891. Check it covers your case. No release data is tracked.
- Tracker
- The maintainers' tracker marks this
partially resolved, deciding PR #67891. That is separate from the fix event. - Still open
- Nothing open on GitHub.
A bug where hermes doctor incorrectly warns that supported top-level config keys like group_sessions_per_user and known_plugin_toolsets are unknown or ignored. Multiple fix attempts address adding these keys to an allowlist (_EXTRA_KNOWN_ROOT_KEYS) to suppress the false warnings.
Open issues0
Open PRs0
Fixes on record
-
#67891 fix(config): stop doctor flagging all Hermes-written top-level config keys
files:
hermes_cli/config.py,tests/hermes_cli/test_config_validation.pyShow the diff
-
hermes_cli/config.py@@ -5512,7 +5512,14 @@ def check_config_version() -> Tuple[int, int]: "plugins", # plugin enable/disable lists (hermes_cli/plugins_cmd.py) "smart_model_routing", # written by the setup wizard (hermes_cli/setup.py) "platform_toolsets", # written by the setup wizard (hermes_cli/setup.py) + "known_plugin_toolsets", # written/read by hermes_cli/tools_config.py toolset-save flow "session_reset", # top-level form read by gateway/config.py + setup + "group_sessions_per_user", # top-level form bridged by gateway/config.py + "thread_sessions_per_user", # top-level form bridged by gateway/config.py + "stt_echo_transcripts", # top-level form bridged by gateway/config.py + "reset_triggers", # top-level form bridged by gateway/config.py + "always_log_local", # top-level form bridged by gateway/config.py + "filter_silence_narration", # top-level form bridged by gateway/config.py "multiplex_profiles", # top-level form accepted alongside gateway.multiplex_profiles "profile_routes", # top-level form accepted alongside gateway.profile_routes "platforms", # top-level per-platform map merged by gateway/config.py -
tests/hermes_cli/test_config_validation.py@@ -253,6 +253,28 @@ def test_known_root_keys_derived_from_default_config(self): assert _EXTRA_KNOWN_ROOT_KEYS.issubset(_KNOWN_ROOT_KEYS) assert _KNOWN_ROOT_KEYS == frozenset(DEFAULT_CONFIG.keys()) | _EXTRA_KNOWN_ROOT_KEYS + def test_hermes_written_roots_not_flagged_as_unknown(self): + """Roots Hermes itself writes/reads must not warn as unknown (#67397).""" + issues = validate_config_structure({ + "model": {"provider": "openrouter"}, + "known_plugin_toolsets": {"cli": ["spotify"]}, + "group_sessions_per_user": True, + "thread_sessions_per_user": False, + "stt_echo_transcripts": True, + "reset_triggers": ["/new"], + "always_log_local": True, + "filter_silence_narration": True, + }) + unknown = [i for i in issues if "Unknown top-level config key" in i.message] + messages = " ".join(i.message for i in unknown) + assert "known_plugin_toolsets" not in messages + assert "group_sessions_per_user" not in messages + assert "thread_sessions_per_user" not in messages + assert "stt_echo_transcripts" not in messages + assert "reset_triggers" not in messages + assert "always_log_local" not in messages + assert "filter_silence_narration" not in messages + def test_provider_like_unknown_root_keeps_misplaced_message(self): """Preserve existing base_url/api_key root-level guidance (not generic unknown).""" issues = validate_config_structure({
-
6 PRs closed without merging
From the close comments: done elsewhere 2 · duplicate 2 · won't fix / by design 1 · other 1
-
#67497 fix(config): add group_sessions_per_user + known_plugin_toolsets to _EXTRA_KNOWN_ROOT_KEYS (#67478) · other →
#67924 - #67513 fix(config): add group_sessions_per_user and known_plugin_toolsets to _EXTRA_KNOWN_ROOT_KEYS · done elsewhere
-
#67517 fix(config): 添加 group_sessions_per_user 和 known_plugin_toolsets 到白名单 · duplicate →
#67497,#67447 -
#67583 fix(cli): recognize group_sessions_per_user and known_plugin_toolsets as known config roots (#67478) · duplicate →
#67497,#67447 -
#67654 fix(config,doctor): accept known roots and synthetic slugs · won't fix / by design →
#67924
Show 1 more
-
#68023 fix(config): add runtime-supported keys to _EXTRA_KNOWN_ROOT_KEYS (#68000) · done elsewhere →
9bda643,#67924,#68000
Closed issues · 4
- Closed#67397[Bug]: `hermes doctor` flags supported top-level config keys `group_sessions_per_user` and `known_plugin_toolsets` as unknown
- Closed#67478[Bug] follow-up #67397: _EXTRA_KNOWN_ROOT_KEYS still missing group_sessions_per_user + known_plugin_toolsets on main
- Closed#67860[Bug]: ⚠ Config issues detected in config.yaml:
- Closed#68000Doctor reports runtime-supported root config keys as ignored
How this cluster was grouped
-
Link evidence (
partly structural links): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text. - Members outside that structural core may belong to a different underlying problem.
-
Pairwise link density
0.17: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36.1.00means every pair is linked.
Pick up a Lab task
Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.
Open the LabAt a glance
- Subsystem
- hermes cli
- Merged PRs
- #67891
- Closed issues
- 4
- Attempts
- 6 PRs closed without merging
- Fix link checked
- 20 Jul 2026