Hmbown/CodeWhale · error
ModelsUpdatePartial
ModelsUpdatePartial
Error message
{} What it means
run_models prints a translated ModelsUpdatePartial message via anyhow::bail! after the models update flow when one or more provider fetches failed (failed > 0) while others succeeded. The dynamic message text is the whole error message, so this error represents a partially-successful update: some routes/providers updated, at least one did not.
Solutions
- Inspect the printed per-provider receipts/logs to see which provider failed and why, then fix that provider's credentials or endpoint and re-run the update
- Check network connectivity / proxy settings if the failing provider is remote
- If a provider is intentionally unused, remove or disable its route so the update no longer counts it as failed
Example fix
// the failure is in the per-provider receipts; re-run after fixing that provider // before: codex-cli key expired for one provider // after: export the fresh key / re-auth that provider, then re-run: models update
Defensive patterns
Strategy: try-catch
Validate before calling
// before running models update, confirm all configured providers are reachable/authorized
for route in config.provider_routes() {
if !provider_reachable(route) { eprintln!("{} unreachable; update will be partial", route); }
} Try / catch
match run_models(/* update mode */).await {
Err(e) if e.to_string().contains("partial") || failed_receipts_exist => {
eprintln!("Some providers failed: inspect receipts, fix credentials/network, retry update");
}
Ok(()) => (),
Err(e) => return Err(e),
} Prevention
- Validate provider credentials and endpoints before running models update
- Read the per-receipt output to identify the failing provider rather than treating the run as fully failed
- Remove or disable unused provider routes so stale providers don't fail the update
- Run updates with stable network connectivity; retry after transient network errors
When it happens
Trigger: run_models (models update path) when the per-receipt failure count is greater than 0 — at least one provider/route fetch or update failed during the update pass; called from models_listing_is_offline_and_update_never_forwards_another_routes_cli_key coverage.
Common situations: A provider endpoint is unreachable or returns an error while others succeed; stale or invalid credentials for one provider cause its fetch to fail; offline/partial network during 'models update'; a provider's upstream API changed shape and its fetch errors.
Understand the failure class
Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.
Related errors
- download failed with HTTP
- failed to download
- failed to fetch from
- failed to fetch from : HTTP
- failed to fetch release redirect from
AI-assisted analysis of Hmbown/CodeWhale@433685b202 (2026-09-15).
Data as JSON: /api/errors/619d9e86d25279c4.
Report an issue: GitHub.
Appendix: source
Thrown at crates/tui/src/provider_lake.rs:1701
receipt
.observed_at
.map_or_else(|| "unknown".to_string(), |timestamp| timestamp.to_string()),
receipt.source,
serde_json::to_string(&receipt.status)?,
receipt
.error
.map_or_else(String::new, |error| format!("\terror={error}"))
);
}
if receipts
.iter()
.any(|receipt| matches!(receipt.source, "codex_cli_cache" | "codex_app_server"))
{
println!("{}", tr(locale, MessageId::ModelsCodexHint));
}
}
if failed > 0 {
anyhow::bail!("{}", tr(locale, MessageId::ModelsUpdatePartial));
}
return Ok(());
}
let identity = &identities[0];
let mut route_config = config.clone();
route_config.scope_to_provider_identity(identity);
let mut models = configured_catalog_models_for_route(
config,
identity.provider,
&identity.key,
&route_config.deepseek_base_url(),
);
let default_model = route_config.default_model();
if !default_model.is_empty() && !default_model.eq_ignore_ascii_case("auto") {
push_unique_model(&mut models, &default_model);
}
models.sort();
models.dedup();View on GitHub (pinned to 433685b202)