{"record":{"id":"27280edee1d620c3","repo":"BoundaryML/baml","slug":"usage-baml-toolchain-pin-canary-nightly-version-path-main","errorCode":null,"errorMessage":"usage: baml toolchain pin <canary|nightly|version|path>\nunexpected arguments: {}","messagePattern":"usage: baml toolchain pin <canary\\|nightly\\|version\\|path>\nunexpected arguments: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"baml_language/crates/baml/src/main.rs","lineNumber":373,"sourceCode":"        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)\n                .ok_or_else(|| anyhow!(\"usage: baml toolchain uninstall <version>\"))?;\n            uninstall_toolchain(version)\n        }","sourceCodeStart":355,"sourceCodeEnd":391,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/baml_language/crates/baml/src/main.rs#L355-L391","documentation":"`baml toolchain pin` accepts at most one extra argument: the selector. If additional arguments follow the selector (`args.len() > 2`), the `toolchain` function throws this usage error listing the unexpected arguments, because pin takes no flags or extras.","triggerScenarios":"Running `baml toolchain pin 0.210.0 --force` or `baml toolchain pin nightly extra-arg` — anything with more than one token after `pin`.","commonSituations":"Users assuming `pin` supports an `--force` flag (only `install` does), copy-pasting flags from other subcommands, or accidental extra tokens in shell scripts.","solutions":["Remove the extra arguments: `baml toolchain pin <selector>` only.","If you wanted an override flag, check `baml toolchain install --help` — `--force` belongs to install, not pin.","Inspect the command line in the wrapping script for stray tokens."],"exampleFix":"# before\nbaml toolchain pin 0.210.0 --force\n\n# after\nbaml toolchain pin 0.210.0","handlingStrategy":"validation","validationCode":"args=(pin \"$selector\")\n# pin accepts NO flags — never append anything after $selector\nbaml toolchain \"${args[@]}\"","typeGuard":"function isBarePinInvocation(args: string[]): boolean {\n  return args.length === 2; // ['pin', selector] — nothing else allowed\n}","tryCatchPattern":"try:\n    subprocess.run([\"baml\", \"toolchain\", \"pin\", selector], check=True)\nexcept subprocess.CalledProcessError as e:\n    if \"unexpected arguments\" in e.stderr.decode():\n        raise SystemExit(\"pin takes only a selector — move flags like --force to `install`\")","preventionTips":["Only `toolchain install` supports `--force`; pin does not accept any flags.","Construct pin commands programmatically with a fixed argument list.","Strip unknown flags from wrapper scripts before delegating to baml."],"tags":["cli","usage","unexpected-argument","toolchain"],"backgroundTag":"invalid-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"}