Codex cứ hỏi xin phê duyệt? Giải thích approval policy, sandbox và “don’t ask again”
Codex hỏi xin phê duyệt khi một lệnh cần ra khỏi sandbox. Phần lớn lời phàn nàn “nó cứ hỏi mãi” đến từ sandbox quá chặt, một thiết lập không còn tồn tại, hoặc một lần chọn “don’t ask again” chỉ có hiệu lực trong phiên.
TRẢ LỜI NGẮN
Trong Codex hiện tại, approval_policy là on-request (mặc định: mô hình hỏi khi cần), never, hoặc một bảng granular; untrusted đã bị loại bỏ và on-failure giờ chỉ là tên khác của on-request. Điều quyết định bạn bị hỏi thường xuyên đến đâu chủ yếu là sandbox: với sandbox_mode = "workspace-write", Codex chỉnh sửa và chạy lệnh bên trong dự án của bạn mà không hỏi. Với những lệnh bạn luôn tin cậy, hãy thêm một prefix_rule với decision = "allow" vào ~/.codex/rules/default.rules. Tùy chọn “don’t ask again for commands that start with …” cũng lưu quy tắc vào chính tệp này.
Trước tiên: những gì đã thay đổi trong Codex
Nhiều hướng dẫn và câu trả lời trên diễn đàn mô tả những thiết lập không còn hoạt động. Trước khi điều chỉnh bất cứ điều gì, hãy đối chiếu ~/.codex/config.toml của bạn với danh sách này:
| Thiết lập cũ | Hiện nay |
|---|---|
approval_policy = "untrusted" | Đã bị loại bỏ. Codex báo “approval_policy = "untrusted" is no longer supported; remove this setting” (approval_policy = "untrusted" không còn được hỗ trợ; hãy xóa thiết lập này). Tài liệu đề xuất dùng sandbox_mode = "read-only" với on-request thay thế. |
approval_policy = "on-failure" | Vẫn được chấp nhận, nhưng chỉ như một bí danh của on-request. |
--full-auto | Không còn trong tài liệu tham khảo CLI. Cờ gần nhất là --approve-for-me (bí danh --not-so-yolo): tự động xem xét phê duyệt với on-request và sandbox workspace-write. |
[profiles.name] bên trong config.toml | Từ Codex 0.134.0, --profile name đọc $CODEX_HOME/name.config.toml thay thế. Một khóa profile = "x" còn sót lại giờ sẽ gây lỗi. |
/approvals | Dùng /permissions (“Set what Codex can do without asking first.”) |
Tài liệu của Codex cũng đã chuyển chỗ: các trang cũ developers.openai.com/codex giờ chuyển hướng đến learn.chatgpt.com.
Codex quyết định hỏi như thế nào
Hai thiết lập phối hợp với nhau. Sandbox giới hạn những gì một lệnh có thể chạm tới: tệp ngoài dự án, mạng. Approval policy quyết định điều gì xảy ra khi một lệnh cần nhiều hơn mức sandbox cho phép.
| sandbox_mode | Những gì Codex làm được mà không hỏi |
|---|---|
read-only (mặc định) | Đọc tệp và chạy lệnh trong sandbox chỉ đọc |
workspace-write | Tự động đọc, chỉnh sửa và chạy lệnh trong thư mục làm việc |
danger-full-access | Mọi thứ, không có sandbox. Không khuyến nghị |
| approval_policy | Hành vi |
|---|---|
on-request (mặc định) | Mô hình quyết định khi nào cần hỏi. Các lệnh được sandbox cho phép chạy mà không cần phê duyệt |
never | Không bao giờ hỏi. Mọi thứ thất bại được trả lại cho mô hình, không chuyển lên cho bạn |
{ granular = { … } } | Giữ một số loại lời nhắc ở dạng tương tác và tự động từ chối phần còn lại (sandbox_approval, rules, skill_approval, request_permissions, mcp_elicitations) |
Vì vậy nếu bạn đang ở read-only, mọi chỉnh sửa đều cần bạn đồng ý. Đó là nguyên nhân phổ biến nhất của tình trạng “Codex hỏi mọi thứ”. Ngay cả trong workspace-write, .git, .codex, .agents và .aws vẫn ở chế độ chỉ đọc, và truy cập mạng bị tắt trừ khi bạn bật nó.
Đây là cấu hình mẫu từ tài liệu của OpenAI, kèm giải thích các tùy chọn workspace:
Các phiên bản mới hơn cũng cung cấp profile quyền (default_permissions với các profile dựng sẵn :read-only, :workspace và :danger-full-access). Hãy dùng profile hoặc sandbox_mode, đừng dùng cả hai.
Preset trong CLI, tiện ích mở rộng IDE và ứng dụng
Bạn không cần chỉnh sửa TOML. Trong CLI, /permissions mở danh sách preset; trong ứng dụng và tiện ích mở rộng IDE có một nút điều khiển quyền bên dưới ô soạn tin. Các preset trong CLI là:
- Read Only: đọc workspace; cần phê duyệt để chỉnh sửa tệp hoặc truy cập internet.
- Default: chỉnh sửa bên trong workspace; cần phê duyệt để truy cập internet hoặc chỉnh sửa các tệp khác.
- Full Access: chỉnh sửa bên ngoài workspace và dùng internet mà không hỏi.
Ứng dụng và tiện ích mở rộng IDE mô tả cùng lựa chọn đó là Ask for approval, Approve for me và Full access. Các ảnh chụp màn hình IDE cũ hơn gọi chúng là Chat, Agent và Agent (Full Access).
Cho phép các lệnh cụ thể bằng quy tắc
Khi bạn muốn Codex chạy một lệnh bên ngoài sandbox mà không hỏi (chẳng hạn gh pr view), hãy viết một quy tắc. Quy tắc vẫn đang ở giai đoạn thử nghiệm và nằm trong một tệp .rules thuộc thư mục rules/ cạnh một lớp cấu hình, ví dụ ~/.codex/rules/default.rules:
allow: chạy bên ngoài sandbox mà không hiện lời nhắc.prompt: hỏi trước mỗi lệnh khớp.forbidden: chặn mà không hỏi.
Khi nhiều quy tắc cùng khớp, quy tắc nghiêm ngặt nhất sẽ thắng: forbidden thắng prompt, còn mức ở giữa này lại thắng allow. Hãy kiểm tra một lệnh bằng codex execpolicy check trước khi dựa vào một quy tắc.
“Don’t ask again” thực sự lưu gì
Lời nhắc phê duyệt trong Codex CLI đưa ra nhiều kiểu “yes”, và thời gian hiệu lực của chúng rất khác nhau:
| Tùy chọn | Hiệu lực bao lâu |
|---|---|
| Yes, proceed | Chỉ lệnh này |
Yes, and don’t ask again for commands that start with <prefix> | Vĩnh viễn (được ghi thành quy tắc vào ~/.codex/rules/default.rules) |
| Yes, and don’t ask again for this command in this session | Đến khi phiên kết thúc |
| Yes, and don’t ask again for these files | Chỉnh sửa tệp, trong phiên này |
Nếu bạn cứ chọn tùy chọn theo phiên, ngày mai bạn sẽ lại bị hỏi. Hãy chọn tùy chọn prefix, hoặc tự viết quy tắc.
Codex trên Windows
Windows là nơi tình trạng “nó hỏi mọi thứ” tệ nhất. Trong issue #10187, một thành viên nhóm OpenAI đã giải thích lý do: “Without a sandboxing mechanism, all tool calls need to be manually approved on Windows.” (Không có cơ chế sandbox, mọi lệnh gọi công cụ trên Windows đều phải được phê duyệt thủ công.) Codex giờ đã có sandbox Windows gốc và dùng nó theo mặc định:
mxc: sandbox được khuyến nghị trên các thiết bị Windows tương thích.elevated: phương án dự phòng ưu tiên khi không có MXC.unelevated: phương án dự phòng cũ.
Chạy /setup-default-sandbox trong CLI để thiết lập sandbox elevated (hoặc codex sandbox setup --elevated dành cho bộ phận IT). Khuyến nghị dùng Windows 11; Windows 10 1809 trở lên chỉ được hỗ trợ ở mức best-effort. Nếu bạn làm việc trong WSL, Codex dùng sandbox Linux của nó ở đó, và WSL1 không còn được hỗ trợ.
Cấu hình dự án chỉ được nạp trong dự án tin cậy
Tệp .codex/config.toml bên trong repo chỉ được đọc khi bạn tin cậy dự án. Nếu cài đặt dự án của bạn có vẻ bị bỏ qua, đó là lý do. Một mục trust trong cấu hình người dùng trông như sau:
Cài đặt được xếp lớp, cao nhất trước: cờ dòng lệnh và ghi đè -c, .codex/config.toml của dự án tin cậy, tệp --profile, ~/.codex/config.toml của bạn, rồi đến giá trị mặc định của hệ thống.
Về --yolo
--dangerously-bypass-approvals-and-sandbox (bí danh --yolo) chạy mọi lệnh mà không có phê duyệt hay sandbox. Mã nguồn mô tả nó là “EXTREMELY DANGEROUS. Intended solely for running in environments that are externally sandboxed.” (CỰC KỲ NGUY HIỂM. Chỉ dành để chạy trong môi trường đã được sandbox từ bên ngoài.) approval_policy = "never" cùng với danger-full-access làm điều tương tự từ tệp cấu hình. Nếu bạn chỉ muốn ít lời nhắc hơn, workspace-write cộng thêm vài quy tắc allow là đủ, mà sandbox vẫn bật.
Với những lời nhắc bạn giữ lại
Khi Codex chỉ còn hỏi về những điều quan trọng (mạng, tệp ngoài dự án, một lần push), vấn đề còn lại là nhận ra câu hỏi. Pet Island đưa các yêu cầu phê duyệt lệnh và chỉnh sửa tệp của Codex lên một island nhỏ ở phía trên màn hình, kèm lệnh hoặc diff, để bạn cho phép hoặc từ chối mà không phải đi tìm đúng terminal. Island cho biết khi nào Codex đang làm việc và khi nào đã xong, và câu hỏi của Codex đưa bạn đến đúng cửa sổ chỉ với một cú nhấp. Pet Island hoạt động với Codex CLI và ứng dụng Codex, và nếu island đã đóng, Codex sẽ hỏi trong cửa sổ của chính nó như bình thường.
Câu hỏi thường gặp
Làm sao để Codex không hỏi xin phê duyệt liên tục?
Dùng sandbox_mode = "workspace-write" để Codex có thể chỉnh sửa và chạy lệnh bên trong dự án, giữ approval_policy = "on-request", và thêm các mục prefix_rule với decision = "allow" vào ~/.codex/rules/default.rules cho những lệnh bạn luôn tin cậy.
approval_policy = "untrusted" còn được hỗ trợ không?
Không. Codex hiện tại từ chối nó với thông báo “approval_policy = "untrusted" is no longer supported; remove this setting”. Hãy dùng sandbox_mode = "read-only" với approval_policy = "on-request" thay thế.
Chuyện gì đã xảy ra với --full-auto?
Nó không còn trong tài liệu tham khảo Codex CLI. Tùy chọn gần nhất là --approve-for-me (bí danh --not-so-yolo), dùng tính năng tự động xem xét phê duyệt với on-request và sandbox workspace-write.
Vì sao “don’t ask again” không được ghi nhớ?
“Don’t ask again for this command in this session” chỉ có hiệu lực trong phiên. Hãy chọn “don’t ask again for commands that start with …”, tùy chọn này lưu một quy tắc vào ~/.codex/rules/default.rules.
Vì sao Codex hỏi nhiều hơn trên Windows?
Không có sandbox thì mọi lệnh gọi công cụ đều cần phê duyệt. Codex giờ dùng sandbox Windows gốc theo mặc định; hãy chạy /setup-default-sandbox nếu nó chưa được thiết lập.
Vì sao tệp .codex/config.toml của dự án bị bỏ qua?
Codex chỉ nạp cấu hình dự án cho các dự án tin cậy.
Nguồn
Mọi thiết lập và hành vi trên trang này đã được đối chiếu với các trang sau vào 26 tháng 10 năm 2026. Agent thay đổi rất nhanh; nếu có điều gì không còn khớp, trang chính thức là chuẩn.
- OpenAI: Codex agent approvals and security
- OpenAI: Codex permission modes
- OpenAI: Codex config basics
- OpenAI: Codex sample config
- OpenAI: Codex rules
- OpenAI: Codex Windows sandbox
- OpenAI: Codex CLI reference
- OpenAI: Codex slash commands
- Mã nguồn openai/codex (lời nhắc phê duyệt, lỗi cấu hình)
- Issue #10187: Codex repeatedly asks for command approval
- Issue #5131: Always have to approve file edits
- Issue #29406: Approval prompt persists despite don’t ask again