Skip to content

[Bug]: MoA presets disappear from desktop model pickers after explicit_only change (#37a4cf900) #61889

Description

@DavidMetcalfe

Bug Description

After updating Hermes Desktop, a user's named Mixture of Agents presets (e.g. "Free MOA Gemini build") disappeared from both the chat model-picker pill and the Settings > Models provider dropdown. The preset config (the moa: block, with default_preset: Free MOA Gemini build) was never deleted — the desktop model pickers simply stopped listing the MoA virtual provider.

Steps to Reproduce

  1. Configure a MoA preset (Settings > Models > Configure Mixture of Agents presets).
  2. Update Hermes Desktop (the regression landed in #37a4cf900, merged Jul 2).
  3. Open the chat model-picker pill and type "moa".
  4. Observe: only ambient providers appear (e.g. KILO GATEWAY -> Hy3:Free High); no "MOA PRESETS" section.
  5. Open Settings > Models provider dropdown: "Mixture of Agents" is missing from the list.

Expected Behavior

The MoA virtual provider and its named presets should remain selectable in explicit-only desktop pickers, the same way user-defined providers do — MoA presets are user-authored config, not ambient auto-seeded credentials.

Actual Behavior

With explicit_only=True (the default for desktop chat pickers since #37a4cf900), _filter_explicit_provider_rows hard-drops the moa virtual provider:

if slug == "moa":
    # MoA is a virtual routing mode, not an independently configured provider.
    # Hide it from explicit-only pickers unless it is the current provider.
    continue

So build_models_payload(ctx, explicit_only=True) returns no moa row, and the chat pill + Settings panel both lose MoA.

Affected Component

  • Configuration (config.yaml, .env, hermes setup)
  • Other (Desktop model picker UI)

Messaging Platform (if gateway-related)

  • N/A (CLI only)

Debug Report

Not pasted — running hermes debug share would upload the user's personal config and logs to a public paste service, so we are intentionally not including it. The bug is fully reproduced and fixed from source; see Root Cause Analysis and Proposed Fix below.

Operating System

macOS 26.5.1 (Desktop)

Python Version

3.11.15

Hermes Version

0.18.2

Root Cause Analysis

hermes_cli/inventory.py, function _filter_explicit_provider_rows. When slug == "moa", the row is unconditionally skipped (continue). This was added by #37a4cf900 along with the explicit_only flag, whose stated intent was to hide ambient / auto-seeded credentials (e.g. GitHub CLI -> Copilot) from desktop chat pickers. MoA presets are explicitly user-authored config, so they should be kept — exactly like is_user_defined provider rows are kept earlier in the same loop.

The chat pill and Settings panel both consume /api/model/options, which calls build_models_payload(..., explicit_only=True) (web_server.py get_model_options), so both surfaces regressed together.

Proposed Fix

In _filter_explicit_provider_rows, keep the moa row instead of skipping it:

if slug == "moa":
    # MoA presets are user-authored config, so keep them in explicit-only pickers.
    kept.append(row)
    continue

A fix + regression test is ready as PR #61887.

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havecomp/agentCore agent runtime: loop, agent_init, prompt builder, context-compression, responses endpointcomp/cliCLI entry point, hermes_cli/, setup wizardcomp/desktopElectron desktop app (apps/desktop/*)duplicateThis issue or pull request already existstype/bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions