Codex Sıkıştırması "yanıt koruması mevcut değil" Hatasıyla Başarısız Oluyor: Sorun Web Araması, Bağlamınız Değil

AIHubMix8 dk okuma
Codex Sıkıştırması "yanıt koruması mevcut değil" Hatasıyla Başarısız Oluyor: Sorun Web Araması, Bağlamınız Değil

8 Ekim 2026'dan bu yana, uzun Codex oturumları sıkıştırmaya çalıştıkları anda sona eriyor. Hata mesajı stream disconnected before completion: response protection is unavailable şeklinde, yeniden denemeler işe yaramıyor ve konuşma devam edemiyor. Çoğu rapor gpt-6.1-sol ile ilgili, ancak gpt-6-astra ve gpt-5.6-sol da aynı şekilde başarısız oluyor. Bu sorun, kendi barındırdığınız proxy'lerin arkasında ortaya çıkıyor ve resmi Codex uygulamasında doğrudan ChatGPT girişi ile de görülüyor.

Kısa cevap: bağlam çok büyük değil ve ağınız sorun değil. ChatGPT'nin Codex arka ucu, artık geçmişinde daha önceki bir web aramasını yeniden oynatan herhangi bir isteği, web arama aracını da belirtmeden reddediyor. Codex'in sıkıştırma isteği ise hiç araç belirtmiyor. Bu nedenle, oturumun başında yapılan tek bir web araması, sonraki her sıkıştırmanın başarısız olmasına yeter.

Şu anda ne yapmalısınız:

  • Yeni oturumlar: arka uç veya Codex değişene kadar web_search = "disabled" ayarlayın.
  • Sıkışmış oturumlar: çalışmayı yeni bir oturuma taşıyın. Eski oturum sıkışmış durumda.
  • Kendi geçidinizi yönetiyorsanız: geçmişte bir arama varsa bir web arama beyanı ekleyin. Kod aşağıda.

Bu yazının geri kalanı, tetikleyicinin nasıl bulunduğunu, hangi topluluk düzeltmelerinin işe yaramadığını ve sıkışmış bir oturumu nasıl kurtaracağınızı açıklıyor.

Başarısızlığın Görünümü

Codex'te bunlardan birini göreceksiniz:

stream disconnected before completion: response protection is unavailable
Error running remote compact task: stream disconnected before completion: stream closed before response.completed

İkinci mesaj genel bir versiyondur. Codex her zaman yukarı akıştaki hatayı göstermez, bu nedenle "stream closed before response.completed" ile başarısız olan bir sıkıştırma aynı sorunu yaşayabilir. Codex'in yerel kaydı genellikle Failed to run pre-sampling compact mesajını yanında taşır.

Aşağıda, yukarı akış iki şey gönderir. Bazen bu gövdeye sahip bir HTTP 502'dir; bu, gpt-6.1-sol'da bir ChatGPT Plus kullanıcısı tarafından da OpenAI geliştirici forumuna gönderilmiştir:

{"message": "response protection is unavailable", "type": "internal_error"}

Diğer zamanlarda, response.failed olayı ile code: "upstream_error" içeren bir HTTP 200 gelir ve response.completed yoktur. Sadece HTTP durumunu kontrol eden herhangi bir şey, ikinci formu gözden kaçırır ve bunu erken sona eren bir akış olarak rapor eder.

Desen her yerde aynıdır:

  • Normal dönüşler çalışmaya devam eder. Sadece sıkıştırma başarısız olur.
  • Codex yaklaşık beş kez yeniden dener, sonra vazgeçer. Bir geçidin günlüklerinde, her başarısız deneme 2 ila 13 saniye sürdü ve sıfır token kaydetti.
  • Oturumu devam ettirmek aynı sıkıştırma ile karşılaşır, bu nedenle oturum sıkışmış kalır.
  • Yeni bir oturum, aynı koşullara ulaşana kadar çalışır.

Tetikleyici: geçmişte bir arama, istekte arama aracı yok

Codex'in yerleşik bir web arama aracı vardır. Model bunu kullandığında, bir web_search_call öğesi konuşma geçmişine eklenir. Her sonraki istek, o geçmişi geri gönderir.

