Custom LLM provider disappears from Configure screen (replaced by a phantom "Hermes One — key set" card) after a session hits a mismatched provider/model 404

Author: dosakusaCreated Sep 16, 2026Updated Sep 16, 2026

Summary

A previously-configured custom LLM provider (a local OpenAI-compatible endpoint added via "Add provider" → "Custom provider") disappeared entirely from the "LLM Providers" section of the Configure screen, even though the underlying providers.json, models.json, and config.yaml on disk still had the correct, untouched data the whole time. In its place, an unexpected "Hermes One" card appeared showing "key set" (masked dots) — despite there being no HERMESONE_API_KEY anywhere in .env.

Restarting the app (fully quitting and relaunching) did not fix this. The only way to recover was manually deleting and re-adding the same provider (same name/URL/key) via "Add provider" → "Custom provider".

Environment

  • hermes-desktop: 0.7.7 (npm run dev, Windows 11)
  • hermes-agent: 0.21.3

What likely triggered it

Shortly before the provider disappeared, one chat session got into a bad state where it was sending requests to provider=custom:hermesone base_url=https://inference.hermesone.org/v1 while still carrying model=hermes-qwen (the locally-configured custom provider's model name) — producing repeated HTTP 404: 404 page not found errors. This looks like it came from a stale/incorrect per-session model override (desktop_session_model_overrides table, src/main/session-model-override-store.ts), possibly set from browsing the "Browse Models" catalog picker.

Shortly after that session errored out, the "LLM Providers" section on the Configure screen stopped showing the real custom provider at all, and started showing a "Hermes One" card with a key that doesn't exist in .env.

Verified while debugging

  • providers.json — correct, custom provider entry present the whole time
  • models.json — correct, model entry present the whole time
  • config.yaml providers: and model: blocks — correct the whole time
  • .env — has CUSTOM_PROVIDER_<NAME>_KEY=... for the real provider; no HERMESONE_API_KEY line exists anywhere
  • Only one Electron instance was running (checked via process list) — not a duplicate-window issue

Expected behavior

The "LLM Providers" list should reflect providers.json/models.json/config.yaml reliably, and a stray/corrupt per-session override in one chat tab shouldn't be able to make an unrelated, correctly-configured provider vanish from the global Configure screen (or fabricate a "Hermes One — key set" card that doesn't correspond to any real key).

Workaround

Delete and re-add the same custom provider from "Add provider" → "Custom provider" (same name/base URL/key). This restores it immediately and the model becomes selectable again.