1 Why thoughtful edits disappear after you click “update”
A typical “airport” subscription is nothing more than an HTTPS endpoint that returns a fresh Clash document whenever the provider rotates nodes, changes cipher suites, or renames regions. Your GUI stores that blob locally, then replaces the cached file when you refresh. If you opened the cached YAML in an editor and tweaked proxies: labels, appended rules: rows, or reshuffled proxy-groups:, those edits lived in the same artifact the updater overwrites. The client is not being malicious—it is doing exactly what you asked: trust the remote source of truth.
The fix is architectural. You need two layers: one read-only layer that tracks the provider (the subscription or proxy-providers download), and a second layer that expresses your preferences—display names, personal DIRECT exceptions, corporate intranet shortcuts, or a curated list of streaming domains. In Mihomo / Clash Meta derivatives, that second layer is commonly called a mixin merge or, in Clash Verge Rev, the Override / Mixin panel. The vocabulary differs by client, but the idea is stable: merge user YAML after the remote profile loads so subscription updates never touch your overlay.
This workflow sits next to, but is not the same as, converting non-Clash links into YAML—our subscription converter guide covers that pipeline. Here we assume you already import a Mihomo-compatible profile and want repeatable local customization without forking the provider file each week.
2 Mental model: remote profile, local overlay, merged runtime config
Picture three boxes. Box A is the remote subscription response—large proxies: lists, provider-defined proxy-groups, and a baseline rules: section you did not author. Box B is your mixin fragment: a short YAML file or editor buffer containing only the deltas you care about—extra rules lines, optional DNS tweaks, maybe an additional selector group that references node names from Box A. Box C is what the core actually runs after the merge engine combines A and B according to schema rules.
Merge semantics deserve attention. For many keys, later values override earlier ones; for arrays such as rules, implementations typically append mixin rows after the subscription rules unless the client documents otherwise—Clash Verge Rev’s Override feature explicitly inserts custom rules before subscription rules when you need higher priority matches, which mirrors how you would manually sort a flat list: more specific rows on top, broad MATCH catch-alls at the bottom. Always confirm ordering in your client’s docs because a misplaced MATCH line can make your new rows unreachable.
For readers who maintain large community lists instead of hand-written lines, ACL4SSR-style rule providers remain relevant: you can keep provider-managed subscriptions for nodes while referencing external RULE-SET files for maintenance-heavy domain bundles. Mixin is ideal for short, personal exceptions; rule providers scale better when you track thousands of domains.
3 Clash Verge Rev: where Override and mixin live in the GUI
Clash Verge Rev surfaces the concept under names such as Profile, Merge, or Override depending on version, but the behavior converges on one outcome: a text area (or file) whose contents the app merges into the active profile without writing them back into the subscription cache. After you paste a fragment, reload or apply changes, then trigger a subscription refresh—the remote YAML updates, yet your overlay remains because the client stores it separately.
Practical steps: locate your imported profile, open the override editor, and start with the smallest possible change—one DOMAIN-SUFFIX line sending a test hostname to DIRECT. Validate in the logs that the rule hits, then grow the fragment. Keep overrides short; if you need hundreds of lines, consider moving bulk lists into rule-providers and referencing RULE-SET entries instead of pasting megabytes into the mixin box.
When you need both automatic latency selection and manual overrides, wire policy groups first—our url-test and fallback tutorial explains how to name groups so your mixin rules can target Auto-HK or Fallback-Primary consistently. Mixin does not remove the need for coherent naming; it assumes the merged config still references real group and proxy names.
4 Standalone Mihomo: mixin blocks in config.yaml
On servers or when you edit YAML by hand, Mihomo-compatible cores accept a mixin section (sometimes loaded from an external path, depending on packaging) that deep-merges with the main document. Typical uses include extra dns: listeners, appended rules:, or small proxy-groups: additions. The important discipline is the same as in GUIs: never copy the entire subscription into mixin—only the deltas.
Administrators running systemd units should keep mixin files under the same config directory referenced by -d, track them in private git repositories without secrets, and restart or hot-reload after edits. The Linux Mihomo systemd guide walks through directory layout if you need a reproducible server baseline before layering overrides.
# Merged on top of the main profile; keep it minimal.
rules:
- DOMAIN-SUFFIX,git.corp.example,DIRECT
- DOMAIN-SUFFIX,ntp.org,DIRECT
proxy-groups:
- name: "Work-select"
type: select
proxies:
- "🇭🇰 HK-01"
- DIRECT
Replace 🇭🇰 HK-01 with a name that actually exists post-merge. Subscription refreshes may rename nodes; if names drift, your selector references break until you adjust the mixin. That coupling is unavoidable unless you adopt provider-side rename scripts or stable internal tags—some advanced setups use script hooks, but most desktop users iterate mixin text when the airport renames regions.
5 Appending and prioritizing rules without touching remote YAML
Clash rules evaluate from top to bottom; the first match wins. When you append personal lines, you must decide whether they should fire before provider defaults (for example, forcing an internal domain to DIRECT) or after specialized provider lists but before the final MATCH. Clash Verge Rev’s Override documentation emphasizes inserting high-priority custom rows ahead of subscription rules so corporate or LAN exceptions cannot be shadowed by a broad proxy rule in the downloaded pack.
Use explicit matchers: DOMAIN-SUFFIX for whole registrable suffixes, IP-CIDR with ,no-resolve when you must short-circuit before DNS completes, and RULE-SET when you maintain external lists. Avoid DOMAIN-KEYWORD unless you accept collateral matches—keywords are blunt instruments compared to suffix rules. After each edit, watch the live log or built-in connection table to confirm traffic hits the policy you expect.
rules:
- DOMAIN,internal.service.corp,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- DOMAIN-SUFFIX,cdn.example,DIRECT
# Provider subscription rules follow here in the merged file
# ...
# MATCH,... appears last
If you discover that a provider ships an overly aggressive GEOIP,CN,DIRECT near the top, fixing it may require negotiation with their template or switching to a different rule pack—mixin cannot “delete” a remote line, only supersede behavior by winning an earlier match for the same flows. That limitation pushes some users toward split profiles: one minimal subscription for nodes-only and a local file for all routing logic.
6 Renaming proxies for readability without editing the subscription cache
Long hexadecimal labels and duplicated region tags make selectors hard to read. Ideally the provider gives stable, human-friendly names; when they do not, you have several patterns. First, check whether your GUI offers a per-subscription rename map or regex-based prefix—Clash Verge Rev iterates quickly, and some builds expose subscription-specific tooling that keeps renames outside raw YAML. Second, some Mihomo deployments support provider-level override hooks that rewrite names after download; consult your exact core version because field names evolve between releases.
Third, you can inject a parallel proxies: entry in mixin that duplicates a server with a cleaner name:—but duplication risks drift when upstream passwords rotate, so treat this as a temporary bridge until the provider cleans labels. Fourth, combine proxy-groups creatively: a select group called “Daily driver” listing a handful of meaningful aliases may be easier to maintain than renaming every upstream node.
Whatever strategy you pick, re-test after each subscription refresh. Renames are the fragile link between human-readable UI strings and machine identifiers referenced by rules and nested groups. Automated url-test pools add another dependency: they probe by name; if a name disappears, the group shrinks and the core may fall back to unexpected behavior.
7 Keeping default node choices across restarts
Overrides fix routing text, but users also expect the GUI to remember which proxy they picked last Tuesday. Many Mihomo-compatible profiles enable profile.store-selected (or an equivalent client toggle) so the core persists selector state to disk. Without that flag, a restart may reset groups to their YAML-defined defaults even when mixin merged correctly—confusing newcomers who conflate “lost rename” with “lost selection.”
Separately, distinguish between profile persistence and subscription refresh. Persistence covers local machine reboots; subscription refresh replaces remote nodes but should not roll back mixin. If you observe the opposite, verify you edited the overlay channel rather than the cached subscription artifact, and confirm no “reset profile” button wiped auxiliary files during troubleshooting.
profile:
store-selected: true
8 When to prefer proxy-providers + mixin together
Large fleets often split responsibilities: proxy-providers poll the airport URL on a schedule, while mixin supplies rules, dns, and local-only groups. That separation mirrors how infrastructure teams manage secrets—tokens stay inside provider URLs configured once, overlays live in git with redacted examples. If your provider ships both nodes and a bloated rule section you distrust, consider a nodes-only conversion workflow, then own routing entirely in mixin—more work upfront, but maximum clarity.
Health checks deserve mention: when proxy-providers include health-check blocks, dead nodes fall out of url-test pools faster. Mixin does not replace health checks; it layers policy around them. Likewise, DNS: if mixin adds FakeIP or DoH listeners, align them with the rules you append—otherwise logs will show confusing loopbacks that look like routing bugs.
Readers chasing streaming-specific lists should still evaluate curated rule-providers before hand-maintaining domain rows. The combination “community rule provider + personal mixin for three corporate domains” is a common sweet spot: bulk coverage without editing thousands of lines manually.
9 Troubleshooting: merges that look like they “did nothing”
- Names mismatch: A mixin references
ProxyGroupXbut the subscription renamed it toProxyGroupX-v2. Inspect the merged config the core exposes via API or export. - Rule shadowing: Your new line sits below a broad
MATCHor aggressiveGEOIPentry. Move the custom rows earlier or narrow provider defaults. - Mode misuse:
mode: globalignores elaborate splits. Confirmmode: rulewhen testing mixin routing. - DNS path: FakeIP and real IP resolution disagree; symptoms mimic bad rules. Revisit DNS sections alongside mixin edits.
- Edited the wrong file: Changes went into the downloaded subscription cache instead of the override buffer—double-check the editor title bar or file path.
When all else fails, export the effective runtime YAML (many GUIs offer this) and diff it against your mixin expectations. The merged document is the ground truth the core sees; debating what “should” happen without that snapshot wastes time.
10 Wrap-up
Subscription updates should refresh nodes, not erase your preferences. Treat provider YAML as volatile input, express personal routing and naming through a mixin or Override layer, and keep merges small enough to audit. Pair that discipline with sensible rule ordering, optional profile.store-selected, and—when scale demands it—external rule providers instead of megabyte paste bins. Compared with editing remote files in place, the overlay model survives refreshes, plays nicely with Clash Verge Rev, and stays compatible with the same Mihomo core you might already run on a server.
If you want a polished desktop client that separates subscription downloads from local customization while exposing logs and TUN options in one place, grab a build from our site rather than hunting release assets ad hoc—consistent packages reduce “works on my machine” surprises when you layer mixin fragments on top.