{"record":{"id":"20bb6a10acd4ddc9","repo":"warpdotdev/warp","slug":"failed-to-fetch-images-20bb6a","errorCode":null,"errorMessage":"Failed to fetch images: {}","messagePattern":"Failed to fetch images: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/ai/agent_sdk/environment.rs","lineNumber":182,"sourceCode":"\n                    if matches!(\n                        global_options.output_format,\n                        OutputFormat::Text | OutputFormat::Pretty\n                    ) {\n                        println!(\n                            \"All Warp dev images contain Python and Node. For more information, see: {}\\n\",\n                            WARP_DEV_ENVIRONMENTS_REPO\n                        );\n                    }\n                    output::print_list(image_infos, global_options.output_format);\n                    ctx.terminate_app(warpui::platform::TerminationMode::ForceTerminate, None);\n                }\n                ListWarpDevImagesResult::UserFacingError(_) | ListWarpDevImagesResult::Unknown => {\n                    super::report_fatal_error(anyhow::anyhow!(\"Failed to fetch images\"), ctx);\n                }\n            },\n            Err(err) => {\n                super::report_fatal_error(anyhow::anyhow!(\"Failed to fetch images: {}\", err), ctx);\n            }\n        });\n    }\n\n    fn list(&self, global_options: GlobalOptions, ctx: &mut ModelContext<Self>) {\n        let initial_sync = UpdateManager::as_ref(ctx)\n            .initial_load_complete()\n            .with_timeout(WARP_DRIVE_SYNC_TIMEOUT);\n\n        ctx.spawn(initial_sync, move |_, result, ctx| {\n            if result.is_err() {\n                super::report_fatal_error(\n                    anyhow::anyhow!(\"Timed out waiting for Warp Drive to sync\"),\n                    ctx,\n                );\n                return;\n            }\n","sourceCodeStart":164,"sourceCodeEnd":200,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/environment.rs#L164-L200","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Verify connectivity + endpoint before invoking the CLI\n// curl -fsS --max-time 5 \"$SERVER_ROOT_URL\" -o /dev/null || echo \"endpoint down\"","typeGuard":null,"tryCatchPattern":"// Transport errors arrive as Err from the spawned future — inspect them\nctx.spawn(fetch_images, move |_, result, ctx| match result {\n    Ok(resp) => { /* handle payload */ },\n    Err(err) => { /* classify: timeout vs auth vs 5xx, then retry or report */ },\n});","preventionTips":["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"],"tags":["rust","graphql","network","timeout","warp-server"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}