diff --git a/codex-rs/core/src/session/mcp.rs b/codex-rs/core/src/session/mcp.rs index afec74ffe8..cdcc15b573 100644 --- a/codex-rs/core/src/session/mcp.rs +++ b/codex-rs/core/src/session/mcp.rs @@ -137,7 +137,12 @@ impl Session { ) .await; let mcp_config = self - .project_selected_environment_mcp_servers(config, &environments, mcp_projection) + .project_selected_environment_mcp_servers( + &session_source, + config, + &environments, + mcp_projection, + ) .await .config; let local_process_cwd = environments @@ -281,6 +286,7 @@ impl Session { .await; let mcp_projection = self .project_selected_environment_mcp_servers( + &desired.session_source, &desired.config, &desired.environments, mcp_projection, diff --git a/codex-rs/core/src/session/mcp_runtime.rs b/codex-rs/core/src/session/mcp_runtime.rs index 5a43effef0..9802e7e4c3 100644 --- a/codex-rs/core/src/session/mcp_runtime.rs +++ b/codex-rs/core/src/session/mcp_runtime.rs @@ -144,14 +144,13 @@ impl Session { /// Adds effective executor-owned configuration from this exact thread snapshot. pub(super) fn project_selected_environment_mcp_servers<'a>( &'a self, + session_source: &'a SessionSource, config: &'a Config, environments: &'a TurnEnvironmentSnapshot, mut projection: McpRuntimeProjection, ) -> BoxFuture<'a, McpRuntimeProjection> { Box::pin(async move { - if crate::guardian::is_guardian_reviewer_source( - &self.state.lock().await.session_configuration.session_source, - ) { + if crate::guardian::is_guardian_reviewer_source(session_source) { return projection; } @@ -286,6 +285,7 @@ impl Session { ) { let mcp_projection = self .project_selected_environment_mcp_servers( + &desired.session_source, &desired.config, &desired.environments, mcp_projection,