{"record":{"id":"df0ff3bd435b4527","repo":"NousResearch/hermes-agent","slug":"formatted-runtime-provider-auth-error","errorCode":null,"errorMessage":"{formatted runtime provider/auth error}","messagePattern":"\\{formatted runtime provider/auth error\\}","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"cron/scheduler.py","lineNumber":4219,"sourceCode":"                    }\n                    if entry.get(\"base_url\"):\n                        fb_kwargs[\"explicit_base_url\"] = entry[\"base_url\"]\n                    fb_api_key = resolve_entry_api_key(entry)\n                    if fb_api_key:\n                        fb_kwargs[\"explicit_api_key\"] = fb_api_key\n                    runtime = resolve_runtime_provider(**fb_kwargs)\n                    model = fb_model\n                    logger.info(\n                        \"Job '%s': fallback resolved to %s model %s\",\n                        job_id,\n                        runtime.get(\"provider\"),\n                        fb_model,\n                    )\n                    break\n                except Exception as fb_exc:\n                    logger.debug(\"Job '%s': fallback %s failed: %s\", job_id, fb_provider, fb_exc)\n            if runtime is None:\n                raise RuntimeError(format_runtime_provider_error(auth_exc)) from auth_exc\n        except Exception as exc:\n            message = format_runtime_provider_error(exc)\n            raise RuntimeError(message) from exc\n\n        reasoning_config = resolve_reasoning_config(\n            _cfg if isinstance(_cfg, dict) else {}, str(model)\n        )\n\n        # Provider/model-drift fail-closed guard (#44585).\n        #\n        # An UNPINNED job (no explicit job[\"provider\"]/[\"model\"]) follows the\n        # global default, which can change after the job was created — a switch\n        # to a paid PROVIDER (e.g. nous) OR a paid MODEL on the same provider\n        # (e.g. claude-fable-5 on openrouter). Without a guard the job would\n        # silently inherit that change and spend real money on every tick — the\n        # $7.73 incident named BOTH a provider and a model.\n        #\n        # create_job() snapshots whatever resolution would have picked at","sourceCodeStart":4201,"sourceCodeEnd":4237,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/cron/scheduler.py#L4201-L4237","documentation":"Error \"{formatted runtime provider/auth error}\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at cron/scheduler.py:4219 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the provider/auth error shown (API key, base URL, model) and rerun the job.","Run `hermes setup` or `hermes model` to repair provider configuration."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}