jdx/mise · error
mise version {min} is required, but you are using {cur}
Error message
mise version {min} is required, but you are using {cur} What it means
mise aborts when a config file declares a `min_version` requirement that the running mise binary does not satisfy. `enforce_min_version_spec` compares the current version (`version::V`) against the spec from `[settings] min_version` (or similar config field); a hard violation (required minimum not met) bails with this message, while a soft (recommended) violation only warns. The message is augmented with self-update instructions so the user knows how to upgrade.
Source
Thrown at src/config/mod.rs:1331
Ok(())
}
fn validate_versions(&self) -> eyre::Result<()> {
for cf in self.config_files.values() {
if let Some(spec) = cf.min_version() {
Self::enforce_min_version_spec(spec)?;
}
}
Ok(())
}
pub(crate) fn enforce_min_version_spec(spec: &MinVersionSpec) -> eyre::Result<()> {
let cur = &*version::V;
if let Some(required) = spec.hard_violation(cur) {
let min = style::eyellow(required);
let cur = style::eyellow(cur);
let msg = format!("mise version {min} is required, but you are using {cur}");
bail!(crate::cli::self_update::append_self_update_instructions(
msg
));
} else if let Some(recommended) = spec.soft_violation(cur) {
let min = style::eyellow(recommended);
let cur = style::eyellow(cur);
let msg = format!("mise version {min} is recommended, but you are using {cur}");
warn!(
"{}",
crate::cli::self_update::append_self_update_instructions(msg)
);
}
Ok(())
}
async fn load_env(self: &Arc<Self>) -> Result<EnvResults> {
if Settings::no_env() || Settings::get().no_env.unwrap_or(false) {
return Ok(EnvResults::default());
}View on GitHub (pinned to afd2eddd3a)
Solutions
- Upgrade mise: `mise self-update` (or the package manager that installed it, e.g. `brew upgrade mise`) to at least the required version.
- Check the required version in the config file: look for `min_version` in mise.toml / config.toml and confirm the stated minimum.
- If the requirement is overly strict for your workflow, ask the config owner to lower `min_version` or remove it (only if the config's features are not actually needed).
- Pin mise >= the required version in CI images or Dockerfiles so automated runs don't regress.
Example fix
# before (mise.toml with old mise 2024.1.0 installed) [settings] min_version = "2025.1.0" # error: mise version 2025.1.0 is required, but you are using 2024.1.0 # after $ mise self-update # or brew upgrade mise $ mise --version # >= 2025.1.0
Defensive patterns
Strategy: validation
Validate before calling
#!/usr/bin/env bash
req=$(mise settings get min_version 2>/dev/null)
cur=$(mise --version | awk '{print $2}')
if [ -n "$req" ] && [ "$(printf '%s\n' "$req" "$cur" | sort -V | head -1)" != "$req" ]; then
echo "mise $req required, have $cur — run mise self-update"; exit 1
fi Prevention
- Run `mise self-update` periodically and before pulling config changes from teammates.
- Pin a mise version in CI/Dockerfiles that satisfies the repo's declared min_version.
- Treat `min_version` bumps in committed configs as a signal to upgrade local tooling immediately.
- Check `mise doctor` output for outdated mise installations.
When it happens
Trigger: Running any mise command with a mise binary older than the `min_version` declared in a loaded config file (global, project, or env config). `Config::validate` -> `validate_versions` -> `enforce_min_version_spec` runs during config load, so virtually every command triggers the check when the file is present.
Common situations: A teammate committed `[settings] min_version = "2025.10.0"` to the repo's mise.toml because the project uses newer config features, but CI or a coworker's machine still has an older mise installed; a dotfiles sync pulls in a config requiring a newer mise; a stale mise in PATH shadows an updated install.
Related errors
- brew-cask: command_wrapper '{}' must set exactly one of cont
- brew-cask: command_wrapper args and env require executable
- brew-cask: pkg installer choices are not supported yet
- brew-cask: unsupported {context} field {}
- brew-cask: generate_completions_from_executable requires an
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/48d24a58a53ae7c5.
Report an issue: GitHub.