aaif-goose/goose · error · RecipeError::MissingParams

Please provide the following parameters in the command line:

Error message

Please provide the following parameters in the command line: {}

What it means

Recipe construction returned RecipeError::MissingParams — the recipe frontmatter declares parameters that are required, and no values were supplied interactively or on the command line. Goose converts the missing-parameter list into an actionable message (via missing_parameters_command_line) telling you exactly which --params flags to add. This is a usage error, not a bug.

Source

Thrown at crates/goose-cli/src/recipes/recipe.rs:43

    let recipe_content = recipe_file.content;
    let recipe_dir = recipe_file.parent_dir;
    match build_recipe_from_template(
        recipe_content,
        &recipe_dir,
        params,
        Some(create_user_prompt_callback()),
    ) {
        Ok(recipe) => {
            let secret_requirements = discover_recipe_secrets(&recipe);
            if let Err(e) = collect_missing_secrets(&secret_requirements) {
                eprintln!(
                    "Warning: Failed to collect some secrets: {}. Recipe will continue to run.",
                    e
                );
            }
            Ok(recipe)
        }
        Err(RecipeError::MissingParams { parameters }) => Err(anyhow::anyhow!(
            "Please provide the following parameters in the command line: {}",
            missing_parameters_command_line(parameters)
        )),
        Err(e) => Err(anyhow::anyhow!(e.to_string())),
    }
}

/// Collects missing secrets from the user interactively
///
/// This function checks if each required secret exists in the keyring.
/// For missing secrets, it prompts the user interactively and stores them
/// using the scoped key to prevent collisions.
///
/// # Arguments
/// * `requirements` - Vector of SecretRequirement objects to collect
///
/// # Returns
/// Result indicating success or failure of the collection process

View on GitHub (pinned to 3810898a74)

Solutions

  1. Copy the suggested command from the error message — it lists every missing parameter as --params name=<value> flags.
  2. Re-run in an interactive terminal to get prompted for values.
  3. Inspect the recipe frontmatter (parameters: section) and match names exactly, including case.
  4. Give the parameter a default value in the recipe if it should be optional.

Example fix

# before
$ goose run --recipe my-recipe.yaml
Error: Please provide the following parameters in the command line: --params api_key=<api_key>

# after
$ goose run --recipe my-recipe.yaml --params api_key=sk-...
Defensive patterns

Strategy: validation

Validate before calling

# front-load required params before invoking goose
required=$(yq '.parameters // {} | map_values(select(.required == true)) | keys | join(",")' recipe.yaml)
for p in ${required//,/ }; do
    [ -n "${PARAMS[$p]:-}" ] || echo "missing --params ${p}=<value>"
done

Try / catch

if let Err(e) = run_recipe("my-recipe.yaml", &params) {
    if e.to_string().starts_with("Please provide the following parameters") {
        // usage error: parse the suggested --params flags out of the message and re-prompt
    }
    return Err(e);
}

Prevention

When it happens

Trigger: Running `goose run --recipe x.yaml` where frontmatter has `parameters:` entries without defaults, in a non-TTY context where the interactive prompt callback could not collect them, or when a provided parameter name is typo'd so the required one still counts as missing.

Common situations: CI / scripted runs with no interactive prompt; parameter name casing or typo mismatches between the command line and frontmatter; recipes newly updated upstream to require extra parameters.

Related errors


AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16). Data as JSON: /api/errors/ef4367a2ffb34179. Report an issue: GitHub.