BoundaryML/baml · error

{version} is a local path and is not managed by the wrapper,

Error message

{version} is a local path and is not managed by the wrapper, so there is nothing to uninstall.
To stop using it, select a managed toolchain instead.
Run: baml toolchain use canary
Or:  baml toolchain use nightly

What it means

uninstall_toolchain only manages registry-installed toolchains under the toolchains directory. If the given version is a path selector (a local build), there is nothing installed to remove, so the wrapper explains this and points the user at switching selectors via `baml toolchain use` instead.

Source

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

        println!("{channel}: {}", state.active_version);
    }
    let installed = installed_toolchains();
    if installed.is_empty() {
        println!("installed toolchains: (none)");
    } else {
        println!("installed toolchains:");
        for version in installed {
            println!("  {version}");
        }
    }
    println!();
    println!("Remote versions were not checked.");
    println!("Run: baml toolchain status");
}

fn uninstall_toolchain(version: &str) -> Result<()> {
    if is_path_selector(version) {
        return Err(anyhow!(
            "{version} is a local path and is not managed by the wrapper, so there is nothing to uninstall.\nTo stop using it, select a managed toolchain instead.\nRun: baml toolchain use canary\nOr:  baml toolchain use nightly"
        ));
    }
    let dir = toolchains_dir().join(version);
    if !dir.exists() {
        return Err(anyhow!("BAML toolchain {version} is not installed"));
    }
    fs::remove_dir_all(dir)?;
    println!("uninstalled BAML toolchain {version}");
    Ok(())
}

#[cfg(any(not(feature = "self-update"), feature = "no-self-update"))]
fn self_update() -> Result<()> {
    Err(anyhow!(
        "self-update is disabled in this build.\nUpdate BAML with your package manager."
    ))
}

View on GitHub (pinned to bd85ce9dee)

Solutions

  1. Delete the local build directory manually if you no longer need it.
  2. Switch to a managed toolchain first: `baml toolchain use canary` or `baml toolchain use nightly`.
  3. If you meant to remove a managed install, pass its version name (e.g. `baml toolchain uninstall 0.210.0`).

Example fix

// before
baml toolchain uninstall ./target/release/baml
// after
baml toolchain use canary   # stop using the local path
rm -rf ./target/release/baml   # remove the local build manually
Defensive patterns

Strategy: validation

Validate before calling

const isPathSelector = (v: string) => v.startsWith('/') || v.startsWith('./') || v.includes('/');
if (isPathSelector(version)) console.warn('local path toolchain: uninstall it manually, then `baml toolchain use canary`');

Prevention

When it happens

Trigger: Running `baml toolchain uninstall <version>` where is_path_selector(version) is true — the argument is a filesystem path to a locally built toolchain rather than an installed version name.

Common situations: Trying to "uninstall" a local dev build selected via --path; scripting cleanup that treats local builds like installed versions; forgetting that path-selected toolchains are not tracked by the wrapper.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


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