Summary
register_provider() in providers/__init__.py unconditionally overwrites entries in _REGISTRY and _ALIASES with no check for existing names or aliases and no logging or warning. This makes duplicate registrations (common when users add custom model-provider plugins) completely silent.
Reproduction
- Create two model-provider plugins that register the same
name or overlapping aliases.
- Run any command that triggers discovery (
hermes model, hermes doctor, agent startup).
- No output, no warning, and the last registration silently wins.
Expected behavior
Duplicate registration should produce a clear warning (or error) at registration time, and hermes doctor should surface active overrides.
Actual behavior
Silent overwrite. Users have no visibility into which profile is active when names collide.
Environment
- Hermes Agent (current main)
- macOS / Linux
- Any install method
- Affects anyone using or developing custom model-provider plugins
Evidence
providers/__init__.py:53-62 — register_provider() has no existence check or logging.
plugins/model-providers/README.md and website/docs/developer-guide/model-provider-plugin.md document last-writer-wins but mention no conflict handling.
- No prior issue found for this specific gap.
Summary
register_provider()inproviders/__init__.pyunconditionally overwrites entries in_REGISTRYand_ALIASESwith no check for existing names or aliases and no logging or warning. This makes duplicate registrations (common when users add custom model-provider plugins) completely silent.Reproduction
nameor overlappingaliases.hermes model,hermes doctor, agent startup).Expected behavior
Duplicate registration should produce a clear warning (or error) at registration time, and
hermes doctorshould surface active overrides.Actual behavior
Silent overwrite. Users have no visibility into which profile is active when names collide.
Environment
Evidence
providers/__init__.py:53-62—register_provider()has no existence check or logging.plugins/model-providers/README.mdandwebsite/docs/developer-guide/model-provider-plugin.mddocument last-writer-wins but mention no conflict handling.