{"record":{"id":"9151017ddbf691ca","repo":"BoundaryML/baml","slug":"usage-baml-self-update-unexpected-arguments","errorCode":null,"errorMessage":"usage: baml self-update\nunexpected arguments: {}","messagePattern":"usage: baml self-update\nunexpected arguments: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"baml_language/crates/baml/src/main.rs","lineNumber":189,"sourceCode":"    if args.first().map(String::as_str) == Some(\"--replace\") {\n        args.remove(0);\n        return replace_running_exe(args).map(|()| 0);\n    }\n    if matches!(args.first().map(String::as_str), Some(\"--version\" | \"-V\")) {\n        print_version();\n        return Ok(0);\n    }\n    if args.first().map(String::as_str) == Some(\"toolchain\") {\n        args.remove(0);\n        return toolchain(args).map(|()| 0);\n    }\n    if args.first().map(String::as_str) == Some(\"self-update\") {\n        if args.get(1).is_some_and(|arg| is_help_arg(arg)) {\n            print!(\"{SELF_UPDATE_HELP}\");\n            return Ok(0);\n        }\n        if args.len() > 1 {\n            return Err(anyhow!(\n                \"usage: baml self-update\\nunexpected arguments: {}\",\n                args[1..].join(\" \")\n            ));\n        }\n        return self_update().map(|()| 0);\n    }\n    pass_through(args)\n}\n\nfn print_version() {\n    println!(\"baml wrapper {}\", env!(\"CARGO_PKG_VERSION\"));\n    let selector = match active_selector() {\n        Ok(selector) => selector,\n        Err(err) => {\n            println!(\"baml toolchain not resolved\");\n            println!(\"{err:#}\");\n            return;\n        }","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/baml_language/crates/baml/src/main.rs#L171-L207","documentation":"The `baml` wrapper binary rejects any arguments passed after the `self-update` subcommand. The CLI only supports a bare `baml self-update` (optionally with a help flag), so anything else is a usage error thrown by `run` in main.rs. This guards against silently ignoring flags the self-updater does not understand.","triggerScenarios":"Running `baml self-update <anything>` where the extra argument is not a help flag (e.g. `baml self-update --force`, `baml self-update nightly`). The error lists the offending arguments via `args[1..].join(\" \")`.","commonSituations":"Users guessing at flags like `--force` or `--check`, copy-pasting install/update commands from other tools (rustup-style `self update --dry-run`), or typos where an extra token trails the subcommand.","solutions":["Run `baml self-update` with no additional arguments.","Run `baml self-update --help` to see the supported usage.","If you need force/check behavior, check `baml --help` for a supported flag on a different subcommand."],"exampleFix":"// before\nbaml self-update --force\n\n// after\nbaml self-update","handlingStrategy":"validation","validationCode":"import subprocess, sys\nargs = [a for a in sys.argv[1:]]\nif args[:1] == [\"self-update\"] and len(args) > 1 and args[1] not in (\"--help\", \"-h\"):\n    raise SystemExit(\"baml self-update takes no additional arguments\")\nsubprocess.run([\"baml\"] + args, check=True)","typeGuard":"const isBareSelfUpdate = (args: string[]): boolean =>\n  args[0] === \"self-update\" && (args.length === 1 || isHelpArg(args[1]));","tryCatchPattern":"try:\n    subprocess.run([\"baml\", \"self-update\"], check=True, capture_output=True)\nexcept subprocess.CalledProcessError as e:\n    if \"unexpected arguments\" in e.stderr.decode():\n        print(\"Retry with: baml self-update (no extra flags)\")","preventionTips":["Never add flags to `baml self-update`; it supports no options except help.","Check `baml self-update --help` before assuming flags like --force exist.","Build CLI invocations from whitelisted argument arrays, not raw user input."],"tags":["cli","usage","argument-validation"],"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"}