{"repo":"NousResearch/hermes-agent","public_id":"37455","display_label":"config set serializes structured values as strings","summary":"A recurring bug where 'hermes config set' writes JSON objects, arrays, and lists as raw strings in config.yaml instead of structured YAML, silently breaking plugin loading, fallback chains, and other list-typed config keys. Multiple fix attempts and related parsing patches are represented.","subsystem":"apps/desktop","counts":{"members":19,"open_issues":1,"open_issues_distinct":1,"open_prs":3,"closed_issues":5,"merged_prs":2,"attempt_prs":11},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":88163},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-22T06:31:03+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.09871345029239763},"fix_edges":[{"issue_number":40545,"pr_number":88163,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":51560,"pr_number":88163,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":51560,"pr_number":118843,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":76138,"pr_number":88163,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":76138,"pr_number":118843,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":83308,"pr_number":118843,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":88451,"pr_number":118843,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":105706,"pr_number":118843,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":118113,"pr_number":118843,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":37455,"title":"config set: string value overwrites list for 'enabled' key, silently breaking plugin loading","url":null,"state":"closed"},{"kind":"issue","number":40545,"title":"[Bug]: Hermes config set writes JSON object values as strings in config.yaml","url":null,"state":"closed"},{"kind":"issue","number":51560,"title":"fallback_providers as JSON string (from 'hermes config set') silently empties the fallback chain — _iter_fallback_entries drops str","url":null,"state":"closed"},{"kind":"issue","number":60551,"title":"config.yaml: agent write guard, and 'hermes config set' writes string scalar for list keys","url":null,"state":"open"},{"kind":"issue","number":63383,"title":"[Bug]: docker_volumes ignored in Hermes Desktop (works in CLI)","url":null,"state":"closed"},{"kind":"issue","number":64323,"title":"`hermes config set` silently writes list values as strings — docker `docker_volumes` mounts then silently no-op (false sense of isolation/config success)","url":null,"state":"closed"},{"kind":"pr","number":37460,"title":"fix(config): parse bracket-delimited list values in config set","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#88163","number":88163},{"kind":"pr","value":"#59182","number":59182}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":40546,"title":"fix(cli): parse JSON object values in config set","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"129e616818fa8bd7530007d11007704a329359c1","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":40845,"title":"fix(cli): persist JSON object/array values as structured YAML in config set","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#40546","number":40546}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":51594,"title":"fix(cli): parse JSON-string fallback_providers (#51560)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"c3021aff0dc","number":0},{"kind":"pr","value":"#88163","number":88163},{"kind":"pr","value":"#118843","number":118843},{"kind":"pr","value":"#105706","number":105706}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":52099,"title":"fix(fallback): parse JSON-string fallback_providers written by config set","url":null,"state":"closed","close_reason":{"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":59182,"title":"fix(config): parse list/mapping literals in hermes config set","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#88163","number":88163},{"kind":"pr","value":"#37460","number":37460}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":60558,"title":"fix(config): parse JSON list/dict values in config set","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#40545","number":40545},{"kind":"pr","value":"#60551","number":60551},{"kind":"pr","value":"#44226","number":44226}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":63569,"title":"fix: parse JSON-string fallback_providers in YAML config","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#51594","number":51594},{"kind":"pr","value":"#51560","number":51560},{"kind":"pr","value":"#52099","number":52099},{"kind":"pr","value":"#51594","number":51594}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":64389,"title":"fix(config): parse structured config values","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"84be3202305a","number":0},{"kind":"pr","value":"#64323","number":64323},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64399","number":64399},{"kind":"pr","value":"#66439","number":66439},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64399","number":64399},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#66439","number":66439},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64399","number":64399},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64399","number":64399},{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#66439","number":66439},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64399","number":64399},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#66439","number":66439},{"kind":"pr","value":"#1","number":1},{"kind":"pr","value":"#1","number":1},{"kind":"pr","value":"#15803","number":15803},{"kind":"pr","value":"#14532","number":14532},{"kind":"pr","value":"#6","number":6},{"kind":"pr","value":"#1","number":1},{"kind":"pr","value":"#9","number":9},{"kind":"pr","value":"#374151","number":374151},{"kind":"pr","value":"#4338","number":4338},{"kind":"pr","value":"#64323","number":64323},{"kind":"pr","value":"#64389","number":64389},{"kind":"pr","value":"#64399","number":64399}],"category":"partial_fix","implication":"needs_llm"},"merged":false},{"kind":"pr","number":64399,"title":"fix(cli): hermes config set now parses YAML lists/dicts (#64323)","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#60558","number":60558}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":77645,"title":"fix(config): persist JSON object/array values as structured YAML in config set (#40545)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#40546","number":40546},{"kind":"pr","value":"#40546","number":40546}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":88163,"title":"fix(config): parse structured list/dict values in hermes config set (consolidates 8-PR cluster)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/config.py","tests/hermes_cli/test_config_set_list_values.py","website/docs/user-guide/configuring-models.md"]},{"kind":"pr","number":118843,"title":"config.yaml quoted-string lists are flagged by doctor/startup and no longer written by config set; catalog stars probe re-mints its App token (#83308 #105706 #118113)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":[".github/workflows/skills-index.yml","hermes_cli/config.py","tests/hermes_cli/test_config_set_list_values.py","tests/hermes_cli/test_config_validation.py","tests/website/test_fetch_plugin_stars.py","website/docs/reference/cli-commands.md","website/scripts/fetch-plugin-stars.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}