Codex continua a riconnettersi? Controlla DNS e il routing di Clash

Ultimo aggiornamento: 2026-09-10

Errori di Codex come Reconnecting..., stream disconnected before completion e error sending request possono coinvolgere interferenze DNS o un routing di Clash non corretto. Questa guida spiega come indagare questa possibilità, applicare un miglioramento mirato a Clash Verge Rev e verificare il risultato.

Cosa mostrano davvero i report della community

Gli utenti di Reddit hanno segnalato attività interrotte rivolte a chatgpt.com/backend-api/codex/responses, tentativi di riconnessione ripetuti ed errori nel corpo della risposta. Questi report descrivono sintomi, non una diagnosi DNS. Richiesta interrotta, loop di riconnessione

Una discussione separata descrive fallimenti durante la compattazione del contesto remoto. Un commentatore suggerisce di indagare il proxy, ma la discussione non stabilisce una causa verificata. Discussione sulla compattazione

I report su X mostrano domande simili: un post del 9 settembre descrive fallimenti persistenti dello stream, mentre un post del 6 settembre segnala un timeout di inattività SSE durante la compattazione remota. Nessuno dei due fornisce un confronto DNS. Sono esempi utili di problemi degli utenti, ma non stabiliscono una causa comune. Report X sullo stream, Report X sulla compattazione

Sintomo Cosa indagare
Timeout immediato con un errore del resolver DNS, raggiungibilità del nodo e se il traffico entra in Clash
ChatGPT funziona nel browser ma Codex fallisce Differenze in proxy, DNS, certificati e uscita
L’output inizia, poi lo stream si disconnette Connessioni di lunga durata, cambiamenti di rete ed errori del servizio
Falliscono solo le conversazioni lunghe o la compattazione Confronta con una piccola nuova attività; indaga su sessione ed errori del server
HTTP 401, 403, 429 o 5xx Ispeziona l’origine e il corpo della risposta per autenticazione, policy, limiti o guasti del servizio

Controlla lo stato del servizio OpenAI e annota l’orario e la versione del client. Per le chat bloccate, OpenAI raccomanda anche di controllare eventuali approvazioni in sospeso e di provare una nuova chat più piccola e mirata. Le versioni desktop e CLI possono differire. Risoluzione dei problemi ufficiale

Un caso locale: una risposta DNS inattesa ha attivato DIRECT

In un’indagine macOS registrata che utilizzava Clash Verge Rev e Mihomo, i nodi proxy erano raggiungibili, ma chatgpt.com corrispondeva a una regola GeoIP/CN e tentava una connessione diretta che andava in timeout. Un confronto con DNS cifrato raggiunto tramite il proxy ha mostrato una risposta anomala sul percorso di risoluzione locale.

Request to chatgpt.com
  → anomalous DNS answer
  → no earlier matching OpenAI domain rule
  → GeoIP selects DIRECT
  → connection times out and Codex retries

Ci sono due problemi di configurazione da affrontare: il percorso di risoluzione e la decisione di routing. Questo caso registrato non è un benchmark né una prova che altri fallimenti di Codex abbiano la stessa causa. Una risposta anomala da sola inoltre non può identificare l’intermediario responsabile né stabilire nello specifico un avvelenamento della cache DNS.

Diagnostica prima di modificare la configurazione

Controlla il log della connessione

Cerca il nome host reale nell’errore, inclusi chatgpt.com o openai.com. Registra la regola corrispondente, la catena di connessione e l’errore al momento del guasto. Una connessione che dovrebbe usare un proxy ma seleziona DIRECT richiede una revisione dell’ordine delle regole. Mihomo valuta le regole di routing dall’alto verso il basso. Documentazione sul routing

Se non compare alcuna connessione corrispondente, stabilisci prima se quel client usa Clash. Il successo nel browser non dimostra il percorso usato da un processo separato.

Confronta i percorsi di risoluzione

Su macOS, controlla il resolver di sistema e la sua risposta attuale:

scutil --dns
dscacheutil -q host -a name chatgpt.com

Per un confronto cifrato, sostituisci 7890 con la tua porta HTTP/mixed di Clash:

curl --noproxy '' --proxy http://127.0.0.1:7890 \
  --connect-timeout 10 --max-time 20 \
  -H 'accept: application/dns-json' \
  'https://1.1.1.1/dns-query?name=chatgpt.com&type=A'

