AI Corner · · Approx. 19 min read

Notion AI or Sync Spinning? Route Notion and AWS Domains in Clash: Step-by-Step Guide 2026

For distributed teams, Notion and Notion AI sit in an awkward middle ground: not quite “another chat tab,” yet every block edit, inline assistant call, and attachment upload still depends on a mesh of HTTPS endpoints that can split across Clash routing decisions. In 2026, search threads still fill with the same phrases—sync spinners that never resolve, pages that render half-loaded, or Notion AI panes that claim a region or network error even when generic browsing feels fine. Those symptoms rarely mean “Notion is down globally.” More often they mean your mihomo profile routes the branded app shell through one exit while AWS object storage, CloudFront edges, or websocket-style collaboration hosts ride DIRECT or a different policy group—so the UI pretends progress while the data plane disagrees. This guide walks a reproducible workflow: name the Notion surfaces you can trust as stable suffixes, promote AWS-related hostnames from developer tools and logs instead of carpet-bombing every cloudfront.net name on the internet, place explicit rules ahead of blunt GEOIP catch-alls, and align DNS with fake-ip so domain rows actually fire. It deliberately complements, rather than duplicates, chat-centric posts such as our ChatGPT routing rules and Claude region and DNS guide: here the workload is knowledge-base sync, uploads, and editor latency—not a single completions API hostname list copied from a gist.

1. Why Notion Breaks Differently From Chat-Only AI Apps

When people say “Notion AI does not work behind my proxy,” the failure mode is often indistinguishable from “my workspace never finishes sync.” That ambiguity matters for Clash operators. A conversational product such as ChatGPT tends to compress into a comparatively small set of long-lived HTTPS sessions where the browser or IDE is the only client you care about. Notion instead mixes always-on editor traffic, background file transfers, thumbnail fetches, identity checks, and model-backed features that may call additional hosts as product capabilities evolve. If your split-tunnel profile was tuned for “AI” by importing a vendor’s domain cheat sheet aimed at chat completions, you may still leave entire AWS buckets or CloudFront distributions unmatched—because those lists were never written for a collaborative document store in the first place.

Another trap is assuming that “global mode” or “everything foreign proxied” is equivalent to consistency. Large providers move control-plane and data-plane endpoints independently. You can easily end up with HTML on one path and binary payloads on another, each with different congestion characteristics and middlebox behavior. The goal of explicit Clash routing is not ideological purity; it is observability. When hostnames are enumerated and ordered, your mihomo logs tell a story you can defend when a teammate asks why Tuesday’s workshop notes refused to upload during a demo.

Finally, temper expectations: Clash cannot fix an exit node that throttles long uploads, nor can it override account-level AI availability decisions from Notion itself. What it can do is remove self-inflicted split paths—cases where half of the session believes it is on a clean international egress while the other half is still trying a domestic default that drops certain TLS fingerprints or rate limits parallel sockets.

2. Phases of Traffic: Shell, Real-Time Sync, Files, AI

Think in phases instead of a single “Notion domain.” Phase one is the shell: the document chrome, navigation, and configuration panels that convince you the app loaded. Phase two is collaboration and state: websocket or long-polling style channels that keep blocks consistent across clients. Phase three is files: PDFs, images, exports, and large paste payloads that often ride object storage or CDN-shaped hostnames rather than the same string as the marketing site. Phase four is Notion AI and related assistants: additional HTTPS calls that may surface as inline errors even when the rest of the page is static HTML from phase one. A routing profile that only matches phase one is the classic recipe for “UI works, sync spins forever.”

This phased mental model also explains why copying rules from a Cursor or IDE assistant article helps only partially. Developer tools routing often optimizes package indexes, Git hosts, and model APIs—not the steady drumbeat of small editor mutations plus large binary attachments that characterize knowledge bases. Treat Notion closer to a CDN-heavy developer download article in spirit: list participants, verify bytes on the wire, and distrust catch-alls.

As you read network traces, note which failures correlate with uploads versus typing latency. Upload stalls frequently implicate AWS S3-style hostnames or narrowly scoped CloudFront distributions. Inline AI failures may still be DNS or policy related, but they can also be product-side gates; keep a control test on a plain network to avoid chasing ghosts.

3. Notion Hostnames You Should Name Before GEOIP

Start from stable DOMAIN-SUFFIX rows for the product’s own namespaces. In most deployments you want at least notion.so, notion.com, notion.site (public sites and sharing flows), and makenotion.com (corporate and marketing surfaces that still influence redirects and authentication handoffs). If your organization uses custom domains for published wikis, mirror those literally—guessing with partial wildcards is how you strand only one team’s customer-facing page on DIRECT.

