Skip to content

Support multi-tool install requests#27640

Merged
zswang-oai merged 0 commit into
nm-codex/plugin-installs-extensionfrom
nm-codex/install-plugins-multiple-prompt
Jun 17, 2026
Merged

Support multi-tool install requests#27640
zswang-oai merged 0 commit into
nm-codex/plugin-installs-extensionfrom
nm-codex/install-plugins-multiple-prompt

Conversation

@nm-openai

@nm-openai nm-openai commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Why

Codex needs a single model-facing install request that can present either one recommendation or a grouped set of plugin/connector choices.

This is PR 1 of 4 in the review stack and remains the behavioral foundation. The extension refactor starts in #28796.

Paired Codex Apps PR: https://github.com/openai/openai/pull/1019331

What changed

  • replace the singular request_plugin_install flow with request_plugin_installs
  • support flat and categorized plugin/connector choices
  • preserve exact (tool_type, tool_id) validation against known discoverable tools
  • constrain the TUI to its supported single-entry presentation
  • keep picker responses minimal while preserving install metadata and lifecycle behavior

@nm-openai nm-openai changed the title Support grouped plugin install requests Simplify multi-tool install requests Jun 11, 2026
@nm-openai nm-openai changed the title Simplify multi-tool install requests Support multi-tool install requests Jun 11, 2026
@nm-openai nm-openai marked this pull request as ready for review June 15, 2026 00:24
@nm-openai nm-openai requested a review from a team as a code owner June 15, 2026 00:24

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

Copy link
Copy Markdown
Contributor

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: 6970178665

ℹ️ 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".

Comment thread codex-rs/tools/src/request_plugin_installs/mod.rs
Comment thread codex-rs/core/src/tools/handlers/request_plugin_installs.rs
Comment thread codex-rs/core/src/tools/handlers/request_plugin_install.rs Outdated
Comment thread codex-rs/core/src/tools/handlers/request_plugin_installs.rs
Comment thread codex-rs/core/src/tools/handlers/request_plugin_installs.rs
@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@zswang-oai zswang-oai force-pushed the nm-codex/install-plugins-multiple-prompt branch 2 times, most recently from 9346e5a to bf9bdbd Compare June 15, 2026 21:42
@zswang-oai

Copy link
Copy Markdown

I have read the CLA Document and I hereby sign the CLA

github-actions Bot added a commit that referenced this pull request Jun 15, 2026
@zswang-oai zswang-oai force-pushed the nm-codex/install-plugins-multiple-prompt branch 2 times, most recently from fb6dbdd to 5b5e13c Compare June 16, 2026 00:15
@zswang-oai zswang-oai marked this pull request as ready for review June 16, 2026 00:16
@zswang-oai zswang-oai force-pushed the nm-codex/install-plugins-multiple-prompt branch from 5b5e13c to 869eaa3 Compare June 16, 2026 00:17

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

Copy link
Copy Markdown
Contributor

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: 869eaa3a58

ℹ️ 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".

Comment on lines +70 to +71
parameters: JsonSchema::one_of(
vec![flat_picker_schema(), categorized_picker_schema()],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Badge Keep function parameters rooted at an object

When this tool is exposed, the Responses API receives a function parameters schema whose root is oneOf, but OpenAI's supported schema subset requires the root schema to be an object, not a root union (docs). This can make turns with tool-suggest enabled fail request validation before the model runs; keep the root as an object and let the handler enforce exactly one of entries or categories.

Useful? React with 👍 / 👎.

Comment thread codex-rs/core/src/tools/spec_plan.rs Outdated
Comment on lines 684 to 686
planned_tools.add(RequestPluginInstallHandler::new(
discoverable_tools.to_vec(),
));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Badge Hide the legacy install tool from the model

When tool suggestions are enabled, this registers the legacy request_plugin_install handler with the default direct exposure, so it is still sent in the model-visible tool list alongside request_plugin_installs. That leaves the model free to keep choosing the single-target contract even though the list-tool guidance now points to the new multi-install picker; register this handler dispatch-only so resumed calls still work without advertising the obsolete shape.

Useful? React with 👍 / 👎.

}
}

fn supports_parallel_tool_calls(&self) -> bool {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Badge Serialize install requests with other tools

When the model emits request_plugin_installs together with another parallel-capable call, this opt-in lets the runtime run them concurrently even though the tool description says not to call it in parallel and the handler waits on a user-facing picker. That can let other work proceed before the install decision/verification completes; leave this at the default non-parallel behavior for the new elicitation tool.

Useful? React with 👍 / 👎.

@zswang-oai zswang-oai force-pushed the nm-codex/install-plugins-multiple-prompt branch 2 times, most recently from 4afa5bf to e60b2a3 Compare June 16, 2026 17:15
@zswang-oai zswang-oai changed the base branch from main to dev/adaley/generalize-plugin-suggestion-tools June 16, 2026 17:32
@zswang-oai zswang-oai force-pushed the nm-codex/install-plugins-multiple-prompt branch from e60b2a3 to 2336949 Compare June 16, 2026 17:35
@adaley-openai adaley-openai force-pushed the dev/adaley/generalize-plugin-suggestion-tools branch from 0c7a6a4 to 8c9169f Compare June 16, 2026 22:23
Base automatically changed from dev/adaley/generalize-plugin-suggestion-tools to main June 16, 2026 22:44
@zswang-oai zswang-oai force-pushed the nm-codex/install-plugins-multiple-prompt branch 3 times, most recently from 11f472d to 259cc7a Compare June 17, 2026 18:44
@adaley-openai

adaley-openai commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Two small follow-ups from the endpoint work:

  • The recommendation-context description brings back IMPORTANT: DO NOT call this tool in parallel with other tools. We removed that intentionally, so can we leave it out here?
  • The PR description says the singular request_plugin_install remains registered as dispatch-only, but the current diff removes it. I am okay with dropping in-flight compatibility, so can we update the description to reflect the code rather than restoring the old handler?

@zswang-oai zswang-oai changed the base branch from main to nm-codex/plugin-installs-extension June 17, 2026 21:33
@zswang-oai zswang-oai force-pushed the nm-codex/install-plugins-multiple-prompt branch 2 times, most recently from eed5cec to 70df46b Compare June 17, 2026 22:14
@zswang-oai zswang-oai merged commit 70df46b into nm-codex/plugin-installs-extension Jun 17, 2026
21 of 22 checks passed
@zswang-oai zswang-oai force-pushed the nm-codex/plugin-installs-extension branch from 09faee0 to 01b4cab Compare June 17, 2026 22:14
@zswang-oai zswang-oai deleted the nm-codex/install-plugins-multiple-prompt branch June 17, 2026 22:14
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 17, 2026
@zswang-oai zswang-oai restored the nm-codex/install-plugins-multiple-prompt branch June 17, 2026 22:15
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants