{"record":{"id":"f7218b332216ec21","repo":"BoundaryML/baml","slug":"usage-baml-toolchain-uninstall-version","errorCode":null,"errorMessage":"usage: baml toolchain uninstall <version>","messagePattern":"usage: baml toolchain uninstall <version>","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"baml_language/crates/baml/src/main.rs","lineNumber":389,"sourceCode":"            })?;\n            if args.len() > 2 {\n                return Err(anyhow!(\n                    \"usage: baml toolchain pin <canary|nightly|version|path>\\nunexpected arguments: {}\",\n                    args[2..].join(\" \")\n                ));\n            }\n            pin_toolchain(selector, manifest_base_url.as_deref())\n        }\n        Some(\"update\") => update_toolchain(manifest_base_url.as_deref()),\n        Some(\"status\") => status_toolchain(manifest_base_url.as_deref()),\n        Some(\"list\") => {\n            list_toolchains();\n            Ok(())\n        }\n        Some(\"uninstall\") => {\n            let version = args\n                .get(1)\n                .ok_or_else(|| anyhow!(\"usage: baml toolchain uninstall <version>\"))?;\n            uninstall_toolchain(version)\n        }\n        Some(other) => Err(anyhow!(\n            \"unknown toolchain command {other:?}\\n\\n{TOOLCHAIN_HELP}\"\n        )),\n    }\n}\n\nfn is_help_arg(arg: &str) -> bool {\n    matches!(arg, \"--help\" | \"-h\" | \"help\")\n}\n\nfn parse_manifest_base_url(mut args: Vec<String>) -> Result<(Vec<String>, Option<String>)> {\n    let mut manifest_base_url = None;\n    let mut i = 0;\n    while i < args.len() {\n        if args[i] == \"--manifest-base-url\" {\n            let value = args","sourceCodeStart":371,"sourceCodeEnd":407,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/baml_language/crates/baml/src/main.rs#L371-L407","documentation":"Usage guard in the baml wrapper's toolchain dispatch: `baml toolchain uninstall` was invoked without a version argument. The uninstall subcommand expects exactly one operand (the toolchain version to remove) and the argument parser rejects anything with fewer or more before attempting removal.","triggerScenarios":"Running `baml toolchain uninstall` with no version argument.","commonSituations":"Users assuming uninstall prompts for or removes all toolchains, scripts with empty version variables, or forgetting the exact installed version string.","solutions":["Pass a version: `baml toolchain uninstall <version>` (e.g. `baml toolchain uninstall 0.210.0`).","Run `baml toolchain list` to see exact version strings that can be uninstalled.","Uninstall the active toolchain only if you have another one to switch to."],"exampleFix":"# before\nbaml toolchain uninstall\n\n# after\nbaml toolchain uninstall 0.210.0","handlingStrategy":"validation","validationCode":"version=\"${VERSION:?usage: baml toolchain uninstall <version>}\"\ninstalled=$(baml toolchain list | grep -F \"$version\") || { echo \"version not installed\" >&2; exit 1; }\nbaml toolchain uninstall \"$version\"","typeGuard":"const hasVersionArg = (args: string[]): args is [string, string] =>\n  args.length >= 2 && args[1].length > 0;","tryCatchPattern":"try:\n    subprocess.run([\"baml\", \"toolchain\", \"uninstall\", version], check=True)\nexcept subprocess.CalledProcessError as e:\n    if \"usage: baml toolchain uninstall\" in e.stderr.decode():\n        raise SystemExit(\"Uninstall requires an explicit <version> argument\")","preventionTips":["Uninstall does not default or prompt — always name the version.","Copy exact version strings from `baml toolchain list`.","Guard script variables with ${VAR:?} to catch unset versions early."],"tags":["cli","usage","missing-argument","toolchain"],"backgroundTag":"missing-cli-argument","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}