{"record":{"id":"89b8979158b81384","repo":"jdx/mise","slug":"requested-is-not-installed-resolved-hint-ru","errorCode":null,"errorMessage":"{}@{requested} is not installed{resolved}\nhint: run `mise install {}@{requested}`, or `mise ls {}` to see installed versions","messagePattern":"(.+?)@(.+?) is not installed(.+?)\nhint: run `mise install (.+?)@(.+?)`, or `mise ls (.+?)` to see installed versions","errorType":"exception","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/cli/which.rs","lineNumber":61,"sourceCode":"        }\n        let ts = self.get_toolset(&config).await?;\n\n        let bin_name = self.bin_name.clone().unwrap();\n        match ts.which(&config, &bin_name).await {\n            Some((p, tv)) => {\n                if self.version {\n                    miseprintln!(\"{}\", tv.version);\n                } else if self.plugin {\n                    miseprintln!(\"{p}\");\n                } else {\n                    let path = p.which(&config, &tv, &bin_name).await?;\n                    miseprintln!(\"{}\", path.unwrap().display());\n                }\n                Ok(())\n            }\n            None => {\n                if let Some(msg) = self.uninstalled_tool_message(&config, &ts) {\n                    bail!(msg);\n                }\n                if let Some(msg) =\n                    crate::shims::unavailable_configured_tool_message(&config, &ts, &bin_name)\n                {\n                    bail!(msg);\n                }\n                if self.has_shim(&bin_name) {\n                    bail!(\n                        \"{bin_name} is a mise bin however it is not currently active. Use `mise use` to activate it in this directory.\"\n                    )\n                } else {\n                    bail!(\"{bin_name} is not a mise bin. Perhaps you need to install it first.\",)\n                }\n            }\n        }\n    }\n    async fn complete(&self, config: &Arc<Config>) -> Result<()> {\n        let ts = self.get_toolset(config).await?;","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/cli/which.rs#L43-L79","documentation":"Raised by `mise which BIN --tool=tool@version`. The `--tool` flag replaces the configured toolset for the lookup, and `Which::uninstalled_tool_message` (src/cli/which.rs:105) detects that the requested (or resolved) version of that tool is not actually installed, so there is nothing to resolve BIN against. The message includes the resolved version when a fuzzy request like `--tool=node@20` resolved to something else.","triggerScenarios":"`mise which npm --tool=node@20` when node@20 (or the release `20` resolves to) is not in the installs dir; using `--tool` on a fresh machine before `mise install`; pointing `--tool` at a version removed by `mise prune`. It only fires when `--tool` was passed — without it, mise falls through to the config-based errors.","commonSituations":"Fresh clone where mise.toml pins a version that was never installed; scripts that probe a specific version with `--tool` after a cleanup; typos in the version string so a different (uninstalled) release is resolved.","solutions":["Run the hint in the message: `mise install <tool>@<requested>`","Check what is installed with `mise ls <tool>` and pass an installed version to `--tool`","Drop `--tool` entirely so `mise which` uses the configured toolset","Run plain `mise install` to install everything pinned by the current config"],"exampleFix":"# before\nmise which npm --tool=node@20   # node@20 not installed\n\n# after\nmise install node@20\nmise which npm --tool=node@20","handlingStrategy":"validation","validationCode":"# ensure the version exists before probing with --tool\nmise ls --installed node | grep -qx '20.11.1' || mise install node@20.11.1\nmise which npm --tool=node@20.11.1","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `mise install` immediately after cloning a repo with mise.toml","Pin exact installed versions in scripts that use `--tool`","Check `mise ls <tool>` before referencing versions in automation"],"tags":["cli","mise-which","tool-version","install"],"backgroundTag":"tool-version-not-installed","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}