aaif-goose/goose · warning
Failed to open recipe: {}
Error message
Failed to open recipe: {} What it means
After generating a `goose://recipe?config=...` deeplink, the open handler asks the OS to open it via the registered URL-scheme handler so Goose Desktop loads the recipe. When that open call fails — typically because no goose:// handler is registered — the command errors, but the deeplink URL has already been printed for manual use.
Source
Thrown at crates/goose-cli/src/commands/recipe.rs:87
Ok(_) => {
writeln!(
out,
"{} Opened recipe '{}' in Goose Desktop",
style("✓").green().bold(),
recipe.title
)?;
Ok(())
}
Err(err) => {
writeln!(
out,
"{} Failed to open recipe in Goose Desktop: {}",
style("✗").red().bold(),
err
)?;
writeln!(out, "Generated deeplink: {}", deeplink_url)?;
writeln!(out, "You can manually copy and open the URL above, or ensure Goose Desktop is installed.")?;
Err(anyhow::anyhow!("Failed to open recipe: {}", err))
}
},
Err(err) => {
writeln!(
out,
"{} Failed to encode recipe: {}",
style("✗").red().bold(),
err
)?;
Err(err)
}
}
}
pub fn handle_list(format: &str, verbose: bool) -> Result<()> {
let recipes = match list_available_recipes() {
Ok(recipes) => recipes,
Err(e) => {View on GitHub (pinned to 3810898a74)
Solutions
- Copy the printed `goose://recipe?config=...` URL and open it manually in a browser or Goose Desktop
- Install Goose Desktop and launch it once so the OS registers the goose:// scheme
- On Linux, ensure the .desktop file declares x-scheme-handler/goose and run `update-desktop-database`
Example fix
# Fallback when the handler is missing: # 1) copy the 'Generated deeplink:' URL from the error output # 2) open it in a browser or paste into Goose Desktop
Defensive patterns
Strategy: fallback
Validate before calling
# Check a goose:// handler exists before attempting desktop open xdg-mime query default x-scheme-handler/goose 2>/dev/null \ || echo 'no goose:// handler registered: use the printed deeplink manually'
Prevention
- Install and launch Goose Desktop once before scripting opens
- Always capture the printed deeplink in logs as the manual fallback
- Prefer file-based recipe sharing on CLI-only machines
When it happens
Trigger: Running the open-in-desktop recipe command on a machine without Goose Desktop installed, or where the app has not registered the goose:// scheme (fresh install never launched, Linux missing the xdg desktop entry).
Common situations: CLI-only installs; remote/SSH workstations with no desktop session; Linux distributions with incomplete desktop integration; desktop app installed but never started.
Related errors
- Invalid deeplink or recipe format
- Invalid parameter format: '{}'. Expected format: key=value
- Failed to encode recipe: {}
- Failed to parse recipe from file.
- {} recipe file is invalid: {}
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/6a91d731580c953e.
Report an issue: GitHub.