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

  1. Copy the printed `goose://recipe?config=...` URL and open it manually in a browser or Goose Desktop
  2. Install Goose Desktop and launch it once so the OS registers the goose:// scheme
  3. 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

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


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