zed-industries/zed · error

Dev servers were removed in v0.157.x please upgrade to SSH r

Error message

Dev servers were removed in v0.157.x please upgrade to SSH remoting: https://zed.dev/docs/remote-development

What it means

Zed's CLI rejects the removed --dev-server-token flag. Dev servers were deleted in v0.157.x and replaced by SSH-based remote development, so an anyhow::ensure! aborts whenever the flag is present. The message exists purely to fail fast and point users at the migration path.

Source

Thrown at crates/cli/src/main.rs:694

            urls.push(path.to_string());
        } else if path == "-" && args.paths_with_position.len() == 1 {
            let file = NamedTempFile::new()?;
            paths.push(file.path().to_string_lossy().into_owned());
            let (file, _) = file.keep()?;
            stdin_tmp_file = Some(file);
        } else if let Some(file) = anonymous_fd(path) {
            let tmp_file = NamedTempFile::new()?;
            paths.push(tmp_file.path().to_string_lossy().into_owned());
            let (tmp_file, _) = tmp_file.keep()?;
            anonymous_fd_tmp_files.push((file, tmp_file));
        } else if let Some(wsl) = wsl {
            urls.push(format!("file://{}", parse_path_in_wsl(path, wsl)?));
        } else {
            paths.push(parse_path_with_position(path)?);
        }
    }

    anyhow::ensure!(
        args.dev_server_token.is_none(),
        "Dev servers were removed in v0.157.x please upgrade to SSH remoting: https://zed.dev/docs/remote-development"
    );

    rayon::ThreadPoolBuilder::new()
        .num_threads(4)
        .stack_size(10 * 1024 * 1024)
        .thread_name(|ix| format!("RayonWorker{}", ix))
        .build_global()
        .unwrap();

    let sender: JoinHandle<anyhow::Result<()>> = thread::Builder::new()
        .name("CliReceiver".to_string())
        .spawn({
            let exit_status = exit_status.clone();
            let user_data_dir_for_thread = user_data_dir.clone();
            move || {
                let (_, handshake) = server.accept().context("Handshake after Zed spawn")?;

View on GitHub (pinned to bc538def45)

Solutions

  1. Remove --dev-server-token from your scripts and migrate to SSH remoting (https://zed.dev/docs/remote-development): connect to the remote host over SSH from Zed's project panel or `ssh user@host zed --host`
  2. If you cannot migrate yet, pin Zed to a version before v0.157.x where dev servers still work
  3. Audit wrapper scripts/CI for other removed dev-server subcommands and flags from the same release

Example fix

# before
zed --dev-server-token my-server --port 0

# after (SSH remoting)
ssh user@host 'zed --host'
# then open the remote project from Zed's remote project panel
Defensive patterns

Strategy: validation

Validate before calling

# guard in shell scripts before invoking zed
if printf '%s' "$ZED_ARGS" | grep -q -- '--dev-server-token'; then
  echo "refusing: --dev-server-token removed in v0.157.x; migrate to SSH remoting" >&2
  exit 2
fi
zed $ZED_ARGS

Prevention

When it happens

Trigger: Any CLI invocation that still passes --dev-server-token (e.g. `zed --dev-server-token <name> ...`), typically from old headless dev-server scripts, CI pipelines, or wrapper tools written against pre-0.157 Zed.

Common situations: Teams with automation that bootstrapped remote dev servers on VMs/containers before upgrading; users who upgraded the zed binary but kept old shell scripts; docs or blog posts referencing the legacy flag.

Related errors


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