¿Codex sigue reconectándose? Comprueba DNS y el enrutamiento de Clash

Última actualización: 2026-09-10

Errores de Codex como Reconnecting..., stream disconnected before completion y error sending request pueden implicar interferencia de DNS o un enrutamiento incorrecto de Clash. Esta guía explica cómo investigar esa posibilidad, aplicar una mejora específica de Clash Verge Rev y verificar el resultado.

Lo que realmente muestran los reportes de la comunidad

Usuarios de Reddit han informado tareas interrumpidas que apuntan a chatgpt.com/backend-api/codex/responses, intentos repetidos de reconexión y errores en el cuerpo de la respuesta. Estos reportes establecen síntomas, no un diagnóstico de DNS. Solicitud interrumpida, bucle de reconexión

Una discusión aparte describe fallos durante la compactación remota del contexto. Un comentarista sugiere investigar el proxy, pero la discusión no establece una causa verificada. Discusión sobre la compactación

Los reportes en X muestran preguntas similares: una publicación del 9 de septiembre describe fallos persistentes del stream, mientras que una publicación del 6 de septiembre informa un tiempo de espera inactivo de SSE durante la compactación remota. Ninguna proporciona una comparación de DNS. Estos son ejemplos útiles de problemas de usuarios, pero no establecen una causa compartida. Reporte de stream en X, reporte de compactación en X

Síntoma Qué investigar
Tiempo de espera inmediato con un error del resolver DNS, alcanzabilidad del nodo y si el tráfico entra en Clash
ChatGPT funciona en un navegador pero Codex falla Diferencias en proxy, DNS, certificados y salida
La salida comienza y luego el stream se desconecta Conexiones de larga duración, cambios de red y errores del servicio
Solo fallan las conversaciones largas o la compactación Compara con una tarea nueva y pequeña; investiga errores de sesión y del servidor
HTTP 401, 403, 429 o 5xx Inspecciona el origen y el cuerpo de la respuesta en busca de autenticación, políticas, límites o fallos del servicio

Consulta el estado del servicio de OpenAI y registra la hora y la versión del cliente. Para chats bloqueados, OpenAI también recomienda comprobar si hay aprobaciones pendientes y probar con un chat nuevo más pequeño y centrado. Las versiones de escritorio y CLI pueden diferir. Solución oficial de problemas

Un caso local: una respuesta DNS inesperada activó DIRECT

En una investigación registrada en macOS usando Clash Verge Rev y Mihomo, los nodos proxy eran alcanzables, pero chatgpt.com coincidía con una regla GeoIP/CN e intentaba una conexión directa que expiró por tiempo de espera. Una comparación con DNS cifrado alcanzado a través del proxy mostró una respuesta anómala en la ruta local de resolución.

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

Hay dos problemas de configuración que abordar: la ruta de resolución y la decisión de enrutamiento. Este caso registrado no es una referencia ni una prueba de que otros fallos de Codex tengan la misma causa. Una respuesta anómala por sí sola tampoco puede identificar el intermediario responsable ni establecer específicamente envenenamiento de la caché DNS.

Diagnostica antes de cambiar la configuración

Revisa el registro de conexión

Busca el nombre de host real en el error, incluido chatgpt.com o openai.com. Registra la regla coincidente, la cadena de conexión y el error en el momento del fallo. Una conexión que debería usar un proxy pero selecciona DIRECT justifica revisar el orden de las reglas. Mihomo evalúa las reglas de enrutamiento de arriba hacia abajo. Documentación de enrutamiento

Si no aparece ninguna conexión coincidente, primero establece si ese cliente usa Clash. Que el navegador funcione no demuestra la ruta utilizada por un proceso separado.

Compara las rutas de resolución

En macOS, inspecciona el resolvedor del sistema y su respuesta actual:

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

Para una comparación cifrada, reemplaza 7890 por tu puerto HTTP/mixed de 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 solicitud usa la interfaz DNS JSON de Cloudflare. Revisa el panel de conexión: un proxy local explícito garantiza la entrada en Clash, pero las reglas de Clash siguen determinando la salida final.

Las diferentes direcciones IP por sí solas no son prueba de interferencia. La selección de CDN, la caché, las familias de direcciones y Fake-IP pueden explicar diferencias. Una dirección sintética del rango Fake-IP de Clash no es inherentemente sospechosa. Correlaciona una respuesta anómala con la ruta incorrecta y el fallo, y luego compárala con otra ruta de red verificada. Con TUN habilitado, incluso dig @resolver puede ser interceptado; no es automáticamente una prueba independiente del upstream.

Aplica una mejora dirigida de Clash Verge Rev

Esta plantilla requiere Clash Verge Rev con Mihomo, una suscripción existente y un nodo proxy que funcione. Es un Script de suscripción, no un perfil independiente completo. Haz primero una copia de seguridad de la configuración actual. Si ya usas un script, integra el cambio en su función main(config) existente. Inspecciona la configuración final en tiempo de ejecución después de todos los pasos de la mejora. Documentación del Script de Clash Verge Rev

