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 và --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:
- kể cả khi là pointer file gitdir/.git /.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.
Hướng dẫn nhanh cho 2 model còn lại
Cùng nguyên tắc - chỉ khác cú pháp cờ và mức sandbox mặc định. Đọc bài tương ứng để dùng đúng:
Claude Code · claude --dangerously-skip-permissions
Tóm tắt: Bật chế độ bypassPermissions - Claude tự duyệt mọi tool call (edit file, bash, network). Tương đương --permission-mode bypassPermissions.
Cú pháp nhanh:
claude --dangerously-skip-permissions "Fix all lint errors"
Đặc điểm: Không tự sandbox, cần Docker bên ngoài. Hooks (PreToolUse) vẫn chạy nên có thể dùng làm guardrail. Subagent kế thừa bypass mode, không override được. Từ v2.1.126 bypass cả write vào protected paths.
An toàn nhất khi: chạy trong devcontainer Anthropic ship sẵn (firewall whitelist npm/GitHub/Claude API, default-deny egress).
Gemini CLI · gemini --yolo
Tóm tắt: YOLO mode auto-approve toàn bộ tool call. Khác Claude: Gemini tự bật sandbox Docker (gemini-cli-sandbox image) khi dùng cờ này.
Cú pháp nhanh:
gemini --yolo "fix all lint errors"
Hoặc dạng mới Google đang đẩy làm default:
gemini --approval-mode=yolo "fix all lint errors"
Đặc điểm: Có Policy Engine (yaml ở ~/.gemini/policies/) cho phép define hard-deny rule thắng cả YOLO. Có thể bật/tắt nhanh trong session bằng Ctrl+Y. Custom sandbox Dockerfile tại .gemini/sandbox.Dockerfile.
An toàn nhất khi: tận dụng Policy Engine để block rm -rf, git push, etc - kể cả khi YOLO bật vẫn an toàn.
Cả 3 cờ này đều là vũ khí mạnh nhất để tự động hoá long-running task / CI - và đều có khả năng phá máy nếu chạy bare metal. Containerize trước, git checkpoint trước, rồi mới gõ.
