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 that cannot be selected at runtime. Selecting it as a top-level --provider override is refused with the tombstone message, which also points users at `codewhale auth clear --provider antigravity` for removing Codewhale-owned legacy state and at `google` + GEMINI_API_KEY for Gemini usage.

Solutions

  1. Use `codewhale auth clear --provider antigravity` if you need to remove legacy Antigravity state (clear-only is allowed).
  2. For Gemini, use `--provider google` with GEMINI_API_KEY configured.
  3. Remove `--provider antigravity` from scripts/CI and update to the supported provider set.
  4. Check `codewhale --help` / provider list for current provider names.

Example fix

// before
codewhale run --provider antigravity "fix the lint"
// after
codewhale auth clear --provider antigravity   # one-time legacy cleanup
codewhale run --provider google "fix the lint"  # with GEMINI_API_KEY set
Defensive patterns

Strategy: validation

Validate before calling

fn is_retired_provider(name: &str) -> bool {
    matches!(name.to_ascii_lowercase().as_str(), "antigravity")
}
if is_retired_provider(args.provider) { eprintln!("use --provider google with GEMINI_API_KEY, or auth clear for legacy state"); }

Try / catch

match result {
    Err(e) if e.to_string().contains("retired, non-runnable legacy provider") => {
        eprintln!("migrate: --provider google + GEMINI_API_KEY (or run auth clear --provider antigravity)");
    }
    Err(e) => eprintln!("failed: {e:#}"),
    Ok(_) => {}
}

Prevention

When it happens

Trigger: Passing `--provider antigravity` (or a legacy alias recognized by is_antigravity_legacy_selector) on the top-level CLI invocation, so top_level_provider_override matches the legacy selector and bails.

Common situations: Old scripts or docs referencing the removed Antigravity provider; leftover muscle memory from pre-retirement setups; wanting Gemini and guessing the old provider name still works.

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@433685b202 (2026-09-15). Data as JSON: /api/errors/b35bd6942c4bc415. Report an issue: GitHub.

Appendix: source

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

             set edit:completion:arg-completer[{alias}] = $edit:completion:arg-completer[{bin}]\n"
        ),
        _ => script,
    }
}

fn command_accepts_raw_provider(command: Option<&Commands>) -> bool {
    matches!(command, Some(Commands::Exec(_) | Commands::Fleet(_)))
}

fn top_level_provider_override(
    provider: Option<&str>,
    command: Option<&Commands>,
) -> Result<Option<ProviderKind>> {
    let Some(provider) = provider else {
        return Ok(None);
    };
    if is_antigravity_legacy_selector(provider) {
        bail!(codewhale_config::LEGACY_ANTIGRAVITY_TOMBSTONE_MESSAGE);
    }
    if let Some(provider) = builtin_provider_arg(provider) {
        return Ok(Some(provider));
    }
    if command_accepts_raw_provider(command) {
        return Ok(None);
    }

    let expected = ProviderKind::names_hint();
    bail!(
        "invalid value '{provider}' for '--provider <PROVIDER>': expected one of {expected}; configured custom providers are accepted only by exec and fleet"
    )
}

fn prepare_raw_provider_tui_dispatch(
    cli: &Cli,
    command: Option<&Commands>,
    runtime_overrides: &CliRuntimeOverrides,

View on GitHub (pinned to 433685b202)