documentation/docs/guides/allowlist.md
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.
GOOSE_ALLOWLIST environment variable.The allowlist must be a YAML file with the following structure:
extensions:
- id: extension-id-1
command: command-name-1
- id: extension-id-2
command: command-name-2
# ... more extensions
In this example, only the Slack, GitHub, and Jira extensions can be installed:
extensions:
- id: slack
command: uvx mcp_slack
- id: github
command: uvx mcp_github
- id: jira
command: uvx mcp_jira
After creating the allowlist, you must deploy it to a URL.
Create an environment variable called GOOSE_ALLOWLIST and set the value to the URL of your YAML file:
export GOOSE_ALLOWLIST=https://example.com/goose-allowlist.yaml
You can also add this export to your shell configuration file (On a Mac, it's your ~/.bashrc or ~/.zshrc file).
:::info If this environment variable is not set, no allowlist restrictions are applied. With no restrictions, all extensions can be installed. :::
To effectively use the allowlist with exact matching:
If extensions are being rejected unexpectedly:
GOOSE_ALLOWLIST environment variable is set correctly.