mirror of
https://github.com/block/goose.git
synced 2026-04-28 19:49:51 +00:00
203 lines
9.6 KiB
Markdown
203 lines
9.6 KiB
Markdown
---
|
|
sidebar_position: 85
|
|
title: Configuration Files
|
|
sidebar_label: Configuration Files
|
|
---
|
|
|
|
# Configuration Overview
|
|
|
|
goose uses YAML [configuration files](#configuration-files) to manage settings and extensions. The primary config file is located at:
|
|
|
|
* macOS/Linux: `~/.config/goose/config.yaml`
|
|
* Windows: `%APPDATA%\Block\goose\config\config.yaml`
|
|
|
|
The configuration files allow you to set default behaviors, configure language models, set tool permissions, and manage extensions. While many settings can also be set using [environment variables](/docs/guides/environment-variables), the config files provide a persistent way to maintain your preferences.
|
|
|
|
## Configuration Files
|
|
|
|
- **config.yaml** - Provider, model, extensions, and general settings
|
|
- **permission.yaml** - Tool permission levels configured via `goose configure`
|
|
- **secrets.yaml** - API keys and secrets (when goose is using [file-based secret storage](#security-considerations))
|
|
- **permissions/tool_permissions.json** - Runtime permission decisions (auto-managed)
|
|
- **prompts/** - Customized [prompt templates](/docs/guides/prompt-templates)
|
|
|
|
In addition to editing configuration files directly, many settings can be managed from goose Desktop and goose CLI:
|
|
- **goose Desktop**: From the `Settings` page and the bottom toolbar
|
|
- **goose CLI**: Run the `goose configure` command
|
|
|
|
## Global Settings
|
|
|
|
The following settings can be configured at the root level of your config.yaml file:
|
|
|
|
| Setting | Purpose | Values | Default | Required |
|
|
|---------|---------|---------|---------|-----------|
|
|
| `GOOSE_PROVIDER` | Primary [LLM provider](/docs/getting-started/providers) | "anthropic", "openai", etc. | None | Yes |
|
|
| `GOOSE_MODEL` | Default model to use | Model name (e.g., "claude-3.5-sonnet", "gpt-4") | None | Yes |
|
|
| `GOOSE_TEMPERATURE` | Model response randomness | Float between 0.0 and 1.0 | Model-specific | No |
|
|
| `GOOSE_MAX_TOKENS` | Maximum number of tokens for each model response (truncates longer responses) | Positive integer | Model-specific | No |
|
|
| `GOOSE_MODE` | [Tool execution behavior](/docs/guides/goose-permissions) | "auto", "approve", "chat", "smart_approve" | "auto" | No |
|
|
| `GOOSE_MAX_TURNS` | [Maximum number of turns](/docs/guides/sessions/smart-context-management#maximum-turns) allowed without user input | Integer (e.g., 10, 50, 100) | 1000 | No |
|
|
| `GOOSE_LEAD_PROVIDER` | Provider for lead model in [lead/worker mode](/docs/guides/environment-variables#leadworker-model-configuration) | Same as `GOOSE_PROVIDER` options | Falls back to `GOOSE_PROVIDER` | No |
|
|
| `GOOSE_LEAD_MODEL` | Lead model for lead/worker mode | Model name | None | No |
|
|
| `GOOSE_PLANNER_PROVIDER` | Provider for [planning mode](/docs/guides/creating-plans) | Same as `GOOSE_PROVIDER` options | Falls back to `GOOSE_PROVIDER` | No |
|
|
| `GOOSE_PLANNER_MODEL` | Model for planning mode | Model name | Falls back to `GOOSE_MODEL` | No |
|
|
| `GOOSE_TOOLSHIM` | Enable tool interpretation | true/false | false | No |
|
|
| `GOOSE_TOOLSHIM_OLLAMA_MODEL` | Model for tool interpretation | Model name (e.g., "llama3.2") | System default | No |
|
|
| `GOOSE_CLI_MIN_PRIORITY` | Tool output verbosity | Float between 0.0 and 1.0 | 0.0 | No |
|
|
| `GOOSE_CLI_THEME` | [Theme](/docs/guides/goose-cli-commands#themes) for CLI response markdown | "light", "dark", "ansi" | "dark" | No |
|
|
| `GOOSE_CLI_SHOW_COST` | Show estimated cost for token use in the CLI | true/false | false | No |
|
|
| `GOOSE_ALLOWLIST` | URL for allowed extensions | Valid URL | None | No |
|
|
| `GOOSE_RECIPE_GITHUB_REPO` | GitHub repository for recipes | Format: "org/repo" | None | No |
|
|
| `GOOSE_AUTO_COMPACT_THRESHOLD` | Set the percentage threshold at which goose [automatically summarizes your session](/docs/guides/sessions/smart-context-management#automatic-compaction). | Float between 0.0 and 1.0 (disabled at 0.0)| 0.8 | No |
|
|
| `SECURITY_PROMPT_ENABLED` | Enable [prompt injection detection](/docs/guides/security/prompt-injection-detection) to identify potentially harmful commands | true/false | false | No |
|
|
| `SECURITY_PROMPT_THRESHOLD` | Sensitivity threshold for prompt injection detection (higher = stricter) | Float between 0.01 and 1.0 | 0.8 | No |
|
|
| `SECURITY_PROMPT_CLASSIFIER_ENABLED` | Enable ML-based prompt injection detection for advanced threat identification | true/false | false | No |
|
|
| `SECURITY_PROMPT_CLASSIFIER_ENDPOINT` | Classification endpoint URL for ML-based prompt injection detection | URL (e.g., "https://api.example.com/classify") | None | No |
|
|
| `SECURITY_PROMPT_CLASSIFIER_TOKEN` | Authentication token for `SECURITY_PROMPT_CLASSIFIER_ENDPOINT` | String | None | No |
|
|
| `GOOSE_TELEMETRY_ENABLED` | Enable [anonymous usage data](/docs/guides/usage-data) collection | true/false | false | No |
|
|
|
|
Additional [environment variables](/docs/guides/environment-variables) may also be supported in config.yaml.
|
|
|
|
## Example Configuration
|
|
|
|
Here's a basic example of a config.yaml file:
|
|
|
|
```yaml
|
|
# Model Configuration
|
|
GOOSE_PROVIDER: "anthropic"
|
|
GOOSE_MODEL: "claude-4.5-sonnet"
|
|
GOOSE_TEMPERATURE: 0.7
|
|
|
|
# Planning Configuration
|
|
GOOSE_PLANNER_PROVIDER: "openai"
|
|
GOOSE_PLANNER_MODEL: "gpt-4"
|
|
|
|
# Tool Configuration
|
|
GOOSE_MODE: "smart_approve"
|
|
GOOSE_TOOLSHIM: true
|
|
GOOSE_CLI_MIN_PRIORITY: 0.2
|
|
|
|
# Recipe Configuration
|
|
GOOSE_RECIPE_GITHUB_REPO: "block/goose-recipes"
|
|
|
|
# Search Path Configuration
|
|
GOOSE_SEARCH_PATHS:
|
|
- "/usr/local/bin"
|
|
- "~/custom/tools"
|
|
- "/opt/homebrew/bin"
|
|
|
|
# Security Configuration
|
|
SECURITY_PROMPT_ENABLED: true
|
|
|
|
# Extensions Configuration
|
|
extensions:
|
|
developer:
|
|
bundled: true
|
|
enabled: true
|
|
name: developer
|
|
timeout: 300
|
|
type: builtin
|
|
|
|
memory:
|
|
bundled: true
|
|
enabled: true
|
|
name: memory
|
|
timeout: 300
|
|
type: builtin
|
|
```
|
|
|
|
## Extensions Configuration
|
|
|
|
Extensions are configured under the `extensions` key. Each extension can have the following settings:
|
|
|
|
```yaml
|
|
extensions:
|
|
extension_name:
|
|
bundled: true/false # Whether it's included with goose
|
|
display_name: "Name" # Human-readable name (optional)
|
|
enabled: true/false # Whether the extension is active
|
|
name: "extension_name" # Internal name
|
|
timeout: 300 # Operation timeout in seconds
|
|
type: "builtin"/"stdio" # Extension type
|
|
|
|
# Additional settings for stdio extensions:
|
|
cmd: "command" # Command to execute
|
|
args: ["arg1", "arg2"] # Command arguments
|
|
description: "text" # Extension description
|
|
env_keys: [] # Required environment variables
|
|
envs: {} # Environment values
|
|
```
|
|
|
|
## Search Path Configuration
|
|
|
|
Extensions may need to execute external commands or tools. By default, goose uses your system's PATH environment variable. You can add additional search directories in your config file:
|
|
|
|
```yaml
|
|
GOOSE_SEARCH_PATHS:
|
|
- "/usr/local/bin"
|
|
- "~/custom/tools"
|
|
- "/opt/homebrew/bin"
|
|
```
|
|
|
|
These paths are prepended to the system PATH when running extension commands, ensuring your custom tools are found without modifying your global PATH.
|
|
|
|
## Observability Configuration
|
|
|
|
Configure goose to export telemetry to [OpenTelemetry](https://opentelemetry.io/docs/) compatible platforms. Environment variables override these settings and support additional options like per-signal configuration. See the [environment variables guide](/docs/guides/environment-variables#opentelemetry-protocol-otlp) for details.
|
|
|
|
| Setting | Purpose | Values | Default |
|
|
|---------|---------|--------|---------|
|
|
| `otel_exporter_otlp_endpoint` | OTLP endpoint URL | URL (e.g., `http://localhost:4318`) | None |
|
|
| `otel_exporter_otlp_timeout` | Export timeout in milliseconds | Integer (ms) | 10000 |
|
|
|
|
```yaml
|
|
otel_exporter_otlp_endpoint: "http://localhost:4318"
|
|
otel_exporter_otlp_timeout: 20000
|
|
```
|
|
|
|
## Recipe Command Configuration
|
|
You can optionally set up [custom slash commands](/docs/guides/context-engineering/slash-commands) to run recipes that you create. List the command (without the leading `/`) along with the path to the recipe:
|
|
|
|
```yaml
|
|
slash_commands:
|
|
- command: "run-tests"
|
|
recipe_path: "/path/to/recipe.yaml"
|
|
- command: "daily-standup"
|
|
recipe_path: "/Users/me/.local/share/goose/recipes/standup.yaml"
|
|
```
|
|
|
|
## Configuration Priority
|
|
|
|
Settings are applied in the following order of precedence:
|
|
|
|
1. Environment variables (highest priority)
|
|
2. Config file settings
|
|
3. Default values (lowest priority)
|
|
|
|
## Security Considerations
|
|
|
|
- Avoid storing sensitive information (API keys, tokens) in the config file
|
|
- Use the system keyring (keychain on macOS) for storing secrets. When available, this is the recommended option.
|
|
- If goose is using file-based secret storage, secrets are stored in a separate `secrets.yaml` file (in plain text). This can happen when:
|
|
|
|
- Your environment does not provide a desktop keyring service (for example: headless servers, CI/CD, containers)
|
|
- You disable the keyring explicitly (via [GOOSE_DISABLE_KEYRING](/docs/guides/environment-variables#security-and-privacy))
|
|
- goose cannot access the keyring and falls back to file-based secret storage
|
|
|
|
For troubleshooting keyring failures and automatic fallback behavior, see [Known Issues](/docs/troubleshooting/known-issues#keyring-cannot-be-accessed-automatic-fallback).
|
|
|
|
## Updating Configuration
|
|
|
|
Changes to config files require restarting goose to take effect. You can verify your current configuration using:
|
|
|
|
```bash
|
|
goose info -v
|
|
```
|
|
|
|
This will show all active settings and their current values.
|
|
|
|
## See Also
|
|
|
|
- **[Multi-Model Configuration](/docs/guides/multi-model/)** - For multiple model-selection strategies
|
|
- **[Environment Variables](./environment-variables.md)** - For environment variable configuration
|
|
- **[Using Extensions](/docs/getting-started/using-extensions.md)** - For more details on extension configuration
|