{"record":{"id":"57682df4338792e0","repo":"Hmbown/CodeWhale","slug":"custom-provider-provider-name-api-key-not-foun","errorCode":null,"errorMessage":"Custom provider '{provider_name}' API key not found.\nSet the environment variable {env_name} to your key, or add api_key to [providers.{provider_name}].","messagePattern":"Custom provider '(.+?)' API key not found\\.\nSet the environment variable (.+?) to your key, or add api_key to \\[providers\\.(.+?)\\]\\.","errorType":"console","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/tui/src/config.rs","lineNumber":6455,"sourceCode":"                let help = credential_help_for_provider_route(provider, &self.deepseek_base_url());\n                anyhow::bail!(\n                    \"Ollama Cloud API key not found. Get a key: {}. Run 'codewhale auth set --provider ollama', set OLLAMA_API_KEY, or add [providers.ollama] api_key in ~/.codewhale/config.toml.\",\n                    help.credential_url\n                        .unwrap_or(codewhale_config::provider::OLLAMA_CLOUD_API_KEY_URL)\n                )\n            }\n            // Custom OpenAI-compatible endpoints (#1519): the key comes from the\n            // env var named by `[providers.<name>] api_key_env`. If we reached\n            // here it is unset/empty (and the endpoint is not loopback).\n            ApiProvider::Custom => {\n                let provider_name = self.provider.as_deref().unwrap_or(\"<name>\");\n                match self\n                    .provider_config_for(provider)\n                    .and_then(|entry| entry.api_key_env.as_deref())\n                    .map(str::trim)\n                    .filter(|name| !name.is_empty())\n                {\n                    Some(env_name) => anyhow::bail!(\n                        \"Custom provider '{provider_name}' API key not found.\\n\\\n                         Set the environment variable {env_name} to your key, \\\n                         or add api_key to [providers.{provider_name}].\"\n                    ),\n                    None => anyhow::bail!(\n                        \"Custom provider '{provider_name}' has no auth configured.\\n\\\n                         Add api_key_env = \\\"YOUR_ENV_VAR\\\" (or api_key) to \\\n                         [providers.{provider_name}] in ~/.codewhale/config.toml.\"\n                    ),\n                }\n            }\n            _ => anyhow::bail!(\"{}\", missing_provider_api_key_message(provider)?),\n        }\n    }\n\n    /// Resolve the skills directory path.\n    #[must_use]\n    pub fn skills_dir(&self) -> PathBuf {","sourceCodeStart":6437,"sourceCodeEnd":6473,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/8880682c63083a91624de936797efa3ce9e498fd/crates/tui/src/config.rs#L6437-L6473","documentation":"Error \"Custom provider '{provider_name}' API key not found.\nSet the environment variable {env_name} to your key, or add api_key to [providers.{provider_name}].\" thrown in Hmbown/CodeWhale.","triggerScenarios":"Thrown at crates/tui/src/config.rs:6455 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8880682c63083a91624de936797efa3ce9e498fd","analyzedAt":"2026-08-16T11:31:27.956Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}