Skip to main content

Shareable Recipes

Sometimes you finish a task in Goose and realize, "Hey, this setup could be useful again." Maybe you have curated a great combination of tools, defined a clear goal, and want to preserve that flow. Or maybe you're trying to help someone else replicate what you just did without walking them through it step by step.

You can turn your current Goose session into a reusable recipe that includes the tools, goals, and setup you're using right now and package it into a new Agent that others (or future you) can launch with a single click.

Create Recipe

Create a recipe from the current session or from a template.

  1. While in the session you want to save as a recipe, click the button at the bottom of the app
  2. Click Create a recipe from this session
  3. A dialog opens with automatically generated instructions and activities:
    • Provide a title and description for the recipe
    • Review the instructions and edit them as needed
    • Provide an optional initial prompt to display in the chat box
    • Add or remove optional activities to display as buttons
  4. When you're finished, you can:
warning

You cannot create a recipe from an existing recipe session, but you can view or edit the recipe.

Edit Recipe

  1. While in the session that's using the recipe, click the button at the bottom of the app
  2. Click View recipe
  3. Edit any of the following:
    • Title
    • Description
    • Instructions
    • Initial prompt
    • Activities
  4. When you're finished, you can:

Use Recipe

  1. Open the recipe using a direct link or manual URL entry, or from your Recipe library:

    Direct Link:

    1. Click a recipe link shared with you

    Manual URL Entry:

    1. Paste a recipe link into your browser's address bar
    2. Press Enter and click the Open Goose.app prompt

    Recipe Library:

    1. Click the button in the top-left to open the sidebar
    2. Click Recipes in the sidebar
    3. Find your recipe in the Recipe Library
    4. Click Use next to the recipe you want to open
  2. If the recipe contains parameters, enter your values in the Recipe Parameters dialog and click Start Recipe.

    Parameters are dynamic values used in the recipe:

    • Required parameters are marked with red asterisks (*)
    • Optional parameters show default values that can be changed
  3. To run the recipe, click an activity bubble or send the prompt.

Parameter Creation In Goose CLI Only

You can enter parameter values to use in a recipe, but you cannot add parameters to a recipe in Goose Desktop. Parameters can only be defined in recipes created via the CLI.

Privacy & Isolation
  • Each person gets their own private session
  • No data is shared between users
  • Your session won't affect the original recipe creator's session

Validate Recipe

Recipe validation is only available through the CLI.

Share Recipe

Share your recipe with Desktop users by copying the recipe URL from the recipe creation dialog.

To copy the recipe URL:

  1. Open the recipe
  2. Click the button at the bottom of the app
  3. Click View recipe
  4. Scroll down and copy the link

When someone clicks the URL, it will open Goose Desktop with your recipe configuration. They can also use your recipe URL to import a recipe into their Recipe Library.

Schedule Recipe

Automate Goose recipes by running them on a schedule.

  1. Click the button in the top-left to open the sidebar
  2. Click Scheduler
  3. Click Create Schedule
  4. In the dialog that appears:
    • Provide a name for the schedule
    • Select the source of your recipe. This can be either a yaml file or link generated by Goose Desktop.
    • Select whether you want your recipe to run in the background or foreground execution mode. Recipes run in the background don't open a window, but the session results are saved. Recipes run in the foreground will open a window if the Goose Desktop app is running. Otherwise, the recipe runs in the background.
    • Choose the frequency and time to run your recipe. Your selected frequency (e.g. every 20 minutes, weekly at 10 AM on Friday) is converted into a cron expression used by Goose.
    • Click Create Schedule

Your new scheduled recipe is listed in the Scheduler page. Click on the schedule to view details, see when it was last run, and perform actions with the scheduled recipe:

  • Run Schedule Now to trigger the recipe manually
  • Edit Schedule to change the scheduled frequency
  • Pause Schedule to stop the recipe from running automatically.

At the bottom of the Schedule Details page you can view the list of sessions created by the scheduled recipe and open or restore each session.

Core Components

