jdx/mise · error
mise's self-update feature has been disabled at build time,
Error message
mise's self-update feature has been disabled at build time, cannot update
What it means
When mise is compiled without self-update support (`self_update` feature disabled — typical for distro/package-manager builds), the stubbed `SelfUpdate::run` always fails with this error after optionally printing package-manager upgrade instructions. There is no way to self-update such a binary.
Source
Thrown at src/cli/self_update_stub.rs:38
/// Update even if already up to date
#[usage(long, short)]
force: bool,
/// Skip confirmation prompt
#[usage(long, short)]
yes: bool,
/// Disable auto-updating plugins
#[usage(long)]
no_plugins: bool,
}
impl SelfUpdate {
pub(crate) async fn run(self) -> crate::Result<()> {
if let Some(instructions) = upgrade_instructions_text() {
warn!("{}", instructions);
}
eyre::bail!("mise's self-update feature has been disabled at build time, cannot update");
}
pub(crate) fn is_available() -> bool {
false
}
}
#[derive(Debug, Default, serde::Deserialize)]
struct InstructionsToml {
message: Option<String>,
#[serde(flatten)]
commands: BTreeMap<String, String>,
}
fn read_instructions_file(path: &PathBuf) -> Option<String> {
let body = fs::read_to_string(path).ok()?;
let parsed: InstructionsToml = toml::from_str(&body).ok()?;
if let Some(msg) = parsed.message {
return Some(msg);View on GitHub (pinned to afd2eddd3a)
Solutions
- Update via your package manager (apt/dnf/brew/etc.) — the printed instructions tell you which
- Reinstall mise via the official installer (https://mise.run) or cargo with the self_update feature to get a self-updatable binary
- Guard automation: check `mise self-update --help` availability or the install source before calling self-update in scripts
Example fix
// before mise self-update # disabled at build time // after (debian/ubuntu) sudo apt update && sudo apt install --only-upgrade mise
Defensive patterns
Strategy: fallback
Validate before calling
const help = child_process.execSync('mise self-update --help 2>&1 || true').toString();
const selfUpdateCapable = !help.includes('disabled at build time');
if (!selfUpdateCapable) console.log('Use the package manager upgrade path instead'); Try / catch
try {
await $`mise self-update`;
} catch (e) {
if (String(e).includes('disabled at build time')) {
await $`sudo apt-get install --only-upgrade mise`; // per install source
} else throw e;
} Prevention
- Know your install channel: distro builds disable self-update by design
- In scripts, detect stub builds before calling self-update
- Standardize on the official installer where self-update is required
When it happens
Trigger: Running `mise self-update` on a build compiled without the self-update feature (most Linux distro packages, some brew formulas and CI-packaged builds). Always triggered regardless of arguments (except that `--force` does not exist on the stub path).
Common situations: Users of distro-packaged mise trying `mise self-update`; switching from a package-manager install and expecting self-update to work; scripts that unconditionally call self-update.
Related errors
- mise is installed via a package manager, cannot update
- TEMP is too long to replace mise.exe safely ({len} UTF-16 co
- {}@{requested} is not installed{resolved} hint: run `mise in
- No executable found for configured tool: {bin_name} The inst
- {bin_name} is a mise bin however it is not currently active.
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/9c0ba55b894b3cbd.
Report an issue: GitHub.