mirror of
https://github.com/openai/codex.git
synced 2026-11-05 20:10:33 +00:00
## What changed - Add environment-provided MCP restrictions for configured and plugin-provided servers. - Disable attachment-scoped servers while their environment configuration is pending, failed, or unselected, while preserving selected-plugin access and the controller-owned Apps server. - Apply the resolved policy to runtime startup, model tool exposure, telemetry, OAuth flows, and skill dependency installation. ## Testing - Cover policy filtering for configured and plugin servers, environment state transitions, Apps ownership, and managed OAuth rejection. GitOrigin-RevId: 7ca5d4dda14068e758497f88835d5cba685e159e
58 lines
1.9 KiB
Rust
58 lines
1.9 KiB
Rust
use codex_core::config::Config;
|
|
use codex_extension_api::ExtensionFuture;
|
|
use codex_extension_api::ExtensionRegistryBuilder;
|
|
use codex_extension_api::McpServerContribution;
|
|
use codex_extension_api::McpServerContributionContext;
|
|
use codex_extension_api::McpServerContributor;
|
|
use codex_mcp::CODEX_APPS_MCP_SERVER_NAME;
|
|
use codex_mcp::hosted_plugin_runtime_mcp_server_config;
|
|
|
|
mod executor_plugin;
|
|
|
|
struct HostedPluginRuntimeExtension;
|
|
|
|
impl McpServerContributor<Config> for HostedPluginRuntimeExtension {
|
|
fn id(&self) -> &'static str {
|
|
"hosted_plugin_runtime"
|
|
}
|
|
|
|
fn contribute<'a>(
|
|
&'a self,
|
|
context: McpServerContributionContext<'a, Config>,
|
|
) -> ExtensionFuture<'a, Vec<McpServerContribution>> {
|
|
Box::pin(async move {
|
|
let config = context.config();
|
|
let name = CODEX_APPS_MCP_SERVER_NAME.to_string();
|
|
if !config.features.enabled(codex_features::Feature::Apps) {
|
|
return vec![McpServerContribution::Remove { name }];
|
|
}
|
|
|
|
vec![McpServerContribution::HostedApps {
|
|
config: Box::new(hosted_plugin_runtime_mcp_server_config(
|
|
&config.chatgpt_base_url,
|
|
config.apps_mcp_product_sku.as_deref(),
|
|
context.originator(),
|
|
)),
|
|
}]
|
|
})
|
|
}
|
|
}
|
|
|
|
pub fn install(builder: &mut ExtensionRegistryBuilder<Config>) {
|
|
builder.mcp_server_contributor(std::sync::Arc::new(HostedPluginRuntimeExtension));
|
|
}
|
|
|
|
/// Installs discovery for MCP servers declared by thread-selected executor plugins.
|
|
pub fn install_executor_plugins(
|
|
builder: &mut ExtensionRegistryBuilder<Config>,
|
|
environment_manager: std::sync::Arc<codex_exec_server::EnvironmentManager>,
|
|
) {
|
|
builder.mcp_server_contributor(std::sync::Arc::new(
|
|
executor_plugin::SelectedExecutorPluginMcpContributor::new(environment_manager),
|
|
));
|
|
}
|
|
|
|
#[cfg(test)]
|
|
#[path = "lib_tests.rs"]
|
|
mod tests;
|