From 67d707e851800ed76b73090659086cd2406a2ea6 Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Wed, 18 Mar 2026 16:51:24 -0700 Subject: [PATCH] fix: respect config.yaml model.base_url for Anthropic provider (#1948) (#1998) After #1675 removed ANTHROPIC_BASE_URL env var support, the Anthropic provider base URL was hardcoded to https://api.anthropic.com. Now reads model.base_url from config.yaml as an override, falling back to the default when not set. Also applies to the auxiliary client. Cherry-picked from PR #1949 by @rivercrab26. Co-authored-by: rivercrab26 --- agent/auxiliary_client.py | 19 ++++++++++++++++--- hermes_cli/runtime_provider.py | 6 +++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/agent/auxiliary_client.py b/agent/auxiliary_client.py index ef773f67ef..a39e09be33 100644 --- a/agent/auxiliary_client.py +++ b/agent/auxiliary_client.py @@ -654,10 +654,23 @@ def _try_anthropic() -> Tuple[Optional[Any], Optional[str]]: if not token: return None, None + # Allow base URL override from config.yaml model.base_url + base_url = _ANTHROPIC_DEFAULT_BASE_URL + try: + from hermes_cli.config import load_config + cfg = load_config() + model_cfg = cfg.get("model") + if isinstance(model_cfg, dict): + cfg_base_url = (model_cfg.get("base_url") or "").strip().rstrip("/") + if cfg_base_url: + base_url = cfg_base_url + except Exception: + pass + model = _API_KEY_PROVIDER_AUX_MODELS.get("anthropic", "claude-haiku-4-5-20251001") - logger.debug("Auxiliary client: Anthropic native (%s)", model) - real_client = build_anthropic_client(token, _ANTHROPIC_DEFAULT_BASE_URL) - return AnthropicAuxiliaryClient(real_client, model, token, _ANTHROPIC_DEFAULT_BASE_URL), model + logger.debug("Auxiliary client: Anthropic native (%s) at %s", model, base_url) + real_client = build_anthropic_client(token, base_url) + return AnthropicAuxiliaryClient(real_client, model, token, base_url), model def _resolve_forced_provider(forced: str) -> Tuple[Optional[OpenAI], Optional[str]]: diff --git a/hermes_cli/runtime_provider.py b/hermes_cli/runtime_provider.py index 180dec0901..6bfa5ae8a6 100644 --- a/hermes_cli/runtime_provider.py +++ b/hermes_cli/runtime_provider.py @@ -313,10 +313,14 @@ def resolve_runtime_provider( "No Anthropic credentials found. Set ANTHROPIC_TOKEN or ANTHROPIC_API_KEY, " "run 'claude setup-token', or authenticate with 'claude /login'." ) + # Allow base URL override from config.yaml model.base_url + model_cfg = _get_model_config() + cfg_base_url = (model_cfg.get("base_url") or "").strip().rstrip("/") + base_url = cfg_base_url or "https://api.anthropic.com" return { "provider": "anthropic", "api_mode": "anthropic_messages", - "base_url": "https://api.anthropic.com", + "base_url": base_url, "api_key": token, "source": "env", "requested_provider": requested_provider,