mirror of
https://github.com/openai/codex.git
synced 2026-11-14 06:48:26 +00:00
Add dynamic HTTP header helpers for MCP servers (#38245)
## What changed - Add `http_headers_helper` configuration for local streamable HTTP MCP servers. The configured shell command runs once per connection and returns a JSON object of headers that is cached across requests. - Apply helper headers to MCP startup and OAuth flows while restricting them to the server origin, stopping redirects, rejecting reserved or duplicate headers, and enforcing output and execution limits. - Reject helpers for remote or managed-disabled servers, use the local environment working directory, and redact helper commands from `codex mcp list` and `codex mcp get` output. ## Testing - Cover configuration validation, helper lifecycle and output parsing, origin isolation, OAuth discovery and token refresh, managed requirements, environment selection, and CLI redaction. GitOrigin-RevId: 84e0e26ce75520b0869d37c72b1678e033bd6818
This commit is contained in:
1 parent
8d4d57387a
commit
379cb68444
38 files changed
+1285
-72
No files matched your search
@@ -96,11 +96,12 @@ impl Session {
|
||||
config: &Config,
|
||||
) -> (McpConfig, McpRuntimeContext) {
|
||||
let originator = self.originator().await;
|
||||
let (windows_sandbox_level, session_source) = {
|
||||
let (windows_sandbox_level, session_source, host_fallback_cwd) = {
|
||||
let state = self.state.lock().await;
|
||||
(
|
||||
state.session_configuration.windows_sandbox_level,
|
||||
state.session_configuration.session_source.clone(),
|
||||
state.session_configuration.cwd().clone(),
|
||||
)
|
||||
};
|
||||
let environments = self.services.turn_environments.snapshot().await;
|
||||
@@ -133,14 +134,13 @@ impl Session {
|
||||
)
|
||||
.await
|
||||
.config;
|
||||
let local_stdio_fallback_cwd = environments
|
||||
.primary()
|
||||
.and_then(|environment| environment.cwd().to_abs_path().ok())
|
||||
let local_process_cwd = environments
|
||||
.local_environment_cwd()
|
||||
.map(|cwd| cwd.to_path_buf())
|
||||
.unwrap_or_else(|| config.cwd.to_path_buf());
|
||||
.unwrap_or_else(|| host_fallback_cwd.to_path_buf());
|
||||
let runtime_context = McpRuntimeContext::new(
|
||||
self.services.turn_environments.environment_manager(),
|
||||
local_stdio_fallback_cwd,
|
||||
local_process_cwd,
|
||||
);
|
||||
(mcp_config, runtime_context)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user