{"record":{"id":"9a5e329a43bb3b39","repo":"Hmbown/CodeWhale","slug":"external-credential-owner-does-not-match-provider","errorCode":null,"errorMessage":"external credential owner does not match provider {}","messagePattern":"external credential owner does not match provider (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/config.rs","lineNumber":11302,"sourceCode":"    consent_provider: codewhale_config::ProviderKind,\n    source: codewhale_config::ExternalCredentialSource,\n    path: &Path,\n) -> Result<PathBuf> {\n    let expected = match provider {\n        ApiProvider::OpenaiCodex => (\n            codewhale_config::ProviderKind::OpenaiCodex,\n            codewhale_config::ExternalCredentialSource::CodexCli,\n        ),\n        ApiProvider::Xai => (\n            codewhale_config::ProviderKind::Xai,\n            codewhale_config::ExternalCredentialSource::GrokCli,\n        ),\n        _ => anyhow::bail!(\n            \"{} has no supported external credential owner\",\n            provider.as_str()\n        ),\n    };\n    anyhow::ensure!(\n        (consent_provider, source) == expected,\n        \"external credential owner does not match provider {}\",\n        provider.as_str()\n    );\n    let path = codewhale_config::resolve_external_credential_path(path)?;\n    let path_value = path.to_str().context(\n        \"external credential path cannot be persisted losslessly because it is not valid UTF-8\",\n    )?;\n    let config_path = match config_path {\n        Some(path) => path.to_path_buf(),\n        None => credential_config_path()\n            .context(\"Failed to resolve config path for external credential consent.\")?,\n    };\n    ensure_parent_dir(&config_path)?;\n    let key_inside = provider_config_key(provider).context(\"external credential provider key\")?;\n    crate::config_persistence::mutate_config_document(&config_path, |doc| {\n        crate::config_persistence::set_document_value(\n            doc,","sourceCodeStart":11284,"sourceCodeEnd":11320,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/8880682c63083a91624de936797efa3ce9e498fd/crates/tui/src/config.rs#L11284-L11320","documentation":"Error \"external credential owner does not match provider {}\" thrown in Hmbown/CodeWhale.","triggerScenarios":"Thrown at crates/tui/src/config.rs:11302 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"}