mirror of
https://github.com/openai/codex.git
synced 2026-11-09 00:39:32 +00:00
Give hosted Codex Apps an independent MCP protocol opt-in (#44318)
## Why Hosted Codex Apps shared the `mcp_2026_07_28` protocol setting with other MCP servers, preventing independent protocol selection. ## What changed - Add `features.codex_apps_mcp_2026_07_28`, disabled by default, for the host-owned HTTP `codex_apps` server. Enabling it attempts 2026-07-28 discovery with Legacy fallback. - Keep other servers, including third-party registrations with Apps-like names or URLs and local stdio servers, governed by `mcp_2026_07_28`. - Support the new flag through `experimentalFeature/enablement/set` and refresh protocol settings in existing sessions. Track protocol mode per server when deciding whether to reuse connections. ## Testing Add coverage for independent feature and protocol selection, hosted event-stream protocol selection, standalone Legacy defaults and discovery fallback, and runtime enablement refreshing an existing app-server thread. GitOrigin-RevId: 640e8e251f0c45e5f4829cc2b73c3082cf42f715
This commit is contained in:
1 parent
e1b23086ac
commit
eb680c0558
18 files changed
+431
-19
No files matched your search
@@ -1931,6 +1931,18 @@ impl Session {
|
||||
config.mcp_servers = next_config.mcp_servers.clone();
|
||||
config.mcp_optional_startup_grace = next_config.mcp_optional_startup_grace;
|
||||
config.mcp_oauth_credentials_store_mode = next_config.mcp_oauth_credentials_store_mode;
|
||||
if let Err(err) = config.features.set_enabled(
|
||||
Feature::Mcp20260728,
|
||||
next_config.features.enabled(Feature::Mcp20260728),
|
||||
) {
|
||||
warn!("failed to refresh MCP protocol config: {err}");
|
||||
}
|
||||
if let Err(err) = config.features.set_enabled(
|
||||
Feature::CodexAppsMcp20260728,
|
||||
next_config.features.enabled(Feature::CodexAppsMcp20260728),
|
||||
) {
|
||||
warn!("failed to refresh Codex Apps MCP protocol config: {err}");
|
||||
}
|
||||
if let Err(err) = config.features.set_enabled(
|
||||
Feature::SecretAuthStorage,
|
||||
next_config.features.enabled(Feature::SecretAuthStorage),
|
||||
@@ -1987,6 +1999,18 @@ impl Session {
|
||||
config.mcp_servers = next_config.mcp_servers;
|
||||
config.mcp_optional_startup_grace = next_config.mcp_optional_startup_grace;
|
||||
config.mcp_oauth_credentials_store_mode = next_config.mcp_oauth_credentials_store_mode;
|
||||
if let Err(err) = config.features.set_enabled(
|
||||
Feature::Mcp20260728,
|
||||
next_config.features.enabled(Feature::Mcp20260728),
|
||||
) {
|
||||
warn!("failed to refresh MCP protocol config: {err}");
|
||||
}
|
||||
if let Err(err) = config.features.set_enabled(
|
||||
Feature::CodexAppsMcp20260728,
|
||||
next_config.features.enabled(Feature::CodexAppsMcp20260728),
|
||||
) {
|
||||
warn!("failed to refresh Codex Apps MCP protocol config: {err}");
|
||||
}
|
||||
if let Err(err) = config.features.set_enabled(
|
||||
Feature::SecretAuthStorage,
|
||||
next_config.features.enabled(Feature::SecretAuthStorage),
|
||||
|
||||
Reference in new issue
Block a user