Skip to content

feat (acp): exposed available tools in acp schema - #10097

Merged
lifeizhou-ap merged 5 commits into
mainfrom
lifei/add-support-available-tools
Jun 30, 2026
Merged

feat (acp): exposed available tools in acp schema#10097
lifeizhou-ap merged 5 commits into
mainfrom
lifei/add-support-available-tools

Conversation

@lifeizhou-ap

@lifeizhou-ap lifeizhou-ap commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

When we work on the Acp server, we deliberately hide the available tools attribute on extension and recipe extension schema. However users may already have existing config with this field. Discussion here

This PR exposes the available tools in acp schema to serve the existing extension config. For acp client if available tools is not defined or an empty list, it means all the tools are enabled for the extension.

Testing

Unit test and Manual

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 89e9fb0c62

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

return {
...extension,
description: extension.description ?? '',
available_tools: availableToolsOrUndefined(extension.available_tools),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve allowlists when selecting recipe extensions

When a configured extension has a non-empty allowlist, this line carries it into extensionsList, but the recipe picker rebuilds each option in RecipeExtensionSelector.toRecipeExtension without available_tools. In the recipe modal, selecting such an extension then saves it without the field; the backend treats an omitted allowlist as all tools, so the recipe silently widens tool access. Please carry available_tools through the selector's copied recipe extension.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c886b0d8f5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

display_name: config.display_name,
timeout: config.timeout,
bundled: config.bundled,
available_tools: availableToolsOrUndefined(config.available_tools),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve tool allowlists when updating extensions

For configured extensions with a non-empty allowlist, this conversion now carries available_tools into extensionsList, but the settings edit path rebuilds configs from form data in createExtensionConfig (which has no available_tools) before handleUpdateExtension calls addExtension. If a user opens an allowlisted extension in Settings and saves any change, this field is omitted on the write request here and the backend treats omission as all tools, widening access; please carry the original allowlist through updates.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

* main:
  feat (acp+): Remove REST onboarding setup paths (#10061)
  fix(test): stop flaky unparseable-tool-call test by disabling session naming (#10091)
  chore: Remove legacy MCP-UI proxy support (#10086)
@lifeizhou-ap
lifeizhou-ap force-pushed the lifei/add-support-available-tools branch from c886b0d to f034a74 Compare June 30, 2026 01:20

@michaelneale michaelneale left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense and default available if none I also agree with (least surprise)

@lifeizhou-ap
lifeizhou-ap added this pull request to the merge queue Jun 30, 2026
Merged via the queue into main with commit 2084c43 Jun 30, 2026
24 checks passed
@lifeizhou-ap
lifeizhou-ap deleted the lifei/add-support-available-tools branch June 30, 2026 05:51
lifeizhou-ap added a commit that referenced this pull request Jul 1, 2026
* main: (26 commits)
  Fix MCP app sandbox bridge lifecycle (#10064)
  fix(bedrock): send inference config (max_tokens, temperature) on Converse (#9889)
  feat(providers): support OpenRouter request parameters (#9276)
  Migrate local inference model management to ACP (#10124)
  (attempt to) fix disk space errors in linux release builds (#10024)
  feat: add --edit session flag to edit conversation before forking (#9799)
  feat: add iFlytek Spark and Astron MaaS providers (#9837)
  fix(desktop): dedupe Nostr session deep link imports (#9918)
  [codex] Add SessionStart hook parity outside CLI (#9970)
  feat(providers): add Fireworks AI declarative provider (#9990)
  fix(providers): don't retry deterministically-permanent 400s (thinking-block immutability) (#10005)
  fix(deps): downgrade pkcs8 to v0.10 to match sec1/pkcs1 v0.7 (#10119)
  chore(deps): bump actions/cache from 5.0.2 to 6.0.0 (#10051)
  Make OpenAI Responses API store param configurable (#10040)
  remove unsupported model (#10121)
  chore(release): bump version to 1.40.0 (minor) (#10099)
  move ollama provider into goose-providers (#9986)
  UI acp migratoin: Decouple desktop UI types from generated OpenAPI types (#10109)
  fix(otel): use async reqwest client so OTLP export works in `goose serve` mode (#10100)
  feat (acp): exposed available tools in acp schema (#10097)
  ...
lifeizhou-ap added a commit that referenced this pull request Jul 1, 2026
* main: (42 commits)
  Fix MCP app sandbox bridge lifecycle (#10064)
  fix(bedrock): send inference config (max_tokens, temperature) on Converse (#9889)
  feat(providers): support OpenRouter request parameters (#9276)
  Migrate local inference model management to ACP (#10124)
  (attempt to) fix disk space errors in linux release builds (#10024)
  feat: add --edit session flag to edit conversation before forking (#9799)
  feat: add iFlytek Spark and Astron MaaS providers (#9837)
  fix(desktop): dedupe Nostr session deep link imports (#9918)
  [codex] Add SessionStart hook parity outside CLI (#9970)
  feat(providers): add Fireworks AI declarative provider (#9990)
  fix(providers): don't retry deterministically-permanent 400s (thinking-block immutability) (#10005)
  fix(deps): downgrade pkcs8 to v0.10 to match sec1/pkcs1 v0.7 (#10119)
  chore(deps): bump actions/cache from 5.0.2 to 6.0.0 (#10051)
  Make OpenAI Responses API store param configurable (#10040)
  remove unsupported model (#10121)
  chore(release): bump version to 1.40.0 (minor) (#10099)
  move ollama provider into goose-providers (#9986)
  UI acp migratoin: Decouple desktop UI types from generated OpenAPI types (#10109)
  fix(otel): use async reqwest client so OTLP export works in `goose serve` mode (#10100)
  feat (acp): exposed available tools in acp schema (#10097)
  ...
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.

2 participants