jdx/mise · error
remote mise path does not name an executable: {command:?}
Error message
remote mise path does not name an executable: {command:?} What it means
This helper resolves the remote mise executable path. A command starting with ~ must name a home-relative executable; a bare "~/" (empty suffix) names nothing and is rejected rather than silently resolving to the home directory.
Source
Thrown at src/system/remote.rs:1240
esac"#,
shell_quote(command),
shell_quote(command),
);
let output = session.output_async(&["sh", "-lc", &script]).await?;
validated_absolute_remote_path_output(&output, "remote login executable")
}
fn resolve_remote_mise_path(
command: &str,
project: &str,
remote_home: Option<&str>,
) -> Result<String> {
if command.starts_with('/') {
return Ok(command.to_string());
}
if let Some(suffix) = command.strip_prefix("~/") {
if suffix.is_empty() {
bail!("remote mise path does not name an executable: {command:?}");
}
let home = remote_home.ok_or_else(|| eyre!("remote login home was not resolved"))?;
return Ok(format!("{}/{suffix}", home.trim_end_matches('/')));
}
let mut components = Vec::new();
for component in command.split('/') {
match component {
"" | "." => {}
".." => {
if components.pop().is_none() {
bail!("relative remote mise path escapes the staged project: {command:?}");
}
}
component => components.push(component),
}
}
if components.is_empty() {View on GitHub (pinned to afd2eddd3a)
Solutions
- Set the full path including the executable name, e.g. ~/bin/mise or ~/.local/bin/mise
- Fix the template/variable that is empty so the path is not just "~/"
- Use an absolute path (starting with /) if the location is known
Example fix
// before remote_mise = "~/" // after remote_mise = "~/.local/bin/mise"
Defensive patterns
Strategy: validation
Validate before calling
const validHomePath = (cmd) => typeof cmd === 'string' && cmd.startsWith('~/') && cmd.length > 2; Type guard
const namesExecutable = (cmd) => cmd.startsWith('/') || (cmd.startsWith('~/') && cmd.slice(2).trim() !== ''); Prevention
- Always include the executable name after "~/"
- Validate templated remote paths before deployment (reject bare "~/")
- Prefer absolute paths for fixed install locations
When it happens
Trigger: Passing "~/" (or a command whose home-relative expansion is empty) as the remote mise path into the resolver that receives remote_home.
Common situations: Config templating where an environment variable that should hold the binary name is empty, producing "~/"; hand-edited remote mise path settings missing the executable name.
Understand the failure class
Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.
Related errors
- relative remote mise path does not name an executable: {comm
- oci mount_point must be an absolute path (got {mount_point:?
- path "{path_raw}" must be absolute or start with ~/, ignorin
- brew-cask: command_wrapper requires a command name without p
- copy_link must be a relative path within the source: {}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/4b3de8fcaf3f4490.
Report an issue: GitHub.