La richiesta usa l’interfaccia DNS JSON di Cloudflare. Controlla il pannello di connessione: un proxy locale esplicito garantisce l’ingresso in Clash, ma le regole di Clash determinano comunque l’uscita finale.

Indirizzi IP diversi da soli non sono prova di interferenza. La selezione CDN, la cache, le famiglie di indirizzi e Fake-IP possono spiegare le differenze. Un indirizzo sintetico dell’intervallo Fake-IP di Clash non è di per sé sospetto. Correlare una risposta anomala con il percorso errato e il guasto, quindi confrontarla con un altro percorso di rete verificato. Con TUN abilitato, anche dig @resolver può essere intercettato; non è automaticamente un test upstream indipendente.

Applica un miglioramento mirato a Clash Verge Rev

Questo modello richiede Clash Verge Rev con Mihomo, un abbonamento esistente e un nodo proxy funzionante. È uno Script di subscription, non un profilo autonomo completo. Esegui prima un backup della configurazione corrente. Se utilizzi già uno script, integra la modifica nella sua funzione main(config) esistente. Ispeziona la configurazione finale in esecuzione dopo tutti i passaggi di miglioramento. Documentazione dello script di Clash Verge Rev

Imposta CODEX_PROXY_GROUP su un gruppo esistente e seleziona in quel gruppo un nodo proxy funzionante. Imposta NODE_DNS su un resolver DoH che funzioni prima che il proxy si connetta e che risolva correttamente gli hostname dei nodi. L’esempio AliDNS è pensato per la verifica su una rete della Cina continentale; sostituiscilo quando non è appropriato. Non viene usato per risolvere i domini AI riportati sotto.

// Clash Verge Rev subscription Script. Use with an existing Mihomo profile.
// Replace this with the exact name of a working proxy group in that profile.
const CODEX_PROXY_GROUP = "REPLACE_WITH_EXISTING_PROXY_GROUP";

// Example bootstrap resolver for a mainland-China network. Verify reachability
// and node-hostname answers on your network, or replace with your trusted DoH.
// It must work BEFORE the proxy is established. It does not resolve AI domains.
const NODE_DNS = ["https://223.5.5.5/dns-query#DIRECT"];

