zed-industries/zed · error

failed to download remote server release: {:?}

Error message

failed to download remote server release: {:?}

What it means

The updater downloads the remote-server release asset to a temp file and requires HTTP success; a non-2xx status aborts with the status code embedded in the message. This is the remote-server (headless/collab) variant of the download step, distinct from the app-update download.

Source

Thrown at crates/auto_update/src/auto_update.rs:969

    pub fn should_show_update_notification(&self, cx: &App) -> Task<Result<bool>> {
        let kvp = KeyValueStore::global(cx);
        cx.background_spawn(async move {
            Ok(kvp.read_kvp(SHOULD_SHOW_UPDATE_NOTIFICATION_KEY)?.is_some())
        })
    }
}

async fn download_remote_server_binary(
    target_path: &PathBuf,
    release: ReleaseAsset,
    client: Arc<HttpClientWithUrl>,
) -> Result<()> {
    let temp = tempfile::Builder::new().tempfile_in(remote_servers_dir())?;
    let mut temp_file = File::create(&temp).await?;

    let mut response = client.get(&release.url, Default::default(), true).await?;
    anyhow::ensure!(
        response.status().is_success(),
        "failed to download remote server release: {:?}",
        response.status()
    );
    smol::io::copy(response.body_mut(), &mut temp_file).await?;
    smol::fs::rename(&temp, &target_path).await?;

    Ok(())
}

async fn cleanup_remote_server_cache(
    platform_dir: &Path,
    keep_path: &Path,
    limit: usize,
) -> Result<()> {
    if limit == 0 {
        return Ok(());
    }

View on GitHub (pinned to bc538def45)

Solutions

  1. Retry - a fresh check re-fetches release metadata and a current asset URL.
  2. If it repeats, verify the asset URL opens (curl -I) from the same machine.
  3. Check disk space and permissions in the remote servers cache directory.
  4. Rule out proxies/antivirus intercepting large downloads.
Defensive patterns

Strategy: retry

Validate before calling

if let Ok(head) = client.head(&release.url).await {
    if !head.status().is_success() {
        // re-fetch release metadata for a fresh asset URL before downloading
    }
}

Try / catch

on "failed to download remote server release", re-run the release lookup (fresh URL) and retry the download once before reporting.

Prevention

When it happens

Trigger: client.get(&release.url) returns a non-success status while fetching the remote server tarball - typically an expired or rotated asset URL, CDN 403, rate limiting, or a proxy blocking the large file.

Common situations: A release asset URL going stale between metadata fetch and download; nightly assets rotated mid-session; corporate proxies rejecting binary downloads; insufficient disk space in the remote servers cache dir.

Related errors


AI-assisted analysis of zed-industries/zed@bc538def45 (2026-08-16). Data as JSON: /api/errors/b7e7275a614c85af. Report an issue: GitHub.