{"record":{"id":"261fb93e6db914b8","repo":"warpdotdev/warp","slug":"failed-to-fetch-images","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":178,"sourceCode":"                            repository: img.repository,\n                            tag: img.tag,\n                        })\n                        .collect();\n\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,","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/environment.rs#L160-L196","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Preflight: confirm the server endpoint answers before running the command\n// (adjust to your configured SERVER_ROOT_URL)\n// curl -fsS \"$SERVER_ROOT_URL/graphql\" -o /dev/null || echo \"server unreachable\"","typeGuard":null,"tryCatchPattern":"// In Rust, branch on the enum instead of assuming the success variant\nmatch response.list_warp_dev_images {\n    ListWarpDevImagesResult::ListWarpDevImagesOutput(out) => { /* use out.images */ },\n    ListWarpDevImagesResult::UserFacingError(e) => { /* surface e, decide retry */ },\n    ListWarpDevImagesResult::Unknown => { /* log schema mismatch, update client */ },\n}","preventionTips":["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"],"tags":["rust","graphql","network","auth","warp-server"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}