Fix ChatGPT Not Working With Clash: Timeout Troubleshooting

Having trouble opening ChatGPT through Clash? This guide walks through node testing, proxy modes, rule matching, DNS checks, and TUN settings so you can identify and fix the connection issue.

Start by Finding the Failure Point

When ChatGPT does not open through Clash, the visible symptom is usually a timeout, a blank page, or an endless loading indicator. That symptom alone does not tell you whether the problem is the browser, the local proxy port, the selected node, DNS, routing rules, or the target service itself. The most efficient troubleshooting method is to identify which part of the connection chain stops responding before changing configuration values at random.

A normal request passes through several stages: the browser creates a connection, the browser or operating system sends it to Clash, Clash matches the domain against its rules, the selected proxy group chooses a node, and that node connects to ChatGPT-related domains. A failure at any stage can look identical in the browser.

Open the Clash client and keep its Connections or traffic log panel visible. Then reload https://chatgpt.com and watch for new entries. Also check related domains such as openai.com, auth.openai.com, oaistatic.com, and oaiusercontent.com.

  • No connection entry appears: the browser is not using Clash. Check the system proxy, browser proxy profile, extension settings, or TUN status.
  • An entry appears and is marked DIRECT: the rule matched direct access, so the request never used the proxy node.
  • An entry appears and is marked REJECT: a rule, ad blocker, or provider policy blocked the request.
  • An entry uses a proxy but times out: test the node, the proxy group, DNS resolution, and the node's ability to reach the destination.
  • The page opens but login or assets fail: more than one OpenAI domain is probably being routed differently, or the browser has stale cookies, blocked scripts, or an incompatible network path.
Important

A Clash profile showing “connected” only means that the core is running and a profile is loaded. It does not prove that the current node can reach ChatGPT, that your browser is using the local port, or that every required domain matches the intended proxy rule.

Test the Node Before Changing Rules

Node testing is the quickest way to separate a bad route from a bad configuration. If the selected node cannot consistently reach ordinary HTTPS endpoints, rewriting ChatGPT rules will not solve the underlying problem. Start with a few nodes from different regions instead of testing only the node currently selected by an automatic group.

  1. Open the proxy list in Clash Verge, Clash Verge Rev, Mihomo, or your current client.
  2. Run the built-in latency or connectivity test against several nodes. A low latency number is useful, but it is not proof that the node can reach ChatGPT.
  3. Select one stable node manually rather than using url-test or fallback during diagnosis.
  4. Open a normal HTTPS site, an OpenAI-related page, and the ChatGPT page separately.
  5. Repeat the test at least twice. A node that works once and times out on the next request may have packet loss, overloaded egress, or an unstable route.

The latency test generally measures a small request to a test URL. It does not measure sustained throughput, TLS compatibility, WebSocket behavior, packet loss, or access to a specific destination. ChatGPT may also use several requests during page loading, including authentication, JavaScript, API, streaming, and asset requests. A node can therefore pass a simple latency test while failing during login or response streaming.

Use the result pattern below as a practical guide:

Test result Most likely cause Next check
Every node times out Subscription, local network, DNS, or client-wide issue Refresh the profile and test the local proxy port
Only one node fails Node overload, destination filtering, or route instability Switch nodes and compare regions
ChatGPT fails but other sites work Rule matching, destination-specific routing, or node egress problem Inspect every related domain in Connections
The page loads but login fails Authentication domain mismatch, stale cookies, or blocked scripts Check OpenAI domains and retry in a private window

Do not keep switching nodes while an automatic group is still making decisions in the background. Temporarily select a fixed proxy so that every test uses the same path. Once the problem is understood, you can return to an automatic group and remove nodes that consistently fail.

Check Proxy Mode and Rule Matching

Clash normally offers Rule, Global, and Direct modes. In Direct mode, requests bypass proxy groups, so ChatGPT may be unreachable even though Clash itself is running normally. Global mode sends nearly all compatible traffic through the selected proxy and is useful as a temporary diagnostic because it reduces rule ambiguity. Rule mode is the best everyday choice, but only when the profile contains suitable rules.

For a clean test, switch to Global mode and choose a known working node manually. Reload the page and inspect the connection log. If ChatGPT works in Global mode but fails in Rule mode, the node is probably usable and the rule set is the main suspect. If both modes fail, continue with node, DNS, TUN, and subscription checks.

