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

  1. Pass --all to select every configured host
  2. Pass a specific --host name matching one of the configured names shown in the message
  3. 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

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


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)