jdx/mise · error
cargo-binstall is not available, but cargo.binstall_only is
Error message
cargo-binstall is not available, but cargo.binstall_only is set
What it means
BinstallStatus can be Unavailable (binary not present / cannot run). When the user set `cargo.binstall_only = true`, source builds via `cargo install` are forbidden, so if binstall is not available at all the install cannot proceed and mise bails with this error.
Source
Thrown at src/backend/cargo.rs:282
if result.as_ref().is_ok() {
self.write_install_state_best_effort(&tv);
return Ok(tv.clone());
}
if Settings::get().cargo.binstall_only
|| !result.as_ref().is_err_and(|err| {
Error::get_exit_status(err)
== Some(CARGO_BINSTALL_NO_FALLBACK_EXIT_CODE)
})
{
result?;
}
info!("cargo-binstall found no prebuilt binary; falling back to cargo install");
}
BinstallStatus::Disabled if Settings::get().cargo.binstall_only => {
bail!("cargo-binstall is disabled, but cargo.binstall_only is set");
}
_ if Settings::get().cargo.binstall_only => {
bail!("cargo-binstall is not available, but cargo.binstall_only is set");
}
BinstallStatus::Unavailable => match Settings::get().cargo.binstall_native {
Some(true)
if self
.native_binstall(ctx, &tv, NativeBinstallAction::Install)
.await? =>
{
self.write_install_state_best_effort(&tv);
return Ok(tv.clone());
}
Some(_) => {}
None if native_binstall::rollout_warning_active() => {
self.native_binstall(ctx, &tv, NativeBinstallAction::WarnOnly)
.await?;
}
None => {}
},
_ => {}View on GitHub (pinned to afd2eddd3a)
Solutions
- Install cargo-binstall (`cargo install cargo-binstall` or via the binstall install script).
- Remove `cargo.binstall_only = true` to allow fallback to `cargo install`.
- Check `cargo binstall --version` works in the environment mise uses (PATH, cargo toolchain).
Example fix
// before mise use cargo:ripgrep # with cargo.binstall_only = true, no cargo-binstall installed // after cargo install cargo-binstall mise use cargo:ripgrep
Defensive patterns
Strategy: validation
Validate before calling
command -v cargo-binstall >/dev/null || echo 'cargo-binstall missing; do not set cargo.binstall_only' cargo binstall --version || echo 'binstall probe will fail'
Try / catch
if ! mise install "$pkg"; then cargo install cargo-binstall || true mise install "$pkg" # or drop binstall_only to allow source build fi
Prevention
- Install cargo-binstall before enabling cargo.binstall_only.
- Keep cargo and cargo-binstall versions compatible.
- Probe `cargo binstall --version` in CI before enabling binstall_only.
- Scope binstall_only to tools known to have prebuilt artifacts.
When it happens
Trigger: `mise install cargo:<crate>` with `cargo.binstall_only = true` while cargo-binstall is not installed on PATH, is an incompatible version, or fails its availability probe (the `_ if Settings::get().cargo.binstall_only` catch-all arm in install_version_).
Common situations: CI image or fresh machine without cargo-binstall; binstall probe failing due to old cargo version; user enabling binstall_only globally but hitting crates with no prebuilt artifacts.
Understand the failure class
Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.
Related errors
- cargo-binstall is disabled, but cargo.binstall_only is set
- cargo-binstall cannot honor cargo install-only tool option(s
- native cargo binary artifact did not contain {}{}
- native cargo binary path is empty
- native binstall metadata should have a package URL
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/052ed943b8852ea4.
Report an issue: GitHub.