jdx/mise · error
select a remote target by name, --tag, or --all
Error message
select a remote target by name, --tag, or --all (configured: {}) What it means
Remote bootstrap found configured hosts in [bootstrap.remote.hosts] but no selection criterion resolved to any of them. With an empty selection and a non-empty inventory, mise lists the configured host names and asks the user to pick.
Solutions
- Pass --all to select every configured host
- Pass a specific --host name matching one of the configured names shown in the message
- Use --tag with a tag that actually exists on the configured hosts
Example fix
// before mise bootstrap remote // after mise bootstrap remote --all
Defensive patterns
Strategy: validation
Validate before calling
if (configuredHosts.length > 0 && !flags.host && !flags.tag && !flags.all) throw new Error('select a target: --host|--tag|--all') Prevention
- Always pass an explicit selection flag
- Verify --tag values exist in host definitions
- Never assume 'all hosts' is the default
When it happens
Trigger: Running `mise bootstrap remote` with hosts configured, but without --host, --tag, or --all (or a --tag that matches no host / a name that select_remote_inventory didn't match).
Common situations: Typo in a --tag value; forgetting --all; expecting a default of 'all hosts' when mise requires explicit selection.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- no remote targets configured; pass --host [user@]host or…
- remote target ' ' was selected more than once
- a repository preview directory requires a dry run
- bootstrap from repository failed with
- bootstrap plan contains resources with unknown state
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/085d130777fc9a60.
Report an issue: GitHub.
Appendix: source
Thrown at src/cli/bootstrap.rs:3056
let config = Config::get().await?;
let config_excludes = system::remote::excludes_from_config(&config);
let inventory = system::remote::hosts_from_config(&config, &config_excludes)?;
let mut selected = select_remote_inventory(&inventory, &self.targets, self.all, &self.tag)?;
let ad_hoc_source = self.source.clone().unwrap_or(std::env::current_dir()?);
for destination in &self.host {
let host =
system::remote::ad_hoc_host(destination, ad_hoc_source.clone(), &config_excludes)?;
if selected.insert(host.name.clone(), host).is_some() {
bail!("remote target '{destination}' was selected more than once");
}
}
if selected.is_empty() {
if inventory.is_empty() {
bail!(
"no remote targets configured; pass --host [user@]host or add [bootstrap.remote.hosts]"
);
}
bail!(
"select a remote target by name, --tag, or --all (configured: {})",
inventory.keys().cloned().collect::<Vec<_>>().join(", ")
);
}
let overrides = system::remote::RemoteOverrides {
from_git: self.adopt.is_some(),
source: self.source,
mise_env: self.remote_env,
copy_links: self.copy_links,
copy_link: self.copy_link,
port: self.port,
identity_file: self.identity_file,
exclude: self.exclude,
ssh_options: self.ssh_option,
install_mise: self.install_mise,
no_install_mise: self.no_install_mise,
mise_bin: self.mise_bin,View on GitHub (pinned to 533346cc37)