Normal dönüşler, aracı tools içinde beyan eder, böylece yukarı akış yeniden oynatılan aramayı kabul eder. Ancak bir sıkıştırma isteği farklıdır. Codex, tools: [] ile tüm geçmişi gönderir, çünkü bir özetin araçlara ihtiyacı yoktur. Bu, Codex'in özel sağlayıcılar için çalıştırdığı yerel sıkıştırma ve uzaktan sıkıştırma v2 için geçerlidir.

6 Ekim civarında, ChatGPT Codex arka ucu, bir web_search_call yeniden oynatan ancak web_search beyan etmeyen istekleri reddetmeye başladı. Ham istekleri yakalayan geliştiriciler bunu daralttı. Arama öğesinin kimliğini değiştirmek veya kaldırmak fark yaratmıyor. Sadece bir işlev aracı beyan etmek de başarısız oluyor. web_search beyan etmek, aynı isteğin başarılı olmasını sağlıyor.

Aynı sonuç, resmi, değiştirilmemiş codex-cli ile bir ChatGPT hesabı ile oturum açıldığında da görülüyor. Üç arama öğesi içeren bir geçmiş sıkıştırmayı başaramadı. Sadece o öğeler kaldırıldığında aynı geçmiş sıkıştırma işlemi başarılı oldu. O başlıktaki ikinci bir raporcu, bir web_search_call ve tools: [] içeren bir sıkıştırma isteğini yakaladı. Bir web_search beyanı eklemek sorunu çözdü, arama öğesini kaldırmak da işe yaradı.

Bu, neden bir bağlam boyutu sorunu gibi göründüğünü açıklar. Sıkıştırma yalnızca uzun oturumlarda çalışır ve uzun oturumlar, bir noktada arama kullanma olasılığı en yüksek olanlardır. Web araması, Codex'te varsayılan olarak açıktır (varsayılan mod "cached"'dir), bu nedenle bir oturum, kullanıcının hiç istemediği bir arama içerebilir.

Kanıt

En az dört grup bağımsız A/B testleri yaptı ve aynı sonucu aldı. Aşağıdaki satırlar, openai/codex izleyicisinde ve birkaç açık kaynak geçit projesinin sorun izleyicisinde yayınlanan testleri birleştiriyor. OpenAI, kuralı onaylamadı veya bu başlıklardan hiçbirine yanıt vermedi.

İstek geçmişi Beyan edilen araçlar Sonuç
Mesajlar ve akıl yürütme yalnızca Yok Tamamlandı
Fonksiyon çağrısı çıktısını içerir Yok Tamamlandı
Bir web_search_call içerir Yok Başarısız
Bir web_search_call içerir Sadece işlev aracı Başarısız
Bir web_search_call içerir web_search Tamamlandı
Aynı, arama öğeleri kaldırıldı Yok Tamamlandı

Testler boyutu dışlıyor. Bir testçi otomatik sıkıştırma eşik değerini -c model_auto_compact_token_limit=2000 ile 2,000 token olarak ayarladı. Araç kullanılmayan bir oturum sıkıştırmayı başarıyla tamamladı. Bir kez arama yapılmış bir oturum altı kez başarısız oldu. Başka bir testçi, akıl yürütme öğelerini kaldırmanın işe yaramadığını, ancak tek bir arama öğesini kaldırmanın işe yaradığını buldu.

Bir testte, web_search beyan edilen versiyon 2.63 saniyede tamamlandı ve sıfır yeni arama çağrısı yaptı. Aracı beyan etmek, modelin tekrar arama yapmasını sağlamaz.

Topluluğun Denediği ve Gerçekten İşe Yarayanlar

Bu yazıyı tetikleyen LINUX DO başlığı, en yaygın tahminlerin çoğundan geçti:

Öneri Yardımcı mı? Neden
Bağlamı küçült, daha erken sıkıştır Hayır Boyut tetikleyici değil
IP ile bağlan, nginx'i değiştir Hayır Hata yukarı akıştan geliyor
WebSocket'e geç Güvenilir değil Her iki yolla da aynı istek gövdesi
Doğrudan ChatGPT'ye giriş yap Hayır Resmi giriş de başarısız oluyor
Yeni oturum, bağlamı devret Geçici çözüm Bir aramadan sonra tekrar bozuluyor
Web aramasını devre dışı bırak Evet, yeni oturumlar için Arama yoksa, tetikleyici yok
İstek içinde web_search beyan et Evet Kontrolü tatmin ediyor

