--- title: Managing Tool Permissions sidebar_position: 1 sidebar_label: Tool Permissions --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import { PanelLeft, Tornado, Settings } from 'lucide-react'; Tool permissions provide fine-grained control over how Goose uses different tools within extensions. This guide will help you understand and configure these permissions effectively. ## Understanding Tools and Extensions Before diving into permissions, let's clarify the key components: - **Extensions** are packages that add functionality to Goose (like Developer, Google Drive, etc.) - **Tools** are specific functions within each extension that Goose can use For example, the Developer extension includes multiple tools like: - Text editor tool for file editing - Shell tool for running commands - Screen capture tool for taking screenshots :::warning Performance Optimization Goose performs best with fewer than 25 total tools enabled across all extensions. Consider enabling only the extensions you need for your current task. ::: ## Permission Levels Tool permissions work alongside [Goose permission modes](/docs/guides/goose-permissions). The mode sets the default behavior, while tool permissions let you override the behavior of specific tools. Each tool can be set to one of three permission levels: | Permission Level | Description | Best For | Examples | |-----------------|-------------|-----------|----------| | **Always Allow** | Tool runs without requiring approval | Safe, read-only operations | • File reading

• Directory listing

• Information retrieval | | **Ask Before** | Requires confirmation | State-changing operations | • File writing/editing

• System commands

• Resource creation | | **Never Allow** | Tool cannot be used | Sensitive operations | • Credential access

• System-critical files

• Resource deletion | ## Configuring Tool Permissions You can configure fine-grained tool permissions for enabled extensions when using `Manual` or `Smart` approval mode. These rules can be accessed from the mode toggle or `Settings` page. 1. Click the button at the bottom of the app 2. Click the button next to your selected `Manual` or `Smart` mode 3. Click the extension whose tools you want to configure 4. Use the dropdown next to each tool to set its permission level 5. Click `Save Changes` 1. Click the button in the top-left to open the sidebar 2. Click the `Settings` button on the sidebar 3. Click `Chat` 4. Under `Mode`, click the button next to your selected `Manual` or `Smart` mode 5. Click the extension whose tools you want to configure 6. Use the dropdown next to each tool to set its permission level 7. Click `Save Changes` 1. Run the configure command: ```sh goose configure ``` 2. Select `Goose Settings` from the menu ```sh ┌ goose-configure │ ◆ What would you like to configure? | ○ Configure Providers | ○ Add Extension | ○ Toggle Extensions | ○ Remove Extension // highlight-start | ● Goose Settings // highlight-end └ ``` 3. Choose `Tool Permission` ```sh ┌ goose-configure │ ◇ What would you like to configure? │ Goose Settings │ ◆ What setting would you like to configure? │ ○ Goose Mode // highlight-start │ ● Tool Permission // highlight-end | ○ Tool Output └ ``` 4. Select an extension and configure permissions for its tools: ```sh ┌ goose-configure │ ◇ What setting would you like to configure? │ Tool Permission │ ◇ Choose an extension to configure tools │ developer │ ◇ Choose a tool to update permission │ developer__image_processor │ ◆ Set permission level for tool developer__image_processor, current permission level: Not Set │ ○ Always Allow // highlight-start │ ● Ask Before (Prompt before executing this tool) // highlight-end │ ○ Never Allow └ ``` ## Benefits of Permission Management :::tip Review and update your tool permissions as your tasks change. You can modify permissions at any time during a session. ::: There are several reasons to configure tool permissions: 1. **Performance Optimization** - Keep total enabled tools under 25 for best performance - Disable tools you don't need for your current task - Reduce context window usage and improve response quality - Prevent tool decision paralysis 2. **Security Control** - Restrict access to sensitive operations - Prevent accidental file modifications - Control system resource usage 3. **Task Focus** - Enable only tools needed for current task - Help Goose make better tool choices - Reduce noise in responses ## Example Permission Configuration ### Task-Based Configuration Configure permissions based on your current task: ``` Development Task: ✓ File reading → Always Allow ✓ Code editing → Ask Before ✓ Test running → Always Allow ✗ System commands → Ask Before Documentation Task: ✓ File reading → Always Allow ✓ Markdown editing → Always Allow ✗ Code editing → Never Allow ✗ System commands → Never Allow ```