{"record":{"id":"45acffc527b8637c","repo":"zed-industries/zed","slug":"unknown-provider-provider-valid-options-merc","errorCode":null,"errorMessage":"unknown provider `{provider}`. Valid options: mercury, zeta1, zeta2, zeta2:<version>, teacher, teacher:<backend>, teacher-jumps, teacher-jumps:<backend>, teacher-non-batching, teacher-jumps-non-batching, repair\n                 For zeta2, you can optionally specify a version like `zeta2:ordered` or `zeta2:V0113_Ordered`.\n                 For teacher providers, you can specify a backend like `teacher:sonnet46`, `teacher-jumps:sonnet46`, `teacher-jumps-non-batching:sonnet46`, or `teacher:gpt52`.\n                 Available zeta versions:\n{}","messagePattern":"unknown provider `\\{provider\\}`\\. Valid options: mercury, zeta1, zeta2, zeta2:<version>, teacher, teacher:<backend>, teacher-jumps, teacher-jumps:<backend>, teacher-non-batching, teacher-jumps-non-batching, repair\n                 For zeta2, you can optionally specify a version like `zeta2:ordered` or `zeta2:V0113_Ordered`\\.\n                 For teacher providers, you can specify a backend like `teacher:sonnet46`, `teacher-jumps:sonnet46`, `teacher-jumps-non-batching:sonnet46`, or `teacher:gpt52`\\.\n                 Available zeta versions:\n\\{\\}","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/edit_prediction_cli/src/main.rs","lineNumber":536,"sourceCode":"                Ok(PredictionProvider::TeacherJumps(backend))\n            }\n            \"teacher-jumps-non-batching\" | \"teacher_jumps_non_batching\" => {\n                let backend = arg\n                    .map(|a| a.parse())\n                    .transpose()?\n                    .unwrap_or(TeacherBackend::default());\n                Ok(PredictionProvider::TeacherJumpsNonBatching(backend))\n            }\n            \"repair\" => Ok(PredictionProvider::Repair),\n            \"baseten\" => {\n                let format = arg\n                    .map(ZetaFormat::parse)\n                    .transpose()?\n                    .unwrap_or(ZetaFormat::default());\n                Ok(PredictionProvider::Baseten(format))\n            }\n            _ => {\n                anyhow::bail!(\n                    \"unknown provider `{provider}`. Valid options: mercury, zeta1, zeta2, zeta2:<version>, teacher, teacher:<backend>, teacher-jumps, teacher-jumps:<backend>, teacher-non-batching, teacher-jumps-non-batching, repair\\n\\\n                 For zeta2, you can optionally specify a version like `zeta2:ordered` or `zeta2:V0113_Ordered`.\\n\\\n                 For teacher providers, you can specify a backend like `teacher:sonnet46`, `teacher-jumps:sonnet46`, `teacher-jumps-non-batching:sonnet46`, or `teacher:gpt52`.\\n\\\n                 Available zeta versions:\\n{}\",\n                    ZetaFormat::options_as_string()\n                )\n            }\n        }\n    }\n}\n\nfn parse_teacher_args(arg: Option<&str>) -> Result<(TeacherBackend, ZetaFormat), anyhow::Error> {\n    let mut backend = TeacherBackend::default();\n    let mut format = ZetaFormat::default();\n\n    for arg in arg.unwrap_or_default().split(':') {\n        if arg.is_empty() {\n            continue;","sourceCodeStart":518,"sourceCodeEnd":554,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/edit_prediction_cli/src/main.rs#L518-L554","documentation":"Parse failure for PredictionProvider, the enum (main.rs:449) selecting which prediction model backs the CLI: mercury, zeta1, zeta2(format), baseten(format), teacher/teacher-jumps variants (each optionally non-batching, each with a backend and/or zeta format after ':'), and repair. The root provider name (text before any ':') must match one of the accepted arms; the error message enumerates them and appends the currently available zeta2 versions from ZetaFormat::options_as_string(). Note 'baseten' is accepted by the parser even though it is absent from the message's list.","triggerScenarios":"Passing --provider with an unknown root token, e.g. --provider openai (not valid; teachers use gpt aliases via teacher:gpt54), --provider zeta3, or misspelling 'teacher-jumps-non-batching'. Composite forms like zeta2:ordered or teacher:sonnet46 are parsed only if the root matches.","commonSituations":"Version churn: zeta1 deprecated in favor of zeta2:<version>; users guessing provider names not yet implemented; copying a provider string from old run docs into a newer CLI.","solutions":["Use a listed provider: mercury, zeta1, zeta2[:version], teacher[:backend], teacher-jumps[:backend], teacher-non-batching, teacher-jumps-non-batching[:backend], repair (baseten also parses)","For version-specific runs use the colon form, e.g. zeta2:ordered — the error's tail lists the available zeta versions","Check for typos in long names like teacher-jumps-non-batching (hyphens matter)"],"exampleFix":"# before\n--provider openai\n\n# after\n--provider teacher:gpt54   # OpenAI teacher via gpt alias\n# or\n--provider zeta2:ordered","handlingStrategy":"validation","validationCode":"const KNOWN_PROVIDERS: &[&str] = &[\"mercury\", \"zeta1\", \"zeta2\", \"baseten\", \"teacher\", \"teacher-jumps\", \"teacher-non-batching\", \"teacher-jumps-non-batching\", \"repair\"];\n\nfn provider_root_is_valid(s: &str) -> bool {\n    let root = s.split(':').next().unwrap_or(\"\");\n    KNOWN_PROVIDERS.contains(&root)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Read the error's tail: it lists the currently available zeta2 versions, which change between builds","Remember 'baseten' parses even though the message omits it; openai/gpt go through teacher:gpt54","Keep the provider root and its colon-suffixes straight: root selects the provider, suffix selects backend/version"],"tags":["rust","cli","enum-parsing","provider-selection","edit-prediction"],"backgroundTag":"invalid-argument-value","analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}