Bazı önerilerin daha fazla açıklamaya ihtiyacı var.

Nginx ve IP. Zaman aşımı ve boş bağlantılar diğer "akış kesildi" hatalarına neden olabilir, ancak bu mesajı üretemezler. İlgili proxy'lerin yöneticileri, mesajın proxy tarafından üretilmediğini, yukarı akış sağlayıcısından geldiğini doğruladılar. Mesaj varsa, ağ isteği iletmiştir.

WebSocket. Çalışan geçit yamanın, WebSocket yolunu ve HTTP'yi kapsaması gerekiyordu, çünkü WebSocket istekleri aynı gövdeyi taşır. Taşıma yöntemini değiştirdikten sonra "iyileşen" bir oturum, muhtemelen geçmişinde arama yoktu.

Resmi giriş. openai/codex izleyicisindeki raporlar, doğrudan ChatGPT hesabı ile oturum açan masaüstü uygulaması ve codex-cli'yi içeriyor, proxy kullanılmadan. 10 Ekim itibarıyla, Codex 0.162.1 veya 0.163.0 alfa sürümleri bir düzeltme belirtmiyor ve sorunlar için yanıt yok.

Şu anda ne yapabilirsiniz

Yeni oturumlar için web aramasını devre dışı bırakın

Aramayı ~/.codex/config.toml dosyasında kapatın:

web_search = "disabled"

Codex yapılandırma referansı dört değer listeler: disabled, cached (varsayılan), indexed ve live. --yolo veya başka bir tam erişim kumanda ile başlatılan oturumlar varsayılan olarak live moduna geçer, bu nedenle bunu açıkça ayarlayın.

Bunu yeni oturumlara uygulayın. Eski bir oturum zaten geçmişinde web_search_call öğeleri içerir. Arama devre dışı bırakıldığında, normal dönüşler de aracı beyan etmeyi durdurur, bu nedenle o dönüşler de başarısız olabilir. Bu, yukarıdaki kuraldan kaynaklanıyor, ancak kimse bunun test edildiğini bildirmedi.

Maliyet, Codex'in web'de arama yapamamasıdır. Arama gerektiren bir oturum için ayrı bir kısa oturum açın veya modelin bulguları uzun oturumun okuyacağı bir dosyaya yazmasını sağlayın.

Sıkışmış bir oturumu kurtarma

Arka uç bu şekilde davrandığı sürece, sıkışmış bir oturumu sıkıştırmak için tarafınızdan hiçbir şey yapılamaz. Çalışmayı korumak için:

  1. Sıkışmış oturumu olduğu gibi bırakın. Geçmişi hala ~/.codex/sessions/ altında disk üzerinde bulunmaktadır.
  2. Web arama devre dışı bırakılmış yeni bir oturum başlatın.
  3. Eski oturum dosyasına yönlendirin veya kısa bir devretme notu yapın: hedef, değiştirilen dosyalar, alınan kararlar ve kalanlar.
  4. Eski oturuma istem göndermeyi durdurun. Her deneme sıkıştırmayı yeniden dener ve yine başarısız olur.

Eğer kendi geçidinizi yönetiyorsanız

İşleyen düzeltme bir kuralı takip eder. Eğer input bir web_search_call içeriyorsa ve hiçbir web_search* aracı beyan edilmemişse, bir tane ekleyin. Eğer çağrıcı hiçbir araç beyan etmemişse, tool_choice'ı "none" olarak ayarlayın, böylece araç çalışamaz. input'u değiştirmeyin.

def declare_replayed_web_search(body: dict) -> dict:
    """Let the upstream accept a replayed web_search_call in a tool-less request."""
    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)
    # Cached index only: the declaration exists to satisfy the check, not to search.
    body["tools"] = tools + [{"type": "web_search", "external_web_access": False}]
    if not caller_had_tools:
        body["tool_choice"] = "none"
    return body

Yanıt Lite istekleri bir istisnadır. Eğer web_search üst düzey tools içinde bulunuyorsa 400 döner. Çalışan yamalar, bunu ilk additional_tools girdi öğesine koyar ve herhangi bir son compaction_trigger'ı en sona bırakır. Alternatif olarak, sıkıştırma isteklerinden arama öğelerini çıkarmak da işe yarar, ancak özet, aramanın bulduğu her şeyi kaybeder.

