diff --git a/documentation/docs/guides/goose-cli-commands.md b/documentation/docs/guides/goose-cli-commands.md index 23464dfb05ae..8a7cc2e6148d 100644 --- a/documentation/docs/guides/goose-cli-commands.md +++ b/documentation/docs/guides/goose-cli-commands.md @@ -2,15 +2,15 @@ sidebar_position: 7 title: CLI Commands sidebar_label: CLI Commands +toc_max_heading_level: 4 --- -Goose provides a command-line interface (CLI) with several commands for managing sessions, configurations and extensions. Below is a list of the available commands and their descriptions: +Goose provides a command-line interface (CLI) with several commands for managing sessions, configurations and extensions. This guide covers all available CLI commands and interactive session features. -## Commands +### Core Commands -### help - -Used to display the help menu +#### help +Display the help menu. **Usage:** ```bash @@ -19,8 +19,7 @@ goose --help --- -### configure [options] - +#### configure Configure Goose settings - providers, extensions, etc. **Usage:** @@ -30,235 +29,128 @@ goose configure --- -### session [options] - -#### Start a session and give it a name - - **Options:** - - **`-n, --name `** - - **Usage:** - - ```bash - goose session --name - ``` ---- - -#### Resume a previous session - - **Options:** - - **`-r, --resume`** - - **Usage:** - - ```bash - goose session --resume --name - ``` - Or, if you didn't name your session, you can locate it by the session id generated by Goose, e.g. `2025250620_013617`. - ```bash - goose session --resume --id - ``` ---- - -#### Start a session with the specified extension - - **Options:** - - **`--with-extension `** - - **Usage:** - - ```bash - goose session --with-extension - ``` - - **Examples:** - - ```bash - goose session --with-extension "npx -y @modelcontextprotocol/server-memory" - ``` - - With environment variable: - - ```bash - goose session --with-extension "GITHUB_PERSONAL_ACCESS_TOKEN= npx -y @modelcontextprotocol/server-github" - ``` ---- - -#### Start a session with the specified remote extension over SSE - - **Options:** - - **`--with-remote-extension `** - - **Usage:** - - ```bash - goose session --with-remote-extension - ``` - - **Examples:** - - ```bash - goose session --with-remote-extension "http://localhost:8080/sse" - ``` - ---- - -#### Start a session with the specified remote extension over Streaming HTTP - - **Options:** - - **`--with-streamable-http-extension `** - - **Usage:** - - ```bash - goose session --with-streamable-http-extension - ``` - - **Examples:** - - ```bash - goose session --with-streamable-http-extension "https://example.com/streamable" - ``` - - **Advanced Examples:** - - ```bash - # Start a session with a streamable HTTP extension - goose session --with-streamable-http-extension "http://api.example.com" - - # Use multiple streamable HTTP extensions - goose session \ - --with-streamable-http-extension "http://api1.example.com" \ - --with-streamable-http-extension "http://api2.example.com" - - # Mix different extension types - goose session \ - --with-extension "echo hello" \ - --with-remote-extension "http://sse.example.com/sse" \ - --with-streamable-http-extension "http://http.example.com" \ - --with-builtin "developer" - ``` - ---- - -#### Start a session with the specified [built-in extension](/docs/getting-started/using-extensions#built-in-extensions) enabled (e.g. 'developer') - - **Options:** - - **`--with-builtin `** - - **Usage:** +#### info [options] +Shows Goose information, including the version, configuration file location, session storage, and logs. - ```bash - goose session --with-builtin - ``` +**Options:** +- **`-v, --verbose`**: Show detailed configuration settings, including environment variables and enabled extensions - **Example:** +**Usage:** +```bash +goose info +``` - ```bash - goose session --with-builtin computercontroller - ``` --- -#### Enable debug mode to output complete tool responses, detailed parameter values, and full file paths - - **Options:** +#### version +Check the current Goose version you have installed. - **`--debug`** - - **Usage:** +**Usage:** +```bash +goose --version +``` - ```bash - goose session --name my-session --debug - ``` --- -#### Limit the maximum number of turns the agent can take before asking for user input to continue +#### update [options] +Update the Goose CLI to a newer version. - **Options:** +**Options:** +- **`--canary, -c`**: Update to the canary (development) version instead of the stable version +- **`--reconfigure, -r`**: Forces Goose to reset configuration settings during the update process - **`--max-turns `** +**Usage:** +```bash +# Update to latest stable version +goose update - **Usage:** +# Update to latest canary version +goose update --canary - ```bash - goose session --max-turns 50 - ``` +# Update and reconfigure settings +goose update --reconfigure +``` --- -#### Set the [maximum number of turns](/docs/guides/sessions/smart-context-management#maximum-turns) allowed without user input (default: 1000) - - **Options:** - - **`--max-turns `** +### Session Management - **Usage:** +#### session [options] +Start or resume interactive chat sessions. - ```bash - goose session --max-turns 10 - ``` +**Basic Options:** +- **`-n, --name `**: Give the session a name +- **`-r, --resume`**: Resume a previous session +- **`--debug`**: Enable debug mode to output complete tool responses, detailed parameter values, and full file paths +- **`--max-turns `**: Set the maximum number of turns allowed without user input (default: 1000) - **Examples:** +**Extension Options:** +- **`--with-extension `**: Add stdio extensions +- **`--with-remote-extension `**: Add remote extensions over SSE +- **`--with-streamable-http-extension `**: Add remote extensions over Streaming HTTP +- **`--with-builtin `**: Enable built-in extensions (e.g., 'developer', 'computercontroller') - ```bash - # Low limit for step-by-step control - goose session --max-turns 3 - - # Moderate limit for controlled automation - goose session --max-turns 25 - - # Combined with other options - goose session --name my-project --max-turns 10 --debug - ``` +**Usage:** +```bash +# Start a basic session +goose session --name my-project + +# Resume a previous session +goose session --resume --name my-project +goose session --resume --id 2025250620_013617 + +# Start with extensions +goose session --with-extension "npx -y @modelcontextprotocol/server-memory" +goose session --with-builtin developer +goose session --with-remote-extension "http://localhost:8080/sse" + +# Advanced: Mix multiple extension types +goose session \ + --with-extension "echo hello" \ + --with-remote-extension "http://sse.example.com/sse" \ + --with-streamable-http-extension "http://http.example.com" \ + --with-builtin "developer" + +# Control session behavior +goose session --name my-session --debug --max-turns 25 +``` --- -### session list [options] - +#### session list [options] List all saved sessions. -- **`-v, --verbose`**: (Optional) Includes session file paths in the output. -- **`-f, --format `**: Specify output format (`text` or `json`). Default is `text`. -- **`--ascending`**: Sort sessions by date in ascending order (oldest first). Default is descending order (newest first). +**Options:** +- **`-v, --verbose`**: Include session file paths in the output +- **`-f, --format `**: Specify output format (`text` or `json`). Default is `text` +- **`--ascending`**: Sort sessions by date in ascending order (oldest first) **Usage:** - ```bash # List all sessions in text format (default) goose session list -``` -```bash + # List sessions with file paths goose session list --verbose -``` -```bash # List sessions in JSON format goose session list --format json -``` -```bash -# Sort sessions by date in ascending order. + +# Sort sessions by date in ascending order goose session list --ascending ``` ---- -### session remove [options] +--- +#### session remove [options] Remove one or more saved sessions. **Options:** - **`-i, --id `**: Remove a specific session by its ID - **`-n, --name `**: Remove a specific session by its name -- **`-r, --regex `**: Remove sessions matching a regex pattern. For example: +- **`-r, --regex `**: Remove sessions matching a regex pattern **Usage:** - ```bash # Remove a specific session by ID goose session remove -i 20250305_113223 @@ -275,22 +167,20 @@ goose session remove -r ".*migration.*" :::caution Session removal is permanent and cannot be undone. Goose will show which sessions will be removed and ask for confirmation before deleting. -::: +::: --- -### session export [options] - +#### session export [options] Export a session to Markdown format for sharing, documentation, or archival purposes. **Options:** - **`-i, --id `**: Export a specific session by ID - **`-n, --name `**: Export a specific session by name -- **`-p, --path `**: Export a specific session by file path +- **`-p, --path `**: Export a specific session by file path - **`-o, --output `**: Save exported content to a file (default: stdout) **Usage:** - ```bash # Export specific session to file goose session export --name my-session --output session.md @@ -307,155 +197,86 @@ goose session export --path ./my-session.jsonl --output exported.md --- -### info [options] - -Shows Goose information, including the version, configuration file location, session storage, and logs. - -- **`-v, --verbose`**: (Optional) Show detailed configuration settings, including environment variables and enabled extensions. - -**Usage:** -```bash -goose info -``` - ---- - -### version - -Used to check the current Goose version you have installed - -**Usage:** -```bash -goose --version -``` - ---- - -### update [options] - -Update the Goose CLI to a newer version. - -**Options:** - -- **`--canary, -c`**: Update to the canary (development) version instead of the stable version -- **`--reconfigure, -r`**: Forces Goose to reset configuration settings during the update process - -**Usage:** - -```bash -# Update to latest stable version -goose update - -# Update to latest canary version -goose update --canary - -# Update and reconfigure settings -goose update --reconfigure -``` - ---- - -### mcp - -Run an enabled MCP server specified by `` (e.g. `'Google Drive'`) - -**Usage:** -```bash -goose mcp -``` - ---- - -### run [options] +### Task Execution +#### run [options] Execute commands from an instruction file or stdin. Check out the [full guide](/docs/guides/running-tasks) for more info. -**Options:** - -- **`-i, --instructions `**: Path to instruction file containing commands. Use - for stdin. +**Input Options:** +- **`-i, --instructions `**: Path to instruction file containing commands. Use `-` for stdin - **`-t, --text `**: Input text to provide to Goose directly +- **`--recipe `**: Load a custom recipe in current session + +**Session Options:** - **`-s, --interactive`**: Continue in interactive mode after processing initial input -- **`-n, --name `**: Name for this run session (e.g. `daily-tasks`) +- **`-n, --name `**: Name for this run session (e.g. `daily-tasks`) - **`-r, --resume`**: Resume from a previous run -- **`--recipe `**: Load a custom recipe in current session - **`-p, --path `**: Path for this run session (e.g. `./playground.jsonl`) -- **`--with-extension `**: Add stdio extensions (can be used multiple times in the same command) -- **`--with-remote-extension `**: Add remote extensions over SSE (can be used multiple times in the same command) -- **`--with-streamable-http-extension `**: Add remote extensions over Streaming HTTP (can be used multiple times in the same command) -- **`--with-builtin `**: Add builtin extensions by name (e.g., 'developer' or multiple: 'developer,github') +- **`--no-session`**: Run goose commands without creating or storing a session file + +**Extension Options:** +- **`--with-extension `**: Add stdio extensions (can be used multiple times) +- **`--with-remote-extension `**: Add remote extensions over SSE (can be used multiple times) +- **`--with-streamable-http-extension `**: Add remote extensions over Streaming HTTP (can be used multiple times) +- **`--with-builtin `**: Add builtin extensions by name (e.g., 'developer' or multiple: 'developer,github') + +**Control Options:** - **`--debug`**: Output complete tool responses, detailed parameter values, and full file paths -- **`--max-turns `**: [Maximum number of turns](/docs/guides/sessions/smart-context-management#maximum-turns) allowed without user input (default: 1000) +- **`--max-turns `**: Maximum number of turns allowed without user input (default: 1000) - **`--explain`**: Show a recipe's title, description, and parameters -- **`--no-session`**: Run goose commands without creating or storing a session file -- **`--max-turns `**: Limit the maximum number of turns the agent can take before asking for user input to continue (default: 1000) -- **`--provider`**: Specify the provider to use for this session (overrides environment variable). -- **`--model`**: Specify the model to use for this session (overrides environment variable). +- **`--provider`**: Specify the provider to use for this session (overrides environment variable) +- **`--model`**: Specify the model to use for this session (overrides environment variable) **Usage:** - ```bash +# Run from instruction file goose run --instructions plan.md -#Load a recipe with a prompt that Goose executes and then exits +# Load a recipe with a prompt that Goose executes and then exits goose run --recipe recipe.yaml -#Load a recipe from this chat and then stays in an interactive session -goose run --recipe recipe.yaml -s - -#Load a recipe containing a prompt which Goose executes and then drops into an interactive session +# Load a recipe and stay in an interactive session goose run --recipe recipe.yaml --interactive -#Generates an error: no text provided for prompt in headless mode -goose run --recipe recipe_no_prompt.yaml - -#Load a recipe in debug mode +# Load a recipe in debug mode goose run --recipe recipe.yaml --debug -#Show recipe details +# Show recipe details goose run --recipe recipe.yaml --explain -#Run instructions from a file without session storage +# Run instructions from a file without session storage goose run --no-session -i instructions.txt -#Run with a limit of 25 turns before asking for user input -goose run --max-turns 25 -i plan.md +# Run with a specified provider and model +goose run --provider anthropic --model claude-4-sonnet -t "initial prompt" -#Run with limited turns before prompting user +# Run with limited turns before prompting user goose run --recipe recipe.yaml --max-turns 10 - -#Run with a specified provider and model -goose run --provider anthropic --model claude-4-sonnet -t "initial prompt" ``` --- -### bench - +#### bench Used to evaluate system-configuration across a range of practical tasks. See the [detailed guide](/docs/tutorials/benchmarking) for more information. **Usage:** - ```bash goose bench ...etc. ``` -### recipe -Used to validate recipe files and manage recipe sharing. +--- -**Usage:** -```bash -goose recipe -``` +#### recipe +Used to validate recipe files and manage recipe sharing. **Commands:** - `validate `: Validate a recipe file - `deeplink `: Generate a shareable link for a recipe file -**Options:** -- `--help, -h`: Print help information - -**Examples:** +**Usage:** ```bash +goose recipe + # Validate a recipe file goose recipe validate my-recipe.yaml @@ -467,13 +288,9 @@ goose recipe help ``` --- -### schedule -Automate recipes by running them on a [schedule](/docs/guides/recipes/session-recipes.md#schedule-recipe). -**Usage:** -```bash -goose schedule -``` +#### schedule +Automate recipes by running them on a [schedule](/docs/guides/recipes/session-recipes.md#schedule-recipe). **Commands:** - `add `: Create a new scheduled job. Copies the current version of the recipe to `~/.local/share/goose/scheduled_recipes` @@ -482,18 +299,20 @@ goose schedule - `sessions`: List sessions created by a scheduled recipe - `run-now`: Run a scheduled recipe immediately -Use the following commands if you're scheduling recipes using the [Temporal scheduler](https://docs.temporal.io/evaluate/development-production-features/schedules) (requires the Temporal CLI): +**Temporal Commands (requires Temporal CLI):** - `services-status`: Check if any Temporal services are running - `services-stop`: Stop any running Temporal services **Options:** - `--id `: A unique ID for the scheduled job (e.g. `daily-report`) -- `--cron "* * * * * *"`: Specifies when a job should run using a [cron expression](https://en.wikipedia.org/wiki/Cron#Cron_expression) represented as a string with either 5, 6, or 7 digits in the format "seconds minutes hours day-of-month month day-of-week year" +- `--cron "* * * * * *"`: Specifies when a job should run using a [cron expression](https://en.wikipedia.org/wiki/Cron#Cron_expression) - `--recipe-source `: Path to the recipe YAML file -- `--limit `: (Optional) max number of sessions to display when using the `sessions` command +- `--limit `: Max number of sessions to display when using the `sessions` command -**Examples:** +**Usage:** ```bash +goose schedule + # Add a new scheduled recipe which runs every day at 9 AM goose schedule add --id daily-report --cron "0 0 9 * * *" --recipe-source ./recipes/daily-report.yaml @@ -511,9 +330,21 @@ goose schedule remove --id daily-report ``` --- -### project -Start working on your last project or create a new one. +#### mcp +Run an enabled MCP server specified by `` (e.g. `'Google Drive'`). + +**Usage:** +```bash +goose mcp +``` + +--- + +### Project Management + +#### project +Start working on your last project or create a new one. For detailed usage examples and workflows, see [Managing Projects Guide](/docs/guides/managing-projects). **Alias**: `p` @@ -522,11 +353,9 @@ Start working on your last project or create a new one. goose project ``` -For a complete guide, see [Managing Projects Guide](/docs/guides/managing-projects). - --- -### projects +#### projects Choose one of your projects to start working on. **Alias**: `ps` @@ -536,11 +365,11 @@ Choose one of your projects to start working on. goose projects ``` -For detailed usage examples and workflows, see [Managing Projects Guide](/docs/guides/managing-projects). - --- -### web +### Interface + +#### web Start a new session in Goose Web, a lightweight web-based interface launched via the CLI that mirrors the desktop app's chat experience. Goose Web is particularly useful when: @@ -548,17 +377,16 @@ Goose Web is particularly useful when: - You need to use Goose from different devices, including mobile - You're working in an environment where installing desktop apps isn't practical -**Usage:** -```bash -goose web -``` +:::warning +Don't expose the web interface to the internet without proper security measures. +::: **Options:** -- **`-p, --port `**: Port number to run the web server on. Default is `3000`. -- **`--host `**: Host to bind the web server to. Default is `127.0.0.1`. -- **`--open`**: Automatically open the browser when the server starts. +- **`-p, --port `**: Port number to run the web server on. Default is `3000` +- **`--host `**: Host to bind the web server to. Default is `127.0.0.1` +- **`--open`**: Automatically open the browser when the server starts -**Examples:** +**Usage:** ```bash # Start web interface at `http://127.0.0.1:3000` and open the browser goose web --open @@ -570,6 +398,10 @@ goose web --port 8080 goose web --host 192.168.1.7 --port 8080 ``` +:::info +Use `Ctrl+C` to stop the server. +::: + **Limitations:** While the web interface provides most core features, be aware of these limitations: @@ -578,37 +410,33 @@ While the web interface provides most core features, be aware of these limitatio - Certain tool interactions might need extra setup - Configuration changes require a server restart -:::warning -Don't expose the web interface to the internet without proper security measures. -::: -:::info -Use `Ctrl-C` to stop the server. -::: --- -## Prompt Completion +## Interactive Session Features -The CLI provides a set of slash commands that can be accessed during a session. These commands support tab completion for easier use. +### Slash Commands -#### Available Commands -- `/?` or `/help` - Display this help message -- `/builtin ` - Add builtin extensions by name (comma-separated) -- `/exit` or `/quit` - Exit the current session -- `/extension ` - Add a stdio extension (format: ENV1=val1 command args...) -- `/mode ` - Set the goose mode to use ('auto', 'smart_approve', 'approve', 'chat') -- `/plan ` - Create a structured plan based on the given message -- `/prompt [--info] [key=value...]` - Get prompt info or execute a prompt -- `/prompts [--extension ]` - List all available prompts, optionally filtered by extension -- `/recipe ` - Generate and save a session recipe to `recipe.yaml` or the filename specified by the command parameter. -- `/summarize` - Summarize the current session to reduce context length while preserving key information -- `/t` - Toggle between `light`, `dark`, and `ansi` themes -- `/t ` - Set the `light`, `dark`, or `ansi` theme +Once you're in an interactive session (via `goose session` or `goose run --interactive`), you can use these slash commands. All commands support tab completion. Press `/ + ` to cycle through available commands. -All commands support tab completion. Press `` after a slash (/) to cycle through available commands or to complete partial commands. +**Available Commands:** +- **`/?` or `/help`** - Display the help menu +- **`/builtin `** - Add builtin extensions by name (comma-separated) +- **`/clear`** - Clear the current chat history +- **`/endplan`** - Exit plan mode and return to 'normal' goose mode +- **`/exit` or `/quit`** - Exit the session +- **`/extension `** - Add a stdio extension (format: ENV1=val1 command args...) +- **`/mode `** - Set the goose mode to use ('auto', 'approve', 'chat', 'smart_approve') +- **`/plan `** - Enter 'plan' mode with optional message. Create a plan based on the current messages and ask user if they want to act on it +- **`/prompt [--info] [key=value...]`** - Get prompt info or execute a prompt +- **`/prompts [--extension ]`** - List all available prompts, optionally filtered by extension +- **`/recipe [filepath]`** - Generate a recipe from the current conversation and save it to the specified filepath (must end with .yaml). If no filepath is provided, it will be saved to ./recipe.yaml +- **`/summarize`** - Summarize the current conversation to reduce context length while preserving key information +- **`/t`** - Toggle between `light`, `dark`, and `ansi` themes. [More info](#themes). +- **`/t `** - Set theme directly (light, dark, ansi) -#### Examples +**Examples:** ```bash # Create a plan for triaging test failures /plan let's create a plan for triaging test failures @@ -618,50 +446,15 @@ All commands support tab completion. Press `` after a slash (/) to cycle th # Switch to chat mode /mode chat -``` - - ---- -## Keyboard Shortcuts - -Goose CLI supports several shortcuts and built-in commands for easier navigation. - -### Keyboard Navigation - -- **`Ctrl+C`** - Interrupt the current request -- **`Ctrl+J`** - Add a newline -- **`Cmd+Up/Down arrows`** - Navigate through command history -- **`Ctrl+R`** - Interactive command history search (reverse search) - -### Command History Search - -The `Ctrl+R` shortcut provides interactive search through your stored CLI [command history](/docs/guides/logs#command-history). This feature makes it easy to find and reuse recent commands without retyping them. When you type a search term, Goose searches backwards through your history for matches. - -**How it works:** -1. Press `Ctrl+R` in your Goose CLI session -2. Type a search term -3. Navigate through the results using: - - `Ctrl+R` to cycle backwards through earlier matches - - `Ctrl+S` to cycle forward through newer matches -4. Press `Return` (or `Enter`) to run the found command, or `Esc` to cancel -For example, instead of retyping this long command: +# Add a builtin extension during the session +/builtin developer +# Clear the current conversation history +/clear ``` -analyze the performance issues in the sales database queries and suggest optimizations -``` - -Use the `"sales database"` or `"optimization"` search term to find and rerun it. -**Search tips:** -- **Distinctive terms work best**: Choose unique words or phrases to help filter the results -- **Partial matches and multiple words are supported**: You can search for phrases like `"gith"` and `"run the unit test"` - -### Slash Commands -- **`/exit` or `/quit`** - Exit the session -- **`/t`** - Toggle between `light`, `dark`, and `ansi` themes -- **`/t `** - Set the `light`, `dark`, or `ansi` theme -- **`/?` or `/help`** - Display the help menu +--- ### Themes @@ -696,3 +489,43 @@ goose session --name use-custom-theme # Set the light theme during a session /t light ``` + +--- + +## Navigation and Controls + +### Keyboard Shortcuts + +**Session Control:** +- **`Ctrl+C`** - Interrupt the current request +- **`Ctrl+J`** - Add a newline + +**Navigation:** +- **`Cmd+Up/Down arrows`** - Navigate through command history +- **`Ctrl+R`** - Interactive command history search (reverse search). [More info](#command-history-search). + +--- + +### Command History Search + +The `Ctrl+R` shortcut provides interactive search through your stored CLI [command history](/docs/guides/logs#command-history). This feature makes it easy to find and reuse recent commands without retyping them. When you type a search term, Goose searches backwards through your history for matches. + +**How it works:** +1. Press `Ctrl+R` in your Goose CLI session +2. Type a search term +3. Navigate through the results using: + - `Ctrl+R` to cycle backwards through earlier matches + - `Ctrl+S` to cycle forward through newer matches +4. Press `Return` (or `Enter`) to run the found command, or `Esc` to cancel + +For example, instead of retyping this long command: + +``` +analyze the performance issues in the sales database queries and suggest optimizations +``` + +Use the `"sales database"` or `"optimization"` search term to find and rerun it. + +**Search tips:** +- **Distinctive terms work best**: Choose unique words or phrases to help filter the results +- **Partial matches and multiple words are supported**: You can search for phrases like `"gith"` and `"run the unit test"` \ No newline at end of file diff --git a/documentation/docs/guides/recipes/sub-recipes.md b/documentation/docs/guides/recipes/sub-recipes.md index 96798bd52041..d4662e74e5e8 100644 --- a/documentation/docs/guides/recipes/sub-recipes.md +++ b/documentation/docs/guides/recipes/sub-recipes.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 4 title: Sub-Recipes For Specialized Tasks sidebar_label: Sub-Recipes description: Learn how a recipe can use sub-recipes to perform specific tasks diff --git a/documentation/docs/tutorials/sub-recipes-in-parallel.md b/documentation/docs/tutorials/sub-recipes-in-parallel.md index e4d8d7c5faa9..5d8e1af6a486 100644 --- a/documentation/docs/tutorials/sub-recipes-in-parallel.md +++ b/documentation/docs/tutorials/sub-recipes-in-parallel.md @@ -43,7 +43,7 @@ prompt: | ### Same Sub-Recipe When running the same sub-recipe with different parameters, Goose determines the execution mode based on: -1. **[Recipe-level configuration](#choosing-between-sequential-and-parallel-execution)** (`sequential_when_repeated` flag) - when set to true, this forces sequential execution +1. **[Recipe-level configuration](#choosing-between-execution-modes)** (`sequential_when_repeated` flag) - when set to true, this forces sequential execution 2. **User request** in the prompt ("sequentially" to override default parallel behavior) 3. **Parallel execution by default**: Multiple instances of the same sub-recipe run concurrently