{"record":{"id":"d92aaf7b9b8c3f6b","repo":"HKUDS/nanobot","slug":"no-api-key-configured-for-provider-provider-name","errorCode":null,"errorMessage":"No API key configured for provider '{provider_name}'.","messagePattern":"No API key configured for provider '(.+?)'\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/providers/factory.py","lineNumber":123,"sourceCode":"\n    if backend == \"azure_openai\":\n        if not p or not p.api_base:\n            raise ValueError(\"Azure OpenAI requires api_base in config.\")\n    elif (\n        backend == \"openai_compat\"\n        and spec\n        and spec.is_direct\n        and not spec.default_api_base\n        and not (p and p.api_base)\n    ):\n        raise ValueError(f\"Provider '{provider_name}' requires api_base in config.\")\n    elif backend in {\"anthropic\", \"openai_compat\"} and not (\n        backend == \"openai_compat\" and model.startswith(\"bedrock/\")\n    ):\n        needs_key = not (p and p.api_key)\n        exempt = spec and (spec.is_oauth or spec.is_local or spec.is_direct)\n        if needs_key and not exempt:\n            raise ValueError(f\"No API key configured for provider '{provider_name}'.\")\n\n    return _ProviderSetup(\n        model=model,\n        provider_name=provider_name,\n        provider_config=p,\n        spec=spec,\n        backend=backend,\n    )\n\n\ndef validate_provider_setup(\n    config: Config,\n    *,\n    preset_name: str | None = None,\n    preset: ModelPresetConfig | None = None,\n    model: str | None = None,\n) -> None:\n    \"\"\"Validate local provider/model settings without loading a provider client.\"\"\"","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/providers/factory.py#L105-L141","documentation":"Credential guard in _resolve_provider_setup: for anthropic and openai_compat backends (except bedrock-prefixed models, which use AWS credentials) neither the provider config nor the environment supplies an API key. The provider client would fail on first request, so the factory fails fast. This is a sentinel validation raised from the key-exemption check (needs_key/exempt logic).","triggerScenarios":"Thrown at nanobot/providers/factory.py:123 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set providers.<name>.apiKey in config","Export the provider's standard key environment variable (e.g. ANTHROPIC_API_KEY, OPENAI_API_KEY)","If using Bedrock (model prefixed bedrock/), the key is not required — verify the model name prefix is correct"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","contentChangedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}