Skip to content

[codex] Add danger-full-access denylist-only network mode#16946

Merged
viyatb-oai merged 2 commits intomainfrom
codex/viyatb/danger-full-access-denylist-only
Apr 7, 2026
Merged

[codex] Add danger-full-access denylist-only network mode#16946
viyatb-oai merged 2 commits intomainfrom
codex/viyatb/danger-full-access-denylist-only

Conversation

@viyatb-oai
Copy link
Copy Markdown
Collaborator

@viyatb-oai viyatb-oai commented Apr 6, 2026

Summary

This adds experimental_network.danger_full_access_denylist_only for orgs that want yolo / danger-full-access sessions to keep full network access while still enforcing centrally managed deny rules.

When the flag is true and the session sandbox is danger-full-access, the network proxy starts with:

  • domain allowlist set to *
  • managed domain deny entries enforced
  • upstream proxy use allowed
  • all Unix sockets allowed
  • local/private binding allowed

Caveat: the denylist is best effort only. In yolo / danger-full-access mode, Codex or the model can use an allowed socket or other local/private network path to bypass the proxy denylist, so this should not be treated as a hard security boundary.

The flag is intentionally scoped to SandboxPolicy::DangerFullAccess. Read-only and workspace-write modes keep the existing managed/user allowlist, denylist, Unix socket, and local-binding behavior. This does not enable the non-loopback proxy listener setting; that still requires its own explicit config.

This also threads the new field through config requirements parsing, app-server protocol/schema output, config API mapping, and the TUI debug config output.

How to use

Add the flag under [experimental_network] in the network policy config that is delivered to Codex. The setting is not under [permissions].

[experimental_network]
enabled = true
danger_full_access_denylist_only = true

[experimental_network.domains]
"blocked.example.com" = "deny"
"*.blocked.example.com" = "deny"

With that configuration, yolo / danger-full-access sessions get broad network access except for the managed denied domains above. The denylist remains a best-effort proxy policy because the session may still use allowed sockets to bypass it. Other sandbox modes do not get the wildcard domain allowlist or the socket/local-binding relaxations from this flag.

Verification

  • cargo test -p codex-config network_requirements
  • cargo test -p codex-core network_proxy_spec
  • cargo test -p codex-app-server map_requirements_toml_to_api
  • cargo test -p codex-tui debug_config_output
  • cargo test -p codex-app-server-protocol
  • just write-app-server-schema
  • just fmt
  • just fix -p codex-config -p codex-core -p codex-app-server-protocol -p codex-app-server -p codex-tui
  • just fix -p codex-core -p codex-config
  • git diff --check
  • cargo clean

Co-authored-by: Codex noreply@openai.com
Co-authored-by: Codex noreply@openai.com
@viyatb-oai viyatb-oai force-pushed the codex/viyatb/danger-full-access-denylist-only branch from f846f53 to 4df276f Compare April 7, 2026 01:40
@viyatb-oai viyatb-oai marked this pull request as ready for review April 7, 2026 02:10
@viyatb-oai viyatb-oai merged commit 9d13d29 into main Apr 7, 2026
59 of 68 checks passed
@viyatb-oai viyatb-oai deleted the codex/viyatb/danger-full-access-denylist-only branch April 7, 2026 02:38
@github-actions github-actions bot locked and limited conversation to collaborators Apr 7, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants