atuinsh/atuin · error
This atuin binary ({}) is not the one the standalone install
Error message
This atuin binary ({}) is not the one the standalone installer installed to {}. Are multiple copies of atuin installed? What it means
Atuin's self-updater only updates the binary that the standalone installer originally placed, verified via an install receipt. This error is thrown when the currently executing atuin binary is not the one recorded in that receipt, i.e. the running executable differs from the installer-managed one. It aborts the update to avoid updating (or corrupting) the wrong installation.
Source
Thrown at crates/atuin/src/command/client/update.rs:44
// The install receipt is written by the shell/powershell installers.
// No receipt means atuin came from a package manager, which should
// stay in charge of upgrades.
if updater.load_receipt().is_err() {
bail!(
"`atuin update` is only available when atuin was installed via the standalone installer (https://setup.atuin.sh).\n\
If you installed atuin with a package manager (brew, nix, pacman, cargo, ...), please update it there instead."
);
}
// The receipt records the version the installer wrote; trust the
// binary itself in case it was replaced by other means.
let _ = updater.set_current_version(current.parse()?);
if !updater.check_receipt_is_for_this_executable()? {
let current_exe = std::env::current_exe()?;
let receipt_prefix = updater.install_prefix_root()?;
bail!(
"This atuin binary ({}) is not the one the standalone installer installed to {}. \
Are multiple copies of atuin installed?",
current_exe.display(),
receipt_prefix,
);
}
let request = match (&self.version, settings.update_channel) {
(Some(version), _) => {
UpdateRequest::SpecificVersion(version.trim_start_matches('v').to_string())
}
(None, UpdateChannel::Stable) => UpdateRequest::Latest,
(None, UpdateChannel::Nightly) => UpdateRequest::LatestMaybePrerelease,
};
updater.configure_version_specifier(request);
let channel = match settings.update_channel {
UpdateChannel::Stable => "stable",View on GitHub (pinned to c0c717ab04)
Solutions
- Run `which -a atuin` to find duplicate copies and remove all but one
- Reinstall with the standalone installer so the receipt matches the binary you run
- Invoke the installer-managed binary directly (e.g. ~/.atuin/bin/atuin update)
- If you manage atuin via a package manager, use that package manager to upgrade instead of `atuin update`
Example fix
// before: PATH resolves to a cargo-installed copy atuin update // after: run the installer-managed binary ~/.atuin/bin/atuin update
Defensive patterns
Strategy: validation
Validate before calling
which -a atuin # ensure only one copy before running `atuin update`
Prevention
- Install atuin via exactly one method (installer OR package manager)
- Keep the installer's bin dir first (or only) on PATH
- Use the package manager to upgrade if that's how you installed
- Don't manually replace or move the installer-managed binary
When it happens
Trigger: Running `atuin update` when the executing binary (std::env::current_exe) does not match the install prefix recorded in the installer receipt, per updater.check_receipt_is_for_this_executable().
Common situations: Installing atuin both via a package manager (apt/brew/cargo) and via the standalone install script; copying or symlink-swapping binaries; PATH resolving to an older or manually-built copy while the receipt points to ~/.atuin/bin.
Understand the failure class
Background: "is not a compatible type" / "cannot merge" errors: when a value's type doesn't match what the library requires — this error's family across 65 libraries.
Related errors
- Failed to read from input
- authentication canceled
- You are not logged in
- please provide the current password
- please provide a new password
AI-assisted analysis of atuinsh/atuin@c0c717ab04 (2026-09-12).
Data as JSON: /api/errors/71ef8ac29dbaaa32.
Report an issue: GitHub.