codex --dangerously-bypass-approvals-and-sandbox

Mục lục

codex --dangerously-bypass-approvals-and-sandbox (alias --yolo) là cờ chạy Codex CLI ở chế độ tự duyệt mọi action và bỏ qua sandbox isolation. Đây là phiên bản tương đương --dangerously-skip-permissions của Claude Code - nhưng tên dài hơn, có chủ ý, để bạn phải nghĩ kỹ trước khi gõ.

Codex khác Claude và Gemini ở chỗ nào

Codex CLI tách approval và sandbox thành ba setting riêng biệt, không phải một switch:

  • approval_policy: khi nào dừng hỏi user (untrusted / on-request / on-failure / never)
  • sandbox_mode: scope của filesystem isolation (read-only / workspace-write / danger-full-access)
  • sandbox_workspace_write.network_access: có cho phép network egress không

Cờ --dangerously-bypass-approvals-and-sandbox set cùng lúc cả ba về mức tự do tối đa: approval_policy = never, sandbox_mode = danger-full-access, network egress mở.

Cú pháp cơ bản

codex --dangerously-bypass-approvals-and-sandbox "Refactor auth module and run tests"

Hoặc dùng alias:

codex --yolo "Refactor auth module"

Trong script CI nên dùng dạng dài để intent rõ ràng, đỡ người maintain sau lầm tưởng --yolo chỉ là vui đùa.

Headless cho CI/CD

Codex có sub-command codex exec (viết tắt codex e) chuyên cho scripted/non-interactive run:

codex exec --dangerously-bypass-approvals-and-sandbox \
  --cd /workspace \
  -m gpt-5.4 \
  "Apply the migration and commit the result"

Kết hợp --json--output-last-message để CI parse được kết quả:

codex exec --dangerously-bypass-approvals-and-sandbox \
  --json --output-last-message result.txt \
  "Build and deploy"

Bốn cấp độ tự do - chọn cấp đủ dùng

Đừng default nhảy thẳng vào full bypass. Codex có sẵn các mode mềm hơn nhưng vẫn nhanh:

Cấp 1 - --full-auto (recommend cho daily):

codex --full-auto "Run unit tests and fix failures"

Tương đương --ask-for-approval on-request --sandbox workspace-write. Network egress vẫn off mặc định. Tốt cho 90% task.

Cấp 2 - workspace-write có network:

codex -a never -s workspace-write \
  -c 'sandbox_workspace_write.network_access=true' \
  "Update deps and run migrate"

Khi cần npm install hoặc fetch API nhưng vẫn muốn sandbox khoá filesystem ngoài workspace.

Cấp 3 - danger-full-access có approval:

codex -a on-request -s danger-full-access "Deploy to production"

Bỏ sandbox nhưng vẫn prompt action nguy hiểm. Dùng khi cần touch system file ngoài workspace nhưng chưa muốn auto-execute.

Cấp 4 - full bypass:

codex --dangerously-bypass-approvals-and-sandbox "task"

Tự do tối đa. Chỉ dùng trong container/VM isolated.

Config profiles - khỏi gõ flag mỗi lần

Codex đọc ~/.codex/config.toml và support named profile. Setup file này một lần:

approval_policy = "on-request"
sandbox_mode = "workspace-write"

[profiles.networked]
approval_policy = "never"
sandbox_mode = "workspace-write"

[profiles.networked.sandbox_workspace_write]
network_access = true

[profiles.yolo]
approval_policy = "never"
sandbox_mode = "danger-full-access"

Sau đó:

codex -p networked "Update dependencies"
codex -p yolo "Non-interactive build"

Resolution order: CLI flag > profile > config.toml default > built-in default. Nếu setting không có hiệu lực, check xem có lớp cao hơn đang override không.

Permissions menu trong session

Trong session interactive, gõ /permissions để switch giữa Read-only / Auto / Full Access mà không cần restart CLI.

Protected paths - cái sandbox vẫn giữ

Ngay cả trong workspace-write, các path này vẫn read-only protected:

  • /.git - kể cả khi là pointer file gitdir
  • /.agents
  • /.codex

Recursive nên mọi thứ bên dưới các path này cũng readonly. Nếu agent cần ghi .git/config (vd push tag) thì phải dùng danger-full-access hoặc --add-dir.

Network whitelist nếu cần granular

Codex hỗ trợ DNS-based allowlist cho egress trong workspace-write:

[sandbox_workspace_write]
network_access = true
allowed_hosts = ["registry.npmjs.org", "api.github.com", "*.amazonaws.com"]

Codex check DNS lookup trước khi cho phép connect, block các hostname resolve về non-public IP. Không bullet-proof với DNS rebinding nhưng đủ để chặn data exfil cơ bản.

Bug đã biết

1. Trust prompt vẫn xuất hiện (v0.114.0+): kể cả với --dangerously-bypass-approvals-and-sandbox, Codex vẫn hỏi "Do you trust the contents of this directory?" khi chạy ở directory mới. Workaround: pre-register directory vào trust list, hoặc downgrade về v0.112.0.

2. app-server ignore bypass flag (v0.112.0): khi chạy codex app-server thay vì codex exec, tool command vẫn run trong read-only sandbox dù app-server start với bypass flag. Bug được track ở issue #14068.

3. WSL2 + drvfs path: nếu working directory ở /mnt/c/..., sandbox có thể intermittently re-enter mid-session. Workaround: copy project sang native Linux fs (~/workspace/...) hoặc dùng dev container.

Devcontainer chuẩn của OpenAI

OpenAI ship sẵn devcontainer config tại github.com/openai/codex/tree/main/.devcontainer. Bao gồm:

  • Codex CLI pre-installed
  • Bubblewrap cho sandbox layer
  • Firewall rule whitelist outbound (npm, GitHub, OpenAI API)
  • Default-deny tất cả egress còn lại

Trong devcontainer này, bạn có thể chạy:

codex --dangerously-bypass-approvals-and-sandbox "task"

Tương đối an toàn vì Docker container đã làm việc isolation rồi - Codex không cần tạo thêm sandbox layer thứ hai.

Cảnh báo bảo mật từ chính OpenAI

OpenAI document ghi rõ: "Devcontainer cung cấp substantial protection nhưng không ngăn được mọi attack. Nếu chạy Codex với --dangerously-bypass-approvals-and-sandbox bên trong container, một malicious project vẫn có thể exfiltrate bất cứ thứ gì available trong devcontainer, bao gồm Codex credential."

Nghĩa là: container không phải end-of-story. Đừng mount ~/.codex/auth.json, .ssh/, .aws/, browser keyring vào container chạy YOLO.

Recommendation

Daily work: --full-auto. Đủ nhanh, vẫn có sandbox.

Networked task (npm install, fetch API): -a never -s workspace-write -c 'sandbox_workspace_write.network_access=true'.

Unattended automation trong isolated CI: --dangerously-bypass-approvals-and-sandbox.

Đừng dùng full bypass làm default. Codex tách 3 trục approval/sandbox/network ra để bạn tune được risk - khai thác nó.

Tóm lại

So với Claude và Gemini, Codex có architecture an toàn hơn vì sandbox bật mặc định và 3 trục độc lập. Cờ --dangerously-bypass-approvals-and-sandbox chỉ là last resort, không phải first choice. Container + git checkpoint + profile config = workflow ổn định. Cứ --full-auto cho 90% task, nâng cấp lên bypass khi thật sự cần và môi trường đã đủ isolated.

Chia sẻ bài viết