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
- Read the chained cause `{e}` — it names the specific route-resolution problem.
- Verify the config has a valid current provider/model route for this workspace (`codewhale` config/status).
- 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
- Initialize Codewhale config before running dsh subcommands.
- Run `dsh status` after any config migration to catch unresolvable routes early.
- Invoke dsh commands from the workspace root so detection succeeds.
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
- account_agent_model_unconfigured
- --app must be `web` or `headless`, got
- bundle at is bytes; the limit is bytes
- bundle at is bytes; the limit is bytes
- config export requires --portable; plain export is not…
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)