mirror of
https://github.com/openai/codex.git
synced 2026-10-30 19:18:49 +00:00
some more improvements
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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). |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user