config.toml của Codex cho nhà cung cấp API tùy chỉnh: chỉ còn Responses từ năm 2026

Wokey Team · 2026-09-24

Trả lời ngắn: để trỏ Codex đến một API bên thứ ba, hãy định nghĩa một provider tùy chỉnh trong ~/.codex/config.toml, đặt base_url là địa chỉ gateway, và đặt khóa của bạn vào biến môi trường có tên do env_key chỉ định. Giao thức truyền phải là Responses. Codex đã gỡ hỗ trợ Chat Completions vào tháng 2 năm 2026, và wire_api = "chat" giờ sẽ lỗi ngay khi khởi động, nên phần lớn các hướng dẫn vẫn dùng wire_api = "chat" không còn chạy được nữa.

Cấu hình dưới đây hoạt động trên các bản phát hành Codex CLI hiện tại. Mọi chuỗi lỗi trong hướng dẫn này đều được trích từ mã nguồn Codex hoặc từ phản hồi thực tế của API Wokey.

Cấu hình đầy đủ (sao chép và dán)

# ~/.codex/config.toml
model = "gpt-6-sol"
model_provider = "wokey"

[model_providers.wokey]
name = "Wokey"
base_url = "https://api.wokey.ai"
env_key = "WOKEY_API_KEY"
wire_api = "responses"
export WOKEY_API_KEY="your Wokey API key"
codex

Vai trò của từng trường:

Trường Mục đích Lỗi thường gặp
model_provider Khóa cấp cao nhất chỉ định bảng [model_providers.<id>] sẽ dùng Nếu bỏ trống, Codex vẫn dùng provider openai tích hợp sẵn và yêu cầu bạn đăng nhập ChatGPT
base_url Địa chỉ gateway; Codex nối thêm /responses Đừng tự thêm /responses, nếu không yêu cầu sẽ đi đến /responses/responses
env_key Tên của biến môi trường chứa khóa; Codex gửi nó dưới dạng Authorization: Bearer Đây là tên biến, không phải bản thân khóa
wire_api Giao thức truyền; "responses" là giá trị hợp lệ duy nhất và là mặc định "chat" sẽ lỗi khi khởi động

Trên Wokey, base_url có thể là https://api.wokey.ai hoặc https://api.wokey.ai/v1; gateway phục vụ cả /responses lẫn /v1/responses. Với các gateway khác, hãy làm theo tài liệu của họ: nhiều gateway chỉ đăng ký các đường dẫn /v1.

Tên biến do bạn tự chọn. OPENAI_API_KEY vẫn dùng được, nhưng nếu bạn cũng dùng API chính thức của OpenAI, một biến WOKEY_API_KEY riêng sẽ giúp hai khóa không ghi đè lên nhau.

Vì sao các hướng dẫn cũ không còn chạy

Mốc thời gian:

Từ đó, WireApi của Codex chỉ còn một giá trị là Responses. Nếu cấu hình vẫn còn wire_api = "chat", Codex sẽ lỗi khi khởi động với:

`wire_api = "chat"` is no longer supported.
How to fix: set `wire_api = "responses"` in your provider config.
More info: https://github.com/openai/codex/discussions/7782

Hãy đổi thành wire_api = "responses" hoặc xóa dòng đó. Điều này cũng có nghĩa là một gateway chỉ hỗ trợ Chat Completions không còn phục vụ được Codex: hãy kiểm tra xem có endpoint /v1/responses không trước khi chọn.

Các thiết lập khác đã lỗi thời hoặc bị bỏ qua

api_key bên trong bảng provider. Codex từ chối các trường không xác định trong cấu hình provider, nên một dòng api_key = "sk-..." sẽ khiến cấu hình không parse được. Hãy truyền khóa qua biến có tên do env_key chỉ định. Nếu thực sự phải đặt token trong tệp, trường đó là experimental_bearer_token, dù cách này không được khuyến nghị.

[profiles.xxx] và profile = "xxx" ở cấp cao nhất. Từ Codex 0.134.0, --profile xxx phủ lên ~/.codex/xxx.config.toml. Các bảng [profiles.xxx] trong config.toml không còn được đọc, và profile = ở cấp cao nhất không còn được hỗ trợ. Để chuyển giữa tài khoản chính thức và một gateway, hãy đặt provider Wokey trong ~/.codex/wokey.config.toml và khởi chạy bằng codex --profile wokey.

Provider trong .codex/config.toml của dự án. Cấu hình cấp dự án bỏ qua model_provider và model_providers. Provider chỉ có thể được định nghĩa trong ~/.codex/ ở thư mục home của bạn.

ID provider openai, ollama hoặc lmstudio. Các ID này được dành riêng cho provider tích hợp sẵn và không thể dùng để định nghĩa provider tùy chỉnh. Hãy dùng tên khác, chẳng hạn wokey.

Nên dùng mô hình nào

Codex chỉ gửi yêu cầu Responses, nên hãy ưu tiên các mô hình phục vụ /v1/responses gốc. Trên Wokey, hiện bao gồm dòng GPT (gpt-6-sol, gpt-6-luna, gpt-6-astra, gpt-5.6-sol), dòng Grok (grok-4.7, grok-4.6) và deepseek-v4.1-flash. Danh sách "Supported endpoints" trên mỗi trang mô hình là nguồn chính xác, và danh mục mô hình thay đổi theo thời gian.

Các mô hình không có Responses gốc, chẳng hạn những mô hình chỉ ghi Chat Completions, vẫn dùng được từ Codex trên Wokey. Gateway chuyển đổi yêu cầu sang giao thức của upstream và chuyển kết quả ngược lại thành Responses. Tuy nhiên việc chuyển đổi này có mất mát:

  • Một số công cụ riêng của Codex bị bỏ khi chuyển sang Chat Completions, chẳng hạn apply_patch dạng tự do, local_shell và web_search tích hợp sẵn.
  • Các lệnh gọi công cụ chỉ xuất hiện khi toàn bộ phản hồi đã hoàn tất.

Với mô hình lập trình chính, hãy chọn mô hình có Responses gốc.

Khắc phục sự cố

Missing environment variable: `WOKEY_API_KEY`. Codex không tìm thấy biến có tên do env_key chỉ định. Kiểm tra chính tả và đảm bảo bạn đã export nó trong cùng terminal khởi chạy codex. Nếu bạn thêm nó vào ~/.zshrc hoặc ~/.bashrc, hãy mở terminal mới.

HTTP 401 với code là invalid_api_key Wokey trả về lỗi này khi khóa bị thiếu hoặc sai, và message cho biết cụ thể: không gửi khóa, không có khóa đó, hoặc khóa đã bị xóa, tạm dừng hay hết hạn. Hãy kiểm tra khóa đã được sao chép đầy đủ, chưa bị xóa hay tạm dừng trong bảng điều khiển, và không có dấu nháy hay khoảng trắng thừa trong biến.

HTTP 404 với Route POST:/responses/responses not found base_url kết thúc bằng /responses. Codex tự nối thêm đường dẫn, nên base_url chỉ nên dừng ở tên miền (hoặc /v1).

Codex yêu cầu bạn đăng nhập ChatGPT Không có model_provider = "wokey" ở cấp cao nhất, hoặc provider nằm trong .codex/config.toml của dự án, nơi nó bị bỏ qua. Codex đã quay về provider openai tích hợp sẵn.

wire_api = "chat" is no longer supported Xem ở trên: đổi thành "responses" hoặc xóa dòng đó.

HTTP 402 Số dư tài khoản của bạn đã hết.

Để loại trừ Codex, hãy thử khóa và endpoint bằng curl trước:

curl https://api.wokey.ai/v1/responses \
  -H "Authorization: Bearer $WOKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-6-sol","input":"ping"}'

Nếu curl chạy được mà Codex thì không, vấn đề nằm ở config.toml. Nếu curl cũng thất bại, vấn đề nằm ở khóa hoặc mạng.

Câu hỏi thường gặp

Codex còn dùng được wire_api = "chat" không?

Không. Codex đã gỡ hỗ trợ Chat Completions trong PR #10157, được merge ngày 2026-02-03. wire_api giờ chỉ chấp nhận responses, còn chat sẽ lỗi ngay khi khởi động. Hãy đổi thành wire_api = "responses" hoặc xóa dòng đó; đây là giá trị mặc định.

base_url của Codex có cần /v1 không?

Codex nối thêm /responses vào base_url. Với Wokey, cả https://api.wokey.ai và https://api.wokey.ai/v1 đều hoạt động. Đừng tự thêm /responses, nếu không bạn sẽ nhận lỗi 404 Route POST:/responses/responses not found.

Có thể đặt khóa API trực tiếp trong config.toml không?

Trường api_key trong bảng provider khiến cấu hình không parse được, vì Codex từ chối các trường provider không xác định. Hãy đặt tên một biến môi trường bằng env_key và export biến đó.

Codex có dùng được Claude hoặc các mô hình không phải GPT không?

Trên Wokey thì có: gateway chuyển đổi yêu cầu Responses sang giao thức của upstream. Việc chuyển đổi bỏ đi một số công cụ riêng của Codex, nên để lập trình hãy chọn mô hình hỗ trợ /v1/responses gốc, chẳng hạn gpt-6-sol, grok-4.7 hoặc deepseek-v4.1-flash.

Vì sao cấu hình [profiles] của tôi không còn hoạt động?

Từ Codex 0.134.0, --profile name phủ lên ~/.codex/name.config.toml, và các bảng [profiles.name] trong config.toml không còn được đọc. Hãy chuyển cấu hình đó sang tệp riêng.