Hmbown/CodeWhale · error

{} has no supported external CLI credential source

Error message

{} has no supported external CLI credential source

What it means

The fallback arm of `external_credential_target`: the requested provider has no mapping to an external CLI credential source. Only specific providers (OpenAI Codex, xAI Grok CLI, DeepSeek dsh, Antigravity agy) have defined sources and default credential paths; Moonshot gets its own dedicated message; every other ProviderKind lands here. The message interpolates the provider's CLI name.

Source

Thrown at crates/cli/src/lib.rs:2526

            codewhale_config::ExternalCredentialSource::CodexCli,
            openai_codex_auth_file_path(),
        ),
        ProviderKind::Xai => (
            codewhale_config::ExternalCredentialSource::GrokCli,
            grok_auth_file_path(),
        ),
        ProviderKind::Deepseek | ProviderKind::DeepseekAnthropic => (
            codewhale_config::ExternalCredentialSource::DshCli,
            codewhale_config::default_dsh_credentials_path(),
        ),
        ProviderKind::Antigravity => (
            codewhale_config::ExternalCredentialSource::AgyCli,
            codewhale_config::default_agy_credentials_path(),
        ),
        ProviderKind::Moonshot => bail!(
            "Kimi is API-key-only in Codewhale. Create a key at https://platform.kimi.ai/console/api-keys; Kimi CLI OAuth import is unsupported."
        ),
        _ => bail!(
            "{} has no supported external CLI credential source",
            provider.as_str()
        ),
    };
    let path =
        codewhale_config::resolve_external_credential_path(path_override.unwrap_or(default_path))?;
    Ok((source, path))
}

fn provider_config_api_key(store: &ConfigStore, provider: ProviderKind) -> Option<&str> {
    let slot = store
        .config
        .providers
        .for_provider(provider)
        .api_key
        .as_deref();
    let root = (provider == ProviderKind::Deepseek)
        .then_some(store.config.api_key.as_deref())

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Use the provider's supported auth instead: Codewhale login or API-key configuration
  2. Check `codewhale` release notes for the version — the supported-provider set grows over releases; upgrade if the provider gained an importer
  3. Fix the `--provider` value (typo, or wrong provider selected)

Example fix

# before
$ codewhale external-credentials --provider anthropic --mode read-only
# anthropic has no supported external CLI credential source

# after: use Codewhale-owned auth
$ codewhale auth login --provider anthropic
Defensive patterns

Strategy: validation

Validate before calling

#!/usr/bin/env bash
provider="$1"
case "$provider" in
  codex|grok|deepseek|dsh|antigravity|agy) codewhale external-credentials --provider "$provider" --mode read-only --yes ;;
  kimi|moonshot) echo "kimi is API-key-only" >&2; exit 1 ;;
  *) echo "$provider has no external CLI credential source; use codewhale auth" >&2; exit 1 ;;
esac

Type guard

fn supports_external_cli_import(provider: &str) -> bool {
    matches!(provider, "codex" | "grok" | "deepseek" | "dsh" | "antigravity" | "agy")
}

Prevention

When it happens

Trigger: Running the external-credentials (credential import/access) command with `--provider` set to a provider outside the supported set — e.g. an Anthropic-family, Google, or OpenAI-compatible custom provider that has no external CLI to read from.

Common situations: Trying to import credentials from a CLI Codewhale does not integrate with; newly added providers in a newer Codewhale version used against an older binary; scripts enumerating all configured providers for import.

Related errors


AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20). Data as JSON: /api/errors/86d8ed4958e1cf1d. Report an issue: GitHub.