zed-industries/zed · warning
unknown provider `{provider}`. Valid options: mercury, zeta1
Error message
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
For zeta2, you can optionally specify a version like `zeta2:ordered` or `zeta2:V0113_Ordered`.
For teacher providers, you can specify a backend like `teacher:sonnet46`, `teacher-jumps:sonnet46`, `teacher-jumps-non-batching:sonnet46`, or `teacher:gpt52`.
Available zeta versions:
{} What it means
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.
Source
Thrown at crates/edit_prediction_cli/src/main.rs:536
Ok(PredictionProvider::TeacherJumps(backend))
}
"teacher-jumps-non-batching" | "teacher_jumps_non_batching" => {
let backend = arg
.map(|a| a.parse())
.transpose()?
.unwrap_or(TeacherBackend::default());
Ok(PredictionProvider::TeacherJumpsNonBatching(backend))
}
"repair" => Ok(PredictionProvider::Repair),
"baseten" => {
let format = arg
.map(ZetaFormat::parse)
.transpose()?
.unwrap_or(ZetaFormat::default());
Ok(PredictionProvider::Baseten(format))
}
_ => {
anyhow::bail!(
"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{}",
ZetaFormat::options_as_string()
)
}
}
}
}
fn parse_teacher_args(arg: Option<&str>) -> Result<(TeacherBackend, ZetaFormat), anyhow::Error> {
let mut backend = TeacherBackend::default();
let mut format = ZetaFormat::default();
for arg in arg.unwrap_or_default().split(':') {
if arg.is_empty() {
continue;View on GitHub (pinned to f4178619ac)
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)
Example fix
# before --provider openai # after --provider teacher:gpt54 # OpenAI teacher via gpt alias # or --provider zeta2:ordered
Defensive patterns
Strategy: validation
Validate before calling
const KNOWN_PROVIDERS: &[&str] = &["mercury", "zeta1", "zeta2", "baseten", "teacher", "teacher-jumps", "teacher-non-batching", "teacher-jumps-non-batching", "repair"];
fn provider_root_is_valid(s: &str) -> bool {
let root = s.split(':').next().unwrap_or("");
KNOWN_PROVIDERS.contains(&root)
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- unknown teacher backend `{s}`. Valid options: sonnet45, sonn
- unknown teacher backend or zeta format `{arg}`
- parse-output only supports Teacher and Zeta2 providers, got
- --languages and/or --extensions is required (use --list to s
- No existing predictions found. Use --provider to specify whi
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/45acffc527b8637c.
Report an issue: GitHub.