mirror of
https://github.com/openai/codex.git
synced 2026-05-23 04:24:21 +00:00
[codex] Enable Node env proxy for managed network proxy (#23905)
## Summary - set `NODE_USE_ENV_PROXY=1` when Codex applies managed network proxy environment overrides - keep the Node opt-in in the proxy environment key set used by shell/runtime env handling - cover the new env var in the focused network proxy env test ## Why Codex already sets HTTP proxy environment variables for child processes when the managed network proxy is active. Node's built-in network behavior needs the `NODE_USE_ENV_PROXY` opt-in to honor those env vars, so Node-based skill scripts can otherwise skip the managed proxy path and fail under restricted network access. ## Validation - `just fmt` in `codex-rs` - `cargo test -p codex-network-proxy` in `codex-rs`
This commit is contained in:
@@ -366,12 +366,14 @@ pub const ALL_PROXY_ENV_KEYS: &[&str] = &["ALL_PROXY", "all_proxy"];
|
||||
pub const PROXY_ACTIVE_ENV_KEY: &str = "CODEX_NETWORK_PROXY_ACTIVE";
|
||||
pub const ALLOW_LOCAL_BINDING_ENV_KEY: &str = "CODEX_NETWORK_ALLOW_LOCAL_BINDING";
|
||||
const ELECTRON_GET_USE_PROXY_ENV_KEY: &str = "ELECTRON_GET_USE_PROXY";
|
||||
const NODE_USE_ENV_PROXY_ENV_KEY: &str = "NODE_USE_ENV_PROXY";
|
||||
#[cfg(any(target_os = "macos", test))]
|
||||
const GIT_SSH_COMMAND_ENV_KEY: &str = "GIT_SSH_COMMAND";
|
||||
pub const PROXY_ENV_KEYS: &[&str] = &[
|
||||
PROXY_ACTIVE_ENV_KEY,
|
||||
ALLOW_LOCAL_BINDING_ENV_KEY,
|
||||
ELECTRON_GET_USE_PROXY_ENV_KEY,
|
||||
NODE_USE_ENV_PROXY_ENV_KEY,
|
||||
"HTTP_PROXY",
|
||||
"HTTPS_PROXY",
|
||||
"http_proxy",
|
||||
@@ -525,6 +527,8 @@ fn apply_proxy_env_overrides(
|
||||
ELECTRON_GET_USE_PROXY_ENV_KEY.to_string(),
|
||||
"true".to_string(),
|
||||
);
|
||||
// Node.js built-in HTTP clients only honor proxy environment variables when this is enabled.
|
||||
env.insert(NODE_USE_ENV_PROXY_ENV_KEY.to_string(), "1".to_string());
|
||||
|
||||
// Keep HTTP_PROXY/HTTPS_PROXY as HTTP endpoints. A lot of clients break if
|
||||
// those vars contain SOCKS URLs. We only switch ALL_PROXY here.
|
||||
@@ -1016,6 +1020,7 @@ mod tests {
|
||||
env.get(ELECTRON_GET_USE_PROXY_ENV_KEY),
|
||||
Some(&"true".to_string())
|
||||
);
|
||||
assert_eq!(env.get(NODE_USE_ENV_PROXY_ENV_KEY), Some(&"1".to_string()));
|
||||
#[cfg(target_os = "macos")]
|
||||
assert_eq!(
|
||||
env.get(GIT_SSH_COMMAND_ENV_KEY),
|
||||
|
||||
Reference in New Issue
Block a user