Place these rows above broad GEOIP or MATCH shortcuts in mihomo. Rule order is not cosmetic; it is the difference between “my catch-all foreign bucket already proxies everything” and “except the one subdomain that matched CN direct first because your provider list said so.” If you maintain inline rules alongside rule-providers, audit ordering whenever subscriptions update—our rule-providers and GEOIP maintenance guide walks the failure modes that silently undo explicit rows.

Remember that suffix coverage is necessary but not sufficient. Notion may still pull third-party assets (analytics, error reporting, or embedded previews) that are not on those suffixes. Do not overfit your entire life to a single app; instead, capture a five-minute trace while reproducing the spinner, then add only hostnames you actually see. That discipline keeps profiles maintainable across quarters.

4. AWS, S3, and CloudFront: Log-First, Not Wildcard-First

Attachments and exports are where AWS enters the story. Users frequently observe hostnames under amazonaws.com or specific regional S3 buckets, and occasionally cloudfront.net distributions with opaque prefixes. The temptation is to add DOMAIN-SUFFIX,amazonaws.com and call it a day. That is strategically lazy: it routes an enormous fraction of the public internet through your proxy, including unrelated workloads that happen to share the same suffix, and it complicates incident response when something unrelated breaks because you widened the blast radius.

Prefer log-driven specificity. When mihomo logs show a failing upload to a concrete bucket hostname such as prod-files-secure.s3.us-west-2.amazonaws.com (illustrative; always verify your trace), add that row—or a minimally wider pattern your team agrees on—next to your core Notion suffixes. For CloudFront, add the exact *.cloudfront.net names you see during stalled transfers rather than declaring all of cloudfront.net special. Yes, that is more typing; it is also the difference between a profile you can reason about and a profile that “mysteriously fixed itself” until the next unrelated SaaS started misbehaving.

If you operate enterprise split tunnels, document why each AWS hostname exists. Future you—and the colleague inheriting your YAML—will not remember which spinner in March justified a global S3 wildcard. Good documentation pairs each hostname with a captured log line or a ticket link. That sounds bureaucratic until the first time you avoid a weekend outage caused by an overbroad rule interacting with a finance app nobody remembered shared the same CDN suffix.

5. Mihomo Rules, Policy Groups, and Order

Map a dedicated policy group such as PROXY-NOTION to the nested selector you already trust for stable international browsing—often the same group you use for other SaaS productivity suites. Keep Notion, its verified AWS helpers, and any log-promoted CloudFront names inside that group so they share fate. Splitting “AI to node A, files to node B” is sometimes necessary for compliance, but it introduces asymmetry that shows up as flaky sync when either path introduces extra latency or packet loss.

Example: minimal explicit rows (rename policy group to match your profile)

# Place BEFORE catch-all GEOIP / MATCH rules
rules:
  - DOMAIN-SUFFIX,notion.so,PROXY-NOTION
  - DOMAIN-SUFFIX,notion.com,PROXY-NOTION
  - DOMAIN-SUFFIX,notion.site,PROXY-NOTION
  - DOMAIN-SUFFIX,makenotion.com,PROXY-NOTION
  # Add S3 / CloudFront hosts from your own logs, e.g.:
  # - DOMAIN,prod-files-secure.s3.us-west-2.amazonaws.com,PROXY-NOTION
  # - DOMAIN,d111111abcdef8.cloudfront.net,PROXY-NOTION

Avoid duplicating the same logical hostname in contradictory providers unless you track precedence. If a subscription rule-provider reintroduces a DIRECT row for a hostname you meant to proxy, the provider’s position in the merged list decides the outcome—another reason ordered diagnostics beat random toggling.

For broader policy design—when to nest selectors, how to separate domestic direct traffic, and how to think about precedence without vendor lock-in—see our advanced routing guide on this site. It is not Notion-specific, but it explains the grammar your snippets sit inside.

6. DNS, Fake-IP, and Resolver Alignment

DNS is not a separate universe from Clash routing; it is the handshake that makes DOMAIN rules meaningful. With fake-ip enabled, clients may receive synthetic addresses that only resolve correctly once traffic enters the core. That is powerful when everything participates, and maddening when one stack bypasses the tunneled resolver. A desktop Notion app may use OS resolver APIs differently than Chrome with Secure DNS enabled, and both may disagree with a WSL session you use for scripts—mirroring the split-brain patterns we highlight for Windows in subscription TLS and DNS troubleshooting on Windows.