Establece CODEX_PROXY_GROUP en un grupo existente y selecciona un nodo proxy que funcione en ese grupo. Establece NODE_DNS en un resolvedor DoH que funcione antes de que el proxy se conecte y resuelva correctamente los nombres de host de los nodos. El ejemplo de AliDNS está pensado para validación en una red de la China continental; reemplázalo cuando no sea apropiado. No se usa para resolver los dominios de IA que aparecen abajo.

// 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;
}

El script añade una política de DNS específica por dominio y antepone reglas de proxy, conservando las demás reglas y políticas de dominio. Cambia la resolución de nombres de host de los nodos. Los cuatro sufijos de dominio son un alcance inicial, no una lista exhaustiva de cada función de Codex, proveedor personalizado, servicio MCP o descarga de tareas.

Mihomo admite nameserver-policy específico por dominio y un sufijo de proxy explícito en una dirección de servidor DNS. La resolución de nodos necesita una ruta independiente para evitar una dependencia circular. Referencia de configuración de DNS

El script dirigido conserva la configuración de respaldo existente. Revisa por separado las dependencias de DNS más amplias antes de reemplazarlas. También comprueba si hay asignaciones de hosts obsoletas o políticas más específicas en conflicto.

Comprueba TUN por separado

Para los procesos que no usan el proxy del sistema, habilita TUN en Clash Verge Rev y verifica que esté en ejecución. Fusiona los siguientes campos en tu objeto TUN existente, conservando sus demás ajustes:

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

Estos cubren DNS UDP y TCP en el puerto 53. Mihomo documenta limitaciones para DNS dirigido a la LAN en macOS y Windows; el DNS cifrado gestionado por la aplicación también queda fuera de estas reglas del puerto 53. Verifica el comportamiento del resolvedor y de la interfaz en lugar de asumir que el interruptor cubre cada solicitud. Referencia de TUN

Verifica la configuración, el enrutamiento y Codex por separado

Primero comprueba la configuración final en busca de errores, referencias a grupos y orden de reglas. Si la CLI de Mihomo está disponible, mihomo -t -f <final-config-path> comprueba si la configuración se analiza correctamente. No demuestra conectividad.

Después inspecciona el enrutamiento real de la conexión y ejecuta una prueba HTTPS verificada con certificado a través de tu puerto local real:

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 respuesta del servicio previsto después de una verificación correcta del certificado establece un intercambio HTTP para esta prueba. Un 401 o 403 aún puede bloquear el acceso. No demuestra que funcione una solicitud autenticada de Codex, y desactivar la verificación del certificado invalidaría esta comprobación.

Por último, completa una tarea pequeña en el cliente que falló originalmente. Una CLI instalada y autenticada puede ejecutar la siguiente comprobación opcional, que realiza una solicitud real al modelo y usa la cuota de la cuenta:

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

Un éxito de la CLI solo verifica esa solicitud de la CLI; prueba la aplicación de escritorio por separado si ahí fue donde ocurrió el fallo. Vuelve a comprobar después de una actualización de la suscripción, un cambio de red y la suspensión/reanudación. Las capas de configuración posteriores o los grupos renombrados aún pueden romper una mejora.

Preguntas frecuentes

¿Cambiar el DNS del sistema a 8.8.8.8 es suficiente?

No necesariamente. Una dirección de resolvedor por sí sola no establece cifrado, enrutamiento por proxy ni alcanzabilidad. Verifica juntos el resolvedor, el transporte y la salida.

¿Por qué falla Codex mientras Clash está en ejecución?

El proceso podría evitar el proxy, coincidir con una regla directa o depender de un DNS de nodo no disponible. El problema también podría no estar relacionado con DNS. Encuentra la conexión real antes de cambiar varias configuraciones a la vez.

¿Qué pasa si sigue desconectándose?

Si DNS, TLS y el enrutamiento funcionan, investiga el estado del servicio, el tamaño de la conversación, la versión del cliente, la estabilidad de la conexión del nodo y el cuerpo exacto del error. OpenAI documenta la ubicación de los comentarios y los registros; revisa los registros en busca de secretos antes de compartirlos. Solución de problemas y registros

¿Cómo deshago el cambio?

Desactiva el Script añadido y restaura el perfil respaldado, los ajustes de TUN y cualquier ajuste de DNS del sistema que hayas cambiado. Una arquitectura separada proxy-providers puede aislar más adelante las suscripciones de nodos del DNS y las reglas locales, pero no es necesaria para esta corrección específica.

Para los pasos de instalación e importación, consulta Configuración de Clash Verge. Para otros fallos, consulta Solución de problemas de Clash. Puedes usar este proceso de diagnóstico con una suscripción compatible existente; comprar otro servicio no es un requisito previo para probar DNS.