herdrdev/herdr · warning
remote herdr server stop cancelled
Error message
remote herdr server stop cancelled
What it means
During a remote server restart driven by a protocol mismatch, herdr asks to stop the old remote server. When the reason is ProtocolMismatch and the user declines (non-empty answer that is not accepted), this Interrupted error aborts the stop/restart flow rather than proceeding against the user's wishes.
Source
Thrown at src/remote/attach.rs:1340
let prompt = if reason == RemoteServerRestartReason::ProtocolMismatch {
"stop the remote server and continue attaching? [Y/n] "
} else {
"restart the remote server now? [y/N] "
};
eprint!("{prompt}");
io::stderr().flush()?;
let mut answer = String::new();
io::stdin().read_line(&mut answer)?;
let answer = answer.trim().to_ascii_lowercase();
if answer == "y" || answer == "yes" {
return Ok(true);
}
if answer.is_empty() && reason == RemoteServerRestartReason::ProtocolMismatch {
return Ok(true);
}
if reason == RemoteServerRestartReason::ProtocolMismatch {
return Err(io::Error::new(
io::ErrorKind::Interrupted,
"remote herdr server stop cancelled",
));
}
Ok(false)
}
fn live_handoff_remote_server(ssh: &RemoteSsh, remote_herdr: &RemoteHerdr) -> io::Result<()> {
let command = format!(
"{} server live-handoff --import-exe {} --expected-protocol {} --expected-version {}",
remote_herdr.shell_path,
remote_herdr.shell_path,
CURRENT_PROTOCOL,
current_version()
);
let output = ssh.sh_output(&command)?;
if !output.status.success() {View on GitHub (pinned to f457cff4f2)
Solutions
- Answer with the empty default or 'y' at the prompt to allow the stop
- Update the remote herdr server so protocol versions match and no restart is needed
- Stop the stale remote server manually (herdr server stop on the remote) and re-attach
Defensive patterns
Strategy: try-catch
Try / catch
match attach() {
Err(e) if e.kind() == std::io::ErrorKind::Interrupted => {
eprintln!("restart declined; keeping old remote server");
Ok(())
}
r => r,
} Prevention
- Keep local and remote herdr versions in sync to avoid protocol-mismatch prompts
- Accept the empty default (just Enter) when the stop is intended
When it happens
Trigger: Local and remote herdr report different protocol versions; the user is prompted to stop the old remote server and explicitly answers no (a non-empty refusal). Empty answers default to accepting the stop.
Common situations: Version skew between local herdr and a long-running remote server installed earlier; user declines the stop out of caution and the attach cannot continue.
Related errors
- remote herdr install cancelled
- shutdown was requested, but the old remote herdr server on {
- remote herdr installation cancelled
- api request line is too large
- timed out reading api request
AI-assisted analysis of herdrdev/herdr@f457cff4f2 (2026-08-28).
Data as JSON: /api/errors/fadb8ae3aaf0784b.
Report an issue: GitHub.