docs: lowercase goose in getting-started and guides topics (#5857)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
dianed-square
2025-11-24 10:17:22 -08:00
committed by GitHub
parent 3e9d9c7b2c
commit b357e99b30
26 changed files with 279 additions and 279 deletions
@@ -3,6 +3,6 @@
"position": 2,
"link": {
"type": "generated-index",
"description": "Get up to speed quickly with Goose"
"description": "Get up to speed quickly with goose"
}
}
@@ -11,25 +11,25 @@ import WindowsDesktopInstallButtons from '@site/src/components/WindowsDesktopIns
import LinuxDesktopInstallButtons from '@site/src/components/LinuxDesktopInstallButtons';
import { PanelLeft } from 'lucide-react';
# Install Goose
# Install goose
<Tabs>
<TabItem value="mac" label="macOS" default>
Choose to install the Desktop and/or CLI version of Goose:
Choose to install the Desktop and/or CLI version of goose:
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Install Goose Desktop directly from the browser or with [Homebrew](https://brew.sh/).
Install goose Desktop directly from the browser or with [Homebrew](https://brew.sh/).
<h3 style={{ marginTop: '1rem' }}>Option 1: Install via Download</h3>
<MacDesktopInstallButtons/>
<div style={{ marginTop: '1rem' }}>
1. Unzip the downloaded zip file.
2. Run the executable file to launch the Goose Desktop application.
2. Run the executable file to launch the goose Desktop application.
:::tip Updating Goose
It's best to keep Goose updated by periodically running the installation steps again.
:::tip Updating goose
It's best to keep goose updated by periodically running the installation steps again.
:::
</div>
<h3>Option 2: Install via Homebrew</h3>
@@ -40,24 +40,24 @@ import { PanelLeft } from 'lucide-react';
---
<div style={{ marginTop: '1rem' }}>
:::info Permissions
If you're on an Apple Mac M3 and the Goose Desktop app shows no window on launch, check and update the following:
If you're on an Apple Mac M3 and the goose Desktop app shows no window on launch, check and update the following:
Ensure the `~/.config` directory has read and write access.
Goose needs this access to create the log directory and file. Once permissions are granted, the app should load correctly. For steps on how to do this, refer to the [Known Issues Guide](/docs/troubleshooting/known-issues#macos-permission-issues)
goose needs this access to create the log directory and file. Once permissions are granted, the app should load correctly. For steps on how to do this, refer to the [Known Issues Guide](/docs/troubleshooting/known-issues#macos-permission-issues)
:::
</div>
</TabItem>
<TabItem value="cli" label="goose CLI">
Install Goose directly from the browser or with [Homebrew](https://brew.sh/).
Install goose directly from the browser or with [Homebrew](https://brew.sh/).
<h3 style={{ marginTop: '1rem' }}>Option 1: Install via Download script</h3>
Run the following command to install the latest version of Goose on macOS:
Run the following command to install the latest version of goose on macOS:
```sh
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
```
This script will fetch the latest version of Goose and set it up on your system.
This script will fetch the latest version of goose and set it up on your system.
If you'd like to install without interactive configuration, disable `CONFIGURE`:
@@ -65,8 +65,8 @@ import { PanelLeft } from 'lucide-react';
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
```
:::tip Updating Goose
It's best to keep Goose updated. To update Goose, run:
:::tip Updating goose
It's best to keep goose updated. To update goose, run:
```sh
goose update
```
@@ -82,11 +82,11 @@ import { PanelLeft } from 'lucide-react';
</TabItem>
<TabItem value="linux" label="Linux">
Choose to install the Desktop and/or CLI version of Goose:
Choose to install the Desktop and/or CLI version of goose:
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Install Goose Desktop directly from the browser.
Install goose Desktop directly from the browser.
<h3 style={{ marginTop: '1rem' }}>Install via Download</h3>
<LinuxDesktopInstallButtons/>
@@ -96,20 +96,20 @@ import { PanelLeft } from 'lucide-react';
1. Download the DEB file
2. Navigate to the directory where it is saved in a terminal
3. Run `sudo dpkg -i (filename).deb`
4. Launch Goose from the app menu
4. Launch goose from the app menu
:::tip Updating Goose
It's best to keep Goose updated by periodically running the installation steps again.
:::tip Updating goose
It's best to keep goose updated by periodically running the installation steps again.
:::
</div>
</TabItem>
<TabItem value="cli" label="goose CLI">
Run the following command to install the Goose CLI on Linux:
Run the following command to install the goose CLI on Linux:
```sh
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
```
This script will fetch the latest version of Goose and set it up on your system.
This script will fetch the latest version of goose and set it up on your system.
If you'd like to install without interactive configuration, disable `CONFIGURE`:
@@ -117,8 +117,8 @@ import { PanelLeft } from 'lucide-react';
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
```
:::tip Updating Goose
It's best to keep Goose updated. To update Goose, run:
:::tip Updating goose
It's best to keep goose updated. To update goose, run:
```sh
goose update
```
@@ -128,26 +128,26 @@ import { PanelLeft } from 'lucide-react';
</TabItem>
<TabItem value="windows" label="Windows">
Choose to install the Desktop and/or CLI version of Goose:
Choose to install the Desktop and/or CLI version of goose:
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Install Goose Desktop directly from the browser.
Install goose Desktop directly from the browser.
<h3 style={{ marginTop: '1rem' }}>Install via Download</h3>
<WindowsDesktopInstallButtons/>
<div style={{ marginTop: '1rem' }}>
1. Unzip the downloaded zip file.
2. Run the executable file to launch the Goose Desktop application.
2. Run the executable file to launch the goose Desktop application.
:::tip Updating Goose
It's best to keep Goose updated by periodically running the installation steps again.
:::tip Updating goose
It's best to keep goose updated by periodically running the installation steps again.
:::
</div>
</TabItem>
<TabItem value="cli" label="goose CLI">
To install Goose natively on Windows, you need one of the following environments:
To install goose natively on Windows, you need one of the following environments:
- **Git Bash** (recommended): Comes with [Git for Windows](https://git-scm.com/download/win)
- **MSYS2**: Available from [msys2.org](https://www.msys2.org/)
- **PowerShell**: Available on Windows 10/11 by default
@@ -170,13 +170,13 @@ import { PanelLeft } from 'lucide-react';
```powershell
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/block/goose/main/download_cli.ps1" -OutFile "download_cli.ps1";
```
Then run the script to install Goose:
Then run the script to install goose:
```powershell
.\download_cli.ps1
```
:::info Windows PATH Setup
If you see a warning that Goose is not in your PATH, you need to add Goose to your PATH:
If you see a warning that goose is not in your PATH, you need to add goose to your PATH:
<details>
<summary>For Git Bash/MSYS2</summary>
@@ -204,7 +204,7 @@ import { PanelLeft } from 'lucide-react';
<details>
<summary>Install via Windows Subsystem for Linux (WSL)</summary>
We recommend running the Goose CLI natively on Windows, but you can use WSL if you prefer a Linux-like environment.
We recommend running the goose CLI natively on Windows, but you can use WSL if you prefer a Linux-like environment.
1. Open [PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows) as Administrator and install WSL and the default Ubuntu distribution:
@@ -218,7 +218,7 @@ import { PanelLeft } from 'lucide-react';
wsl -d Ubuntu
```
3. Run the Goose installation script:
3. Run the goose installation script:
```bash
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
```
@@ -236,7 +236,7 @@ import { PanelLeft } from 'lucide-react';
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
```
If needed, add Goose to your path:
If needed, add goose to your path:
```
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
@@ -251,7 +251,7 @@ import { PanelLeft } from 'lucide-react';
</Tabs>
## Set LLM Provider
Goose works with [supported LLM providers][providers] that give Goose the AI intelligence it needs to understand your requests. On first use, you'll be prompted to configure your preferred provider.
goose works with [supported LLM providers][providers] that give goose the AI intelligence it needs to understand your requests. On first use, you'll be prompted to configure your preferred provider.
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
@@ -272,7 +272,7 @@ Goose works with [supported LLM providers][providers] that give Goose the AI int
│ Tetrate Agent Router Service Login
Opening browser for Tetrate Agent Router Service authentication...
[Goose opens the browser and prints details]
[goose opens the browser and prints details]
Authentication complete!
@@ -283,7 +283,7 @@ Goose works with [supported LLM providers][providers] that give Goose the AI int
Testing configuration...
✓ Configuration test passed!
✓ Developer extension enabled!
└ Tetrate Agent Router Service setup complete! You can now use Goose.
└ Tetrate Agent Router Service setup complete! You can now use goose.
```
:::info Windows Users
@@ -293,7 +293,7 @@ Goose works with [supported LLM providers][providers] that give Goose the AI int
export OPENAI_API_KEY={your_api_key}
```
Then run `goose configure` again. Goose will detect the environment variable and display:
Then run `goose configure` again. goose will detect the environment variable and display:
```
● OPENAI_API_KEY is set via environment variable
@@ -358,13 +358,13 @@ You can change your LLM provider and/or model or update your API key at any time
<RateLimits />
## Running Goose
## Running goose
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Starting a session in the Goose Desktop is straightforward. After choosing your provider, you'll see the session interface ready for use.
Starting a session in the goose Desktop is straightforward. After choosing your provider, you'll see the session interface ready for use.
Type your questions, tasks, or instructions directly into the input field, and Goose will get to work immediately.
Type your questions, tasks, or instructions directly into the input field, and goose will get to work immediately.
</TabItem>
<TabItem value="cli" label="goose CLI">
From your terminal, navigate to the directory you'd like to start from and run:
@@ -376,7 +376,7 @@ You can change your LLM provider and/or model or update your API key at any time
## Shared Configuration Settings
The Goose CLI and Desktop UI share all core configurations, including LLM provider settings, model selection, and extension configurations. When you install or configure extensions in either interface, the settings are stored in a central location, making them available to both the Desktop application and CLI. This makes it convenient to switch between interfaces while maintaining consistent settings. For more information, visit the [Config Files][config-files] guide.
The goose CLI and Desktop UI share all core configurations, including LLM provider settings, model selection, and extension configurations. When you install or configure extensions in either interface, the settings are stored in a central location, making them available to both the Desktop application and CLI. This makes it convenient to switch between interfaces while maintaining consistent settings. For more information, visit the [Config Files][config-files] guide.
:::info
While core configurations are shared between interfaces, extensions have flexibility in how they store authentication credentials. Some extensions may use the shared config files while others implement their own storage methods.
@@ -398,7 +398,7 @@ While core configurations are shared between interfaces, extensions have flexibi
## Additional Resources
You can also configure Extensions to extend Goose's functionality, including adding new ones or toggling them on and off. For detailed instructions, visit the [Using Extensions Guide][using-extensions].
You can also configure Extensions to extend goose's functionality, including adding new ones or toggling them on and off. For detailed instructions, visit the [Using Extensions Guide][using-extensions].
[using-extensions]: /docs/getting-started/using-extensions
[providers]: /docs/getting-started/providers
@@ -792,7 +792,7 @@ Beyond single-model setups, goose supports [multi-model configurations](/docs/gu
---
If you have any questions or need help with a specific provider, feel free to reach out to us on [Discord](https://discord.gg/goose-oss) or on the [Goose repo](https://github.com/block/goose).
If you have any questions or need help with a specific provider, feel free to reach out to us on [Discord](https://discord.gg/goose-oss) or on the [goose repo](https://github.com/block/goose).
[providers]: /docs/getting-started/providers
+6 -6
View File
@@ -1,19 +1,19 @@
---
sidebar_position: 90
title: Goose Extension Allowlist
title: goose Extension Allowlist
sidebar_label: Extension Allowlist
---
Goose is an extensible framework that, by default, allows you to install any MCP server. However, you may want stricter controls on which MCP servers can be installed as extensions (e.g. in a corporate setting).
goose is an extensible framework that, by default, allows you to install any MCP server. However, you may want stricter controls on which MCP servers can be installed as extensions (e.g. in a corporate setting).
This guide explains how you can create an **allowlist** of safe extensions that work with Goose Desktop and CLI. An allowlist lets administrators control which MCP servers can be installed as Goose extensions. When enabled, Goose will only install extensions that are on the list, and will block installation of any others.
This guide explains how you can create an **allowlist** of safe extensions that work with goose Desktop and CLI. An allowlist lets administrators control which MCP servers can be installed as goose extensions. When enabled, goose will only install extensions that are on the list, and will block installation of any others.
## How It Works
1. The allowlist is a YAML file that contains a list of allowed extension commands.
2. Goose fetches the allowlist from a URL specified by the `GOOSE_ALLOWLIST` environment variable.
3. The allowlist is fetched when first needed and is cached. It is refetched on every restart of Goose.
4. When a user attempts to install an extension, Goose checks the MCP server's installation command against the allowlist.
2. goose fetches the allowlist from a URL specified by the `GOOSE_ALLOWLIST` environment variable.
3. The allowlist is fetched when first needed and is cached. It is refetched on every restart of goose.
4. When a user attempts to install an extension, goose checks the MCP server's installation command against the allowlist.
5. If the command is not in the allowlist, the extension installation is rejected.
## Configuration
+20 -20
View File
@@ -2,24 +2,24 @@
sidebar_position: 45
title: CLI Providers
sidebar_label: CLI Providers
description: Use Claude Code, Cursor Agent, or Gemini CLI subscriptions in Goose
description: Use Claude Code, Cursor Agent, or Gemini CLI subscriptions in goose
---
# CLI Providers
Goose can make use of pass-through providers that integrate with existing CLI tools from Anthropic, Cursor, and Google. These providers allow you to use your existing Claude Code, Cursor Agent, and Google Gemini CLI subscriptions through Goose's interface, adding session management, persistence, and workflow integration capabilities to these tools.
goose can make use of pass-through providers that integrate with existing CLI tools from Anthropic, Cursor, and Google. These providers allow you to use your existing Claude Code, Cursor Agent, and Google Gemini CLI subscriptions through goose's interface, adding session management, persistence, and workflow integration capabilities to these tools.
:::warning Limitations
These providers dont fully support all Goose features, may have platform or capability limitations, and can sometimes require advanced debugging if issues arise. Theyre included here purely as a convenience.
These providers dont fully support all goose features, may have platform or capability limitations, and can sometimes require advanced debugging if issues arise. Theyre included here purely as a convenience.
:::
## Why Use CLI Providers?
CLI providers are useful if you:
- already have a Claude Code, Cursor, or Google Gemini CLI subscription and want to use it through Goose instead of paying per token
- already have a Claude Code, Cursor, or Google Gemini CLI subscription and want to use it through goose instead of paying per token
- need session persistence to save, resume, and export conversation history
- want to use Goose recipes and scheduled tasks to create repeatable workflows
- want to use goose recipes and scheduled tasks to create repeatable workflows
- prefer unified commands across different AI providers
- want to [use multiple models together](#combining-with-other-models) in your tasks
@@ -31,16 +31,16 @@ CLI providers are useful if you:
- **Session organization**: Manage multiple conversation threads
#### Workflow Integration
- **Recipe compatibility**: Use CLI providers in automated Goose recipes
- **Recipe compatibility**: Use CLI providers in automated goose recipes
- **Scheduling support**: Include in scheduled tasks and workflows
- **Hybrid configurations**: Combine with LLM providers using lead/worker patterns
#### Interface Consistency
- **Unified commands**: Use the same `goose session` interface across all providers
- **Consistent configuration**: Manage all providers through Goose's configuration system
- **Consistent configuration**: Manage all providers through goose's configuration system
:::warning Extensions
CLI providers do **not** give you access to Goose's extension ecosystem (MCP servers, third-party integrations, etc.). They use their own built-in tools to prevent conflicts. If you need Goose's extensions, use standard [API providers](/docs/getting-started/providers#available-providers) instead.
CLI providers do **not** give you access to goose's extension ecosystem (MCP servers, third-party integrations, etc.). They use their own built-in tools to prevent conflicts. If you need goose's extensions, use standard [API providers](/docs/getting-started/providers#available-providers) instead.
:::
@@ -53,7 +53,7 @@ The Claude Code provider integrates with Anthropic's [Claude CLI tool](https://c
**Features:**
- Uses Claude's latest models
- 200,000 token context limit
- Automatic filtering of Goose extensions from system prompts (since Claude Code has its own tool ecosystem)
- Automatic filtering of goose extensions from system prompts (since Claude Code has its own tool ecosystem)
- JSON output parsing for structured responses
**Requirements:**
@@ -98,14 +98,14 @@ The Gemini CLI provider integrates with Google's [Gemini CLI tool](https://ai.go
Ensure your Claude CLI is authenticated and working
3. **Configure Goose**
3. **Configure goose**
Set the provider environment variable:
```bash
export GOOSE_PROVIDER=claude-code
```
Or configure through the Goose CLI using `goose configure`:
Or configure through the goose CLI using `goose configure`:
```bash
┌ goose-configure
@@ -139,7 +139,7 @@ The Gemini CLI provider integrates with Google's [Gemini CLI tool](https://ai.go
export goose_provider=cursor-agent
```
Or configure through the Goose CLI using `goose configure`:
Or configure through the goose CLI using `goose configure`:
```bash
┌ goose-configure
@@ -166,14 +166,14 @@ The Gemini CLI provider integrates with Google's [Gemini CLI tool](https://ai.go
Ensure your Gemini CLI is authenticated and working.
3. **Configure Goose**
3. **Configure goose**
Set the provider environment variable:
```bash
export GOOSE_PROVIDER=gemini-cli
```
Or configure through the Goose CLI using `goose configure`:
Or configure through the goose CLI using `goose configure`:
```bash
┌ goose-configure
@@ -194,7 +194,7 @@ The Gemini CLI provider integrates with Google's [Gemini CLI tool](https://ai.go
### Basic Usage
Once configured, you can start a Goose session using these providers just like any others:
Once configured, you can start a goose session using these providers just like any others:
```bash
goose session
@@ -202,7 +202,7 @@ goose session
### Combining with Other Models
CLI providers work well in combination with other models using Goose's [lead/worker pattern](/docs/tutorials/lead-worker):
CLI providers work well in combination with other models using goose's [lead/worker pattern](/docs/tutorials/lead-worker):
```bash
# Use Claude Code as lead model, GPT-4o as worker
@@ -242,12 +242,12 @@ goose session
### System Prompt Filtering
The CLI providers automatically filter out Goose's extension information from system prompts since these CLI tools have their own tool ecosystems. This prevents conflicts and ensures clean interaction with the underlying CLI tools.
The CLI providers automatically filter out goose's extension information from system prompts since these CLI tools have their own tool ecosystems. This prevents conflicts and ensures clean interaction with the underlying CLI tools.
### Message Translation
- **Claude Code**: Converts Goose messages to Claude's JSON message format, handling tool calls and responses appropriately
- **Cursor Agent**: Converts Goose messages to Cursor's JSON message format, handling tool calls and responses appropriately
- **Claude Code**: Converts goose messages to Claude's JSON message format, handling tool calls and responses appropriately
- **Cursor Agent**: Converts goose messages to Cursor's JSON message format, handling tool calls and responses appropriately
- **Gemini CLI**: Converts messages to simple text prompts with role prefixes (Human:/Assistant:)
### Response Processing
@@ -267,4 +267,4 @@ CLI providers depend on external tools, so ensure:
---
CLI providers offer a way to use existing AI tool subscriptions through Goose's interface, adding session management and workflow integration capabilities. They're particularly valuable for users with existing CLI subscriptions who want unified session management and recipe integration.
CLI providers offer a way to use existing AI tool subscriptions through goose's interface, adding session management and workflow integration capabilities. They're particularly valuable for users with existing CLI subscriptions who want unified session management and recipe integration.
@@ -72,9 +72,9 @@ export GOOSE_EDITOR_MODEL="your-model"
When the `str_replace` tool is used to edit code:
1. **Configuration Check**: Goose checks if all three environment variables are properly set and non-empty.
1. **Configuration Check**: goose checks if all three environment variables are properly set and non-empty.
2. **With AI Enabled**: If configured, Goose sends the original code and your requested change to the configured AI model for processing.
2. **With AI Enabled**: If configured, goose sends the original code and your requested change to the configured AI model for processing.
3. **Fallback**: If the AI API is not configured or the API call fails, it falls back to simple string replacement.
@@ -302,7 +302,7 @@ When the keyring is disabled, secrets are stored here:
## Observability
Beyond Goose's built-in [logging system](/docs/guides/logs), you can export telemetry to external observability platforms for advanced monitoring, performance analysis, and production insights.
Beyond goose's built-in [logging system](/docs/guides/logs), you can export telemetry to external observability platforms for advanced monitoring, performance analysis, and production insights.
### OpenTelemetry Protocol (OTLP)
+10 -10
View File
@@ -2,18 +2,18 @@
title: File Access and Management
sidebar_position: 70
sidebar_label: File Management
description: Efficiently find and reference files in Goose Desktop and follow best practices for safe file operations
description: Efficiently find and reference files in goose Desktop and follow best practices for safe file operations
---
As an autonomous agent, Goose is designed to carry out tasks following specified instructions. This often involves working with local files - both finding the right files to work with and modifying them safely.
As an autonomous agent, goose is designed to carry out tasks following specified instructions. This often involves working with local files - both finding the right files to work with and modifying them safely.
This guide covers how to efficiently access and reference files in Goose. It also includes essential best practices for safe file operations, such as monitoring changes and reverting them when necessary, to maintain the integrity of your codebase.
This guide covers how to efficiently access and reference files in goose. It also includes essential best practices for safe file operations, such as monitoring changes and reverting them when necessary, to maintain the integrity of your codebase.
## File Access
### Quick File Search in Goose Desktop
### Quick File Search in goose Desktop
Goose Desktop includes a fuzzy file search feature that makes it easy to reference files from within the chat interface without manually navigating through file system dialogs. This feature helps you quickly find and include files in your messages to Goose.
goose Desktop includes a fuzzy file search feature that makes it easy to reference files from within the chat interface without manually navigating through file system dialogs. This feature helps you quickly find and include files in your messages to goose.
1. Type `@` in the chat input to open the file search box
2. Continue typing to filter files using case-insensitive, fuzzy matching (e.g., `@readme`, `@config.js`, `@src/main`)
@@ -22,7 +22,7 @@ Goose Desktop includes a fuzzy file search feature that makes it easy to referen
- Use arrow keys (↑/↓) to move through the search results
- Click or press `Enter` to insert the selected file path into your message
3. That's it! When you're ready, send your message to Goose
3. That's it! When you're ready, send your message to goose
:::info
To close the search box without selecting a file, press `Esc` or click in the chat input.
@@ -40,16 +40,16 @@ To close the search box without selecting a file, press `Esc` or click in the ch
### Version Control
Always use a version control system like Git to track changes to your codebase. This prevents accidental overwriting and allows you to revert back to previous states easily. Ensure you commit changes before running Goose on your codebase. Use branches to separate experimental changes from the main codebase.
Always use a version control system like Git to track changes to your codebase. This prevents accidental overwriting and allows you to revert back to previous states easily. Ensure you commit changes before running goose on your codebase. Use branches to separate experimental changes from the main codebase.
### Validation and Testing
Implement validation and testing steps before and after Goose modifies any files. Run your unit tests to verify changes made by Goose. Use a staging environment to ensure changes integrate well with the entire system.
Implement validation and testing steps before and after goose modifies any files. Run your unit tests to verify changes made by goose. Use a staging environment to ensure changes integrate well with the entire system.
### Change Review
Manually review or use automated code reviews to ensure the quality of generated code or changes. Integrate tools such as diff tools to visualize changes made by Goose. Implement a review process with team members or CI/CD pipelines.
Manually review or use automated code reviews to ensure the quality of generated code or changes. Integrate tools such as diff tools to visualize changes made by goose. Implement a review process with team members or CI/CD pipelines.
### Codebase Organization
Structure your codebase into well-defined modules or subdirectories to manage them efficiently. Use a modular approach to isolate parts of the code Goose needs to access. You can also provide specific directories or file paths you want Goose to work on.
Structure your codebase into well-defined modules or subdirectories to manage them efficiently. Use a modular approach to isolate parts of the code goose needs to access. You can also provide specific directories or file paths you want goose to work on.
@@ -15,7 +15,7 @@ gooses permissions determine how much autonomy it has when modifying files, u
<iframe
class="aspect-ratio"
src="https://www.youtube.com/embed/bMVFFnPS_Uk"
title="Goose Permission Modes Explained"
title="goose Permission Modes Explained"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
@@ -11,10 +11,10 @@ import { PanelLeft } from 'lucide-react';
Rate limiting is the process of restricting the number of requests a user or application can send to an LLM API within a specific timeframe. LLM providers enforce this with the purpose of managing resources and preventing abuse.
Since Goose is working very quickly to implement your tasks, you may need to manage rate limits imposed by the provider. If you frequently hit rate limits, consider upgrading your LLM plan to access higher tier limits or [configure a provider](/docs/getting-started/providers#configure-provider) that has built-in rate limiting:
Since goose is working very quickly to implement your tasks, you may need to manage rate limits imposed by the provider. If you frequently hit rate limits, consider upgrading your LLM plan to access higher tier limits or [configure a provider](/docs/getting-started/providers#configure-provider) that has built-in rate limiting:
:::info
Goose supports automatic setup for both providers that takes you through OAuth account creation and secure API key generation.
goose supports automatic setup for both providers that takes you through OAuth account creation and secure API key generation.
:::
- **Tetrate Agent Router**: Unified API gateway for AI models including Claude, Gemini, GPT, open-weight models, and others. The developer's shortest path to models with enterprise-grade routing, built-in rate limiting, and automatic failover.
@@ -25,4 +25,4 @@ Goose supports automatic setup for both providers that takes you through OAuth a
Manage your account at [openrouter.ai](https://openrouter.ai).
When Goose sends your requests through one of these providers, the provider will automatically switch models when necessary to avoid interruptions due to rate limiting.
When goose sends your requests through one of these providers, the provider will automatically switch models when necessary to avoid interruptions due to rate limiting.
@@ -82,7 +82,7 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
src: 'https://youtube.com/embed/Kxj-vFBO_9U',
title: 'Building A MCP-UI Server',
description: 'Learn how to build your own MCP-UI server from scratch',
duration: ''
duration: '40:07'
},
{
type: 'iframe',
@@ -4,19 +4,19 @@ title: Managing Projects
sidebar_label: Managing Projects
---
Goose Projects automatically track your working directories and associated sessions, making it easy to resume work across multiple codebases with full context preservation.
goose Projects automatically track your working directories and associated sessions, making it easy to resume work across multiple codebases with full context preservation.
A **project** in Goose is a record of a working directory where you've used Goose. Every time you run Goose, it automatically tracks the current directory as a project, storing:
A **project** in goose is a record of a working directory where you've used goose. Every time you run goose, it automatically tracks the current directory as a project, storing:
- **Path**: The absolute path to the project directory
- **Last accessed**: When you last worked on this project
- **Last instruction**: The most recent command you gave to Goose
- **Last instruction**: The most recent command you gave to goose
- **Session ID**: The associated session for context continuity
Projects are stored in `~/.local/share/goose/projects.json`.
:::info CLI Only Feature
Projects are currently available only through the Goose CLI. Desktop support is planned for future releases.
Projects are currently available only through the goose CLI. Desktop support is planned for future releases.
:::
## Basic Usage
@@ -47,7 +47,7 @@ Let's follow Sarah, a developer working on multiple projects throughout her day:
cd ~/projects/ecommerce-api
goose session --name "api-auth-work"
```
*Sarah asks Goose to help implement JWT token refresh logic*
*Sarah asks goose to help implement JWT token refresh logic*
### Mid-Morning: Mobile App Bug Fix
```bash
@@ -69,9 +69,9 @@ goose session --name "dashboard-ui"
goose project
```
Goose shows:
goose shows:
```
Goose Project Manager
goose Project Manager
◆ Choose an option:
│ ○ Resume project with session: .../admin-dashboard
@@ -88,9 +88,9 @@ Goose shows:
goose projects
```
Goose displays:
goose displays:
```
Goose Project Manager
goose Project Manager
◆ Select a project:
│ ○ 1 .../admin-dashboard (2025-01-07 09:15:30) [create user management interface]
@@ -9,7 +9,7 @@ import { PanelLeft } from 'lucide-react';
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Response Styles customize how tool interactions are displayed in the Goose Desktop chat window.
Response Styles customize how tool interactions are displayed in the goose Desktop chat window.
To change this setting:
1. Click the <PanelLeft className="inline" size={16} /> button on the top-left to open the sidebar.
@@ -19,19 +19,19 @@ To change this setting:
- **Concise** (Default)
- Tool calls are collapsed by default
- Shows only which tool Goose used
- Shows only which tool goose used
- Best for users focusing on results rather than technical details
- **Detailed**
- Tool calls are expanded by default
- Shows the details of tool calls and their responses
- Best for debugging or learning how Goose works
- Best for debugging or learning how goose works
This setting only affects the default state of tool calls in the conversation. You can always manually expand or collapse any tool call regardless of your chosen style.
</TabItem>
<TabItem value="cli" label="goose CLI">
When working with the Goose CLI, you can control the verbosity of tool output.
When working with the goose CLI, you can control the verbosity of tool output.
To adjust the tool output, run:
@@ -1,7 +1,7 @@
---
title: Managing Tools
hide_title: true
description: Control and configure the tools and extensions that power your Goose workflows
description: Control and configure the tools and extensions that power your goose workflows
---
import Card from '@site/src/components/Card';
@@ -9,7 +9,7 @@ import styles from '@site/src/components/Card/styles.module.css';
<h1 className={styles.pageTitle}>Managing Tools</h1>
<p className={styles.pageDescription}>
Tools are specific functions within <a href="/goose/docs/getting-started/using-extensions">extensions</a> that give Goose its capabilities. Learn to control and customize how these tools work for you.
Tools are specific functions within <a href="/goose/docs/getting-started/using-extensions">extensions</a> that give goose its capabilities. Learn to control and customize how these tools work for you.
</p>
<div className={styles.categorySection}>
@@ -17,7 +17,7 @@ import styles from '@site/src/components/Card/styles.module.css';
<div className={styles.cardGrid}>
<Card
title="Tool Permissions"
description="Configure fine-grained permissions to control which tools Goose can use and when, ensuring secure and controlled automation."
description="Configure fine-grained permissions to control which tools goose can use and when, ensuring secure and controlled automation."
link="/docs/guides/managing-tools/tool-permissions"
/>
<Card
@@ -8,14 +8,14 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import { PanelLeft, Tornado, Settings } from 'lucide-react';
Tool permissions provide fine-grained control over how Goose uses different tools within extensions. This guide will help you understand and configure these permissions effectively.
Tool permissions provide fine-grained control over how goose uses different tools within extensions. This guide will help you understand and configure these permissions effectively.
## Understanding Tools and Extensions
Before diving into permissions, let's clarify the key components:
- **Extensions** are packages that add functionality to Goose (like Developer, Google Drive, etc.)
- **Tools** are specific functions within each extension that Goose can use
- **Extensions** are packages that add functionality to goose (like Developer, Google Drive, etc.)
- **Tools** are specific functions within each extension that goose can use
For example, the Developer extension includes multiple tools like:
@@ -23,12 +23,12 @@ For example, the Developer extension includes multiple tools like:
- Shell tool for running commands
- Screen capture tool for taking screenshots
:::warning Performance Optimization
Goose performs best with fewer than 25 total tools enabled across all extensions. Consider enabling only the extensions you need for your current task.
goose performs best with fewer than 25 total tools enabled across all extensions. Consider enabling only the extensions you need for your current task.
:::
## Permission Levels
Tool permissions work alongside [Goose permission modes](/docs/guides/goose-permissions). The mode sets the default behavior, while tool permissions let you override the behavior of specific tools.
Tool permissions work alongside [goose permission modes](/docs/guides/goose-permissions). The mode sets the default behavior, while tool permissions let you override the behavior of specific tools.
Each tool can be set to one of three permission levels:
@@ -71,7 +71,7 @@ Each tool can be set to one of three permission levels:
goose configure
```
2. Select `Goose Settings` from the menu
2. Select `goose settings` from the menu
```sh
┌ goose-configure
@@ -81,7 +81,7 @@ Each tool can be set to one of three permission levels:
| ○ Toggle Extensions
| ○ Remove Extension
// highlight-start
| ● Goose Settings
| ● goose settings
// highlight-end
```
@@ -91,10 +91,10 @@ Each tool can be set to one of three permission levels:
┌ goose-configure
◇ What would you like to configure?
Goose Settings
goose settings
◆ What setting would you like to configure?
│ ○ Goose Mode
│ ○ goose mode
// highlight-start
│ ● Tool Permission
// highlight-end
@@ -147,7 +147,7 @@ There are several reasons to configure tool permissions:
3. **Task Focus**
- Enable only tools needed for current task
- Help Goose make better tool choices
- Help goose make better tool choices
- Reduce noise in responses
## Example Permission Configuration
@@ -13,7 +13,7 @@ import { PanelLeft } from 'lucide-react';
Tool Selection Strategy is an experimental feature and currently only tested with Claude models. Behavior and configuration may change in future releases.
:::
When you enable an [extension](/docs/getting-started/using-extensions), you gain access to all of its tools. For example, the Google Drive extension provides tools for reading documents, updating permissions, managing comments, and more. By default, Goose loads all tools into context when interacting with the LLM.
When you enable an [extension](/docs/getting-started/using-extensions), you gain access to all of its tools. For example, the Google Drive extension provides tools for reading documents, updating permissions, managing comments, and more. By default, goose loads all tools into context when interacting with the LLM.
Enabling multiple extensions gives you access to a wider range of tools, but loading a lot of tools into context can be inefficient and confusing for the LLM. It's like having every tool in your workshop spread out on your bench when you only need one or two.
@@ -36,7 +36,7 @@ You can also use [tool permissions](/docs/guides/managing-tools/tool-permissions
:::
### Disabled (Default)
When tool selection strategy is disabled, Goose loads all tools from enabled extensions into context. This is the traditional behavior and works well if you only have a few extensions enabled.
When tool selection strategy is disabled, goose loads all tools from enabled extensions into context. This is the traditional behavior and works well if you only have a few extensions enabled.
**Best for:**
- Simple setups with few extensions
@@ -44,7 +44,7 @@ When tool selection strategy is disabled, Goose loads all tools from enabled ext
- Maximum tool availability without selection logic
### Enabled (LLM-based Strategy)
When enabled, Goose uses LLM intelligence to analyze your query and select only the most relevant tools from your enabled extensions. This reduces token consumption and improves tool selection accuracy when you have many extensions enabled.
When enabled, goose uses LLM intelligence to analyze your query and select only the most relevant tools from your enabled extensions. This reduces token consumption and improves tool selection accuracy when you have many extensions enabled.
**Best for:**
- Complex or ambiguous queries that require understanding context
@@ -72,7 +72,7 @@ When enabled, Goose uses LLM intelligence to analyze your query and select only
goose configure
```
2. Select `Goose Settings`:
2. Select `goose settings`:
```sh
┌ goose-configure
@@ -82,7 +82,7 @@ When enabled, Goose uses LLM intelligence to analyze your query and select only
│ ○ Toggle Extensions
│ ○ Remove Extension
// highlight-start
│ ● Goose Settings (Set the Goose Mode, Tool Output, Tool Permissions, Experiment, Goose recipe github repo and more)
│ ● goose settings (Set the goose mode, Tool Output, Tool Permissions, Experiment, goose recipe github repo and more)
// highlight-end
```
@@ -92,17 +92,17 @@ When enabled, Goose uses LLM intelligence to analyze your query and select only
┌ goose-configure
◇ What would you like to configure?
Goose Settings
goose settings
◆ What setting would you like to configure?
│ ○ Goose Mode
│ ○ goose mode
// highlight-start
│ ● Router Tool Selection Strategy (Experimental: configure a strategy for auto selecting tools to use)
// highlight-end
│ ○ Tool Permission
│ ○ Tool Output
│ ○ Toggle Experiment
│ ○ Goose recipe github repo
│ ○ goose recipe github repo
```
@@ -111,7 +111,7 @@ When enabled, Goose uses LLM intelligence to analyze your query and select only
┌ goose-configure
◇ What would you like to configure?
Goose Settings
goose settings
◇ What setting would you like to configure?
│ Router Tool Selection Strategy
@@ -129,7 +129,7 @@ When enabled, Goose uses LLM intelligence to analyze your query and select only
┌ goose-configure
◇ What would you like to configure?
Goose Settings
goose settings
◇ What setting would you like to configure?
│ Router Tool Selection Strategy
@@ -140,7 +140,7 @@ When enabled, Goose uses LLM intelligence to analyze your query and select only
└ Router enabled - using LLM-based intelligence for tool selection
```
When the router is enabled, Goose CLI displays a message indicating when the `llm_search` strategy is in use.
When the router is enabled, goose CLI displays a message indicating when the `llm_search` strategy is in use.
</TabItem>
</Tabs>
+8 -8
View File
@@ -30,17 +30,17 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
<div className={styles.cardGrid}>
<Card
title="Shareable Recipes"
description="Share a Goose session setup (including tools, goals, and instructions) as a reusable recipe that others can launch with a single click."
description="Share a goose session setup (including tools, goals, and instructions) as a reusable recipe that others can launch with a single click."
link="/docs/guides/recipes/session-recipes"
/>
<Card
title="Recipe Reference Guide"
description="Complete technical reference for creating and customizing recipes in Goose via the CLI."
description="Complete technical reference for creating and customizing recipes in goose via the CLI."
link="/docs/guides/recipes/recipe-reference"
/>
<Card
title="Goose Recipes Tutorial"
description="Learn how to create and use Goose recipes with prompts, parameters, MCP servers, and more."
title="goose Recipes Tutorial"
description="Learn how to create and use goose recipes with prompts, parameters, MCP servers, and more."
link="/docs/tutorials/recipes-tutorial"
/>
<Card
@@ -50,7 +50,7 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
/>
<Card
title="Saving Recipes"
description="Learn how to save, organize, and find your Goose recipes for easy access and reuse."
description="Learn how to save, organize, and find your goose recipes for easy access and reuse."
link="/docs/guides/recipes/storing-recipes"
/>
<Card
@@ -66,7 +66,7 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
<div className={styles.cardGrid}>
<Card
title="Recipe Generator"
description="Interactive tool that creates a shareable Goose recipe URL that others can use to launch a session with your predefined settings."
description="Interactive tool that creates a shareable goose recipe URL that others can use to launch a session with your predefined settings."
link="/recipe-generator"
/>
<Card
@@ -102,14 +102,14 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
{
type: 'iframe',
src: 'https://youtube.com/embed/1szmJSKInnU',
title: 'Advanced Tips for Recipes/Subrecipes in Goose',
title: 'Advanced Tips for Recipes/Subrecipes in goose',
description: 'Advanced tips for using recipes and subrecipes in goose',
duration: '10:07'
},
{
type: 'iframe',
src: 'https://youtube.com/embed/gvg7DomaJuA',
title: 'Headless Goose, Scheduling a Parallel-Subagent Recipe',
title: 'Headless goose, Scheduling a Parallel-Subagent Recipe',
description: 'Schedule a recipe to run two subagents in parallel',
duration: '5:50'
}
@@ -21,7 +21,7 @@ The "main recipe" registers its subrecipes in the `sub_recipes` field, which con
- `path`: File path to the subrecipe file (relative or absolute)
- `values`: (Optional) Pre-configured parameter values that are always passed to the subrecipe
When the main recipe is run, Goose generates a tool for each subrecipe that:
When the main recipe is run, goose generates a tool for each subrecipe that:
- Accepts parameters defined by the subrecipe
- Executes the subrecipe in a separate session with its own context
- Returns output to the main recipe
@@ -410,4 +410,4 @@ In this example:
- **Test independently**: Verify subrecipes work alone before combining
## Learn More
Check out the [Goose Recipes](/docs/guides/recipes) guide for more docs, tools, and resources to help you master Goose recipes.
Check out the [Recipes](/docs/guides/recipes) guide for more docs, tools, and resources to help you master goose recipes.
+7 -7
View File
@@ -4,20 +4,20 @@ title: Running Tasks
sidebar_label: Run Tasks
---
When working with the Goose CLI, you can pass files and instructions to the `goose run` command to execute tasks and workflows. This could be a simple one-liner command or a complex set of instructions stored in a file.
When working with the goose CLI, you can pass files and instructions to the `goose run` command to execute tasks and workflows. This could be a simple one-liner command or a complex set of instructions stored in a file.
## Basic Usage
The `goose run` command starts a new session, begins executing using any arguments provided and exits the session automatically once the task is complete.
There are multiple ways to run tasks with Goose; check out the [list of options](/docs/guides/goose-cli-commands.md#run-options).
There are multiple ways to run tasks with goose; check out the [list of options](/docs/guides/goose-cli-commands.md#run-options).
### Text in the command
```bash
goose run -t "your instructions here"
```
Using the `-t` flag, one is able to pass a text instruction directly to the command. This is great for quick, one-off commands where you do not need an interactive session with Goose. The instructions will be executed, and the session will end. An example usage could be using in a CI/CD pipeline or running alongside other scripts.
Using the `-t` flag, one is able to pass a text instruction directly to the command. This is great for quick, one-off commands where you do not need an interactive session with goose. The instructions will be executed, and the session will end. An example usage could be using in a CI/CD pipeline or running alongside other scripts.
### Using an instruction file
If you have a complex set of instructions or a workflow that you want to automate, you can store them in a file and pass it to the `goose run` command:
@@ -50,7 +50,7 @@ Save findings in 'security_audit.md' with severity levels highlighted.
```
### With stdin
You can also pass instructions to Goose using standard input via `-i -`. This is useful when you want to pipe commands from another tool or script into Goose.
You can also pass instructions to goose using standard input via `-i -`. This is useful when you want to pipe commands from another tool or script into goose.
#### Simple echo pipe
@@ -71,13 +71,13 @@ EOF
### Interactive Mode
If you don't want Goose to exit at the end of the task, you can pass the `-s` or `--interactive` flag to start an interactive session after processing your initial commands:
If you don't want goose to exit at the end of the task, you can pass the `-s` or `--interactive` flag to start an interactive session after processing your initial commands:
```bash
goose run -i instructions.txt -s
```
This is useful when you want to continue working with Goose after your initial commands are processed.
This is useful when you want to continue working with goose after your initial commands are processed.
### Session Management
@@ -98,7 +98,7 @@ You can also run commands without creating or storing a session file by using th
goose run --no-session -t "your command here"
```
### Set Provider and Model
You can run Goose sessions with a specific provider and model, which overrides the provider and model settings in your [environment variables](/docs/guides/environment-variables.md).
You can run goose sessions with a specific provider and model, which overrides the provider and model settings in your [environment variables](/docs/guides/environment-variables.md).
```bash
goose run --provider anthropic --model claude-4-sonnet -t "initial prompt"
@@ -7,7 +7,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import { PanelLeft, Paperclip, Edit2, Send, GripVertical, X, ChevronUp, ChevronDown } from 'lucide-react';
Goose provides features you can use to manage conversations and share information during sessions.
goose provides features you can use to manage conversations and share information during sessions.
## Edit Message
@@ -18,7 +18,7 @@ Editing any message in the session gives you complete control over the conversat
This is useful when:
- You realize a prompt you sent was unclear or incomplete
- Goose misunderstood your intent and went in the wrong direction
- goose misunderstood your intent and went in the wrong direction
- You want to try different approaches to a problem without starting a new session
<Tabs groupId="interface">
@@ -27,12 +27,12 @@ This is useful when:
1. Hover over any of your previous messages to reveal the edit button
2. Click the <Edit2 className="inline" size={16} /> edit button that appears
3. Make your changes in the inline editor
4. Click `Save` to save your changes and reprompt Goose (or use `Cmd+Enter` (macOS) or `Ctrl+Enter` (Windows/Linux))
4. Click `Save` to save your changes and reprompt goose (or use `Cmd+Enter` (macOS) or `Ctrl+Enter` (Windows/Linux))
Goose removes all conversation history after the edited message and responds contextually from that point.
goose removes all conversation history after the edited message and responds contextually from that point.
:::warning Deleted Context
Subsequent conversation history is permanently deleted from the session and removed from Goose's context. Edit a message only if you don't need Goose to remember the context that follows it.
Subsequent conversation history is permanently deleted from the session and removed from goose's context. Edit a message only if you don't need goose to remember the context that follows it.
:::
#### Example Message Flow
@@ -53,43 +53,43 @@ This is useful when:
#### Editing Scenario Tips
- **Iterative Prompt Refinement**: Start with a basic prompt, then edit and refine based on Goose's response. This often works better than trying to craft the perfect prompt from the start.
- **Iterative Prompt Refinement**: Start with a basic prompt, then edit and refine based on goose's response. This often works better than trying to craft the perfect prompt from the start.
- **When to Edit vs. Interrupt**: Editing earlier messages when a conversation has gone off track can be more effective than trying to correct course using new messages or [interruptions](#interrupt-task). By editing messages, you rewrite history. With interruptions, you only affect the conversation from the current message onwards.
</TabItem>
<TabItem value="cli" label="goose CLI">
Message editing is not available in the Goose CLI.
Message editing is not available in the goose CLI.
</TabItem>
</Tabs>
## Queue Messages
Queue messages while Goose is processing a task to manage your workflow. This is useful when:
Queue messages while goose is processing a task to manage your workflow. This is useful when:
- You want to prepare next steps while Goose is working
- You want to prepare next steps while goose is working
- You have a sequence of related tasks to complete
- You're using [voice dictation](#voice-dictation) and need to capture thoughts quickly
:::tip
Goose may perform better when complex tasks are split into subtasks, a technique called [*prompt chaining*](https://www.promptingguide.ai/techniques/prompt_chaining). This structured approach can both improve accuracy and give you more control over the process.
goose may perform better when complex tasks are split into subtasks, a technique called [*prompt chaining*](https://www.promptingguide.ai/techniques/prompt_chaining). This structured approach can both improve accuracy and give you more control over the process.
:::
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Add a message to the queue:
1. While Goose is processing a response, type your next message
1. While goose is processing a response, type your next message
2. Press `Enter` to add it to the queue (or interrupts if using [interruption keywords](#interrupt-task))
Queued messages appear as numbered cards showing the queue order. The first message in the queue is automatically sent when Goose finishes each response.
Queued messages appear as numbered cards showing the queue order. The first message in the queue is automatically sent when goose finishes each response.
:::info Related Features
- In general, pressing `Enter` while Goose is processing a task queues the message, but clicking `Send` sends the task immediately and [interrupts the task](#interrupt-task)
- When you type common interrupt keywords like "stop", "wait", or "hold on" in a queued message, Goose pauses until you enter or send the next message and then continues processing the queue
- In general, pressing `Enter` while goose is processing a task queues the message, but clicking `Send` sends the task immediately and [interrupts the task](#interrupt-task)
- When you type common interrupt keywords like "stop", "wait", or "hold on" in a queued message, goose pauses until you enter or send the next message and then continues processing the queue
:::
#### Queue Management Controls
Queued messages run automatically in order as Goose finishes each task, but you can manage the queue:
Queued messages run automatically in order as goose finishes each task, but you can manage the queue:
- **Edit a message**: Click the message text to reveal the edit controls, then type your change and click `Save`
- **Reorder messages**: Hover over the message card to reveal the <GripVertical className="inline" size={16} /> button, then grab it and drag the message up or down
- **Send a message**: Click the <Send className="inline" size={16} /> button to send a message immediately and interrupt the current task
@@ -103,12 +103,12 @@ Goose may perform better when complex tasks are split into subtasks, a technique
You send: "Can you refactor our authentication code to support OAuth 2.0 and add proper error handling? Also include unit tests for the OAuth flow, update the API documentation to reflect these changes, and create a migration script to help existing users transition to the new system."
This approach might lead to overwhelming responses where important details get missed or tasks are handled superficially. Even sending a single prompt with clear sequential steps doesn't allow Goose to focus on each task individually or build context progressively.
This approach might lead to overwhelming responses where important details get missed or tasks are handled superficially. Even sending a single prompt with clear sequential steps doesn't allow goose to focus on each task individually or build context progressively.
**With queuing:**
1. You send: "Refactor the authentication code to support OAuth 2.0"
2. While Goose is working, you queue the following messages:
2. While goose is working, you queue the following messages:
- "And add proper error handling"
- "Add unit tests for the OAuth flow"
- "Update the API documentation"
@@ -118,15 +118,15 @@ Goose may perform better when complex tasks are split into subtasks, a technique
</TabItem>
<TabItem value="cli" label="goose CLI">
Message queuing is not available in the Goose CLI.
Message queuing is not available in the goose CLI.
</TabItem>
</Tabs>
## Interrupt Task
Interrupt Goose while it's processing a task to take control of the conversation. This is useful when:
Interrupt goose while it's processing a task to take control of the conversation. This is useful when:
- Goose is heading in the wrong direction
- goose is heading in the wrong direction
- You realize you need to add important context
- You want to switch to a completely different task
@@ -139,7 +139,7 @@ Interrupt Goose while it's processing a task to take control of the conversation
1. Type a prompt that includes common interruption keywords like `stop`, `wait`, `hold on`, `actually`, or `instead`. Using keywords alone or at the beginning of sentences works best for reliable detection.
2. Click `Send`
Goose stops processing the current task and asks for more information.
goose stops processing the current task and asks for more information.
#### Provide immediate redirection
1. Type a prompt with more context and clarification or that changes direction. For example:
@@ -147,11 +147,11 @@ Interrupt Goose while it's processing a task to take control of the conversation
- "Let's focus on React instead of TypeScript"
2. Click `Send`
Goose stops processing the current task and pivots to the new request context.
goose stops processing the current task and pivots to the new request context.
:::info Related features
- Clicking `Send` while Goose is processing a task interrupts the task but pressing `Enter` [queues the message](#queue-messages)
- Typing a stop or pause keyword in a queued message also stops Goose from processing the current task
- Clicking `Send` while goose is processing a task interrupts the task but pressing `Enter` [queues the message](#queue-messages)
- Typing a stop or pause keyword in a queued message also stops goose from processing the current task
- You can also [edit a sent message](#edit-message) to provide more context and clarification or change direction during a session
:::
@@ -189,13 +189,13 @@ Interrupt Goose while it's processing a task to take control of the conversation
2. Type your prompt that provides more context or changes direction
3. Press `Enter`
Goose responds contextually to your new request.
goose responds contextually to your new request.
</TabItem>
</Tabs>
## Voice Dictation
Speak to Goose directly instead of typing your prompts.
Speak to goose directly instead of typing your prompts.
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
@@ -211,9 +211,9 @@ Speak to Goose directly instead of typing your prompts.
1. Return to the chat interface (click `Chat` in the sidebar)
2. Click the microphone on the right of the chat box and begin speaking
The first time you use voice dictation, Goose will request access to your microphone. While recording, you'll see a live waveform of your audio in the input field, a timer, and the current size of your recording. Click the microphone button again to finish recording.
The first time you use voice dictation, goose will request access to your microphone. While recording, you'll see a live waveform of your audio in the input field, a timer, and the current size of your recording. Click the microphone button again to finish recording.
**If you don't see the microphone**, check the [models you have configured](/docs/getting-started/providers.md). ElevenLabs can be used as a dictation provider alongside any LLM, but OpenAI Whisper requires that you have an OpenAI model configured in Goose, even if using another LLM provider for chat.
**If you don't see the microphone**, check the [models you have configured](/docs/getting-started/providers.md). ElevenLabs can be used as a dictation provider alongside any LLM, but OpenAI Whisper requires that you have an OpenAI model configured in goose, even if using another LLM provider for chat.
#### Important Notes
* You can record up to 10 minutes or 25MB of audio
@@ -223,17 +223,17 @@ Speak to Goose directly instead of typing your prompts.
</TabItem>
<TabItem value="cli" label="goose CLI">
Voice dictation is not available in the Goose CLI.
Voice dictation is not available in the goose CLI.
</TabItem>
</Tabs>
## Share Files in Session
Provide Goose with context from your codebase, documents, and other files to get more relevant and accurate assistance.
Provide goose with context from your codebase, documents, and other files to get more relevant and accurate assistance.
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Share files with Goose in several ways:
Share files with goose in several ways:
1. **Drag and Drop**: Simply drag files from your computer's file explorer/finder and drop them anywhere in the chat window. The file paths will be automatically added to your message.
+5 -5
View File
@@ -1,7 +1,7 @@
---
title: Managing Sessions
hide_title: true
description: Manage your session lifecycle and ongoing interactions with Goose
description: Manage your session lifecycle and ongoing interactions with goose
---
import Card from '@site/src/components/Card';
@@ -11,7 +11,7 @@ import TabItem from '@theme/TabItem';
<h1 className={styles.pageTitle}>Managing Sessions</h1>
<p className={styles.pageDescription}>
Sessions are your continuous interactions with Goose. Each session maintains context and conversation history, enabling Goose to understand your ongoing work and provide relevant assistance.
Sessions are your continuous interactions with goose. Each session maintains context and conversation history, enabling goose to understand your ongoing work and provide relevant assistance.
</p>
<div className={styles.categorySection}>
@@ -24,7 +24,7 @@ import TabItem from '@theme/TabItem';
/>
<Card
title="In-Session Actions"
description="Discover features you can use to share information and communicate with Goose during sessions."
description="Discover features you can use to share information and communicate with goose during sessions."
link="/docs/guides/sessions/in-session-actions"
/>
<Card
@@ -38,7 +38,7 @@ import TabItem from '@theme/TabItem';
<h2 className={styles.categoryTitle}>📝 Featured Blog Posts</h2>
<div className={styles.cardGrid}>
<Card
title="6 Essential Tips for Working with Goose"
title="6 Essential Tips for Working with goose"
description="Learn how focused sessions, step-by-step guidance, and refining your prompts can lead to more productive sessions."
link="/blog/2025/03/06/goose-tips"
/>
@@ -49,7 +49,7 @@ import TabItem from '@theme/TabItem';
/>
<Card
title="The AI Skeptics Guide to Context Windows"
description="Learn how context windows, tokens, and Goose help you manage memory and long conversations."
description="Learn how context windows, tokens, and goose help you manage memory and long conversations."
link="/blog/2025/08/18/understanding-context-windows"
/>
</div>
@@ -9,24 +9,24 @@ import TabItem from '@theme/TabItem';
import { ScrollText } from 'lucide-react';
import { PanelLeft } from 'lucide-react';
When working with [Large Language Models (LLMs)](/docs/getting-started/providers), there are limits to how much conversation history they can process at once. Goose provides smart context management features to help handle context and conversation limits so you can maintain productive sessions. Here are some key concepts:
When working with [Large Language Models (LLMs)](/docs/getting-started/providers), there are limits to how much conversation history they can process at once. goose provides smart context management features to help handle context and conversation limits so you can maintain productive sessions. Here are some key concepts:
- **Context Length**: The amount of conversation history the LLM can consider, also referred to as the context window
- **Context Limit**: The maximum number of tokens the model can process
- **Context Management**: How Goose handles conversations approaching these limits
- **Turn**: One complete prompt-response interaction between Goose and the LLM
- **Context Management**: How goose handles conversations approaching these limits
- **Turn**: One complete prompt-response interaction between goose and the LLM
## How Goose Manages Context
Goose uses a two-tiered approach to context management:
## How goose Manages Context
goose uses a two-tiered approach to context management:
1. **Auto-Compaction**: Proactively summarizes conversation when approaching token limits
2. **Context Strategies**: Backup strategy used if the context limit is still exceeded after auto-compaction
This layered approach lets Goose handle token and context limits gracefully.
This layered approach lets goose handle token and context limits gracefully.
## Automatic Compaction
Goose automatically compacts (summarizes) older parts of your conversation when approaching token limits, allowing you to maintain long-running sessions without manual intervention.
Auto-compaction is triggered by default when you reach 80% of the token limit in Goose Desktop and the Goose CLI.
goose automatically compacts (summarizes) older parts of your conversation when approaching token limits, allowing you to maintain long-running sessions without manual intervention.
Auto-compaction is triggered by default when you reach 80% of the token limit in goose Desktop and the goose CLI.
Control the auto-compaction behavior with the `GOOSE_AUTO_COMPACT_THRESHOLD` [environment variable](/docs/guides/environment-variables.md#session-management).
Disable this feature by setting the value to `0.0`.
@@ -37,9 +37,9 @@ export GOOSE_AUTO_COMPACT_THRESHOLD=0.6
```
When you reach the auto-compaction threshold:
1. Goose will automatically start compacting the conversation to make room.
1. goose will automatically start compacting the conversation to make room.
2. Once complete, you'll see a confirmation message that the conversation was compacted and summarized.
3. Continue the session. Your previous conversation remains visible, but only the compacted conversion is included in the active context for Goose.
3. Continue the session. Your previous conversation remains visible, but only the compacted conversion is included in the active context for goose.
### Manual Compaction
You can also trigger compaction manually before reaching context or token limits:
@@ -50,7 +50,7 @@ You can also trigger compaction manually before reaching context or token limits
1. Point to the token usage indicator dot next to the model name at the bottom of the app
2. Click <ScrollText className="inline" size={16} /> `Compact now` in the context window that appears
3. Once complete, you'll see a confirmation message that the conversation was compacted and summarized.
4. Continue the session. Your previous conversation remains visible, but only the compacted conversion is included in the active context for Goose.
4. Continue the session. Your previous conversation remains visible, but only the compacted conversion is included in the active context for goose.
:::info
You must send at least one message in the chat before the `Compact now` button is enabled.
@@ -76,7 +76,7 @@ Key information has been preserved while reducing context length.
## Context Limit Strategies
When auto-compaction is disabled, or if a conversation still exceeds the context limit, Goose offers different ways to handle it:
When auto-compaction is disabled, or if a conversation still exceeds the context limit, goose offers different ways to handle it:
| Feature | Description | Best For | Availability | Impact |
|---------|-------------|-----------|-----------|---------|
@@ -88,7 +88,7 @@ When auto-compaction is disabled, or if a conversation still exceeds the context
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Goose Desktop exclusively uses summarization by compacting the conversation to manage context, preserving key information while reducing size.
goose Desktop exclusively uses summarization by compacting the conversation to manage context, preserving key information while reducing size.
</TabItem>
<TabItem value="cli" label="goose CLI">
@@ -99,7 +99,7 @@ The default behavior depends on the mode you're running in:
- **Interactive mode**: Prompts user to choose (equivalent to `prompt`)
- **Headless mode** (`goose run`): Automatically summarizes (equivalent to `summarize`)
You can configure how Goose handles context limits by setting the `GOOSE_CONTEXT_STRATEGY` environment variable:
You can configure how goose handles context limits by setting the `GOOSE_CONTEXT_STRATEGY` environment variable:
```bash
# Set automatic strategy (choose one)
@@ -127,21 +127,21 @@ final_summary: [A summary of your conversation will appear here]
Context maxed out
--------------------------------------------------
Goose summarized messages for you.
goose summarized messages for you.
```
**With `GOOSE_CONTEXT_STRATEGY` configured**, Goose will automatically apply your chosen strategy:
**With `GOOSE_CONTEXT_STRATEGY` configured**, goose will automatically apply your chosen strategy:
```sh
# Example with GOOSE_CONTEXT_STRATEGY=summarize
Context maxed out - automatically summarized messages.
--------------------------------------------------
Goose automatically summarized messages for you.
goose automatically summarized messages for you.
# Example with GOOSE_CONTEXT_STRATEGY=truncate
Context maxed out - automatically truncated messages.
--------------------------------------------------
Goose tried its best to truncate messages for you.
goose tried its best to truncate messages for you.
# Example with GOOSE_CONTEXT_STRATEGY=clear
Context maxed out - automatically cleared session.
@@ -151,7 +151,7 @@ Context maxed out - automatically cleared session.
</Tabs>
## Maximum Turns
The `Max Turns` limit is the maximum number of consecutive turns that Goose can take without user input (default: 1000). When the limit is reached, Goose stops and prompts: "I've reached the maximum number of actions I can do without user input. Would you like me to continue?" If the user answers in the affirmative, Goose continues until the limit is reached and then prompts again.
The `Max Turns` limit is the maximum number of consecutive turns that goose can take without user input (default: 1000). When the limit is reached, goose stops and prompts: "I've reached the maximum number of actions I can do without user input. Would you like me to continue?" If the user answers in the affirmative, goose continues until the limit is reached and then prompts again.
This feature gives you control over agent autonomy and prevents infinite loops and runaway behavior, which could have significant cost consequences or damaging impact in production environments. Use it for:
@@ -177,7 +177,7 @@ This setting is stored as the `GOOSE_MAX_TURNS` environment variable in your [co
goose configure
```
2. Select `Goose Settings`:
2. Select `goose settings`:
```sh
┌ goose-configure
@@ -187,7 +187,7 @@ This setting is stored as the `GOOSE_MAX_TURNS` environment variable in your [co
│ ○ Toggle Extensions
│ ○ Remove Extension
// highlight-start
│ ● Goose Settings (Set the Goose Mode, Tool Output, Tool Permissions, Experiment, Goose recipe github repo and more)
│ ● goose settings (Set the goose mode, Tool Output, Tool Permissions, Experiment, goose recipe github repo and more)
// highlight-end
```
@@ -197,10 +197,10 @@ This setting is stored as the `GOOSE_MAX_TURNS` environment variable in your [co
┌ goose-configure
◇ What would you like to configure?
Goose Settings
goose settings
◆ What setting would you like to configure?
│ ○ Goose Mode
│ ○ goose mode
│ ○ Router Tool Selection Strategy
│ ○ Tool Permission
│ ○ Tool Output
@@ -208,7 +208,7 @@ This setting is stored as the `GOOSE_MAX_TURNS` environment variable in your [co
│ ● Max Turns (Set maximum number of turns without user input)
// highlight-end
│ ○ Toggle Experiment
│ ○ Goose recipe github repo
│ ○ goose recipe github repo
│ ○ Scheduler Type
```
@@ -218,7 +218,7 @@ This setting is stored as the `GOOSE_MAX_TURNS` environment variable in your [co
┌ goose-configure
◇ What would you like to configure?
Goose Settings
goose settings
◇ What setting would you like to configure?
│ Max Turns
@@ -228,7 +228,7 @@ This setting is stored as the `GOOSE_MAX_TURNS` environment variable in your [co
│ 10
// highlight-end
└ Set maximum turns to 10 - Goose will ask for input after 10 consecutive actions
└ Set maximum turns to 10 - goose will ask for input after 10 consecutive actions
```
:::tip
@@ -245,12 +245,12 @@ The appropriate max turns value depends on your use case and comfort level with
- **5-10 turns**: Good for exploratory tasks, debugging, or when you want frequent check-ins. For example, "analyze this codebase and suggest improvements" where you want to review each step
- **25-50 turns**: Effective for well-defined tasks with moderate complexity, such as "refactor this module to use the new API" or "set up a basic CI/CD pipeline"
- **100+ turns**: More suitable for complex, multi-step automation where you trust Goose to work independently, like "migrate this entire project from React 16 to React 18" or "implement comprehensive test coverage for this service"
- **100+ turns**: More suitable for complex, multi-step automation where you trust goose to work independently, like "migrate this entire project from React 16 to React 18" or "implement comprehensive test coverage for this service"
Remember that even simple-seeming tasks often require multiple turns. For example, asking Goose to "fix the failing tests" might involve analyzing test output (1 turn), identifying the root cause (1 turn), making code changes (1 turn), and verifying the fix (1 turn).
Remember that even simple-seeming tasks often require multiple turns. For example, asking goose to "fix the failing tests" might involve analyzing test output (1 turn), identifying the root cause (1 turn), making code changes (1 turn), and verifying the fix (1 turn).
## Token Usage
After sending your first message, Goose Desktop and Goose CLI display token usage.
After sending your first message, goose Desktop and goose CLI display token usage.
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
@@ -280,7 +280,7 @@ After sending your first message, Goose Desktop and Goose CLI display token usag
## Model Context Limit Overrides
Context limits are automatically detected based on your model name, but Goose provides settings to override the default limits:
Context limits are automatically detected based on your model name, but goose provides settings to override the default limits:
| Model | Description | Best For | Setting |
|-------|-------------|----------|---------|
@@ -295,12 +295,12 @@ This setting only affects the displayed token usage and progress indicators. Act
This feature is particularly useful with:
- **LiteLLM Proxy Models**: When using LiteLLM with custom model names that don't match Goose's patterns
- **LiteLLM Proxy Models**: When using LiteLLM with custom model names that don't match goose's patterns
- **Enterprise Deployments**: Custom model deployments with non-standard naming
- **Fine-tuned Models**: Custom models with different context limits than their base versions
- **Development/Testing**: Temporarily adjusting context limits for testing purposes
Goose resolves context limits with the following precedence (highest to lowest):
goose resolves context limits with the following precedence (highest to lowest):
1. Explicit context_limit in model configuration (if set programmatically)
2. Specific environment variable (e.g., `GOOSE_LEAD_CONTEXT_LIMIT`)
@@ -313,7 +313,7 @@ Goose resolves context limits with the following precedence (highest to lowest):
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
Model context limit overrides are not yet available in the Goose Desktop app.
Model context limit overrides are not yet available in the goose Desktop app.
</TabItem>
<TabItem value="cli" label="goose CLI">
@@ -368,14 +368,14 @@ To manage live cost tracking:
3. Click the `App` tab
4. Toggle `Cost Tracking` on/off
The session cost is shown at the bottom of the Goose window and updates dynamically as tokens are consumed. Hover over the cost to see a detailed breakdown of token usage. If multiple models are used in the session, this includes a cost breakdown by model. Ollama and local deployments always show a cost of $0.00.
The session cost is shown at the bottom of the goose window and updates dynamically as tokens are consumed. Hover over the cost to see a detailed breakdown of token usage. If multiple models are used in the session, this includes a cost breakdown by model. Ollama and local deployments always show a cost of $0.00.
Pricing data is regularly fetched from the OpenRouter API and cached locally. The `Advanced settings` tab shows when the data was last updated and allows you to refresh.
These costs are estimates only, and not connected to your actual provider bill. The cost shown is an approximation based on token counts and public pricing data.
</TabItem>
<TabItem value="cli" label="goose CLI">
Show estimated cost in the Goose CLI by setting the `GOOSE_CLI_SHOW_COST` [environment variable](/docs/guides/environment-variables.md#session-management) or including it in the [configuration file](/docs/guides/config-files.md).
Show estimated cost in the goose CLI by setting the `GOOSE_CLI_SHOW_COST` [environment variable](/docs/guides/environment-variables.md#session-management) or including it in the [configuration file](/docs/guides/config-files.md).
```
# Set environment variable
+20 -20
View File
@@ -1,7 +1,7 @@
---
sidebar_position: 20
title: Updating Goose
sidebar_label: Updating Goose
title: Updating goose
sidebar_label: Updating goose
---
import Tabs from '@theme/Tabs';
@@ -10,25 +10,25 @@ import MacDesktopInstallButtons from '@site/src/components/MacDesktopInstallButt
import WindowsDesktopInstallButtons from '@site/src/components/WindowsDesktopInstallButtons';
import LinuxDesktopInstallButtons from '@site/src/components/LinuxDesktopInstallButtons';
The Goose CLI and desktop apps are under active and continuous development. To get the newest features and fixes, you should periodically update your Goose client using the following instructions.
The goose CLI and desktop apps are under active and continuous development. To get the newest features and fixes, you should periodically update your goose client using the following instructions.
<Tabs>
<TabItem value="mac" label="macOS" default>
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
:::info
To update Goose to the latest stable version, reinstall using the instructions below
To update goose to the latest stable version, reinstall using the instructions below
:::
<div style={{ marginTop: '1rem' }}>
1. <MacDesktopInstallButtons/>
2. Unzip the downloaded zip file.
3. Run the executable file to launch the Goose Desktop application.
4. Overwrite the existing Goose application with the new version.
5. Run the executable file to launch the Goose desktop application.
3. Run the executable file to launch the goose Desktop application.
4. Overwrite the existing goose application with the new version.
5. Run the executable file to launch the goose Desktop application.
</div>
</TabItem>
<TabItem value="cli" label="goose CLI">
You can update Goose by running:
You can update goose by running:
```sh
goose update
@@ -50,7 +50,7 @@ The Goose CLI and desktop apps are under active and continuous development. To g
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
```
To check your current Goose version, use the following command:
To check your current goose version, use the following command:
```sh
goose --version
@@ -63,7 +63,7 @@ The Goose CLI and desktop apps are under active and continuous development. To g
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
:::info
To update Goose to the latest stable version, reinstall using the instructions below
To update goose to the latest stable version, reinstall using the instructions below
:::
<div style={{ marginTop: '1rem' }}>
1. <LinuxDesktopInstallButtons/>
@@ -72,12 +72,12 @@ The Goose CLI and desktop apps are under active and continuous development. To g
2. Download the DEB file
3. Navigate to the directory where it is saved in a terminal
4. Run `sudo dpkg -i (filename).deb`
5. Launch Goose from the app menu
5. Launch goose from the app menu
</div>
</TabItem>
<TabItem value="cli" label="goose CLI">
You can update Goose by running:
You can update goose by running:
```sh
goose update
@@ -99,7 +99,7 @@ The Goose CLI and desktop apps are under active and continuous development. To g
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
```
To check your current Goose version, use the following command:
To check your current goose version, use the following command:
```sh
goose --version
@@ -112,18 +112,18 @@ The Goose CLI and desktop apps are under active and continuous development. To g
<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
:::info
To update Goose to the latest stable version, reinstall using the instructions below
To update goose to the latest stable version, reinstall using the instructions below
:::
<div style={{ marginTop: '1rem' }}>
1. <WindowsDesktopInstallButtons/>
2. Unzip the downloaded zip file.
3. Run the executable file to launch the Goose Desktop application.
4. Overwrite the existing Goose application with the new version.
5. Run the executable file to launch the Goose Desktop application.
3. Run the executable file to launch the goose Desktop application.
4. Overwrite the existing goose application with the new version.
5. Run the executable file to launch the goose Desktop application.
</div>
</TabItem>
<TabItem value="cli" label="goose CLI">
You can update Goose by running:
You can update goose by running:
```sh
goose update
@@ -139,13 +139,13 @@ The Goose CLI and desktop apps are under active and continuous development. To g
goose update --reconfigure
```
Or you can run the [installation](/docs/getting-started/installation) script again in **Git Bash**, **MSYS2**, or **PowerShell** to update the Goose CLI natively on Windows:
Or you can run the [installation](/docs/getting-started/installation) script again in **Git Bash**, **MSYS2**, or **PowerShell** to update the goose CLI natively on Windows:
```bash
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
```
To check your current Goose version, use the following command:
To check your current goose version, use the following command:
```sh
goose --version
+29 -29
View File
@@ -1,21 +1,21 @@
---
title: Providing Hints to Goose
title: Providing Hints to goose
sidebar_position: 40
sidebar_label: Using Goosehints
sidebar_label: Using goosehints
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import { FolderKey } from 'lucide-react';
`.goosehints` is a text file used to provide additional context about your project and improve the communication with Goose. The use of `goosehints` ensures that Goose understands your requirements better and can execute tasks more effectively.
`.goosehints` is a text file used to provide additional context about your project and improve the communication with goose. The use of `.goosehints` ensures that goose understands your requirements better and can execute tasks more effectively.
<details>
<summary>Goose Hints Video Walkthrough</summary>
<summary>goose Hints Video Walkthrough</summary>
<iframe
class="aspect-ratio"
src="https://www.youtube.com/embed/kWXJC5p0608"
title="Goose Hints"
title="goose Hints"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
@@ -32,14 +32,14 @@ To make use of the hints file, you need to have the `Developer` extension [enabl
## Creating Your Hints File
Goose supports two types of hint files:
- **Global hints file** - These hints will apply to all your sessions with Goose, regardless of directory. Global hints are stored in `~/.config/goose/.goosehints`.
goose supports two types of hint files:
- **Global hints file** - These hints will apply to all your sessions with goose, regardless of directory. Global hints are stored in `~/.config/goose/.goosehints`.
- **Local hints files** - These hints will only apply when working in a specific directory or directory hierarchy.
You can use both global and local hints at the same time. When both exist, Goose will consider both your global preferences and project-specific requirements. If the instructions in your local hints file conflict with your global preferences, Goose will prioritize the local hints.
You can use both global and local hints at the same time. When both exist, goose will consider both your global preferences and project-specific requirements. If the instructions in your local hints file conflict with your global preferences, goose will prioritize the local hints.
:::tip Custom Context Files
You can use other agent rule files with Goose by using the [`CONTEXT_FILE_NAMES` environment variable](#custom-context-files).
You can use other agent rule files with goose by using the [`CONTEXT_FILE_NAMES` environment variable](#custom-context-files).
:::
<Tabs groupId="interface">
@@ -50,11 +50,11 @@ You can use other agent rule files with Goose by using the [`CONTEXT_FILE_NAMES`
#### Local hints file
1. Change the directory to where you'd like to set up the file. You can do this by clicking the directory path on the bottom of the Goose window.
2. Click the <FolderKey size={16} /> icon on the bottom right of the Goose window.
1. Change the directory to where you'd like to set up the file. You can do this by clicking the directory path on the bottom of the goose window.
2. Click the <FolderKey size={16} /> icon on the bottom right of the goose window.
4. Enter your local tips into the text area.
5. Click `Save`.
6. Restart your session so Goose can read the updated `.goosehints`.
6. Restart your session so goose can read the updated `.goosehints`.
If a `.goosehints` file already exists in the given directory, you can edit or add to it from this screen.
@@ -75,9 +75,9 @@ The `.goosehints` file can include any instructions or contextual details releva
## Setting Up Hints
The `.goosehints` file supports natural language. Write clear, specific instructions using direct language that Goose can easily understand and follow. Include relevant context about your project and workflow preferences, and prioritize your most important guidelines first.
The `.goosehints` file supports natural language. Write clear, specific instructions using direct language that goose can easily understand and follow. Include relevant context about your project and workflow preferences, and prioritize your most important guidelines first.
Goosehints are loaded at the start of your session and become part of the system prompt sent with every request. This means the content of `.goosehints` contributes to token usage, so keeping it concise can save both cost and processing time.
goosehints are loaded at the start of your session and become part of the system prompt sent with every request. This means the content of `.goosehints` contributes to token usage, so keeping it concise can save both cost and processing time.
### Example Global `.goosehints` File
@@ -107,12 +107,12 @@ Run tests with `npm run test` ideally after each change.
```
These examples show two ways to reference other files:
- **`@` syntax**: Automatically includes the file content in Goose's immediate context
- **Plain reference**: Points Goose to files to review when needed (use for optional or very large files)
- **`@` syntax**: Automatically includes the file content in goose's immediate context
- **Plain reference**: Points goose to files to review when needed (use for optional or very large files)
### Nested `.goosehints` Files
Goose supports hierarchical local hints in git repositories. All `.goosehints` files from your current directory up to the root directory are automatically loaded and combined. If you're not working in a git repository, Goose only loads the `.goosehints` file from the current directory.
goose supports hierarchical local hints in git repositories. All `.goosehints` files from your current directory up to the root directory are automatically loaded and combined. If you're not working in a git repository, goose only loads the `.goosehints` file from the current directory.
As a best practice, `.goosehints` at each level should only include hints relevant to that scope:
- **Root level**: Include project-wide standards, build processes, and general guidelines
@@ -135,7 +135,7 @@ my-project/
└── routes.py
```
When working in `frontend/components/` in this example project, Goose loads hints from directories higher up the hierarchy in the following order:
When working in `frontend/components/` in this example project, goose loads hints from directories higher up the hierarchy in the following order:
1. <details>
<summary>`my-project/.goosehints` (project root)</summary>
```
@@ -191,17 +191,17 @@ When working in `frontend/components/` in this example project, Goose loads hint
</details>
## Common Use Cases
Here are some ways people have used hints to provide additional context to Goose:
Here are some ways people have used hints to provide additional context to goose:
- **Decision-Making**: Specify if Goose should autonomously make changes or confirm actions with you first.
- **Decision-Making**: Specify if goose should autonomously make changes or confirm actions with you first.
- **Validation Routines**: Provide test cases or validation methods that Goose should perform to ensure changes meet project specifications.
- **Validation Routines**: Provide test cases or validation methods that goose should perform to ensure changes meet project specifications.
- **Feedback Loop**: Include steps that allow Goose to receive feedback and iteratively improve its suggestions.
- **Feedback Loop**: Include steps that allow goose to receive feedback and iteratively improve its suggestions.
- **Point to more detailed documentation**: Indicate important files like `README.md`, `docs/setup-guide.md`, or others that Goose should consult for detailed explanations.
- **Point to more detailed documentation**: Indicate important files like `README.md`, `docs/setup-guide.md`, or others that goose should consult for detailed explanations.
- **Organize with @-mentions**: For frequently-needed documentation, use `@filename.md` or `@relative/path/testing.md` to automatically include file content in your current context instead of just referencing it. This ensures Goose has immediate access to important information.
- **Organize with @-mentions**: For frequently-needed documentation, use `@filename.md` or `@relative/path/testing.md` to automatically include file content in your current context instead of just referencing it. This ensures goose has immediate access to important information.
Include core documentation (like API schemas or coding standards) with @-mentions for immediate context, but use plain references (without `@`) for optional or very large files.
Like prompts, this is not an extensive list to shape your `.goosehints` file. You can include as much context as you need.
@@ -209,20 +209,20 @@ Like prompts, this is not an extensive list to shape your `.goosehints` file. Yo
## Best Practices
- **Keep files updated**: Regularly update the `.goosehints` files to reflect any changes in project protocols or priorities.
- **Be concise**: Make sure the content is straightforward and to the point, ensuring Goose can quickly parse and act on the information.
- **Start small**: Create a small set of clear, specific hints and gradually expand them based on your needs. This makes it easier to understand how Goose interprets and applies your instructions.
- **Reference other files**: Point Goose to relevant files like /docs/style.md or /scripts/validation.js to reduce repetition and keep instructions lightweight.
- **Be concise**: Make sure the content is straightforward and to the point, ensuring goose can quickly parse and act on the information.
- **Start small**: Create a small set of clear, specific hints and gradually expand them based on your needs. This makes it easier to understand how goose interprets and applies your instructions.
- **Reference other files**: Point goose to relevant files like /docs/style.md or /scripts/validation.js to reduce repetition and keep instructions lightweight.
## Custom Context Files
Goose looks for `AGENTS.md` then `.goosehints` files by default, but you can configure a different filename or multiple context files using the `CONTEXT_FILE_NAMES` environment variable. This is useful for:
goose looks for `AGENTS.md` then `.goosehints` files by default, but you can configure a different filename or multiple context files using the `CONTEXT_FILE_NAMES` environment variable. This is useful for:
- **Tool compatibility**: Use conventions from other AI tools (e.g. `CLAUDE.md`)
- **Organization**: Separate frequently-used rules into multiple files that load automatically
- **Project conventions**: Use context files from your project's established toolchain (`.cursorrules`)
Here's how it works:
1. Goose looks for each configured filename in both global (~/.config/goose/) and local (current directory) locations
1. goose looks for each configured filename in both global (~/.config/goose/) and local (current directory) locations
2. All found files are loaded and combined into the context
### Configuration
+16 -16
View File
@@ -1,31 +1,31 @@
---
title: Prevent Goose from Accessing Files
sidebar_label: Using Gooseignore
title: Prevent goose from Accessing Files
sidebar_label: Using gooseignore
sidebar_position: 80
---
`.gooseignore` is a text file that defines patterns for files and directories that Goose will not access. This means Goose cannot read, modify, delete, or run shell commands on these files when using the Developer extension's tools.
`.gooseignore` is a text file that defines patterns for files and directories that goose will not access. This means goose cannot read, modify, delete, or run shell commands on these files when using the Developer extension's tools.
:::info Developer extension only
The .gooseignore feature currently only affects tools in the [Developer](/docs/mcp/developer-mcp) extension. Other extensions are not restricted by these rules.
:::
This guide will show you how to use `.gooseignore` files to prevent Goose from changing specific files and directories.
This guide will show you how to use `.gooseignore` files to prevent goose from changing specific files and directories.
## Creating your `.gooseignore` file
Goose supports two types of `.gooseignore` files:
- **Global ignore file** - Create a `.gooseignore` file in `~/.config/goose`. These restrictions will apply to all your sessions with Goose, regardless of directory.
goose supports two types of `.gooseignore` files:
- **Global ignore file** - Create a `.gooseignore` file in `~/.config/goose`. These restrictions will apply to all your sessions with goose, regardless of directory.
- **Local ignore file** - Create a `.gooseignore` file at the root of the directory you'd like it applied to. These restrictions will only apply when working in a specific directory.
:::tip
You can use both global and local `.gooseignore` files simultaneously. When both exist, Goose will combine the restrictions from both files to determine which paths are restricted.
You can use both global and local `.gooseignore` files simultaneously. When both exist, goose will combine the restrictions from both files to determine which paths are restricted.
:::
## Example `.gooseignore` file
In your `.gooseignore` file, you can write patterns to match files you want Goose to ignore. Here are some common patterns:
In your `.gooseignore` file, you can write patterns to match files you want goose to ignore. Here are some common patterns:
```plaintext
# Ignore specific files by name
@@ -48,7 +48,7 @@ downloads/ # Ignore everything in the "downloads" directory
```
## Ignore File Types and Priority
Goose respects ignore rules from three sources: global `.gooseignore`, local `.gooseignore`, and `.gitignore`. It uses a priority system to determine which files should be ignored.
goose respects ignore rules from three sources: global `.gooseignore`, local `.gooseignore`, and `.gitignore`. It uses a priority system to determine which files should be ignored.
### 1. Global `.gooseignore`
- Highest priority and always applied first
@@ -77,17 +77,17 @@ Project/
### 3. `.gitignore` Fallback
- Used when no local `.gooseignore` exists
- Goose automatically uses your `.gitignore` rules
- goose automatically uses your `.gitignore` rules
- If a global `.gooseignore` file exists, those rules will be applied in addition to the `.gitignore` patterns.
```
Project/
├── .gitignore ← Used by Goose (when no local .gooseignore)
├── .gitignore ← Used by goose (when no local .gooseignore)
└── src/
```
### 4. Default Patterns
By default, if you haven't created any .gooseignore files and no .gitignore file exists, Goose will not modify files matching these patterns:
By default, if you haven't created any .gooseignore files and no .gitignore file exists, goose will not modify files matching these patterns:
```plaintext
**/.env
**/.env.*
@@ -98,9 +98,9 @@ By default, if you haven't created any .gooseignore files and no .gitignore file
Here are some typical scenarios where `.gooseignore` is helpful:
- **Generated Files**: Prevent Goose from modifying auto-generated code or build outputs
- **Third-Party Code**: Keep Goose from changing external libraries or dependencies
- **Generated Files**: Prevent goose from modifying auto-generated code or build outputs
- **Third-Party Code**: Keep goose from changing external libraries or dependencies
- **Important Configurations**: Protect critical configuration files from accidental modifications
- **Version Control**: Prevent changes to version control files like `.git` directory
- **Existing Projects**: Most projects already have `.gitignore` files that work automatically as ignore patterns for Goose
- **Custom Restrictions**: Create `.gooseignore` when you need different patterns than your `.gitignore` (e.g., allowing Goose to read files that Git ignores)
- **Existing Projects**: Most projects already have `.gitignore` files that work automatically as ignore patterns for goose
- **Custom Restrictions**: Create `.gooseignore` when you need different patterns than your `.gitignore` (e.g., allowing goose to read files that Git ignores)
+1 -1
View File
@@ -145,7 +145,7 @@ goose works with [supported LLM providers](/docs/getting-started/providers) that
│ ○ Add Extension
│ ○ Toggle Extensions
│ ○ Remove Extension
│ ○ Goose Settings
│ ○ goose settings
```
3. Choose a model provider. For this quickstart, select `Tetrate Agent Router Service` and press Enter. Tetrate provides access to multiple AI models with built-in rate limiting and automatic failover. For information about other providers, see [Configure LLM Provider](/docs/getting-started/providers).