jdx/mise · error

remote host '{}' cannot combine install_mise with remote_mis

Error message

remote host '{}' cannot combine install_mise with remote_mise or bootstrap_command, which already provide mise on the host

What it means

Thrown by `RemoteHostConfig::validate_with_source` when a host entry sets `install_mise` together with `remote_mise` or `bootstrap_command`. Both `remote_mise` and `bootstrap_command` already make mise available on the host, so combining them with `install_mise` is contradictory and rejected.

Source

Thrown at src/system/remote.rs:376

            );
        }
        let provisioning_strategies = [
            self.mise_bin.is_some(),
            self.remote_mise.is_some(),
            self.bootstrap_command.is_some(),
        ]
        .into_iter()
        .filter(|configured| *configured)
        .count();
        if provisioning_strategies > 1 {
            bail!(
                "remote host '{}' must set at most one of mise_bin, remote_mise, or bootstrap_command",
                self.name
            );
        }
        if let Some(install_mise) = &self.install_mise {
            if self.remote_mise.is_some() || self.bootstrap_command.is_some() {
                bail!(
                    "remote host '{}' cannot combine install_mise with remote_mise or bootstrap_command, which already provide mise on the host",
                    self.name
                );
            }
            validate_install_mise_path(install_mise).wrap_err_with(|| {
                format!("remote host '{}' has an invalid install_mise", self.name)
            })?;
        }
        for option in &self.ssh_options {
            validate_value("SSH option", option)?;
        }
        for exclude in &self.exclude {
            validate_value("archive exclude", exclude)?;
        }
        for env in &self.mise_env {
            validate_value("mise environment", env)?;
            if env.contains(',') {
                bail!("remote mise environment cannot contain a comma: {env}");

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Remove `install_mise` from hosts that define `remote_mise` or `bootstrap_command`
  2. Or remove `remote_mise`/`bootstrap_command` and keep only `install_mise` for hosts that need mise installed

Example fix

// before
install_mise = true
bootstrap_command = "curl https://mise.run | sh"
// after
bootstrap_command = "curl https://mise.run | sh"
Defensive patterns

Strategy: validation

Validate before calling

if host.install_mise.is_some() && (host.remote_mise.is_some() || host.bootstrap_command.is_some()) {
    panic!("install_mise cannot be combined with remote_mise or bootstrap_command");
}

Prevention

When it happens

Trigger: Configuring `install_mise = true` (or a path) on a host that also sets `remote_mise` or `bootstrap_command`, then running a remote operation that validates the host config.

Common situations: Copying `install_mise` from one host entry into another that already bootstraps mise; enabling install_mise globally while some hosts define bootstrap_command.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/14b94d1b087449f3. Report an issue: GitHub.