# NousResearch/hermes-agent · add_provider() state mutation timing bug fixes

## Open now

- Nothing open on GitHub.

These items address a bug in add_provider() where state is mutated before schema loading succeeds, potentially leaving providers half-registered. The work defers state changes until schema loading completes and adds error handling to roll back or prevent registration on incomplete loading.

## TL;DR

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

- #9948: MemoryManager add_provider() leaves failed external provider half-registered

## Prior & competing PRs

- **#109131: MemoryManager no longer keeps a provider whose schema load failed (#9948, salvage #9997)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `agent/memory_manager.py`, `contributors/emails/[redacted:email]`, `tests/agent/test_memory_provider.py`
- **#119888: hindsight moves to the plugin catalog (auto-migrated on first start / hermes update)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `.github/workflows/tests-os.yml`, `.github/workflows/tests.yml`, `COMPAT_MANIFEST.md`, `CONTRIBUTING.es.md`, `CONTRIBUTING.md`, `Dockerfile`, `compat_manifest.json`, `hermes_cli/config_defaults.py`, `hermes_cli/memory_setup.py`, `hermes_cli/subcommands/memory.py`, `hermes_cli/tips.py`, `hermes_cli/update_cmd.py`, `hermes_cli/web_server_memory.py`, `nix/checks.nix`, `nix/hermes-agent.nix`, `nix/moduleCommon.nix`, `nix/packages.nix`, `plugins/AGENTS.md`, `plugins/memory/__init__.py`, `plugins/memory/hindsight/README.md` (+30 more)
- **#9958: fix(memory): rollback add_provider state on schema load failure**. closed without merge
  - maintainer direction: category `stale_abandoned`; implication `active`
- **#9997: fix(memory_manager): load schemas before mutating state in add_provider()**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#13224`, `#9948`
- **#13224: fix(memory): defer state mutation in add_provider until schema load succeeds**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `befa5735e9`, `#109131`
- **#17119: feat(agent): support multiple simultaneous memory providers**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#5688`
- **#21418: fix(agent): wrap schema loading in try/except to prevent registration on failure**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`
- **#26613: fix(agent): load tool schemas before mutating state in add_provider() (#9948)**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#13224`, `#21418`, `#10051`, `#9948`
- **#26660: fix(agent): load tool schemas before mutating state in add_provider() (#9948)**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#13224`

## Fix status

- Merged to main in PR #109131 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-09-23`.
- Subsystem: `agent`
