diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs
index f1534cf0f7..95449f51a7 100644
--- a/codex-rs/core/src/lib.rs
+++ b/codex-rs/core/src/lib.rs
@@ -49,6 +49,7 @@ mod mcp_tool_call;
mod mentions;
mod message_history;
mod model_provider_info;
+mod network_proxy;
pub mod parse_command;
pub mod path_utils;
pub mod personality_migration;
diff --git a/codex-rs/core/src/network_proxy.rs b/codex-rs/core/src/network_proxy.rs
new file mode 100644
index 0000000000..78214fb145
--- /dev/null
+++ b/codex-rs/core/src/network_proxy.rs
@@ -0,0 +1,72 @@
+use anyhow::Context;
+use anyhow::Result;
+use std::path::Path;
+use std::process::Stdio;
+use tokio::process::Child;
+use tokio::process::Command;
+use tokio::time::Duration;
+use tokio::time::timeout;
+
+pub(crate) struct ManagedNetworkProxy {
+ child: Child,
+}
+
+impl ManagedNetworkProxy {
+ pub(crate) async fn maybe_start(codex_home: &Path, enabled: bool) -> Result