BoundaryML/baml · error

[toolchain] pins version , but it isn't…

Error message

{} [toolchain] pins version {version}, but it isn't installed.
Installed toolchains: {}
Run: baml toolchain install {version}

What it means

Fires after the project baml.toml pins an exact version in [toolchain], but that version is not present in the local toolchains directory (e.g. the config was committed by a teammate or the toolchain was uninstalled). The message lists the versions that ARE installed so the mismatch is immediately visible. This is the project-config branch of missing_toolchain_error.

Solutions

  1. Install the pinned version: `baml toolchain install <version>`
  2. Or point the project at an installed version by editing the [toolchain] selector in baml.toml
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at baml_language/crates/baml/src/main.rs:639 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at baml_language/crates/baml/src/main.rs:639

        return match &selector.source {
            SelectorSource::Project(path) => Err(anyhow!(
                "baml.toml [toolchain] selects channel {}, but no active concrete version is recorded locally.\nRun: baml toolchain use {}",
                selector.selector,
                selector.selector
            )
            .context(format!("project config: {}", path.display()))),
            _ => Err(anyhow!(
                "error: no BAML toolchain is installed.\nRun: baml toolchain use canary\nOr:  baml toolchain use nightly"
            )),
        };
    }
    Ok(selector.selector.clone())
}

fn missing_toolchain_error(selector: &ResolvedSelector, version: &str) -> anyhow::Error {
    let installed = installed_toolchains().join(", ");
    match &selector.source {
        SelectorSource::Project(path) => anyhow!(
            "{} [toolchain] pins version {version}, but it isn't installed.\nInstalled toolchains: {}\nRun: baml toolchain install {version}",
            path.display(),
            if installed.is_empty() {
                "(none)"
            } else {
                &installed
            }
        ),
        _ => anyhow!(
            "BAML toolchain {version} is not installed.\nInstalled toolchains: {}\nRun: baml toolchain install {version}",
            if installed.is_empty() {
                "(none)"
            } else {
                &installed
            }
        ),
    }
}

View on GitHub (pinned to bd85ce9dee)