Skip to content

Conversation

@jsibbison-square
Copy link
Contributor

@jsibbison-square jsibbison-square commented Aug 12, 2025

When building recipes we usually have in mind a specific set of tools that we expect the agent to use to achieve the recipes goal. However many mcp extensions have a lot of irrelevant tools for our purpose. For example if we want to find and read files the developer extension is useful but we have no need of image processing, listing windows and screen capture tools.

Less tools are better for agents so having a way to filter out tools from mcps saves us from having to re-write specific mcps for the recipe.

This PR introduces tool config with visibility being the specific feature:

extensions:
  - type: builtin
    name: developer
    available_tools:
      - bash
      ... the rest of the unspecified tools will be unavailable

When a tool as set as not available then it will be entirely hidden from goose (not returned from get_prefixed_tools). If the llm still makes a tool call with a tool name that is not available then it will receive an error back like when a tool is not found.

@jsibbison-square jsibbison-square marked this pull request as ready for review August 12, 2025 02:21
@lifeizhou-ap
Copy link
Collaborator

lifeizhou-ap commented Aug 13, 2025

  • I feel having both tools_are_visible_default and tools -> tool_name -> visible is a bit confusing to users.
    Shall we make it simpler by using one configuration? for example:
allowed_tools: 
 - bash
 - screen_capture
  • if the user include a wrong tool name (non exist tool), I guess it will fail silently? Just wondering whether the user should know about it?

@jsibbison-square
Copy link
Contributor Author

jsibbison-square commented Aug 13, 2025

@lifeizhou-ap

  • I feel having both tools_are_visible_default and tools -> tool_name -> visible is a bit confusing to users.
    Shall we make it simpler by using one configuration? for example:
allowed_tools: 
 - bash
 - screen_capture

Yeah 2 things:

  • I wanted to stay away from permission related words like 'allowed' because I see other agents using their own permissions settings for each tool
    so maybe visible_tools to keep on the visibility theme.
  • I definately thought about this simpler structure and I'm still open to it. The reason I landed on an object was because it made it possible to easily extend for tool permissions, like what claude code settings and amp permissions does. What do you think about allowing for extendability via an object?
  • if the user include a wrong tool name (non exist tool), I guess it will fail silently? Just wondering whether the user should know about it?

Definately true. This is definately a power user tool atm as you have to have figured out what the tools are actually called, I think we can evolve the usability of it as we see more customer feedback.

@lifeizhou-ap
Copy link
Collaborator

lifeizhou-ap commented Aug 14, 2025

@lifeizhou-ap

  • I feel having both tools_are_visible_default and tools -> tool_name -> visible is a bit confusing to users.
    Shall we make it simpler by using one configuration? for example:
allowed_tools: 
 - bash
 - screen_capture

Yeah 2 things:

  • I wanted to stay away from permission related words like 'allowed' because I see other agents using their own permissions settings for each tool
    so maybe visible_tools to keep on the visibility theme.

👍

  • I definately thought about this simpler structure and I'm still open to it. The reason I landed on an object was because it made it possible to easily extend for tool permissions, like what claude code settings and amp permissions does. What do you think about allowing for extendability via an object?

Can we have separate permissions block in the future to be handled separately? Or you would like to use permission style to expose them now?

@jsibbison-square
Copy link
Contributor Author

@lifeizhou-ap

  • I feel having both tools_are_visible_default and tools -> tool_name -> visible is a bit confusing to users.
    Shall we make it simpler by using one configuration? for example:
allowed_tools: 
 - bash
 - screen_capture

Yeah 2 things:

  • I wanted to stay away from permission related words like 'allowed' because I see other agents using their own permissions settings for each tool
    so maybe visible_tools to keep on the visibility theme.

👍

  • I definately thought about this simpler structure and I'm still open to it. The reason I landed on an object was because it made it possible to easily extend for tool permissions, like what claude code settings and amp permissions does. What do you think about allowing for extendability via an object?

Can we have separate permissions block in the future to be handled separately? Or you would like to use permission style to expose them now?

Will change to visible_tools list as desired. We haven't discussed permissions so not going to introduce that into this.

…ol-visibility

