jdx/mise · error
(dynamic message from…
Error message
(dynamic message from crate::shims::unavailable_configured_tool_message)
What it means
A fallback diagnostic in `mise which <bin>`: after the uninstalled-tool and shim checks, mise calls `crate::shims::unavailable_configured_tool_message` which produces a dynamic message explaining that the binary is configured (present in some config file) but not currently available/active in this toolset. It fires only when that helper returns a message.
Solutions
- Read the dynamic message for the specific tool and run the suggested `mise install`/activation command.
- Run `mise ls` to see which configured tools are inactive and why.
- Reinstall or re-resolve the tool: `mise install` then `mise which <bin>` again.
Example fix
// diagnose mise ls mise install // retry mise which <bin>
Defensive patterns
Strategy: try-catch
Validate before calling
mise ls --json | jq -e --arg b "$bin" '.[] | select(.installed == null and .active == true)'
Try / catch
if ! mise which "$bin" 2>/dev/null; then mise install && mise which "$bin" || echo "$bin not available in this toolset" fi
Prevention
- Install every tool referenced by active configs in CI setup
- Check MISE_ENV-specific configs when switching environments
- Treat partial install failures as fatal instead of continuing
When it happens
Trigger: `mise which <bin>` where the bin is declared in a config file but its toolset entry cannot produce an executable path, and the earlier uninstalled_tool_message check did not apply — e.g. the tool is configured in a directory/env not active here.
Common situations: Config files from parent directories defining tools that failed to activate; tools configured for a different environment (MISE_ENV); partially failed installs leaving metadata but no binary.
Related errors
- is a mise bin however it is not currently active. Use `mise…
- is not a mise bin. Perhaps you need to install it first.
- {msg}
- @ is not installed hint: run `mise install @ `, or `mise ls…
- a branch name is required
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/ddbdeb4315690db5.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/which.rs:80
Some((p, tv)) => {
if self.version {
miseprintln!("{}", tv.version);
} else if self.plugin {
miseprintln!("{p}");
} else {
let path = p.which(&config, &tv, &bin_name).await?;
miseprintln!("{}", path.unwrap().display());
}
Ok(())
}
None => {
if let Some(msg) = self.uninstalled_tool_message(&config, &ts) {
bail!(msg);
}
if let Some(msg) =
crate::shims::unavailable_configured_tool_message(&config, &ts, &bin_name)
{
bail!(msg);
}
if self.has_shim(&bin_name) {
bail!(
"{bin_name} is a mise bin however it is not currently active. Use `mise use` to activate it in this directory."
)
} else {
bail!("{bin_name} is not a mise bin. Perhaps you need to install it first.",)
}
}
}
}
async fn complete(&self, config: &Arc<Config>) -> Result<()> {
let ts = self.get_toolset(config).await?;
let bins = ts
.list_paths(config)
.await
.into_iter()
.flat_map(|p| file::ls(&p).unwrap_or_default())View on GitHub (pinned to 533346cc37)