Skip to content

fix(auth): stop silently falling back to OpenRouter when no provider is configured - #3862

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-8e764fde
Mar 30, 2026
Merged

fix(auth): stop silently falling back to OpenRouter when no provider is configured#3862
teknium1 merged 1 commit into
mainfrom
hermes/hermes-8e764fde

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Salvage of the core fix from PR #1950 by @ifrederico (which was 549 commits behind and touched 20 files). Fixes #1945 reported by @dan-and.

The bug

Cron jobs set deliver: "whatsapp:Alice (dm)" using the human-friendly labels from send_message(action="list"). _resolve_delivery_target() passed "Alice (dm)" as a literal chat_id to the WhatsApp bridge, which failed with:

Cannot destructure property 'user' of 'jidDecode(...)' as it is undefined.

The fix

_resolve_delivery_target() now:

  1. Strips display suffixes like " (dm)" or " (group)" from the target
  2. Resolves the name via resolve_channel_name() from the channel directory
  3. Falls back to the raw target if no match (preserves existing behavior for raw IDs)

Tests

3 new tests covering label resolution, plain name resolution, and raw ID passthrough. 39/39 scheduler tests pass.

Closes #1950. Fixes #1945. Credit to @ifrederico for the PR and @dan-and for the detailed bug report.

…is configured

Previously, when no API keys or provider credentials were found, Hermes
silently defaulted to OpenRouter + Claude Opus. This caused confusion
when users configured local servers (LM Studio, Ollama, etc.) with a
typo or unrecognized provider name — the system would silently route to
OpenRouter instead of telling them something was wrong.

Changes:
- resolve_provider() now raises AuthError when no credentials are found
  instead of returning 'openrouter' as a silent fallback
- Added local server aliases: lmstudio, ollama, vllm, llamacpp → custom
- Removed hardcoded 'anthropic/claude-opus-4.6' fallback from gateway
  and cron scheduler (they read from config.yaml instead)
- Updated cli-config.yaml.example with complete provider documentation
  including all supported providers, aliases, and local server setup
@teknium1
teknium1 merged commit 86ac23c into main Mar 30, 2026
4 of 5 checks passed
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
…is configured (NousResearch#3862)

Previously, when no API keys or provider credentials were found, Hermes
silently defaulted to OpenRouter + Claude Opus. This caused confusion
when users configured local servers (LM Studio, Ollama, etc.) with a
typo or unrecognized provider name — the system would silently route to
OpenRouter instead of telling them something was wrong.

Changes:
- resolve_provider() now raises AuthError when no credentials are found
  instead of returning 'openrouter' as a silent fallback
- Added local server aliases: lmstudio, ollama, vllm, llamacpp → custom
- Removed hardcoded 'anthropic/claude-opus-4.6' fallback from gateway
  and cron scheduler (they read from config.yaml instead)
- Updated cli-config.yaml.example with complete provider documentation
  including all supported providers, aliases, and local server setup
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…is configured (NousResearch#3862)

Previously, when no API keys or provider credentials were found, Hermes
silently defaulted to OpenRouter + Claude Opus. This caused confusion
when users configured local servers (LM Studio, Ollama, etc.) with a
typo or unrecognized provider name — the system would silently route to
OpenRouter instead of telling them something was wrong.

Changes:
- resolve_provider() now raises AuthError when no credentials are found
  instead of returning 'openrouter' as a silent fallback
- Added local server aliases: lmstudio, ollama, vllm, llamacpp → custom
- Removed hardcoded 'anthropic/claude-opus-4.6' fallback from gateway
  and cron scheduler (they read from config.yaml instead)
- Updated cli-config.yaml.example with complete provider documentation
  including all supported providers, aliases, and local server setup
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
…is configured (NousResearch#3862)

Previously, when no API keys or provider credentials were found, Hermes
silently defaulted to OpenRouter + Claude Opus. This caused confusion
when users configured local servers (LM Studio, Ollama, etc.) with a
typo or unrecognized provider name — the system would silently route to
OpenRouter instead of telling them something was wrong.

Changes:
- resolve_provider() now raises AuthError when no credentials are found
  instead of returning 'openrouter' as a silent fallback
- Added local server aliases: lmstudio, ollama, vllm, llamacpp → custom
- Removed hardcoded 'anthropic/claude-opus-4.6' fallback from gateway
  and cron scheduler (they read from config.yaml instead)
- Updated cli-config.yaml.example with complete provider documentation
  including all supported providers, aliases, and local server setup
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
…is configured (NousResearch#3862)

Previously, when no API keys or provider credentials were found, Hermes
silently defaulted to OpenRouter + Claude Opus. This caused confusion
when users configured local servers (LM Studio, Ollama, etc.) with a
typo or unrecognized provider name — the system would silently route to
OpenRouter instead of telling them something was wrong.

Changes:
- resolve_provider() now raises AuthError when no credentials are found
  instead of returning 'openrouter' as a silent fallback
- Added local server aliases: lmstudio, ollama, vllm, llamacpp → custom
- Removed hardcoded 'anthropic/claude-opus-4.6' fallback from gateway
  and cron scheduler (they read from config.yaml instead)
- Updated cli-config.yaml.example with complete provider documentation
  including all supported providers, aliases, and local server setup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Cron jobs to WhatsApp fail with Baileys jidDecode error when deliver uses human-readable contact label

1 participant