Kể từ ngày 8 tháng 10 năm 2026, các phiên Codex dài đã gặp sự cố ngay khi chúng cố gắng nén. Lỗi hiển thị là stream disconnected before completion: response protection is unavailable, việc thử lại không giúp ích, và cuộc trò chuyện không thể tiếp tục. Hầu hết các báo cáo liên quan đến gpt-6.1-sol, nhưng gpt-6-astra và gpt-5.6-sol cũng gặp lỗi tương tự. Nó xuất hiện sau các proxy tự lưu trữ, và cũng xuất hiện trong ứng dụng Codex chính thức với đăng nhập ChatGPT trực tiếp.
Câu trả lời ngắn gọn: ngữ cảnh không quá lớn, và mạng của bạn không phải là vấn đề. Backend Codex của ChatGPT hiện từ chối bất kỳ yêu cầu nào phát lại một tìm kiếm web trước đó trong lịch sử của nó mà không tuyên bố công cụ tìm kiếm web. Yêu cầu nén của Codex không tuyên bố bất kỳ công cụ nào. Vì vậy, một tìm kiếm web đơn lẻ sớm trong một phiên là đủ để làm cho mọi nén sau đó thất bại.
Những gì cần làm ngay bây giờ:
- Phiên mới: đặt
web_search = "disabled"cho đến khi backend hoặc Codex thay đổi. - Các phiên bị kẹt: chuyển công việc vào một phiên mới. Phiên cũ sẽ không nén được.
- Nếu bạn duy trì cổng của riêng mình trước Codex: thêm một tuyên bố tìm kiếm web khi lịch sử chứa một tìm kiếm. Mã ở dưới đây.
Phần còn lại của bài viết này giải thích cách tìm ra nguyên nhân, những sửa chữa của cộng đồng không hiệu quả, và cách cứu một phiên bị kẹt.
Hình thức lỗi trông như thế nào
Bạn sẽ thấy một trong những thông báo này trong Codex:
stream disconnected before completion: response protection is unavailable
Error running remote compact task: stream disconnected before completion: stream closed before response.completed
Thông báo thứ hai là phiên bản chung. Codex không phải lúc nào cũng hiển thị lỗi từ phía trên, vì vậy một yêu cầu nén thất bại với "stream closed before response.completed" có thể là cùng một vấn đề. Nhật ký cục bộ của Codex thường có Failed to run pre-sampling compact bên cạnh nó.
Ở phía dưới, phía trên gửi một trong hai thứ. Đôi khi đó là một HTTP 502 với nội dung này, mà một người dùng ChatGPT Plus trên gpt-6.1-sol cũng đã đăng lên diễn đàn phát triển của OpenAI:
{"message": "response protection is unavailable", "type": "internal_error"}
Các lần khác là một HTTP 200 mà luồng của nó kết thúc bằng một sự kiện response.failed với code: "upstream_error" và không có response.completed. Bất kỳ thứ gì chỉ kiểm tra trạng thái HTTP đều bỏ lỡ hình thức thứ hai và báo cáo nó như một luồng đã kết thúc sớm.
Mô hình là giống nhau ở mọi nơi:
- Các lượt bình thường vẫn hoạt động. Chỉ có nén là thất bại.
- Codex thử lại khoảng năm lần, sau đó từ bỏ. Trong nhật ký của một cổng, mỗi lần thử thất bại mất từ 2 đến 13 giây và ghi lại không có token nào.
- Tiếp tục phiên gặp phải cùng một nén, vì vậy phiên vẫn bị kẹt.
- Một phiên mới hoạt động cho đến khi gặp phải cùng một điều kiện.
Nguyên nhân: một tìm kiếm trong lịch sử, không có công cụ tìm kiếm trong yêu cầu
Codex có một công cụ tìm kiếm web tích hợp. Khi mô hình sử dụng nó, một mục web_search_call được đưa vào lịch sử cuộc trò chuyện. Mỗi yêu cầu sau đó gửi lại lịch sử đó.
Các lượt bình thường tuyên bố công cụ trong tools, vì vậy phía trên chấp nhận tìm kiếm phát lại. Một yêu cầu nén thì khác. Codex gửi toàn bộ lịch sử với tools: [], vì một tóm tắt không cần công cụ. Điều này áp dụng cho nén cục bộ, mà Codex chạy cho các nhà cung cấp tùy chỉnh, và cho nén từ xa v2.
Vào khoảng ngày 6 tháng 10, backend Codex của ChatGPT bắt đầu từ chối các yêu cầu phát lại một web_search_call nhưng không tuyên bố web_search. Các nhà phát triển đã ghi lại các yêu cầu thô đã thu hẹp lại. Thay đổi hoặc xóa ID của mục tìm kiếm không tạo ra sự khác biệt. Tuyên bố chỉ một công cụ chức năng vẫn thất bại. Tuyên bố web_search khiến yêu cầu tương tự thành công.
Kết quả tương tự xuất hiện với codex-cli chính thức, không sửa đổi đăng nhập bằng tài khoản ChatGPT. Một lịch sử với ba mục tìm kiếm đã không nén được. Lịch sử tương tự với chỉ những mục đó bị xóa đã nén tốt. Một người báo cáo thứ hai trong chủ đề đó đã ghi lại một yêu cầu nén với một web_search_call và tools: []. Thêm một tuyên bố web_search đã sửa chữa nó, và việc xóa mục tìm kiếm cũng vậy.
Điều đó giải thích tại sao nó trông giống như một vấn đề kích thước ngữ cảnh. Nén chỉ chạy trên các phiên dài, và các phiên dài là những phiên có khả năng đã sử dụng tìm kiếm vào một thời điểm nào đó. Tìm kiếm web cũng được bật theo mặc định trong Codex (chế độ mặc định là "cached"), vì vậy một phiên có thể chứa một tìm kiếm mà người dùng chưa bao giờ yêu cầu.
Bằng chứng
Ít nhất bốn nhóm đã thực hiện các thử nghiệm A/B độc lập và nhận được cùng một kết quả. Các hàng dưới đây kết hợp các thử nghiệm được đăng trên trình theo dõi openai/codex và trong các trình theo dõi sự cố của một số dự án cổng mã nguồn mở. OpenAI chưa xác nhận quy tắc này hoặc phản hồi trong bất kỳ chủ đề nào trong số đó.
| Lịch sử yêu cầu | Công cụ đã tuyên bố | Kết quả |
|---|---|---|
| Chỉ tin nhắn và lý do | Không có | Hoàn thành |
| Bao gồm đầu ra của cuộc gọi chức năng | Không có | Hoàn thành |
Bao gồm một web_search_call |
Không có | Thất bại |
Bao gồm một web_search_call |
Chỉ công cụ chức năng | Thất bại |
Bao gồm một web_search_call |
web_search | Hoàn thành |
| Tương tự, các mục tìm kiếm đã bị xóa | Không có | Hoàn thành |
Các thử nghiệm loại trừ kích thước. Một người thử nghiệm đã đặt ngưỡng tự động nén là 2.000 token với -c model_auto_compact_token_limit=2000. Một phiên không sử dụng công cụ đã nén tốt. Một phiên đã tìm kiếm một lần đã thất bại sáu lần liên tiếp. Một người thử nghiệm khác phát hiện rằng việc xóa các mục lý do không giúp ích, trong khi việc xóa mục tìm kiếm duy nhất thì có.
Trong một thử nghiệm, phiên bản với web_search đã hoàn thành trong 2.63 giây và không thực hiện bất kỳ cuộc gọi tìm kiếm mới nào. Tuyên bố công cụ không khiến mô hình tìm kiếm lại.
Những gì cộng đồng đã thử và những gì thực sự hiệu quả
Chủ đề LINUX DO đã thúc đẩy bài viết này đã trải qua hầu hết các giả thuyết thông thường:
| Gợi ý | Có giúp không? | Tại sao |
|---|---|---|
| Giảm ngữ cảnh, nén sớm hơn | Không | Kích thước không phải là nguyên nhân kích hoạt |
| Kết nối bằng IP, thay đổi nginx | Không | Lỗi đến từ phía trên |
| Chuyển sang WebSocket | Không đáng tin cậy | Nội dung yêu cầu giống nhau theo cả hai cách |
| Đăng nhập vào ChatGPT trực tiếp | Không | Đăng nhập chính thức cũng thất bại |
| Phiên mới, chuyển giao ngữ cảnh | Giải pháp tạm thời | Lại gặp lỗi sau một tìm kiếm |
| Vô hiệu hóa tìm kiếm web | Có, cho các phiên mới | Không có tìm kiếm, không có kích hoạt |
Tuyên bố web_search trong yêu cầu |
Có | Đáp ứng kiểm tra |
Một vài trong số này cần thêm giải thích.
Nginx và IP. Thời gian chờ và kết nối không hoạt động có thể gây ra các lỗi "luồng bị ngắt kết nối" khác, nhưng chúng không thể tạo ra thông báo này. Những người duy trì các proxy liên quan đã xác nhận rằng thông báo này không được tạo ra bởi proxy; nó đến từ nhà cung cấp phía trên. Nếu thông báo đó có, mạng đã gửi yêu cầu qua và quay lại.
WebSocket. Các bản vá cổng hoạt động cần phải bao phủ cả đường dẫn WebSocket cũng như HTTP, vì các yêu cầu WebSocket mang cùng một nội dung. Một phiên "khôi phục" sau khi chuyển đổi phương tiện rất có thể không có tìm kiếm trong lịch sử của nó.
Đăng nhập chính thức. Các báo cáo trên trình theo dõi openai/codex bao gồm ứng dụng máy tính để bàn và codex-cli đăng nhập trực tiếp bằng tài khoản ChatGPT, không có proxy liên quan. Tính đến ngày 10 tháng 10, cả Codex 0.162.1 và các alpha 0.163.0 đều không đề cập đến một bản sửa lỗi, và các vấn đề không có phản hồi từ người duy trì.
Những gì bạn có thể làm ngay bây giờ
Vô hiệu hóa tìm kiếm web cho các phiên mới
Tắt tìm kiếm trong ~/.codex/config.toml:
web_search = "disabled"
Tài liệu tham khảo cấu hình Codex liệt kê bốn giá trị: disabled, cached (mặc định), indexed và live. Các phiên bắt đầu với --yolo hoặc một sandbox truy cập đầy đủ khác mặc định là live, vì vậy hãy đặt nó một cách rõ ràng.
Áp dụng điều này cho các phiên mới. Một phiên cũ đã có các mục web_search_call trong lịch sử của nó. Khi tìm kiếm bị vô hiệu hóa, các lượt bình thường cũng ngừng tuyên bố công cụ, vì vậy những lượt đó có thể bắt đầu thất bại. Điều này theo quy tắc ở trên, nhưng chưa ai báo cáo thử nghiệm điều này.
Chi phí là Codex không thể tìm kiếm trên web. Đối với một phiên cần tìm kiếm, hãy mở một phiên ngắn riêng biệt, hoặc để mô hình ghi lại những phát hiện vào một tệp mà phiên dài đọc.
Cứu một phiên bị kẹt
Không có gì ở phía bạn sẽ khiến một phiên bị kẹt nén được trong khi backend hoạt động theo cách này. Để giữ công việc:
- Để phiên bị kẹt như nó là. Lịch sử của nó vẫn nằm trên đĩa dưới
~/.codex/sessions/. - Bắt đầu một phiên mới với tìm kiếm web bị vô hiệu hóa.
- Chỉ định nó đến tệp phiên cũ, hoặc dán một chuyển giao ngắn: mục tiêu, các tệp đã thay đổi, các quyết định đã đưa ra, và những gì còn lại.
- Ngừng gửi các yêu cầu đến phiên cũ. Mỗi lần thử lại sẽ thử nén và lại thất bại.
Nếu bạn duy trì cổng của riêng mình
Giải pháp hoạt động theo một quy tắc. Nếu input chứa một web_search_call và không có công cụ web_search* nào được tuyên bố, hãy thêm một cái. Nếu người gọi không tuyên bố công cụ nào, hãy đặt tool_choice thành "none" để công cụ không thể chạy. Để input nguyên vẹn.
def declare_replayed_web_search(body: dict) -> dict:
"""Cho phép phía trên chấp nhận một web_search_call phát lại trong một yêu cầu không có công cụ."""
items = body.get("input")
if not isinstance(items, list):
return body
if not any(isinstance(i, dict) and i.get("type") == "web_search_call" for i in items):
return body
tools = body.get("tools") or []
if any(isinstance(t, dict) and str(t.get("type", "")).startswith("web_search") for t in tools):
return body
caller_had_tools = bool(tools)
# Chỉ chỉ mục đã lưu: tuyên bố tồn tại để đáp ứng kiểm tra, không phải để tìm kiếm.
body["tools"] = tools + [{"type": "web_search", "external_web_access": False}]
if not caller_had_tools:
body["tool_choice"] = "none"
return body
Các yêu cầu Responses Lite là một ngoại lệ. Chúng trả về 400 nếu web_search nằm trong tools cấp cao nhất. Các bản vá hoạt động đặt nó trong mục additional_tools đầu tiên thay vào đó, và giữ bất kỳ compaction_trigger nào ở cuối. Phương án thay thế, xóa các mục tìm kiếm khỏi các yêu cầu nén, cũng hoạt động, nhưng tóm tắt sau đó sẽ mất bất kỳ điều gì mà tìm kiếm đã tìm thấy.
Nếu bạn không muốn phụ thuộc vào backend đăng ký
Tất cả các báo cáo mà chúng tôi tìm thấy đều đi qua backend đăng ký của ChatGPT, điểm cuối mà Codex sử dụng với một đăng nhập ChatGPT. Các quy tắc của nó không được tài liệu hóa, và quy tắc này đã thay đổi mà không có thông báo.
Codex cũng có thể sử dụng API Responses công khai với một khóa API. Chúng tôi chưa thấy báo cáo nào về lỗi này trên con đường đó, nhưng chúng tôi cũng chưa chạy thử nghiệm lại ở đó, vì vậy hãy coi đó như một quan sát, không phải là một đảm bảo. Để thiết lập Codex với một khóa AIHubMix, hãy làm theo hướng dẫn tích hợp Codex CLI:
model = "gpt-6.1-sol"
model_provider = "aihubmix"
[model_providers.aihubmix]
name = "AIHubMix"
base_url = "https://aihubmix.com/v1"
wire_api = "responses"
env_key = "AIHUBMIX_API_KEY"
Giá API áp dụng theo token, không theo đăng ký. Các mức giá có trên trang mô hình gpt-6.1-sol.
Danh sách kiểm tra
- Văn bản lỗi chứa "bảo vệ phản hồi không khả dụng", hoặc nén thất bại với "luồng bị đóng trước khi phản hồi hoàn thành".
- Các lượt bình thường vẫn hoạt động và chỉ có nén là thất bại.
- Phiên đã sử dụng tìm kiếm web vào một thời điểm nào đó, có thể mà không được yêu cầu.
- Các phiên mới đã đặt
web_searchthành vô hiệu hóa. - Công việc bị kẹt đã được chuyển đến một phiên mới với một ghi chú chuyển giao.
- Một cổng mà bạn duy trì thêm một tuyên bố tìm kiếm web khi lịch sử chứa một tìm kiếm.
- Các cài đặt mạng Nginx và proxy đã được để nguyên. Chúng không phải là nguyên nhân.
Câu hỏi thường gặp
"Bảo vệ phản hồi không khả dụng" có nghĩa là gì trong Codex?
Đó là một lỗi từ backend Codex của ChatGPT, không phải từ chính Codex hoặc proxy của bạn. Kể từ đầu tháng 10 năm 2026, nó xuất hiện khi một yêu cầu phát lại một tìm kiếm web trước đó nhưng không tuyên bố công cụ tìm kiếm web, điều này chính xác là những gì một yêu cầu nén làm.
Cửa sổ ngữ cảnh của tôi có quá lớn không?
Không. Các nhà thử nghiệm đã tái tạo nó với ngưỡng nén 2.000 token, và các phiên cùng kích thước mà không có tìm kiếm nén bình thường. Nó chỉ trông có liên quan đến kích thước vì nén chỉ chạy trong các phiên dài.
Nó có ảnh hưởng đến ứng dụng Codex chính thức với đăng nhập ChatGPT không?
Có. Người dùng ứng dụng máy tính để bàn và codex-cli báo cáo điều này trên các đăng nhập ChatGPT trực tiếp mà không có proxy. Tính đến ngày 10 tháng 10 năm 2026, không có bản phát hành Codex nào đề cập đến một bản sửa lỗi.
Làm thế nào tôi có thể biết liệu một phiên có gặp phải nó không?
Nếu phiên đã sử dụng tìm kiếm web vào bất kỳ thời điểm nào, nén tiếp theo của nó rất có thể sẽ thất bại. Codex ghi lại mỗi tìm kiếm như một mục web_search_call trong các tệp phiên dưới thư mục .codex/sessions.
Việc vô hiệu hóa tìm kiếm web có sửa chữa một phiên đã bị kẹt không?
Có thể không. Lịch sử cũ vẫn chứa tìm kiếm, và một khi tìm kiếm bị vô hiệu hóa, các lượt bình thường có thể ngừng tuyên bố công cụ và cũng thất bại. Sử dụng cài đặt này cho các phiên mới và chuyển công việc qua.
Chuyển sang WebSocket hoặc thay đổi nginx có giúp không?
Không. Nội dung yêu cầu là giống nhau qua cả hai phương tiện, và lỗi đến từ phía trên, vì vậy các cài đặt mạng không thể loại bỏ nó. Các lỗi luồng khác có thể đến từ thời gian chờ, nhưng không phải lỗi này.
Nó có xảy ra khi Codex sử dụng khóa API thay vì đăng ký ChatGPT không?
Tất cả các báo cáo cho đến nay đều liên quan đến backend đăng ký. Không ai đã báo cáo điều này trên API Responses công khai, mặc dù điều đó chưa được thử nghiệm trực tiếp.
Tiếp tục đọc: chuỗi GPT-6.1 Sol
- Nếu lỗi này xuất hiện ngay sau khi bạn chuyển Codex sang GPT-6.1 Sol, hướng dẫn di chuyển đề cập đến các thay đổi khác có thể làm hỏng thiết lập: Di chuyển sang GPT-6.1 Sol: 9 điều có thể sai
- Các phiên đại lý dài là nơi các cài đặt nỗ lực quan trọng nhất, cho tốc độ và tốc độ bạn tiếp cận nén: Chọn nỗ lực lý do cho GPT-6.1 Sol: từ thấp đến tối đa
Nguồn
- Windows Codex Desktop: nén ngữ cảnh luôn thất bại (openai/codex)
- Nén từ xa thất bại sau khi tiếp tục lịch sử
web_search_callđược lưu trữ (openai/codex) - Nén từ xa Codex thất bại với 502 "bảo vệ phản hồi không khả dụng" (Cộng đồng phát triển OpenAI)
- Tài liệu tham khảo cấu hình Codex (OpenAI)
- Hướng dẫn tích hợp Codex CLI + AIHubMix (AIHubMix)



