{"record":{"id":"9b9dbc5197e309bc","repo":"BoundaryML/baml","slug":"usage-baml-toolchain-pin-canary-nightly-version-path","errorCode":null,"errorMessage":"usage: baml toolchain pin <canary|nightly|version|path>","messagePattern":"usage: baml toolchain pin <canary\\|nightly\\|version\\|path>","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"baml_language/crates/baml/src/main.rs","lineNumber":370,"sourceCode":"            print!(\"{TOOLCHAIN_HELP}\");\n            Ok(())\n        }\n        Some(\"install\") => {\n            let selector = args\n                .get(1)\n                .ok_or_else(|| anyhow!(\"usage: baml toolchain install <canary|nightly|version>\"))?;\n            let force = args.iter().any(|arg| arg == \"--force\");\n            install_toolchain(selector, false, manifest_base_url.as_deref(), force)\n        }\n        Some(\"use\") => {\n            let selector = args.get(1).ok_or_else(|| {\n                anyhow!(\"usage: baml toolchain use <canary|nightly|version|path>\")\n            })?;\n            use_toolchain(selector, manifest_base_url.as_deref())\n        }\n        Some(\"pin\") => {\n            let selector = args.get(1).ok_or_else(|| {\n                anyhow!(\"usage: baml toolchain pin <canary|nightly|version|path>\")\n            })?;\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)","sourceCodeStart":352,"sourceCodeEnd":388,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/baml_language/crates/baml/src/main.rs#L352-L388","documentation":"`baml toolchain pin` requires a selector argument naming the toolchain to pin (`canary`, `nightly`, a version, or a path). The `toolchain` function throws this usage error when the selector argument is missing.","triggerScenarios":"Running `baml toolchain pin` with no argument at all.","commonSituations":"Users forgetting which argument pin takes, scripts with empty version variables, or assuming pin reads a default toolchain when none is supplied.","solutions":["Pass a selector: `baml toolchain pin <canary|nightly|version|path>`.","Run `baml toolchain list` to find an installed version to pin.","Check the project manifest to confirm which toolchain version you intend to pin."],"exampleFix":"# before\nbaml toolchain pin\n\n# after\nbaml toolchain pin 0.210.0","handlingStrategy":"validation","validationCode":"selector=\"${1:?usage: baml toolchain pin <canary|nightly|version|path>}\"\nbaml toolchain pin \"$selector\"","typeGuard":"const hasSelector = (args: string[]): args is [string, string] =>\n  args.length >= 2 && args[1].length > 0;","tryCatchPattern":"try:\n    subprocess.run([\"baml\", \"toolchain\", \"pin\", selector], check=True)\nexcept subprocess.CalledProcessError as e:\n    if \"usage: baml toolchain pin\" in e.stderr.decode():\n        raise SystemExit(\"Pin requires a selector argument\")","preventionTips":["Pin always needs exactly one selector argument.","Verify the version string matches `baml toolchain list` output before pinning.","Script defensively with ${VAR:?} guards for all selector variables."],"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"}