Hmbown/CodeWhale · error

cannot resolve the current Codewhale route

Error message

cannot resolve the current Codewhale route: {e}

What it means

The `dsh status` path of run_dsh could not determine the current Codewhale route identity for the given config and workspace. codewhale_route_identity returned an error, which is surfaced with its cause via {e}.

Solutions

  1. Read the chained cause `{e}` — it names the specific route-resolution problem.
  2. Verify the config has a valid current provider/model route for this workspace (`codewhale` config/status).
  3. Reconnect DSH after fixing config: run `<CLI_COMMAND> connect`.
Defensive patterns

Strategy: try-catch

Validate before calling

// Pre-flight: ensure the workspace has a resolvable route before running dsh status
if codewhale.config.active_route().is_none() {
    eprintln!("no active provider/model route; run `codewhale` once to initialize config");
}

Try / catch

// Rust
match dsh::codewhale_route_identity(config, workspace) {
    Ok(identity) => proceed(identity),
    Err(e) => eprintln!("cannot resolve route: {e}; fix config then rerun connect"),
}

Prevention

When it happens

Trigger: Running the `dsh status` integration command (run_dsh -> run) when codewhale_route_identity fails: missing or malformed provider/model configuration for the workspace, or an unresolvable route in config.

Common situations: Running dsh outside an initialized workspace; a config file with no active provider route; renamed or migrated config keys after a Codewhale upgrade.

Understand the failure class

Background: "missing required config value" errors: why libraries refuse to start when a configuration key is empty, unset, or blank — this error's family across 48 libraries.

Related errors


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

Appendix: source

Thrown at crates/tui/src/integrations/cli.rs:271

    match command {
        DshIntegrationCommand::Status { json } => {
            let (_paths, report) = status_report(config, workspace, false)?;
            if json {
                println!("{}", serde_json::to_string_pretty(&report)?);
            } else {
                print_status(&report);
            }
            Ok(())
        }
        DshIntegrationCommand::Plan {
            json,
            profile,
            allow_full_access,
            skin,
        } => {
            let (paths, report) = status_report(config, workspace, allow_full_access)?;
            let identity = dsh::codewhale_route_identity(config, workspace)
                .map_err(|e| anyhow::anyhow!("cannot resolve the current Codewhale route: {e}"))?;
            let plan = dsh::plan(
                &paths,
                &report.detection,
                &identity,
                &profile,
                allow_full_access,
                skin,
                true,
            )?;
            if json {
                println!("{}", serde_json::to_string_pretty(&plan)?);
            } else {
                print_plan(&plan, "connect");
                if !report.detection.installed() {
                    println!(
                        "  warning: dsh is not on PATH; the plan is valid but launch will fail"
                    );
                }

View on GitHub (pinned to 73e0f67d83)