# NousResearch/hermes-agent · Fix JSON serialization of list/dict terminal scope values

## Open now

- Nothing open on GitHub.

A bug where list/dict config values in terminal profile scope were serialized with str() instead of json.dumps(), breaking docker_volumes and docker_env in certain backend profiles. Multiple fix attempts and related changes address this serialization issue.

## TL;DR

- 7 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 1 merged PR(s), 5 PR(s) closed without merging.
- A fix was merged to main in PR #103643. Verify it addresses your case.
- **Recommended:** read PR #103643 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-103643`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.29`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #101465: \[Bug\]: build_profile_terminal_scope serializes list/dict config values with \`str()\` instead of \`json.dumps()\`, breaking terminal for docker-backend profiles served by the unified dashboard

## Prior & competing PRs

- **#103643: fix(terminal): profile terminal scope serialises list/dict config as JSON, so docker_volumes/docker_env survive multiplexing (#101465, salvage #101479)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `tests/tools/test_terminal_scope_multiplex.py`, `tools/terminal_scope.py`
- **#101472: fix(terminal): serialize list/dict terminal scope values as JSON**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `179e988493`, `#101465`, `#103643`, `#101479`
- **#101479: fix(terminal): JSON-serialize list/dict values in profile terminal scope**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `179e988493`, `#103643`
- **#101546: fix(tools): serialize terminal-scope list/dict config values as JSON (#101465)**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#101472`
- **#102230: fix(tools): serialize list/dict terminal scope values as JSON**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#101472`
- **#102293: fix(terminal): serialize list/dict terminal config values with json.dumps instead of str() (#101465)**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#101472`, `#101465`, `#101472`

## Fix status

- Merged to main in PR #103643 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-09-05`.