function main(config) {
  const groups = config["proxy-groups"] || [];
  if (!groups.some((group) => group.name === CODEX_PROXY_GROUP)) {
    throw new Error("Set CODEX_PROXY_GROUP to an existing working proxy group.");
  }
  if (/[#&,\r\n]/.test(CODEX_PROXY_GROUP)) {
    throw new Error("Use a proxy group name without #, &, commas or newlines.");
  }

  const domains = ["chatgpt.com", "openai.com", "oaistatic.com", "oaiusercontent.com"];
  const doh = [
    "https://1.1.1.1/dns-query#" + CODEX_PROXY_GROUP,
    "https://8.8.8.8/dns-query#" + CODEX_PROXY_GROUP,
  ];
  const dns = config.dns || {};
  const policy = Object.assign({}, dns["nameserver-policy"] || {});
  domains.forEach((domain) => { policy["+." + domain] = doh.slice(); });
  dns.enable = true;
  dns["nameserver-policy"] = policy;
  dns["proxy-server-nameserver"] = NODE_DNS.slice();
  if (!Array.isArray(dns.nameserver) || dns.nameserver.length === 0) {
    dns.nameserver = NODE_DNS.slice();
  }
  config.dns = dns;

  const oldRules = Array.isArray(config.rules) ? config.rules : [];
  const aiRules = domains.map((domain) =>
    "DOMAIN-SUFFIX," + domain + "," + CODEX_PROXY_GROUP
  );
  config.rules = aiRules.concat(oldRules.filter((rule) => !aiRules.includes(rule)));
  return config;
}

Lo script aggiunge criteri DNS specifici per dominio e antepone regole proxy mantenendo le altre regole e i criteri di dominio. Modifica la risoluzione degli hostname dei nodi. I quattro suffissi di dominio sono un ambito iniziale, non un elenco esaustivo di tutte le funzionalità Codex, dei provider personalizzati, dei servizi MCP o dei download delle task.

Mihomo supporta un nameserver-policy specifico per dominio e un suffisso proxy esplicito su un indirizzo del server DNS. La risoluzione dei nodi necessita di un percorso indipendente per evitare una dipendenza circolare. Riferimento alla configurazione DNS

Lo script mirato mantiene le impostazioni di fallback esistenti. Prima di sostituirle, esamina separatamente le dipendenze DNS più ampie. Verifica anche la presenza di mappature hosts obsolete o di criteri più specifici in conflitto.

Controlla TUN separatamente

Per i processi che non usano il proxy di sistema, abilita TUN in Clash Verge Rev e verifica che sia in esecuzione. Unisci i seguenti campi al tuo oggetto TUN esistente, preservandone le altre impostazioni:

tun:
  enable: true
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53

Questi coprono DNS UDP e TCP sulla porta 53. Mihomo documenta limitazioni per il DNS diretto alla LAN su macOS e Windows; anche il DNS cifrato gestito dall’applicazione è al di fuori di queste regole sulla porta 53. Verifica il comportamento del resolver e dell’interfaccia invece di presumere che l’interruttore copra ogni richiesta. Riferimento TUN

Verifica separatamente configurazione, routing e Codex

Per prima cosa controlla la configurazione finale per errori, riferimenti ai gruppi e ordine delle regole. Se la CLI di Mihomo è disponibile, mihomo -t -f <final-config-path> verifica se la configurazione viene analizzata correttamente. Non dimostra la connettività.

Poi ispeziona il routing effettivo della connessione ed esegui un probe HTTPS con verifica del certificato attraverso la tua porta locale reale:

curl --noproxy '' --proxy http://127.0.0.1:7890 \
  --connect-timeout 10 --max-time 20 \
  -o /dev/null -sS \
  -w 'HTTP=%{http_code} TLS=%{time_appconnect}s TOTAL=%{time_total}s\n' \
  https://chatgpt.com/

Una risposta dal servizio previsto dopo la verifica riuscita del certificato stabilisce uno scambio HTTP per questo probe. Un 401 o 403 può comunque bloccare l’accesso. Non dimostra che una richiesta Codex autenticata funzioni, e disabilitare la verifica del certificato invaliderebbe questo controllo.

Infine, completa una piccola task nel client che in origine falliva. Una CLI installata e autenticata può eseguire il seguente controllo opzionale, che invia una richiesta reale al modello e utilizza il quota dell’account:

codex exec --skip-git-repo-check --sandbox read-only \
  'Reply with exactly: PONG. Do not use tools.'

Il successo della CLI verifica solo quella richiesta della CLI; testa separatamente l’app desktop se è lì che si è verificato il problema. Ricontrolla dopo un aggiornamento dell’abbonamento, un cambio di rete e una sospensione/riattivazione. Strati di configurazione successivi o gruppi rinominati possono ancora rompere un enhancement.

Domande frequenti

Cambiare il DNS di sistema in 8.8.8.8 è sufficiente?

Non necessariamente. Il solo indirizzo di un resolver non stabilisce cifratura, routing del proxy o raggiungibilità. Verifica insieme resolver, trasporto e uscita.

Perché Codex fallisce mentre Clash è in esecuzione?

Il processo potrebbe bypassare il proxy, corrispondere a una regola diretta o dipendere da un DNS del nodo non disponibile. Il problema potrebbe anche non essere مرتبط con il DNS. Individua la connessione effettiva prima di modificare più impostazioni contemporaneamente.

E se continua a disconnettersi?

Se DNS, TLS e routing funzionano, esamina lo stato del servizio, la dimensione della conversazione, la versione del client, la stabilità della connessione del nodo e il corpo esatto dell’errore. OpenAI documenta i percorsi per feedback e log; rivedi i log alla ricerca di segreti prima di condividerli. Risoluzione dei problemi e log

Come annullo la modifica?

Disabilita lo Script aggiunto e ripristina il profilo salvato, le impostazioni TUN e qualsiasi impostazione DNS di sistema che hai modificato. Una distinta architettura proxy-providers può in seguito isolare gli abbonamenti dei nodi dal DNS locale e dalle regole, ma non è richiesta per questa correzione mirata.

Per i passaggi di installazione e importazione, vedi Configurazione di Clash Verge. Per altri guasti, vedi Risoluzione dei problemi di Clash. Puoi usare questo processo diagnostico con un abbonamento compatibile esistente; acquistare un altro servizio non è un prerequisito per testare DNS.