warpdotdev/warp · error
Failed to fetch images
Error message
Failed to fetch images
What it means
Reported by report_fatal_error when the `warp environment image list` GraphQL query (ListWarpDevImages) completes at the transport level but the response's list_warp_dev_images field is the UserFacingError or Unknown variant instead of ListWarpDevImagesOutput. This means the Warp server accepted the request but returned an error payload or an unrecognized enum variant. The original server-side message inside the enum variant is discarded and replaced with this generic text.
Source
Thrown at app/src/ai/agent_sdk/environment.rs:178
repository: img.repository,
tag: img.tag,
})
.collect();
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,View on GitHub (pinned to e72fd7aacb)
Solutions
- Verify you are logged in and retry the command
- Check network connectivity and the server URL (SERVER_ROOT_URL) if using a local warp-server
- Update the Warp client so its generated GraphQL schema matches the server
- If running a local warp-server, confirm it implements listWarpDevImages and inspect its logs for the underlying error
Defensive patterns
Strategy: retry
Validate before calling
// Preflight: confirm the server endpoint answers before running the command // (adjust to your configured SERVER_ROOT_URL) // curl -fsS "$SERVER_ROOT_URL/graphql" -o /dev/null || echo "server unreachable"
Try / catch
// In Rust, branch on the enum instead of assuming the success variant
match response.list_warp_dev_images {
ListWarpDevImagesResult::ListWarpDevImagesOutput(out) => { /* use out.images */ },
ListWarpDevImagesResult::UserFacingError(e) => { /* surface e, decide retry */ },
ListWarpDevImagesResult::Unknown => { /* log schema mismatch, update client */ },
} Prevention
- Log in before running environment image commands
- Keep the client updated so GraphQL enums decode server responses
- For local warp-server, confirm the resolver exists before scripting against it
- Wrap unattended invocations in a retry with backoff for transient server errors
When it happens
Trigger: Executing the ImageCommand::List subcommand while not authenticated, with an expired auth token, when the server has no image catalog available for the account, or when the client's generated GraphQL schema is older than the server and the response contains a variant the client cannot decode (Unknown).
Common situations: Running the CLI logged out or after token expiry; pointing SERVER_ROOT_URL/WS_SERVER_URL at a local warp-server build that lacks the list_warp_dev_images resolver; client/server version skew after a server-side API change; server-side outage returning a user-facing error.
Related errors
- Failed to fetch images: {}
- Failed to fetch list of base images
- Failed to fetch images: {err}
- failed to create API key
- Timed out refreshing team metadata
AI-assisted analysis of warpdotdev/warp@e72fd7aacb (2026-08-16).
Data as JSON: /api/errors/261fb93e6db914b8.
Report an issue: GitHub.