Abonelik arka ucuna bağımlı olmak istemiyorsanız

Bulduğumuz her rapor, ChatGPT'nin abonelik arka ucundan geçiyor, Codex'in bir ChatGPT girişi ile kullandığı uç nokta. Kuralları belgelenmemiştir ve bu kural bildirim yapılmadan değişmiştir.

Codex ayrıca bir API anahtarı ile genel Yanıtlar API'sini de kullanabilir. Bu yolda bu hatanın raporunu görmedik, ancak orada yeniden üretim yapmadığımız için bunu bir gözlem olarak değerlendirin, garanti olarak değil. Codex'i bir AIHubMix anahtarı ile ayarlamak için Codex CLI öğreticisini takip edin:

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"

API fiyatlandırması token başına uygulanır, abonelik başına değil. Oranlar gpt-6.1-sol model sayfasında bulunmaktadır.

Kontrol Listesi

  • Hata metni "yanıt koruması mevcut değil" içeriyor veya sıkıştırma "stream closed before response.completed" ile başarısız oluyor.
  • Normal dönüşler hala çalışıyor ve sadece sıkıştırma başarısız oluyor.
  • Oturum bir noktada web araması kullandı, muhtemelen istenmeden.
  • Yeni oturumlar web_search devre dışı olarak ayarlanmış.
  • Sıkışmış çalışma, devretme notu ile yeni bir oturuma taşındı.
  • Yönettiğiniz bir geçit, geçmişte bir arama varsa bir web_search beyanı ekliyor.
  • Nginx ve proxy ağ ayarları olduğu gibi bırakıldı. Bunlar neden değil.

SSS

Codex'te "yanıt koruması mevcut değil" ne anlama geliyor?
Bu, Codex'in kendisinden veya proxy'nizden değil, ChatGPT'nin Codex arka ucundan gelen bir hatadır. Ekim 2026'nın başından beri, daha önceki bir web aramasını yeniden oynatan ancak web arama aracını beyan etmeyen bir istek geldiğinde ortaya çıkıyor; bu, tam olarak bir sıkıştırma isteğinin yaptığı şeydir.

Bağlam pencerem çok mu büyük?
Hayır. Testçiler, 2,000 token sıkıştırma eşiği ile bunu yeniden üretti ve aynı boyuttaki arama yapılmamış oturumlar normal şekilde sıkıştırıldı. Sadece boyutla ilgili gibi görünüyor çünkü sıkıştırma yalnızca uzun oturumlarda çalışıyor.

Bu, resmi Codex uygulamasını etkiliyor mu?
Evet. Masaüstü uygulaması ve codex-cli kullanıcıları, proxy olmadan doğrudan ChatGPT girişleri ile bunu rapor ediyor. 10 Ekim 2026 itibarıyla, hiçbir Codex sürümü bir düzeltme belirtmiyor.

Bir oturumun buna çarpıp çarpmayacağını nasıl anlayabilirim?
Eğer oturum herhangi bir noktada web araması kullandıysa, bir sonraki sıkıştırması muhtemelen başarısız olacaktır. Codex, her aramayı oturum dosyalarında web_search_call öğesi olarak kaydeder.

Web aramasını devre dışı bırakmak, zaten sıkışmış bir oturumu düzeltir mi?
Muhtemelen hayır. Eski geçmiş hala aramayı içeriyor ve arama devre dışı bırakıldığında, normal dönüşler aracı beyan etmeyi durdurabilir ve başarısız olabilir. Ayarı yeni oturumlar için kullanın ve çalışmayı taşıyın.

WebSocket'e geçmek veya nginx'i değiştirmek yardımcı olur mu?
Hayır. İstek gövdesi her iki taşımada da aynıdır ve hata yukarı akıştan geliyor, bu nedenle ağ ayarları bunu ortadan kaldıramaz. Diğer akış hataları zaman aşımından gelebilir, ancak bu hata değil.

Codex, ChatGPT aboneliği yerine bir API anahtarı kullandığında bu olur mu?
Şu ana kadar tüm raporlar abonelik arka ucunu içeriyor. Hiç kimse bunu genel Yanıtlar API'sinde rapor etmedi, ancak bu doğrudan test edilmedi.

Devam edin: GPT-6.1 Sol serisi

Kaynaklar