Skip to main content

Configuration Overview

goose uses YAML 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, 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 (only when keyring is disabled)
  • permissions/tool_permissions.json - Runtime permission decisions (auto-managed)

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_MAX_TURNSMaximum number of turns allowed without user inputInteger (e.g., 10, 50, 100)1000No
GOOSE_LEAD_PROVIDERProvider for lead model in lead/worker modeSame as GOOSE_PROVIDER optionsFalls back to GOOSE_PROVIDERNo
GOOSE_LEAD_MODELLead model for lead/worker modeModel nameNoneNo
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_CLI_THEMETheme for CLI response markdown"light", "dark", "ansi""dark"No
GOOSE_CLI_SHOW_COSTShow estimated cost for token use in the CLItrue/falsefalseNo
GOOSE_ALLOWLISTURL for allowed extensionsValid URLNoneNo
GOOSE_RECIPE_GITHUB_REPOGitHub repository for recipesFormat: "org/repo"NoneNo
GOOSE_AUTO_COMPACT_THRESHOLDSet the percentage threshold at which goose automatically summarizes your session.Float between 0.0 and 1.0 (disabled at 0.0)0.8No
otel_exporter_otlp_endpointOTLP endpoint URL for observabilityURL (e.g., http://localhost:4318)NoneNo
otel_exporter_otlp_timeoutExport timeout in milliseconds for observabilityInteger (ms)10000No
security_prompt_enabledEnable prompt injection detection to identify potentially harmful commandstrue/falsefalseNo
security_prompt_thresholdSensitivity threshold for prompt injection detection (higher = stricter)Float between 0.01 and 1.00.7No
Automatic Multi-Model Configuration

The experimental AutoPilot feature provides intelligent, context-aware model switching. Configure models for different roles using the x-advanced-models setting.

Experimental Features

These settings enable experimental features that are in active development. These may change or be removed in future releases.

SettingPurposeValuesDefaultRequired
ALPHA_FEATURESEnables access to experimental alpha features—check the feature docs to see if this flag is requiredtrue/falsefalseNo

Additional environment variables may also be supported in config.yaml.

Example Configuration

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

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

# Observability (OpenTelemetry)
otel_exporter_otlp_endpoint: "http://localhost:4318"
otel_exporter_otlp_timeout: 20000

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

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 config files 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