In Rule mode, inspect the actual decision for every relevant connection instead of checking only the first request. Domains commonly involved in a ChatGPT session can include:

  • chatgpt.com and chat.openai.com for the web application.
  • openai.com and auth.openai.com for account and authentication flows.
  • oaistatic.com for static JavaScript and other front-end assets.
  • oaiusercontent.com for user-generated or uploaded content in some sessions.
  • Other service domains introduced by the current web application, which should be confirmed from the Connections panel rather than guessed from an old rule list.

The important detail is rule order. Clash evaluates rules from top to bottom and uses the first matching rule. A broad rule such as GEOIP,CN,DIRECT, a provider-specific RULE-SET, or a final MATCH,DIRECT can capture traffic before a later OpenAI rule is reached. A rule added at the bottom cannot override an earlier match.

rules:
  - DOMAIN-SUFFIX,chatgpt.com,Proxy
  - DOMAIN-SUFFIX,chat.openai.com,Proxy
  - DOMAIN-SUFFIX,openai.com,Proxy
  - DOMAIN-SUFFIX,oaistatic.com,Proxy
  - DOMAIN-SUFFIX,oaiusercontent.com,Proxy
  - MATCH,DIRECT

This is only an example of rule structure. The proxy group name must exactly match a group defined in proxy-groups, and the final policy should fit your own configuration. If your provider remotely controls the rules, local edits may be overwritten at the next subscription update. In that case, use the client's local override feature if available, or ask the provider whether custom rules are supported.

Do not overmatch blindly

Routing every domain containing “openai” through one policy may create unnecessary delays or break unrelated services. Use the connection log to confirm the domains involved, then add the narrowest practical rules. After editing, update the profile or reload the configuration so the running core actually receives the changes.

Perform a Controlled DNS and Port Test

DNS errors often appear as connection timeouts because the browser cannot obtain a usable address before the connection timer expires. This is especially common when a local resolver returns a filtered result, when IPv6 returns an unreachable address, or when the browser uses its own DNS-over-HTTPS service outside Clash.

First test whether the local Clash mixed port is accepting connections. The default is often 7890, but the real value is whatever your profile defines as mixed-port or port. On a desktop system, run:

curl -x http://127.0.0.1:7890 -I https://chatgpt.com

Replace 7890 with the port shown in your client. A response header proves that the command reached Clash and that Clash returned something through the selected route. A refused connection usually means the port is wrong, the mixed listener is disabled, or the client is not running. A timeout after connecting to the local port points more toward the node, DNS, or remote route.

Next, inspect DNS settings in the active profile. A typical mihomo-compatible configuration may include the following fields:

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - https://dns.google/dns-query
    - https://cloudflare-dns.com/dns-query
  proxy-server-nameserver:
    - 223.5.5.5
  fallback:
    - https://1.1.1.1/dns-query

The exact values should match your network and provider. enable activates the built-in resolver. enhanced-mode controls whether Clash uses real addresses or fake IP mapping. nameserver handles normal queries, while proxy-server-nameserver can resolve the domain name of a proxy server before the proxy connection exists. If a DNS server is written as a hostname, it needs a bootstrap resolver; otherwise the configuration can create a resolution loop.

For diagnosis, temporarily set ipv6: false if your network has unreliable IPv6 service. Also check whether the browser has Secure DNS enabled. Chrome, Edge, and Firefox can send DoH requests directly, bypassing the resolver path that Clash is supposed to control. Disable browser Secure DNS for one test, clear the DNS cache, and compare the result with it enabled.

Fake-IP mode can improve consistency under TUN, but some applications do not handle synthetic addresses correctly. If the page loads partially, login loops, or a browser feature fails only in fake-IP mode, test redir-host temporarily. Do not change several DNS fields at once; otherwise you will not know which change affected the result.

Run the Step-by-Step Fix

The following sequence is designed to change one variable at a time. It works for Clash Verge Rev, Clash Verge, Mihomo-based clients, and similar desktop interfaces, although menu names may differ slightly.

  1. Refresh the subscription. Confirm that the profile has not expired, that the update completed without an HTTP error, and that the node list is not empty. An expired subscription can leave an old configuration visible while all nodes have stopped working.
  2. Restart the core. Stop and start the Clash core, not only the graphical interface. This clears stale listeners, failed DNS state, and a stuck TUN process.
  3. Use a fixed node. Choose a node that passes connectivity testing. Avoid automatic selection until the basic request succeeds.
  4. Switch to Global mode. Open ChatGPT in a private browser window. This removes most rule-order uncertainty and reduces the impact of cached redirects.
  5. Check the Connections panel. Confirm that ChatGPT and related domains are using the selected proxy group rather than DIRECT or REJECT.
  6. Test the mixed port with curl. Use the actual local port and compare the result with a browser request. This separates browser proxy problems from core and node problems.
  7. Temporarily disable browser Secure DNS. Clear the browser DNS cache or restart the browser, then repeat the request.
  8. Test TUN only after system proxy mode works. Turn off the system proxy if your client recommends that arrangement, enable TUN with administrator or root permission, and retry. Do not run several unrelated VPN or network-filtering applications at the same time.
  9. Return to Rule mode. Add or correct narrow domain rules only after Global mode has confirmed that the node can reach the service.