Practical checks: query the same hostname from the shell and from the browser’s network panel, then compare answers and whether mihomo logs show the expected policy for the resulting five-tuple. If the hostname never appears in logs during a reproduction, traffic is not traversing the core—fix interface binding, TUN exclusion lists, or per-app VPN behaviors before rewriting rules. When debugging fake-ip, temporarily reduce noise by testing a single client surface (for example, only the browser) until responses stabilize, then reintroduce the desktop app.

IPv6 deserves an explicit mention. If the OS prefers AAAA records while your tunnel path is IPv4-only or differently routed, you can observe “works once, then stalls” as Happy Eyeballs races two families against different policy outcomes. Align dual-stack behavior intentionally—either consistently through the tunnel for testing, or consistently disabled for a controlled A-only experiment—before declaring your AWS rules useless. For a deeper dual-stack walkthrough, see TUN IPv6 dual-stack calibration.

7. Desktop App, Browser, and Mobile Egress

The macOS or Windows desktop client is not guaranteed to share the same proxy trust store as Edge or Chrome. System proxy toggles, per-user service accounts, and corporate device management profiles can all create “browser works, app does not” reports that are actually three different network stacks. Standardize on one verification path: either pure TUN mode with confirmed process capture, or explicit HTTP_PROXY variables aligned to your mixed port—then prove with logs rather than assumptions.

Mobile clients add another axis: background refresh, push services, and OS-level data saver modes interact poorly with aggressive battery optimizations. If only mobile fails, suspect device networking first, then confirm whether DNS over TLS from the OS bypasses Clash entirely. The invariant remains: read hostnames from evidence, align them under the same PROXY-NOTION umbrella, and retest.

When teams mix personal and corporate machines, document which profile is considered canonical. Nothing is more expensive than each teammate maintaining a forked YAML with slightly different CloudFront literals learned from their own traces—good for learning, terrible for operations. Prefer a shared snippet repository where promoted hostnames carry dates and log excerpts.

8. TLS, Sniffer, and QUIC Split-Brain

HTTPS hides hostnames from naive observers. Clash Meta can recover information using Sniffer when needed, but sniffing is not a substitute for sane DOMAIN rules—it is a diagnostic escalator. If you see mysterious stalls only on HTTP/3, try disabling QUIC in the browser temporarily or force HTTP/2 for a test window; UDP-bearing flows sometimes take paths TCP-only rules never anticipated. Our sniffer and SNI log guide explains how to read evidence instead of guessing.

When TLS errors cite certificate mismatch rather than timeout, distinguish censorship from misrouting. Sending AWS bucket traffic through an incompatible middlebox can surface as scary certificate names even when ordinary news sites work. Collect the hostname, the stage of handshake failure, and whether switching exits changes the symptom—those three data points usually split “bad node” from “local MITM” from “wrong hostname entirely.”

Finally, remember that Notion AI features may depend on vendor-side availability and acceptable-use checks. Networking fixes clear the path; they do not grant entitlements your workspace admin disabled. Keep a quick control test off-proxy to avoid burning hours on policy when the answer is account configuration.

9. Verification Checklist

Walk this sequence when Notion misbehaves behind Clash instead of toggling random switches:

If every box passes and problems persist, rotate exits methodically; sustained S3 throughput is a legitimate stress test that exposes weak nodes even when lightweight browsing felt perfect.

10. Closing Thoughts

Routing Notion well in 2026 still comes down to naming every participant in the editor’s story: branded app hosts, log-promoted AWS object endpoints, narrowly scoped CloudFront names, the DNS mode that makes your DOMAIN rows meaningful, and the mihomo policy group that keeps those participants on a coherent exit. Compared with one-line advice like “just use global,” explicit lists plus ordering give you logs you can attach to an incident ticket—which is what distributed teams actually need when a workshop doc fails mid-demo.

This guide also stays intentionally distinct from pure chat AI routing articles: you are not optimizing a single completions API string; you are stabilizing a collaborative surface that moves small writes and large files through different networks at the same time. Treat it like any other SaaS with a split data plane—observe hostnames, align resolver reality with tunnel policy, and prefer reproducible steps over superstition.

When you want a maintained client build, clear installers, and room to grow into Meta-era diagnostics without hunting scattered binaries, start from our download center before you tune another YAML fragment. Open-core Clash distributions with visible rules tend to age better as both your vendor and your network evolve. → Download Clash for free and experience the difference

Hand-picked deep-dives on the same topic — practical Clash routing guides in the same category.