{"record":{"id":"bddafe74c003d4ea","repo":"jdx/mise","slug":"tool-short-requested-is-not-installed-resolved-hint-run-mise","errorCode":null,"errorMessage":"{tool.short}@{requested} is not installed{resolved}\nhint: run `mise install {tool.short}@{requested}`, or `mise ls {tool.short}` to see installed versions","messagePattern":"(.+?)@(.+?) is not installed(.+?)\nhint: run `mise install (.+?)@(.+?)`, or `mise ls (.+?)` to see installed versions","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/which.rs","lineNumber":75,"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":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/which.rs#L57-L93","documentation":"When `mise which <bin>` cannot find the binary in the active toolset, it first checks whether the bin belongs to a configured-but-uninstalled tool and, if so, bails with a message naming the tool@version and a hint to run `mise install`. This tells you the tool is in your config but its version is missing from the local install dir.","triggerScenarios":"`mise which <bin>` where bin_name maps to a tool@requested in the toolset that has no installed path (`uninstalled_tool_message` returns Some) — i.e. the config pins a version that was never installed locally or was deleted.","commonSituations":"Fresh clone with a mise.toml/.tool-versions pinning versions never installed; switching toolsets and forgetting `mise install`; a cleaned ~/.local/share/mise/installs directory; lockfile referencing an uninstalled version.","solutions":["Run the hinted command: `mise install <tool>@<requested>` to install the exact version.","List what is installed with `mise ls <tool>` and adjust the config pin to an installed version.","Run `mise install` (no args) to install everything in the current config."],"exampleFix":"// before\nmise which terraform\n// error: terraform@1.9.2 is not installed\n// after\nmise install terraform@1.9.2\nmise which terraform","handlingStrategy":"fallback","validationCode":"mise ls <tool> | grep -q <version> || mise install <tool>@<version>","typeGuard":null,"tryCatchPattern":"if ! mise which \"$bin\" 2>/dev/null; then\n  mise install\n  mise which \"$bin\"\nfi","preventionTips":["Run `mise install` after cloning a repo with a mise config","Keep lockfile pins aligned with installed versions with `mise install` in setup scripts","Periodically run `mise ls` to spot missing versions"],"tags":["cli","which","install"],"backgroundTag":"command-not-found","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}