A recipe needs these core components:

  • Instructions: Define the agent's behavior and capabilities

    • Acts as the agent's mission statement
    • Makes the agent ready for any relevant task
    • Required if no prompt is provided
  • Prompt (Optional): Starts the conversation automatically

    • Without a prompt, the agent waits for user input
    • Useful for specific, immediate tasks
    • Required if no instructions are provided
  • Activities: Example tasks that appear as clickable bubbles

    • Help users understand what the recipe can do
    • Make it easy to get started

Advanced Features

Automated Retry Logic

Recipes can include retry logic to automatically attempt task completion multiple times until success criteria are met. This is particularly useful for:

  • Automation workflows that need to ensure successful completion
  • Development tasks like running tests that may need multiple attempts
  • System operations that require validation and cleanup

Basic retry configuration:

retry:
max_retries: 3
checks:
- type: shell
command: "test -f output.txt" # Check if output file exists
on_failure: "rm -f temp_files*" # Cleanup on failure

How it works:

  1. Recipe executes normally with provided instructions
  2. After completion, success checks validate the results
  3. If validation fails and retries remain:
    • Optional cleanup command runs
    • Agent state resets to initial conditions
    • Recipe execution starts over
  4. Process continues until either success or max retries reached

See the Recipe Reference Guide for complete retry configuration options and examples.

Structured Output for Automation

Recipes can enforce structured JSON output, making them ideal for automation workflows that need to parse and process agent responses reliably. Key benefits include:

  • Reliable parsing: Consistent JSON format for scripts, automation, and CI/CD pipelines
  • Built-in validation: Ensures output matches your requirements
  • Easy extraction: Final output appears as a single line for simple parsing

Structured output is particularly useful for:

  • Development workflows: Code analysis reports, test results with pass/fail counts, and build status with deployment readiness
  • Data processing: Results with counts and validation status, content analysis with structured findings
  • Documentation generation: Consistent metadata and structured project reports for further processing

Example structured output configuration:

response:
json_schema:
type: object
properties:
build_status:
type: string
enum: ["success", "failed", "warning"]
description: "Overall build result"
tests_passed:
type: number
description: "Number of tests that passed"
tests_failed:
type: number
description: "Number of tests that failed"
artifacts:
type: array
items:
type: string
description: "Generated build artifacts"
deployment_ready:
type: boolean
description: "Whether the build is ready for deployment"
required:
- build_status
- tests_passed
- tests_failed
- deployment_ready

How it works:

  1. Recipe runs normally with provided instructions
  2. Goose calls a final_output tool with JSON matching your schema
  3. Output is validated against the JSON schema
  4. If validation fails, Goose receives error details and must correct the output
  5. Final validated JSON appears as the last line of output for easy extraction

Example automation usage:

# Run recipe and extract JSON output
goose run --recipe analysis.yaml --params project_path=./src > output.log
RESULT=$(tail -n 1 output.log)
echo "Analysis Status: $(echo $RESULT | jq -r '.build_status')"
echo "Issues Found: $(echo $RESULT | jq -r '.tests_failed')"
info

Structured output is supported in recipes run in both the Goose CLI and Goose Desktop. However, creating and editing the json_schema configuration must be done manually in the recipe file.

What's Included

A recipe captures:

  • AI instructions (goal/purpose)
  • Suggested activities (examples for the user to click)
  • Enabled extensions and their configurations
  • Project folder or file context
  • Initial setup (but not full conversation history)
  • The model and provider to use when running the recipe (optional)
  • Retry logic and success validation configuration (if configured)

To protect your privacy and system integrity, Goose excludes:

  • Global and local memory
  • API keys and personal credentials
  • System-level Goose settings

This means others may need to supply their own credentials or memory context if the recipe depends on those elements.

CLI and Desktop Formats

The Goose CLI supports both CLI and Desktop recipe formats:

  • CLI Format: Recipe fields are at the root level. This format is used when recipes are created via the CLI /recipe command and Recipe Generator YAML option.
  • Desktop Format: Recipe fields are nested under a recipe key. This format is used when recipes are saved in Goose Desktop.

Both formats work seamlessly with goose run --recipe <file> and goose recipe CLI commands - you don't need to convert between them. For more details, see CLI and Desktop Formats.

Learn More

Check out the Goose Recipes guide for more docs, tools, and resources to help you master Goose recipes.