zed-industries/zed · error

Autoupdate failed, nothing to rollback

Error message

Autoupdate failed, nothing to rollback

What it means

The Windows update helper runs a fixed list of JOBS (staged copy/move operations) with per-job retries and a 2-second budget; when the run aborts and no job ever succeeded (last_successful_job is None), there is nothing to roll back and it bails with this message. The installation is unchanged - the old binary is still in place.

Source

Thrown at crates/auto_update_helper/src/updater.rs:413

                            log::error!("Operation failed (retrying): {}", err);
                            std::thread::sleep(Duration::from_millis(50));
                        }
                    },
                    None => {
                        log::error!("Operation failed with unexpected error, aborting: {}", err);
                        break 'outer;
                    }
                },
            }
        }
    }

    if last_successful_job
        .map(|job| job != JOBS.len() - 1)
        .unwrap_or(true)
    {
        let Some(last_successful_job) = last_successful_job else {
            anyhow::bail!("Autoupdate failed, nothing to rollback");
        };

        for job in (0..=last_successful_job).rev() {
            let job = &JOBS[job];
            if let Err(e) = (job.rollback)(app_dir) {
                anyhow::bail!(
                    "Job rollback failed, the app might be left in an inconsistent state: ({:?})",
                    e
                );
            }
        }

        anyhow::bail!("Autoupdate failed, rollback successful");
    }

    if launch {
        #[allow(clippy::disallowed_methods, reason = "doesn't run in the main binary")]
        let _ = std::process::Command::new(app_dir.join("Zed.exe")).spawn();

View on GitHub (pinned to bc538def45)

Solutions

  1. Make sure every Zed process has exited (check Task Manager for Zed.exe, zed.exe, remote servers) and retry the update.
  2. Run Zed (and thus the helper) with write access to the app directory.
  3. Temporarily disable antivirus real-time scanning for the app dir and retry.
  4. If it persists, reinstall from zed.dev - nothing was changed, so the old install is safe.
Defensive patterns

Strategy: fallback

Validate before calling

// before invoking the helper, ensure no Zed processes are alive
terminate_processes(["Zed.exe", "zed.exe", "zed-remote-server.exe"]);

Try / catch

treat this message as 'no changes were made': keep the current binary, notify 'update failed, will retry later', and schedule a retry once processes have exited.

Prevention

When it happens

Trigger: The very first job in JOBS fails - a file-not-found io error aborts immediately, or retries exhaust the 2s budget because files in the app dir are locked by a still-running process or denied by permissions.

Common situations: The main Zed process or a lingering remote server still holds handles to files in the app dir; antivirus locking new files; the helper launched with insufficient privileges.

Related errors


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