7de06f700e
A ``providers.<name>`` block in ``config.yaml`` can now opt out of being listed anywhere by setting ``enabled: false`` — without removing the block, so re-enabling it stays a one-line edit. Missing or ``true`` keeps the previous behaviour (enabled), so this is fully backwards-compatible. The flag is honoured in four places: * ``hermes_cli/model_switch.py`` — model-override validation (the allow-list that the picker consults to accept a non-public model id) and the picker's own endpoint iteration. A disabled provider no longer appears as a row and its models can't be silently accepted via override. * ``hermes_cli/runtime_provider.py`` — the runtime resolver skips disabled blocks, so an explicit ``--provider X`` against a disabled entry fails fast instead of using stale base_url / api_key from the ignored block. * ``hermes_cli/doctor.py`` — the doctor's "configured providers" set excludes disabled entries, so health checks don't flag missing API keys for providers the user has turned off. Motivation: when a user has 20+ providers wired up in ``config.yaml`` (many of them only used occasionally) the picker becomes noisy and the runtime resolver may pick a suboptimal one on ambiguous --provider names. There's currently no way to hide a provider short of deleting its block — which loses the api_key + base_url + custom routing config the user spent time wiring. ``enabled: false`` lets them keep the config but get it out of the way. The helper ``is_provider_enabled()`` in ``hermes_cli/config.py`` centralises the gate (and accepts YAML-stringified booleans like ``"false"`` for hand-edited configs). 17 unit tests cover the defaults and edge cases. A follow-up PR can wire ``hermes provider enable/disable <name>`` and a dashboard toggle on top of this primitive — they reduce to mutating the flag.