goose

Configure Goose extensions, hints, recipes and permissions

Where does Goose keep its configuration, and how do I add MCP extensions, project context, recipes and permission modes?

Goose reads its settings from config.yaml, which lives at ~/.config/goose/config.yaml on macOS and Linux and under %APPDATA%\Block\goose\config on Windows. Extensions are MCP servers that you add with goose configure or by editing the extensions section of that file, while AGENTS.md and .goosehints files give Goose project context. Recipes package reusable workflows as YAML, and the Goose mode setting controls how much Goose can do without asking.

Config file and extensions

The main config file is ~/.config/goose/config.yaml on macOS and Linux, or %APPDATA%\Block\goose\config\config.yaml on Windows. Environment variables override config file settings, which override defaults.

To add an extension interactively, run goose configure, choose Add Extension, then pick a type: Built-In, Command-Line (a local stdio command), Remote (SSE) or Remote (Streaming HTTP). The default extension timeout is 300 seconds.

~/.config/goose/config.yaml

extensions:
  knowledge-graph:
    name: Knowledge Graph Memory
    cmd: npx
    args: [-y, '@modelcontextprotocol/server-memory']
    enabled: true
    type: stdio
    timeout: 300
  remote-service:
    name: Remote Service
    url: http://localhost:8080/sse
    enabled: true
    type: sse
    timeout: 300

Streaming HTTP extensions use type streamable_http with a uri key. You can also enable an extension for one session with a CLI flag.

Session flags

goose session --with-extension "YOUR_COMMAND"
goose session --with-remote-extension "YOUR_SSE_URL"
goose session --with-streamable-http-extension "YOUR_HTTP_URL"
goose session --with-builtin "YOUR_EXTENSION_ID"

AGENTS.md and .goosehints context files

By default Goose looks for AGENTS.md and then .goosehints files. A global .goosehints file at ~/.config/goose/.goosehints applies to every session, and a .goosehints file in a project directory applies when you work there. When both exist Goose uses both, with local hints taking priority.

Goose also loads hint files from nested directories as it touches files in them, which suits monorepos. Hints are plain natural language, and the @ syntax pulls in another file's content.

  • Set CONTEXT_FILE_NAMES to a JSON list to use other file names, such as .cursorrules.
  • Keep build, test and approval rules in hints so Goose follows them every session.
  • Point to longer docs instead of pasting them in full.

Custom context file names

export CONTEXT_FILE_NAMES='[".cursorrules", "AGENTS.md"]'

Recipes

Recipes package instructions, a starting prompt, parameters and extensions into a reusable YAML workflow. A recipe needs a title, a description, and at least one of instructions or prompt. Parameters are referenced with double curly brace placeholders.

code-review.yaml

version: "1.0.0"
title: "Code Review"
description: "Review code in a chosen language"
instructions: "You are a code reviewer. Focus on {{ language }} best practices."
prompt: "Review the changes in this project"
parameters:
  - key: language
    input_type: string
    requirement: required
    description: "Language to review"

Run a recipe

goose run --recipe code-review.yaml --params language=Python
goose run --recipe code-review.yaml --interactive

Goose finds recipes in the current directory, in folders listed in GOOSE_RECIPE_PATH, and in a GitHub repository set with GOOSE_RECIPE_GITHUB_REPO.

Permission modes

  • Completely Autonomous (auto): Goose edits files, uses extensions and deletes files without asking. This is the default.
  • Manual Approval (approve): Goose asks before using any tool or extension.
  • Smart Approval (smart_approve): low risk actions run automatically and others are flagged for approval.
  • Chat Only (chat): no extension use or file changes.

In the CLI, switch modes mid session with the /mode command, or run goose configure and choose Goose Settings, then Goose Mode. The GOOSE_MODE setting holds the same values.

In a Goose CLI session

/mode smart_approve

Sources

More on goose

Other guides

Cursor: allow all terminal commandsClaude Code: allow commands without promptsCodex CLI: approval and sandbox modesGemini CLI: YOLO mode, auto_edit and allowing specific shell commandsCursor Privacy Mode: telemetry, training and data retentionClaude Code telemetry and data retention: what is sent and how to turn it offGemini CLI: turn off usage statistics and telemetryCLAUDE.md: where it goes, how it loads, and how it works with AGENTS.mdClaude Code hooks: format on save, block risky edits, get notifiedClaude Code subagents: create one, limit its tools, and call itAdd MCP servers to Cursor with mcp.json: Keep files out of Cursor with .cursorignore: Configure Codex with config.toml: Configure Gemini CLI with settings.json: Add MCP servers to Claude Code (claude mcp add, .mcp.json, scopes): Claude Code custom slash commands and skills (SKILL.md): GitHub Copilot custom instructions: Adding MCP servers to GitHub Copilot: Claude Code settings.json: file locations, precedence, and key settingsClaude Code plugins and marketplaces: install, create, and shareGemini CLI extensions and custom commands: Configuring OpenCode with opencode.json: Cline Rules: workspace, global, and conditional rulesKiro steering files: .kiro/steering, inclusion modes, and AGENTS.mdZed agent: instruction files, MCP servers, tool permissions, and ACP agentsCursor CLI: install, headless mode, permissions and CIAider: CONVENTIONS.md, .aider.conf.yml and API keysJunie guidelines, MCP and the Action Allowlist: Amp AGENTS.md, settings.json and MCP: Customize OpenHands with skills, AGENTS.md, setup.sh and MCP: Configure Factory Droid CLI: AGENTS.md, settings.json, autonomy, custom droids and MCPConfigure Qwen Code: settings.json, providers, QWEN.md, MCP and approval modes

Get the weekly agent stack update

New official MCP servers, spec changes and harness releases, checked against the source. One email a week, no fluff.

Reviewed Oct 6, 2026. Settings change often; the linked vendor docs are the source of truth.