warpdotdev/warp · error
Failed to fetch images: {}
Error message
Failed to fetch images: {} What it means
Reported by report_fatal_error when the async GraphQL request itself fails (Err from send_graphql_request) during `warp environment image list`. The underlying transport error is appended to the message ('Failed to fetch images: {err}'). This covers connection failures, timeouts, HTTP errors, and GraphQL protocol errors — as opposed to error 101 which covers error payloads inside a successful response.
Source
Thrown at app/src/ai/agent_sdk/environment.rs:182
if matches!(
global_options.output_format,
OutputFormat::Text | OutputFormat::Pretty
) {
println!(
"All Warp dev images contain Python and Node. For more information, see: {}\n",
WARP_DEV_ENVIRONMENTS_REPO
);
}
output::print_list(image_infos, global_options.output_format);
ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);
}
ListWarpDevImagesResult::UserFacingError(_) | ListWarpDevImagesResult::Unknown => {
super::report_fatal_error(anyhow::anyhow!("Failed to fetch images"), ctx);
}
},
Err(err) => {
super::report_fatal_error(anyhow::anyhow!("Failed to fetch images: {}", err), ctx);
}
});
}
fn list(&self, global_options: GlobalOptions, ctx: &mut ModelContext<Self>) {
let initial_sync = UpdateManager::as_ref(ctx)
.initial_load_complete()
.with_timeout(WARP_DRIVE_SYNC_TIMEOUT);
ctx.spawn(initial_sync, move |_, result, ctx| {
if result.is_err() {
super::report_fatal_error(
anyhow::anyhow!("Timed out waiting for Warp Drive to sync"),
ctx,
);
return;
}
View on GitHub (pinned to e72fd7aacb)
Solutions
- Check network connectivity and DNS resolution for the configured server endpoint
- If using a local server, verify it is running and that SERVER_ROOT_URL/WS_SERVER_URL match its port (default 8080)
- Re-authenticate (log out and back in) in case the failure is an auth-transport error
- Retry after a short wait — transient 5xx and connection resets are the most common cause
- If a proxy is required, configure it for the CLI environment
Defensive patterns
Strategy: retry
Validate before calling
// Verify connectivity + endpoint before invoking the CLI // curl -fsS --max-time 5 "$SERVER_ROOT_URL" -o /dev/null || echo "endpoint down"
Try / catch
// Transport errors arrive as Err from the spawned future — inspect them
ctx.spawn(fetch_images, move |_, result, ctx| match result {
Ok(resp) => { /* handle payload */ },
Err(err) => { /* classify: timeout vs auth vs 5xx, then retry or report */ },
}); Prevention
- Ensure network/proxy reachability to the server host before scripting the command
- Pin a reachable SERVER_ROOT_URL in local-server setups and start the server first
- Add bounded retries with backoff around transient transport failures
- Watch for TLS/proxy interception errors in restricted networks
When it happens
Trigger: Executing `warp environment image list` with no network, an unreachable SERVER_ROOT_URL, a TLS failure, an HTTP 4xx/5xx from the server, or a malformed/unauthorized GraphQL response.
Common situations: Working offline or behind a proxy that blocks the server; WITH_LOCAL_SERVER=1 ./script/run against a warp-server that is not running or on a different port; corporate TLS interception; transient server 503s during deploys.
Related errors
- Failed to fetch images
- Failed to fetch images: {err}
- Timed out refreshing team metadata
- Timed out waiting for Warp Drive to sync
- Failed to fetch list of base images
AI-assisted analysis of warpdotdev/warp@e72fd7aacb (2026-08-16).
Data as JSON: /api/errors/20bb6a10acd4ddc9.
Report an issue: GitHub.