A useful success criterion

Do not define success as “the home page appeared once.” Confirm that the page loads after a fresh browser restart, login completes, static assets are not blocked, and a normal prompt receives a response. A partial success usually means that one of the supporting domains still has a different rule decision.

Verify TUN Mode and Application Compatibility

System proxy mode mainly covers applications that honor HTTP, HTTPS, or SOCKS proxy settings. TUN mode creates a virtual network interface and lets the Clash core intercept traffic from applications that ignore those settings. This makes TUN useful when ChatGPT works in one browser but not in a desktop application, embedded web view, or other client.

TUN also introduces more variables. The client may require administrator permission, a compatible virtual interface, automatic route installation, and DNS hijacking. If TUN is enabled without the necessary permissions, the interface may appear active while traffic continues to use the ordinary route. If another VPN, firewall, antivirus filter, or network acceleration tool owns the route table, packets may be intercepted twice or sent into a loop.

  • Enable TUN with elevated permission when the client requests it.
  • Check that the virtual interface is present in the operating system's network adapters.
  • Confirm that auto-route and DNS hijack settings are enabled only when your client and operating system support them.
  • Close other VPN clients and packet-filtering tools during the test.
  • Compare TUN mode with ordinary system proxy mode using the same node and the same browser.

If system proxy mode works but TUN mode fails, the node and basic rule are probably fine. Focus on route installation, DNS hijacking, fake-IP compatibility, firewall permissions, and IPv6 handling. If TUN works but system proxy mode fails, check the browser's proxy source and the local mixed-port address.

Avoid Common False Fixes

Several changes are frequently recommended because they appear to solve a timeout, but they can hide the real cause or create a weaker configuration. Changing DNS to a random public server does not repair an expired subscription, a blocked node, or a DIRECT rule. Likewise, increasing every timeout value may make the browser wait longer without improving reachability.

  • Do not assume low latency equals access. Test the actual destination and repeat the request during the time when the problem occurs.
  • Do not paste a subscription link into an unknown converter. The link usually contains an authorization token and should be treated like a password.
  • Do not edit a generated profile without checking update behavior. A subscription refresh can replace local changes unless the client supports a persistent override.
  • Do not enable every mode simultaneously. Running system proxy, TUN, another VPN, and a browser proxy extension together makes the traffic path difficult to identify.
  • Do not leave Global mode as the permanent answer without reviewing privacy and routing needs. It may send domains that should remain direct through the proxy and can increase bandwidth usage.
  • Do not expose the Clash mixed port to the LAN unnecessarily. A listener bound to all interfaces can let other devices use the proxy if firewall access is not restricted.

If the issue remains after these checks, collect the client version, core version, operating system, active mode, selected node region, exact error message, and the relevant connection-log decisions. Remove subscription tokens and private addresses before sharing logs. This information makes it possible to distinguish a local configuration error from a provider-side outage or a destination-specific routing problem.

Keep a Stable ChatGPT Routing Setup

Once ChatGPT works again, restore your normal operating mode carefully. Use Rule mode for everyday traffic, keep a small set of reliable nodes in the relevant proxy group, and let automatic testing select among nodes only after you have verified that they can reach the destinations you use. Review the Connections panel after a profile update because providers can change rule sets, group names, or domain handling.

Keep DNS behavior consistent with your chosen mode. If you use TUN and fake-IP, maintain an appropriate fake-ip-filter for local domains and applications that require real addresses. If fake-IP causes a specific browser or authentication component to fail, test a narrow exception rather than disabling DNS protection globally.

Finally, remember that a successful configuration has several independent parts: a valid subscription, a reachable node, an enabled local proxy path, correct rule order, working DNS, and a compatible TUN or browser setup. Checking those parts in that order turns “ChatGPT times out in Clash” from a vague complaint into a repeatable diagnosis.

Download the Latest Clash Client

Use a current client with an actively maintained Mihomo core, then apply the troubleshooting steps above with a clean profile and a known working node.

Download the Latest Clash

Clients for Windows, macOS, and Android, checked daily against official releases so version numbers match the official repos.

Clash Update