{"record":{"id":"ebdb19f4b1f774d9","repo":"BoundaryML/baml","slug":"baml-toolchain-version-is-corrupt-version-contains-run-baml","errorCode":null,"errorMessage":"BAML toolchain {version} is corrupt: VERSION contains {}.\nRun: baml toolchain install {version} --force","messagePattern":"BAML toolchain (.+?) is corrupt: VERSION contains (.+?)\\.\nRun: baml toolchain install (.+?) --force","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"baml_language/crates/baml/src/main.rs","lineNumber":683,"sourceCode":"}\n\nfn toolchain_cli_path(version: &str) -> PathBuf {\n    toolchains_dir()\n        .join(version)\n        .join(\"bin\")\n        .join(cli_exe_name())\n}\n\nfn verify_toolchain_version_file(version: &str) -> Result<()> {\n    let path = toolchains_dir().join(version).join(\"VERSION\");\n    let actual = fs::read_to_string(&path).with_context(|| {\n        format!(\n            \"failed to read toolchain VERSION file at {}\",\n            path.display()\n        )\n    })?;\n    if actual.trim() != version {\n        anyhow::bail!(\n            \"BAML toolchain {version} is corrupt: VERSION contains {}.\\nRun: baml toolchain install {version} --force\",\n            actual.trim()\n        );\n    }\n    Ok(())\n}\n\nfn is_channel(selector: &str) -> bool {\n    selector == \"canary\" || selector == \"nightly\"\n}\n\n/// Whether a selector names a local `baml-cli` binary rather than a channel or\n/// a version. Channels and versions never contain a path separator, so a bare\n/// path is unambiguous and needs no prefix or flag to mark it.\nfn is_path_selector(selector: &str) -> bool {\n    is_path_selector_on(selector, cfg!(windows))\n}\n","sourceCodeStart":665,"sourceCodeEnd":701,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/baml_language/crates/baml/src/main.rs#L665-L701","documentation":"Integrity check failure: the wrapper reads the VERSION file inside an installed toolchain's directory and compares it to the directory name. A mismatch means the installation is corrupt — the directory was renamed, partially overwritten, or the files were copied between version directories. The toolchain is not trusted to run in this state.","triggerScenarios":"Thrown at baml_language/crates/baml/src/main.rs:683 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reinstall over the corrupt copy: `baml toolchain install <version> --force`","If it recurs, delete the toolchain directory manually and reinstall to rule out a partially-copied download"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}