# NousResearch/hermes-agent · Prevent partial dict from silently overwriting config

## Open now

- Nothing open on GitHub.

A bug was identified where atomic_config_write would silently replace the full config.yaml with a partial dictionary, deleting most keys. These members address making such destructive replacements explicit or refusing partial payloads.

## TL;DR

- 4 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 1 merged PR(s), 2 PR(s) closed without merging.
- A fix was merged to main in PR #127932. Verify it addresses your case.
- **Recommended:** read PR #127932 (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-127932`. 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.67`: 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

- #125107: \[Bug\]: atomic_config_write silently wipes config.yaml when handed a partial dict (99 keys -> 1)

## Prior & competing PRs

- **#127932: fix(config): make destructive replacements explicit**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`
  - files: `.github/workflows/lint.yml`, `hermes_cli/AGENTS.md`, `hermes_cli/auth.py`, `hermes_cli/config.py`, `hermes_cli/credential_lifecycle.py`, `hermes_cli/doctor_config.py`, `hermes_cli/profile_channels.py`, `scripts/check_config_yaml_writers.py`, `tests/hermes_cli/test_config.py`, `tests/hermes_cli/test_config_yaml_comment_preservation.py`, `tests/hermes_cli/test_model_provider_persistence.py`, `tests/hermes_cli/test_profile_clone_channels.py`, `tui_gateway/server.py`, `utils.py`
- **#125109: fix(config): refuse a partial payload that would delete most of config.yaml**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#127932`, `#125107`
- **#125152: fix(config): make destructive replacements explicit**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#127932`

## Fix status

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