Skip to content

hermes doctor: false-positive "model.provider 'bedrock' is not a recognised provider" #15358

@alblez

Description

@alblez

Summary

hermes doctor reports a false-positive error for a valid AWS Bedrock configuration:

✗ model.provider 'bedrock' is not a recognised provider (known: ai-gateway, alibaba, ..., bedrock, ...)
...
1. model.provider 'bedrock' is unknown. Valid providers: ..., bedrock, ...
Fix: run 'hermes config set model.provider <valid_provider>'

The error message itself lists bedrock as a known provider. The API Connectivity section in the same doctor run also succeeds against Bedrock. My session uses provider: bedrock and works fine — only the doctor validator is wrong.

Config

model:
  default: us.anthropic.claude-opus-4-7
  provider: bedrock

Root Cause

hermes_cli/doctor.py (~line 322) calls resolve_provider_full('bedrock', ...) and falls back to flagging the provider as unknown if the result is None:

canonical_provider = provider
if provider and _resolve_provider_full is not None and provider != "auto":
    provider_def = _resolve_provider_full(provider, user_providers, custom_providers)
    canonical_provider = provider_def.id if provider_def is not None else None

if provider and provider != "auto":
    if canonical_provider is None or (known_providers and canonical_provider not in known_providers):
        check_fail(f"model.provider '{provider_raw}' is not a recognised provider", ...)

For bedrock specifically, resolve_provider_full returns None because:

  1. HERMES_OVERLAYS in hermes_cli/providers.py has no bedrock entry.
  2. agent.models_dev.get_provider_info('bedrock') also returns None — models.dev's id is amazon-bedrock, not bedrock.
  3. get_provider('bedrock') therefore returns None, and so does resolve_provider_full.

Meanwhile hermes_cli/auth.py::PROVIDER_REGISTRY DOES register bedrock (auth_type aws_sdk, transport bedrock_converse), which is why the rest of the agent works. Only provider resolution in providers.py is missing it.

Reproduction (demonstrates the contradiction inside resolve_provider_full):

from hermes_cli.auth import PROVIDER_REGISTRY
from hermes_cli.providers import resolve_provider_full

print('bedrock' in PROVIDER_REGISTRY)                # True
print(resolve_provider_full('bedrock', None, []))    # None  ← bug

Expected

resolve_provider_full('bedrock', ...) should return a ProviderDef with transport='bedrock_converse' and auth_type='aws_sdk', and hermes doctor should not flag a valid bedrock config.

Proposed Fix

Add a bedrock overlay entry to HERMES_OVERLAYS in hermes_cli/providers.py. PR incoming.

Environment

  • macOS
  • Hermes config v22
  • Python 3.11.14
  • hermes doctor run on latest main as of April 2026

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — degraded but workaround existscomp/cliCLI entry point, hermes_cli/, setup wizardprovider/bedrockAWS Bedrock (boto3, IAM)type/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions