{"record":{"id":"48d24a58a53ae7c5","repo":"jdx/mise","slug":"mise-version-min-is-required-but-you-are-using","errorCode":null,"errorMessage":"mise version {min} is required, but you are using {cur}","messagePattern":"mise version (.+?) is required, but you are using (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/config/mod.rs","lineNumber":1331,"sourceCode":"        Ok(())\n    }\n\n    fn validate_versions(&self) -> eyre::Result<()> {\n        for cf in self.config_files.values() {\n            if let Some(spec) = cf.min_version() {\n                Self::enforce_min_version_spec(spec)?;\n            }\n        }\n        Ok(())\n    }\n\n    pub(crate) fn enforce_min_version_spec(spec: &MinVersionSpec) -> eyre::Result<()> {\n        let cur = &*version::V;\n        if let Some(required) = spec.hard_violation(cur) {\n            let min = style::eyellow(required);\n            let cur = style::eyellow(cur);\n            let msg = format!(\"mise version {min} is required, but you are using {cur}\");\n            bail!(crate::cli::self_update::append_self_update_instructions(\n                msg\n            ));\n        } else if let Some(recommended) = spec.soft_violation(cur) {\n            let min = style::eyellow(recommended);\n            let cur = style::eyellow(cur);\n            let msg = format!(\"mise version {min} is recommended, but you are using {cur}\");\n            warn!(\n                \"{}\",\n                crate::cli::self_update::append_self_update_instructions(msg)\n            );\n        }\n        Ok(())\n    }\n\n    async fn load_env(self: &Arc<Self>) -> Result<EnvResults> {\n        if Settings::no_env() || Settings::get().no_env.unwrap_or(false) {\n            return Ok(EnvResults::default());\n        }","sourceCodeStart":1313,"sourceCodeEnd":1349,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/config/mod.rs#L1313-L1349","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"# before (mise.toml with old mise 2024.1.0 installed)\n[settings]\nmin_version = \"2025.1.0\"\n# error: mise version 2025.1.0 is required, but you are using 2024.1.0\n\n# after\n$ mise self-update   # or brew upgrade mise\n$ mise --version     # >= 2025.1.0","handlingStrategy":"validation","validationCode":"#!/usr/bin/env bash\nreq=$(mise settings get min_version 2>/dev/null)\ncur=$(mise --version | awk '{print $2}')\nif [ -n \"$req\" ] && [ \"$(printf '%s\\n' \"$req\" \"$cur\" | sort -V | head -1)\" != \"$req\" ]; then\n  echo \"mise $req required, have $cur — run mise self-update\"; exit 1\nfi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["mise","version-check","config-validation"],"backgroundTag":"version-requirement-not-met","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}