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 processView on GitHub (pinned to 3810898a74)
Solutions
- Copy the suggested command from the error message — it lists every missing parameter as --params name=<value> flags.
- Re-run in an interactive terminal to get prompted for values.
- Inspect the recipe frontmatter (parameters: section) and match names exactly, including case.
- 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", ¶ms) {
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
- Pass every required parameter explicitly in non-interactive/CI runs.
- Match parameter names exactly (case-sensitive) with the frontmatter.
- Give optional parameters defaults in the recipe.
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
- Job name must start with a letter or number and contain only
- --model must be in provider/model form, e.g. anthropic/claud
- --trials must be at least 1
- --concurrency must be at least 1
- --timeout-multiplier must be positive
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/ef4367a2ffb34179.
Report an issue: GitHub.