* origin/main: (43 commits)
  docs: Blog - How I Used Goose to Rebuild My Website (#4076)
  docs: custom context file names (#4077)
  Blog: How Pulse MCP Used Goose to Automate Their Newsletter (#4075)
  Load recipe deeplinks in single window when app is closed (#4048)
  docs: make accurate the comments with links to unsigned builds of the app (#4070)
  cleanup memory in chat (#4073)
  CLI: improve model selection ux (#4071)
  speed up loading extensions by loading in parallel (#4054)
  fix(build): feed electronforge the icon explicitly for linux (#4045)
  Docs: Troubleshooting tip - Nodejs path on windows (#4065)
  fix: flag out uncompilable bit in windows (#4068)
  ci: fix docs-only filter to properly skip tests for documentation changes (#4066)
  fix: ctrl-C interruption in the CLI (#4057)
  docs: mcp-ui support (#4049)
  fix: delete dialog layout (#4037)
  ci: fix markdown file pattern to skip builds for all .md files (#4061)
  docs: add window title (#4059)
  blog: cleaning up some posts (#4050)
  fix: this should be a debug message not a warn (#4024)
  Better provider logging (#4052)
  ...
@jsibbison-square jsibbison-square changed the title Recipe config to limit tool visibility Recipe config to limit tool availability Aug 14, 2025
@jsibbison-square
Copy link
Contributor Author

Actually I think available_tools is better than visible_tools

@jsibbison-square
Copy link
Contributor Author

Updated to use an available_tools list and also error 'not found' if llm tries to call a tool that is unavailable.

…ol-visibility

* origin/main: (26 commits)
  feat: adds cursor-agent as a cli provider (#4101)
  chore: remove vector search tool selection strategy (#3933)
  docs: add streamable_http install links (#4130)
  feat: iterating on summarize oneshot prompt (#4113)
  feat(mcp): Persist OAuth credentials to keyring (#4007)
  Sanitize Tags Unicode Block at prompt level (#4047)
  Fixing typos (#4114)
  chore(release): release version 1.4.0 (#4069)
  E2E tests working again (#4103)
  chore: Delete ARCHITECTURE.md (#4108)
  Add Youtube short to Kiwi MCP tutorial (#4107)
  docs: fix experimental warning (#4102)
  fix not being able to add spaces to activity message area (#4055)
  remove and cleanup unused code (#4074)
  docs: Add missing references to smart_approve mode. (#4094)
  quick typo fix pulse blog (#4095)
  fix: update dictation settings handling and improve user feedback (#4093)
  chore: add info tooltip to share session button (#4038)
  Reroute routes (#4088)
  fix(cli): fix compiling issue on windows system by adding a missing param (#4019)
  ...
@jsibbison-square jsibbison-square requested a review from a team as a code owner August 18, 2025 05:35
@github-actions
Copy link
Contributor

github-actions bot commented Aug 18, 2025

PR Preview Action v1.6.0
Preview removed because the pull request was closed.
2025-08-18 06:16 UTC

@angiejones angiejones merged commit 4321180 into main Aug 18, 2025
16 of 17 checks passed
@angiejones angiejones deleted the jsibbison-20250811-tool-visibility branch August 18, 2025 06:14
katzdave added a commit that referenced this pull request Aug 18, 2025
…-messaging

* 'main' of github.com:block/goose: (26 commits)
  fix: consistent font sizing in ToolCallWithResponse (#4167)
  Temporarily disable TODO Tool (#4158)
  docs: add integrated MCP server config to jetbrains tutorial  (#4120)
  docs: remove figma MCP from suggested servers (#4123)
  Blog: The AI Skeptic’s Guide to Context Windows (#4152)
  Docs: Auto-compact context (#4116)
  chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /documentation (#4149)
  Recipe config to limit tool availability (#4020)
  docs: fix warning message (#4148)
  feat: adds cursor-agent as a cli provider (#4101)
  chore: remove vector search tool selection strategy (#3933)
  docs: add streamable_http install links (#4130)
  feat: iterating on summarize oneshot prompt (#4113)
  feat(mcp): Persist OAuth credentials to keyring (#4007)
  Sanitize Tags Unicode Block at prompt level (#4047)
  Fixing typos (#4114)
  chore(release): release version 1.4.0 (#4069)
  E2E tests working again (#4103)
  chore: Delete ARCHITECTURE.md (#4108)
  Add Youtube short to Kiwi MCP tutorial (#4107)
  ...
zanesq added a commit that referenced this pull request Aug 18, 2025
…ackages

* 'main' of github.com:block/goose:
  fix: consistent font sizing in ToolCallWithResponse (#4167)
  Temporarily disable TODO Tool (#4158)
  docs: add integrated MCP server config to jetbrains tutorial  (#4120)
  docs: remove figma MCP from suggested servers (#4123)
  Blog: The AI Skeptic’s Guide to Context Windows (#4152)
  Docs: Auto-compact context (#4116)
  chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /documentation (#4149)
  Recipe config to limit tool availability (#4020)
  docs: fix warning message (#4148)
  feat: adds cursor-agent as a cli provider (#4101)
  chore: remove vector search tool selection strategy (#3933)
  docs: add streamable_http install links (#4130)

# Conflicts:
#	ui/desktop/src/components/MarkdownContent.tsx
michaelneale added a commit that referenced this pull request Aug 19, 2025
* main: (67 commits)
  blog: Transforming AI Assistance with Goose Mentor Mode (#4151)
  upgraded all npm packages and fixed related issues (#4072)
  Docs: @-mentions in goosehints (#4171)
  fix: consistent font sizing in ToolCallWithResponse (#4167)
  Temporarily disable TODO Tool (#4158)
  docs: add integrated MCP server config to jetbrains tutorial  (#4120)
  docs: remove figma MCP from suggested servers (#4123)
  Blog: The AI Skeptic’s Guide to Context Windows (#4152)
  Docs: Auto-compact context (#4116)
  chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /documentation (#4149)
  Recipe config to limit tool availability (#4020)
  docs: fix warning message (#4148)
  feat: adds cursor-agent as a cli provider (#4101)
  chore: remove vector search tool selection strategy (#3933)
  docs: add streamable_http install links (#4130)
  feat: iterating on summarize oneshot prompt (#4113)
  feat(mcp): Persist OAuth credentials to keyring (#4007)
  Sanitize Tags Unicode Block at prompt level (#4047)
  Fixing typos (#4114)
  chore(release): release version 1.4.0 (#4069)
  ...
michaelneale added a commit that referenced this pull request Aug 19, 2025
* main: (67 commits)
  blog: Transforming AI Assistance with Goose Mentor Mode (#4151)
  upgraded all npm packages and fixed related issues (#4072)
  Docs: @-mentions in goosehints (#4171)
  fix: consistent font sizing in ToolCallWithResponse (#4167)
  Temporarily disable TODO Tool (#4158)
  docs: add integrated MCP server config to jetbrains tutorial  (#4120)
  docs: remove figma MCP from suggested servers (#4123)
  Blog: The AI Skeptic’s Guide to Context Windows (#4152)
  Docs: Auto-compact context (#4116)
  chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /documentation (#4149)
  Recipe config to limit tool availability (#4020)
  docs: fix warning message (#4148)
  feat: adds cursor-agent as a cli provider (#4101)
  chore: remove vector search tool selection strategy (#3933)
  docs: add streamable_http install links (#4130)
  feat: iterating on summarize oneshot prompt (#4113)
  feat(mcp): Persist OAuth credentials to keyring (#4007)
  Sanitize Tags Unicode Block at prompt level (#4047)
  Fixing typos (#4114)
  chore(release): release version 1.4.0 (#4069)
  ...
zanesq added a commit that referenced this pull request Aug 19, 2025
…npm-cacheing

* 'main' of github.com:block/goose:
  Unlist figma tutorial (#4186)
  feat(ui): Implement in-place message editing with re-response (#3798)
  Retry all 500 codes (#4160)
  blog: Transforming AI Assistance with Goose Mentor Mode (#4151)
  upgraded all npm packages and fixed related issues (#4072)
  Docs: @-mentions in goosehints (#4171)
  fix: consistent font sizing in ToolCallWithResponse (#4167)
  Temporarily disable TODO Tool (#4158)
  docs: add integrated MCP server config to jetbrains tutorial  (#4120)
  docs: remove figma MCP from suggested servers (#4123)
  Blog: The AI Skeptic’s Guide to Context Windows (#4152)
  Docs: Auto-compact context (#4116)
  chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /documentation (#4149)
  Recipe config to limit tool availability (#4020)
  docs: fix warning message (#4148)
  feat: adds cursor-agent as a cli provider (#4101)
  chore: remove vector search tool selection strategy (#3933)
  docs: add streamable_http install links (#4130)
zanesq added a commit that referenced this pull request Aug 19, 2025
* 'main' of github.com:block/goose: (51 commits)
  Fix tests from upstream changes and add testing to lint staged and ci (#4127)
  Unlist figma tutorial (#4186)
  feat(ui): Implement in-place message editing with re-response (#3798)
  Retry all 500 codes (#4160)
  blog: Transforming AI Assistance with Goose Mentor Mode (#4151)
  upgraded all npm packages and fixed related issues (#4072)
  Docs: @-mentions in goosehints (#4171)
  fix: consistent font sizing in ToolCallWithResponse (#4167)
  Temporarily disable TODO Tool (#4158)
  docs: add integrated MCP server config to jetbrains tutorial  (#4120)
  docs: remove figma MCP from suggested servers (#4123)
  Blog: The AI Skeptic’s Guide to Context Windows (#4152)
  Docs: Auto-compact context (#4116)
  chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /documentation (#4149)
  Recipe config to limit tool availability (#4020)
  docs: fix warning message (#4148)
  feat: adds cursor-agent as a cli provider (#4101)
  chore: remove vector search tool selection strategy (#3933)
  docs: add streamable_http install links (#4130)
  feat: iterating on summarize oneshot prompt (#4113)
  ...

# Conflicts:
#	ui/desktop/src/App.test.tsx
ayax79 pushed a commit to ayax79/goose that referenced this pull request Aug 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants