CLI Commands
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:
Commands
help
Used to display the help menu
Usage:
goose --help
configure [options]
Configure Goose settings - providers, extensions, etc.
Usage:
goose configure
session [options]
Start a session and give it a name
Options:
-n, --name <n>
Usage:
goose session --name <n>
Resume a previous session
Options:
-r, --resume
Usage:
goose session --resume --name <n>
Or, if you didn't name your session, you can locate it by the session id generated by Goose, e.g. 2025250620_013617
.
goose session --resume --id <id>
Start a session with the specified extension
Options:
--with-extension <command>
Usage:
goose session --with-extension <command>
Examples:
goose session --with-extension "npx -y @modelcontextprotocol/server-memory"
With environment variable:
goose session --with-extension "GITHUB_PERSONAL_ACCESS_TOKEN=<YOUR_TOKEN> npx -y @modelcontextprotocol/server-github"
Start a session with the specified remote extension over SSE
Options:
--with-remote-extension <url>
Usage:
goose session --with-remote-extension <url>
Examples:
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 <url>
Usage:
goose session --with-streamable-http-extension <url>
Examples:
goose session --with-streamable-http-extension "https://example.com/streamable"
Advanced Examples:
# 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 enabled (e.g. 'developer')
Options:
--with-builtin <id>
Usage:
goose session --with-builtin <id>
Example:
goose session --with-builtin computercontroller
Enable debug mode to output complete tool responses, detailed parameter values, and full file paths
Options:
--debug
Usage:
goose session --name my-session --debug
Limit the maximum number of turns the agent can take before asking for user input to continue
Options:
--max-turns <NUMBER>
Usage:
goose session --max-turns 50
Set the maximum number of turns allowed without user input (default: 1000)
Options:
--max-turns <NUMBER>
Usage:
goose session --max-turns 10
Examples:
# 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
session list [options]
List all saved sessions.
-v, --verbose
: (Optional) Includes session file paths in the output.-f, --format <format>
: Specify output format (text
orjson
). Default istext
.--ascending
: Sort sessions by date in ascending order (oldest first). Default is descending order (newest first).
Usage:
# List all sessions in text format (default)
goose session list
# List sessions with file paths
goose session list --verbose
# List sessions in JSON format
goose session list --format json
# Sort sessions by date in ascending order.
goose session list --ascending
session remove [options]
Remove one or more saved sessions.
Options:
-i, --id <id>
: Remove a specific session by its ID-r, --regex <pattern>
: Remove sessions matching a regex pattern. For example:
Usage:
# Remove a specific session by ID
goose session remove -i 20250305_113223
# Remove all sessions starting with "project-"
goose session remove -r "project-.*"
# Remove all sessions containing "migration"
goose session remove -r ".*migration.*"
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]
Export a session to Markdown format for sharing, documentation, or archival purposes.
Options:
-n, --name <name>
: Export a specific session by name-p, --path <path>
: Export a specific session by file path-o, --output <file>
: Save exported content to a file (default: stdout)
Usage:
# Export specific session to file
goose session export --name my-session --output session.md
# Export specific session to stdout
goose session export --name my-session
# Interactive export (prompts for session selection)
goose session export
# Export session by path
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:
goose info
version
Used to check the current Goose version you have installed
Usage:
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:
# 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 <n>
(e.g. 'Google Drive'
)
Usage:
goose mcp <n>
run [options]
Execute commands from an instruction file or stdin. Check out the full guide for more info.
Options:
-i, --instructions <FILE>
: Path to instruction file containing commands. Use - for stdin.-t, --text <TEXT>
: Input text to provide to Goose directly-s, --interactive
: Continue in interactive mode after processing initial input-n, --name <n>
: Name for this run session (e.g.daily-tasks
)-r, --resume
: Resume from a previous run--recipe <RECIPE_FILE_NAME> <OPTIONS>
: Load a custom recipe in current session-p, --path <PATH>
: Path for this run session (e.g../playground.jsonl
)--with-extension <COMMAND>
: Add stdio extensions (can be used multiple times in the same command)--with-remote-extension <URL>
: Add remote extensions over SSE (can be used multiple times in the same command)--with-streamable-http-extension <URL>
: Add remote extensions over Streaming HTTP (can be used multiple times in the same command)--with-builtin <n>
: Add builtin extensions by name (e.g., 'developer' or multiple: 'developer,github')--debug
: Output complete tool responses, detailed parameter values, and full file paths--max-turns <NUMBER>
: 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 <NUMBER>
: Limit the maximum number of turns the agent can take before asking for user input to continue (default: 1000)
Usage:
goose run --instructions plan.md
#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
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
goose run --recipe recipe.yaml --debug
#Show recipe details
goose run --recipe recipe.yaml --explain
#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 limited turns before prompting user
goose run --recipe recipe.yaml --max-turns 10
bench
Used to evaluate system-configuration across a range of practical tasks. See the detailed guide for more information.
Usage:
goose bench ...etc.
recipe
Used to validate recipe files and manage recipe sharing.
Usage:
goose recipe <COMMAND>
Commands:
validate <FILE>
: Validate a recipe filedeeplink <FILE>
: Generate a shareable link for a recipe file
Options:
--help, -h
: Print help information
Examples:
# Validate a recipe file
goose recipe validate my-recipe.yaml
# Generate a shareable link
goose recipe deeplink my-recipe.yaml
# Get help about recipe commands
goose recipe help
schedule
Automate recipes by running them on a schedule using a cron job.
Usage:
goose schedule <COMMAND>
Commands:
add <OPTIONS>
: Create a new scheduled job. Copies the current version of the recipe to~/.local/share/goose/scheduled_recipes
list
: View all scheduled jobsremove
: Delete a scheduled jobsessions
: List sessions created by a scheduled reciperun-now
: Run a scheduled recipe immediately
Options:
--id <NAME>
: A unique ID for the scheduled job (e.g.daily-report
)--cron "* * * * * *"
: Specifies when a job should run using a 6-field cron expression represented as a string in the format "seconds minutes hours day-of-month month day-of-week"--recipe-source <PATH>
: Path to the recipe YAML file--limit <NUMBER>
: (Optional) max number of sessions to display when using thesessions
command
Examples:
# 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
# List all scheduled jobs
goose schedule list
# List the 10 most recent Goose sessions created by a scheduled job
goose schedule sessions --id daily-report --limit 10
# Run a recipe immediately
goose schedule run-now --id daily-report
# Remove a scheduled job
goose schedule remove --id daily-report
project
Start working on your last project or create a new one.
Alias: p
Usage:
goose project
For a complete guide, see Managing Projects Guide.
projects
Choose one of your projects to start working on.
Alias: ps
Usage:
goose projects
For detailed usage examples and workflows, see Managing Projects Guide.
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:
- You want to access Goose with a graphical interface without installing the desktop app
- You need to use Goose from different devices, including mobile
- You're working in an environment where installing desktop apps isn't practical
Usage:
goose web
Options:
-p, --port <PORT>
: Port number to run the web server on. Default is3000
.--host <HOST>
: Host to bind the web server to. Default is127.0.0.1
.--open
: Automatically open the browser when the server starts.
Examples:
# Start web interface at `http://127.0.0.1:3000` and open the browser
goose web --open
# Start web interface at `http://127.0.0.1:8080`
goose web --port 8080
# Start web interface accessible from local network at `http://192.168.1.7:8080`
goose web --host 192.168.1.7 --port 8080
Limitations:
While the web interface provides most core features, be aware of these limitations:
- Some file system operations may require additional confirmation
- Extension management must be done through the CLI
- Certain tool interactions might need extra setup
- Configuration changes require a server restart
Don't expose the web interface to the internet without proper security measures.
Use Ctrl-C
to stop the server.
Prompt Completion
The CLI provides a set of slash commands that can be accessed during a session. These commands support tab completion for easier use.
Available Commands
/?
or/help
- Display this help message/builtin <names>
- Add builtin extensions by name (comma-separated)/exit
or/quit
- Exit the current session/extension <command>
- Add a stdio extension (format: ENV1=val1 command args...)/mode <n>
- Set the goose mode to use ('auto', 'approve', 'chat')/plan <message>
- Create a structured plan based on the given message/prompt <n> [--info] [key=value...]
- Get prompt info or execute a prompt/prompts [--extension <n>]
- List all available prompts, optionally filtered by extension/recipe <recipe file name>
- Generate and save a session recipe torecipe.yaml
or the filename specified by the command parameter./summarize
- Summarize the current session to reduce context length while preserving key information/t
- Toggle betweenlight
,dark
, andansi
themes/t <theme>
- Set thelight
,dark
, oransi
theme
All commands support tab completion. Press <Tab>
after a slash (/) to cycle through available commands or to complete partial commands.
Examples
# Create a plan for triaging test failures
/plan let's create a plan for triaging test failures
# List all prompts from the developer extension
/prompts --extension developer
# 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 requestCtrl+J
- Add a newlineCmd+Up/Down arrows
- Navigate through command history
Slash Commands
/exit
or/quit
- Exit the session/t
- Toggle betweenlight
,dark
, andansi
themes/t <theme>
- Set thelight
,dark
, oransi
theme/?
or/help
- Display the help menu
Themes
The /t
command controls the syntax highlighting theme for markdown content in Goose CLI responses. This affects the styles used for headers, code blocks, bold/italic text, and other markdown elements in the response output.
Commands:
/t
- Cycles through themes:light
→dark
→ansi
→light
/t light
- Setslight
theme (subtle light colors)/t dark
- Setsdark
theme (subtle darker colors)/t ansi
- Setsansi
theme (most visually distinct option with brighter colors)
Configuration:
- The default theme is
dark
- The theme setting is saved to the configuration file as
GOOSE_CLI_THEME
and persists between sessions - The saved configuration can be overridden for the session using the
GOOSE_CLI_THEME
environment variable
Syntax highlighting styles only affect the font, not the overall terminal interface. The light
and dark
themes have subtle differences in font color and weight.
The Goose CLI theme is independent from the Goose Desktop theme.
Examples:
# Set ANSI theme for the session via environment variable
export GOOSE_CLI_THEME=ansi
goose session --name use-custom-theme
# Toggle theme during a session
/t
# Set the light theme during a session
/t light