zed-industries/zed · warning

No existing predictions found. Use --provider to specify whi

Error message

No existing predictions found. Use --provider to specify which model to use for prediction.

What it means

Guard in the predict loop (predict.rs): for each example it first looks for an existing prediction (actual_patch set or non-empty actual_output). If one exists for the requested provider it is reused (early return); if one exists for a different provider, predictions are cleared and regenerated. Only when no usable prediction exists AND no --provider was passed does it bail with this message — prediction cannot proceed without knowing which model to use.

Source

Thrown at crates/edit_prediction_cli/src/predict.rs:55

    example_progress: &ExampleProgress,
    mut cx: AsyncApp,
) -> anyhow::Result<()> {
    let repetition_count = args.repetitions;

    if let Some(existing_prediction) = example.predictions.first() {
        let has_prediction = existing_prediction.actual_patch.is_some()
            || !existing_prediction.actual_output.is_empty();
        if has_prediction {
            match args.provider {
                None => return Ok(()),
                Some(provider) if existing_prediction.provider == provider => return Ok(()),
                Some(_) => example.predictions.clear(),
            }
        }
    }

    let Some(provider) = args.provider else {
        anyhow::bail!(
            "No existing predictions found. Use --provider to specify which model to use for prediction."
        );
    };

    if let PredictionProvider::Teacher(backend, _)
    | PredictionProvider::TeacherNonBatching(backend, _)
    | PredictionProvider::TeacherJumps(backend)
    | PredictionProvider::TeacherJumpsNonBatching(backend) = provider
    {
        run_context_retrieval(
            example,
            app_state.clone(),
            example_progress,
            vec![ContextRetrievalType::Lsp],
            false,
            cx.clone(),
        )
        .await?;

View on GitHub (pinned to f4178619ac)

Solutions

  1. Pass --provider explicitly, e.g. --provider zeta2:ordered or --provider teacher:sonnet46
  2. Or first run the prediction step that populates actual_patch/actual_output, after which providerless re-runs will reuse them

Example fix

# before
predict examples.jsonl

# after
predict examples.jsonl --provider zeta2:ordered
Defensive patterns

Strategy: validation

Validate before calling

// Per-example check before predicting:
let has_prediction = existing_prediction
    .map(|p| p.actual_patch.is_some() || !p.actual_output.is_empty())
    .unwrap_or(false);
if !has_prediction && args.provider.is_none() {
    anyhow::bail!("pass --provider; example {} has no stored prediction", example.id);
}

Prevention

When it happens

Trigger: Running predict on a fresh dataset (no prior predictions recorded) without --provider; or after predictions were cleared/invalidated. Note an existing prediction with matching provider makes --provider optional, so the same command can work on one dataset and fail on another.

Common situations: New pull of examples from Snowflake and re-running an old command line that relied on previously cached predictions; teammates sharing scripts where one person's dataset already has predictions and another's does not.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/beeefcad554c1203. Report an issue: GitHub.