{"record":{"id":"3f5c97a95af71f13","repo":"jdx/mise","slug":"no-executable-found-for-configured-tool-bin-name","errorCode":null,"errorMessage":"No executable found for configured tool: {bin_name}","messagePattern":"No executable found for configured tool: (.+?)","errorType":"exception","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/cli/which.rs","lineNumber":63,"sourceCode":"\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) =\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?;\n        let bins = ts\n            .list_paths(config)\n            .await\n            .into_iter()\n            .flat_map(|p| file::ls(&p).unwrap_or_default())","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/cli/which.rs#L45-L81","documentation":"`mise which <bin>` found no active toolset entry for the bin, and the shims module recognized the situation 'bin belongs to a tool that is configured in mise.toml but has no installed version' — unavailable_configured_tool_message returns 'No executable found for configured tool: <bin>' and which bails with it (src/cli/which.rs:60-63). The tool is declared but not installed, so no executable path exists.","triggerScenarios":"`mise which node` when mise.toml lists node but `mise install` hasn't run on this machine, or the pinned version failed to install / was removed while config still references it.","commonSituations":"Fresh clone + no auto-install; install step failed silently in CI; someone uninstalled a tool others still have in mise.toml.","solutions":["Run `mise install` in the project to install every configured tool","Check what's configured vs installed: `mise ls` (shows missing versions for the current config)","If the tool shouldn't be managed by mise, remove it from mise.toml/.tool-versions"],"exampleFix":"# before\n$ mise which node\n# error: No executable found for configured tool: node\n\n# after\n$ mise install\n$ mise which node","handlingStrategy":"validation","validationCode":"bin=\"node\"\nmise ls >/dev/null 2>&1 || mise install\nmise which \"$bin\" >/dev/null 2>&1 || { mise install; mise which \"$bin\"; }","typeGuard":null,"tryCatchPattern":"p=\"$(mise which \"$bin\" 2>/dev/null)\" || { mise install && p=\"$(mise which \"$bin\")\"; } || { echo \"$bin's tool is configured but not installed\" >&2; exit 1; }","preventionTips":["Run `mise install` after checkout and after pulling config changes","Use `mise ls` in CI to fail fast on configured-but-missing versions"],"tags":["mise","which","install","config","toolchain"],"backgroundTag":"tool-version-not-installed","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}