Hmbown/CodeWhale · error

Antigravity is a retired, non-runnable legacy provider…

Error message

Antigravity is a retired, non-runnable legacy provider. Clear Codewhale-owned legacy state with `codewhale auth clear --provider antigravity`; this does not alter Google or Antigravity sessions. For Gemini use provider `google` with `GEMINI_API_KEY`.

What it means

Antigravity is a retired legacy provider and can no longer run. If config still names it as the provider, validation fails with the tombstone message, directing users to clear Codewhale-owned legacy auth state and to use provider `google` with GEMINI_API_KEY for Gemini. Thrown at config.rs:5081.

Solutions

  1. Change provider to `google` and set GEMINI_API_KEY for Gemini usage.
  2. Run `codewhale auth clear --provider antigravity` to remove Codewhale-owned legacy state.
  3. Update any scripts/env vars that still set provider = antigravity.

Example fix

// before
provider = "antigravity"
// after
provider = "google"  # with GEMINI_API_KEY set
Defensive patterns

Strategy: validation

Validate before calling

if provider.eq_ignore_ascii_case("antigravity") {
    return Err("antigravity is retired; use provider 'google' with GEMINI_API_KEY");
}

Prevention

When it happens

Trigger: The configured `provider` value passes is_legacy_antigravity_identity (any antigravity spelling/identity) during provider validation, e.g. provider = "antigravity" in the config file or via `codewhale --provider antigravity`.

Common situations: Upgrading from an older install where antigravity was a supported provider; stale config or scripts referencing antigravity; legacy auth state left behind from the retired provider.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


AI-assisted analysis of Hmbown/CodeWhale@73e0f67d83 (2026-09-22). Data as JSON: /api/errors/1e584fcd364edbe2. Report an issue: GitHub.

Appendix: source

Thrown at crates/tui/src/config.rs:5081

        tracing::warn!(
            "Top-level `base_url = \"{root_base}\"` is ignored for the {provider:?} provider. \
             Move it under `[{table}]` (e.g. `[{table}]\\nbase_url = \"...\"`) \
             or set the corresponding `*_BASE_URL` env var. (#1308)"
        );
    }

    /// Validate that critical config fields are present.
    pub fn validate(&self) -> Result<()> {
        codewhale_config::catalog::configured::validate_configured_models(
            self.custom_models.as_deref().unwrap_or_default(),
        )?;
        self.openrouter_vendor()?;
        if self
            .provider
            .as_deref()
            .is_some_and(is_legacy_antigravity_identity)
        {
            anyhow::bail!(codewhale_config::LEGACY_ANTIGRAVITY_TOMBSTONE_MESSAGE);
        }
        if let Some(provider) = self.provider.as_deref()
            && ApiProvider::parse(provider).is_none()
            && self
                .providers
                .as_ref()
                .and_then(|providers| providers.custom_provider_config(provider))
                .is_none()
        {
            anyhow::bail!(
                "Invalid provider '{provider}': expected {}.",
                ApiProvider::names_hint()
            );
        }
        let active_provider = self.api_provider();
        match validate_kimi_code_api_model_id(
            active_provider,
            &self.active_route_base_url(),

View on GitHub (pinned to 73e0f67d83)