Skip to main content

Configuration File

Goose uses a YAML configuration file to manage settings and extensions. This file is located at:

  • macOS/Linux: ~/.config/goose/config.yaml
  • Windows: %APPDATA%\Block\goose\config\config.yaml

The configuration file allows you to set default behaviors, configure language models, and manage extensions. While many settings can also be set using environment variables, the config file provides a persistent way to maintain your preferences.

Global Settings

The following settings can be configured at the root level of your config.yaml file:

SettingPurposeValuesDefaultRequired
GOOSE_PROVIDERPrimary LLM provider"anthropic", "openai", etc.NoneYes
GOOSE_MODELDefault model to useModel name (e.g., "claude-3.5-sonnet", "gpt-4")NoneYes
GOOSE_TEMPERATUREModel response randomnessFloat between 0.0 and 1.0Model-specificNo
GOOSE_MODETool execution behavior"auto", "approve", "chat", "smart_approve""smart_approve"No
GOOSE_PLANNER_PROVIDERProvider for planning modeSame as GOOSE_PROVIDER optionsFalls back to GOOSE_PROVIDERNo
GOOSE_PLANNER_MODELModel for planning modeModel nameFalls back to GOOSE_MODELNo
GOOSE_TOOLSHIMEnable tool interpretationtrue/falsefalseNo
GOOSE_TOOLSHIM_OLLAMA_MODELModel for tool interpretationModel name (e.g., "llama3.2")System defaultNo
GOOSE_CLI_MIN_PRIORITYTool output verbosityFloat between 0.0 and 1.00.0No
GOOSE_ALLOWLISTURL for allowed extensionsValid URLNoneNo

Example Configuration

Here's a basic example of a config.yaml file:

# Model Configuration
GOOSE_PROVIDER: "anthropic"
GOOSE_MODEL: "claude-3.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

# 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:

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

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 for storing secrets
  • If keyring is disabled, secrets are stored in a separate secrets.yaml file

Updating Configuration

Changes to the config file require restarting Goose to take effect. You can verify your current configuration using:

goose info -v

This will show all active settings and their current values.

See Also