some more improvements

This commit is contained in:
viyatb-oai
2025-12-19 15:47:50 -08:00
parent f7648cf2b5
commit 73430c462f
7 changed files with 23 additions and 24 deletions
+6 -6
View File
@@ -23,8 +23,8 @@ use wildmatch::WildMatchPattern;
const NETWORK_PROXY_TABLE: &str = "network_proxy";
const NETWORK_PROXY_POLICY_TABLE: &str = "policy";
const ALLOWED_DOMAINS_KEY: &str = "allowedDomains";
const DENIED_DOMAINS_KEY: &str = "deniedDomains";
const ALLOWED_DOMAINS_KEY: &str = "allowed_domains";
const DENIED_DOMAINS_KEY: &str = "denied_domains";
#[derive(Debug, Clone, Deserialize)]
pub struct NetworkProxyBlockedRequest {
@@ -421,13 +421,13 @@ struct NetworkProxySection {
#[derive(Default, Deserialize)]
pub(crate) struct NetworkPolicy {
#[serde(default, rename = "allowedDomains")]
#[serde(default, rename = "allowed_domains", alias = "allowedDomains")]
allowed_domains: Vec<String>,
#[serde(default, rename = "deniedDomains")]
#[serde(default, rename = "denied_domains", alias = "deniedDomains")]
denied_domains: Vec<String>,
#[serde(default, rename = "allowUnixSockets")]
#[serde(default, rename = "allow_unix_sockets", alias = "allowUnixSockets")]
pub(crate) allow_unix_sockets: Vec<String>,
#[serde(default, rename = "allowLocalBinding")]
#[serde(default, rename = "allow_local_binding", alias = "allowLocalBinding")]
pub(crate) allow_local_binding: bool,
}
+2 -3
View File
@@ -93,13 +93,12 @@ impl SessionTask for UserShellCommandTask {
)
.await;
let sandbox_policy = SandboxPolicy::DangerFullAccess;
let exec_env = ExecEnv {
command: command.clone(),
cwd: cwd.clone(),
env: create_env(
&turn_context.shell_environment_policy,
&sandbox_policy,
&turn_context.sandbox_policy,
&turn_context.network_proxy,
),
expiration: USER_SHELL_TIMEOUT_MS.into(),
@@ -115,7 +114,7 @@ impl SessionTask for UserShellCommandTask {
tx_event: session.get_tx_event(),
});
let exec_result = execute_exec_env(exec_env, &sandbox_policy, stdout_stream)
let exec_result = execute_exec_env(exec_env, &turn_context.sandbox_policy, stdout_stream)
.or_cancel(&cancellation_token)
.await;
+4 -4
View File
@@ -52,13 +52,13 @@ impl Default for NetworkProxyConfig {
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NetworkPolicy {
#[serde(default, rename = "allowedDomains")]
#[serde(default, rename = "allowed_domains", alias = "allowedDomains")]
pub allowed_domains: Vec<String>,
#[serde(default, rename = "deniedDomains")]
#[serde(default, rename = "denied_domains", alias = "deniedDomains")]
pub denied_domains: Vec<String>,
#[serde(default, rename = "allowUnixSockets")]
#[serde(default, rename = "allow_unix_sockets", alias = "allowUnixSockets")]
pub allow_unix_sockets: Vec<String>,
#[serde(default, rename = "allowLocalBinding")]
#[serde(default, rename = "allow_local_binding", alias = "allowLocalBinding")]
pub allow_local_binding: bool,
}
+4 -4
View File
@@ -981,10 +981,10 @@ Valid values:
| `network_proxy.no_proxy` | array<string> | Hosts/IPs that bypass the proxy (default includes localhost + private network ranges). |
| `network_proxy.prompt_on_block` | boolean | Poll `/blocked` and prompt on denied requests (default: true). |
| `network_proxy.poll_interval_ms` | number | Admin poll interval in ms (default: 1000). |
| `network_proxy.policy.allowedDomains` | array<string> | Allowlist of domain patterns (denylist takes precedence). |
| `network_proxy.policy.deniedDomains` | array<string> | Denylist of domain patterns (takes precedence over allowlist). |
| `network_proxy.policy.allowLocalBinding` | boolean | Allow localhost binding when proxy-restricted (macOS only, default: false). |
| `network_proxy.policy.allowUnixSockets` | array<string> | Allow specific Unix socket paths when proxy-restricted (macOS only, default: []). |
| `network_proxy.policy.allowed_domains` | array<string> | Allowlist of domain patterns (denylist takes precedence). |
| `network_proxy.policy.denied_domains` | array<string> | Denylist of domain patterns (takes precedence over allowlist). |
| `network_proxy.policy.allow_local_binding` | boolean | Allow localhost binding when proxy-restricted (macOS only, default: false). |
| `network_proxy.policy.allow_unix_sockets` | array<string> | Allow specific Unix socket paths when proxy-restricted (macOS only, default: []). |
| `network_proxy.mitm.enabled` | boolean | Enable HTTPS MITM for read-only enforcement in limited mode (default: false). |
| `network_proxy.mitm.inspect` | boolean | Enable body inspection in MITM mode (default: false). |
| `network_proxy.mitm.max_body_bytes` | number | Max body bytes to buffer when inspection is enabled (default: 4096). |
+4 -4
View File
@@ -131,12 +131,12 @@ poll_interval_ms = 1000
[network_proxy.policy]
# Allow localhost binds inside the sandbox (macOS only). Default: false
allowLocalBinding = false
allow_local_binding = false
# Allow Unix socket paths inside the sandbox (macOS only). Default: []
allowUnixSockets = []
allow_unix_sockets = []
# Optional domain allow/deny lists (denylist wins)
allowedDomains = []
deniedDomains = []
allowed_domains = []
denied_domains = []
################################################################################
# Shell Environment Policy for spawned processes
+1 -1
View File
@@ -45,7 +45,7 @@ flowchart LR
The proxy reads `~/.codex/config.toml`:
- `[network_proxy]` for endpoints, mode, and toggles.
- `[network_proxy.policy]` for `allowedDomains` / `deniedDomains`.
- `[network_proxy.policy]` for `allowed_domains` / `denied_domains`.
- `[network_proxy.mitm]` for MITM CA paths and inspection settings.
Codex is the source of truth. Approval actions update the config and trigger a proxy reload.
+2 -2
View File
@@ -31,8 +31,8 @@ prompt_on_block = true
poll_interval_ms = 1000
[network_proxy.policy]
allowedDomains = ["example.com", "*.github.com"]
deniedDomains = ["metadata.google.internal", "169.254.*"]
allowed_domains = ["example.com", "*.github.com"]
denied_domains = ["metadata.google.internal", "169.254.*"]
[network_proxy.mitm]
enabled = false