BoundaryML/baml · error

no command `{}` for `{prefix}`; `{prefix}` has no subcommand

Error message

no command `{}` for `{prefix}`; `{prefix}` has no subcommands

What it means

The custom help renderer in help_command.rs builds suggestions for an unmatched subcommand path. When the nearest known command has no visible subcommands at all (after hiding hidden commands and `help`), it throws this variant saying `{prefix}` has no subcommands. It indicates the user typed a subcommand under a leaf command.

Source

Thrown at baml_language/crates/baml_cli/src/help_command.rs:70

    render_from(query, RuntimeCli::command())
}

fn render_from(query: &[String], mut root: clap::Command) -> Result<RenderedHelp> {
    root.build();

    let command = find_command(query, &root).map_err(|(unmatched, nearest)| {
        let prefix = if query.len() == unmatched.len() {
            "baml".to_string()
        } else {
            format!("baml {}", query[..query.len() - unmatched.len()].join(" "))
        };
        let choices = nearest
            .get_subcommands()
            .filter(|command| !command.is_hide_set() && command.get_name() != "help")
            .map(clap::Command::get_name)
            .collect::<Vec<_>>();
        if choices.is_empty() {
            anyhow!(
                "no command `{}` for `{prefix}`; `{prefix}` has no subcommands",
                unmatched.join(" ")
            )
        } else {
            anyhow!(
                "no command `{}` for `{prefix}`. Available commands:\n    {}",
                unmatched.join(" "),
                choices.join("\n    ")
            )
        }
    })?;

    let is_root = query.is_empty();
    let mut command = command.clone();
    let help = if is_root {
        command.render_help()
    } else {
        if command.get_after_long_help().is_none() {

View on GitHub (pinned to bd85ce9dee)

Solutions

  1. Remove the extra subcommand token and run the leaf command alone
  2. Run `baml help` or `baml <prefix> --help` to see valid usage
  3. Check spelling of the intended subcommand against `baml help` output

Example fix

// before
$ baml version list
// after
$ baml version
Defensive patterns

Strategy: validation

Validate before calling

// check the command exists before running
$ baml <prefix> --help   # confirm the parent command accepts subcommands

Try / catch

match exit_status {
    Err/failure where stderr.contains("has no subcommands") => eprintln!("This command is a leaf; drop the extra subcommand."),
    other => other,
}

Prevention

When it happens

Trigger: Invoking e.g. `baml generate some-sub` or `baml toolchain foo` where the parent command accepts no subcommands; render_from finds the nearest matching command but its get_subcommands() list is empty.

Common situations: Typos that leave only the root-level command matched, or assuming a leaf command (like `baml version`) has subcommands.

Related errors


AI-assisted analysis of BoundaryML/baml@bd85ce9dee (2026-09-12). Data as JSON: /api/errors/bbcf53387168aa20. Report an issue: GitHub.