jdx/mise · error
mise version is required, but you are using
Error message
mise version {min} is required, but you are using {cur} What it means
The current mise binary is older than the minimum version declared by a config (min_version spec hard violation). mise aborts because the config uses features requiring a newer release; the message includes self-update instructions.
Solutions
- Run `mise self-update` (or use the instructions appended to the error) to upgrade mise
- On CI, bump the mise version in your installer action (e.g. jdx/mise-action with version or mise_version input)
- If you cannot upgrade yet, temporarily remove/lower the min_version declaration — but expect newer config features to fail
Example fix
# CI before
- uses: jdx/mise-action@v2 # old default version
# after
- uses: jdx/mise-action@v2
with:
version: 2026.9.0 Defensive patterns
Strategy: validation
Validate before calling
# shell: compare installed mise version to required min before running
required=$(grep -oP 'min_version\s*=\s*"\K[^"]+' mise.toml)
cur=$(mise --version | awk '{print $2}')
[ "$(printf '%s\n%s\n' "$required" "$cur" | sort -V | head -1)" = "$required" ] || echo "mise too old" Try / catch
// Rust
match Config::enforce_min_version_spec(&spec) {
Ok(()) => proceed(),
Err(e) if e.to_string().contains("is required, but you are using") => {
eprintln!("run `mise self-update` or bump CI mise version");
}
Err(e) => return Err(e),
} Prevention
- Pin a recent mise version in CI (mise-action version input) alongside the config min_version
- Run `mise self-update` regularly on dev machines
- Document the required mise version in README/CONTRIBUTING when raising min_version
When it happens
Trigger: Config::enforce_min_version_spec is called with a MinVersionSpec whose hard_violation(current_version) returns Some — the running version is below the required minimum declared in mise.toml (e.g. min_version or [settings] minimum version).
Common situations: CI machines or colleagues running an old pinned mise against a project config that declared a newer min_version after adopting new features (monorepo support, task providers, etc.).
Related errors
- cannot export ' ': use a shorthand attribute such as…
- Check command must not be empty
- collection updates require scalar or array values
- config file not found
- config file not found
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/48d24a58a53ae7c5.
Report an issue: GitHub.
Appendix: source
Thrown at src/config/mod.rs:1339
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 533346cc37)