Overrides keep local changes separate from subscription updates
The current official documentation uses the name Clash Party, while older releases, filenames, and searches may still refer to Mihomo Party. In this article the names describe the same project's earlier and current branding; they are not two clients that need to be installed together. Use the current official repository and documentation to identify the release and interface you actually have.
The official override guide defines an override as a way to customize a subscription configuration while keeping those changes after the subscription is updated. Instead of editing the newly downloaded main YAML on every refresh, you create a smaller file containing only the keys that must change. Clash Party combines that file with the subscription during configuration generation.
This separation makes cause and rollback visible. The provider remains responsible for the subscription, while you remain responsible for the override. Disabling the override should restore the provider's configuration without destroying either source. It also lets you review a small patch instead of comparing an entire generated profile after every update.
An override is not a subscription converter. It does not create proxy nodes or renew an expired URL. Prove that the unmodified subscription downloads and parses before using an override for rules, DNS, or proxy groups.
Choose global or per-subscription scope, then bind the file
Clash Party can enable an override globally or attach it to a particular subscription. A per-subscription binding is the safer first experiment. Only the test profile changes, while another known-good subscription remains a control. Consider global scope only when the same patch genuinely applies to every configuration and does not assume provider-specific group names.
- Open Overrides from the left navigation. Import a local YAML file that you can audit, or use a direct URL only when you trust and control its contents.
- Open the imported item, reduce it to the fields needed for this test, save it, and note its exact name.
- Open Subscription Management, use the three-dot menu on the target subscription, and select Edit Information.
- In the Override field, select the YAML item you just created and save, then reload the target subscription.
- Inspect the effective configuration or connection log to prove that the changed key reached the core. A “saved” message in the editor verifies only storage.
A remotely imported override can change later without the subscription provider changing anything. Save and review a local copy before accepting modifications to DNS, scripts, remote rule providers, or external controllers. Never publish the downloaded subscription as though it were an override; it can contain private node credentials and account tokens.
Name the file after its single purpose, such as “prepend one internal direct rule,” rather than “my config.” A precise name makes the active binding understandable months later and prevents an experiment from silently becoming a global dependency.
Learn how scalars, objects, and arrays merge
The official YAML override documentation says that Clash Party uses deep merging and that this override layer has lower priority than the application's common-configuration overrides. A simple value replaces the prior value. Nested objects merge recursively. Adding ! to a key forces replacement of the complete object instead of recursive merging.
Arrays require special care. A normal array key replaces the original array; it does not automatically add to it. A + before the key prepends items, while a + after the key appends them. That difference is especially important for rules, where replacement can discard the provider's entire routing policy.
# Put a custom rule before the original rules
+rules:
- DOMAIN,example.internal,DIRECT
# Put a rule after the original rules
rules+:
- DOMAIN-SUFFIX,example.net,Proxy
example.internal, example.net, and Proxy are placeholders. Replace the policy target with a group that actually exists in the selected subscription. YAML can be syntactically valid while Mihomo rejects the effective configuration because a referenced group does not exist.
Rule order changes meaning. A broad prepended rule can capture traffic before a provider's more specific entry. An appended rule placed after a terminal MATCH may never be reached. Review both the rule text and its resulting position.
Test one observable change before refreshing the subscription
Do not make the first override change DNS, TUN, proxy groups, and dozens of rules at the same time. Choose one observable and reversible field, such as a prepended rule for a test domain you control. Save and reload the profile, send one request, and confirm in Connections or Logs that the domain uses the expected policy while unrelated traffic remains unchanged.
- Record the subscription name, current override binding, and actual policy used by the test request before making the change.
- Enable a YAML override containing one modification, reload the profile, and repeat the same request.
- After the expected route changes, update the subscription manually without editing the downloaded main configuration.
- Repeat the identical request after the update and verify that the override is still bound and participates in generation.
- Finally disable the override, reload, and confirm that the original route returns. This proves the rollback path.
“The editor saved,” “the subscription updated,” and “the core loaded the effective profile” are three different checkpoints. The purpose of an override is persistence across refreshes, so the test is incomplete until the same behavior is observed after a real subscription update.
Keep the connection log from before, during, and after the experiment, but redact domains that reveal private systems and any token-bearing URL. The useful evidence is the selected policy and change in rule behavior, not the full private profile.
Unbind first when parsing or routing breaks
If the effective configuration no longer loads, the fastest reversible action is to open Subscription Management, edit the affected subscription, remove the override binding, and reload the original subscription. Do not begin by deleting the subscription, override, and all application data. Unbinding alone shows whether the generated merge is responsible and preserves the YAML for review.
| Symptom | Check first | Recovery |
|---|---|---|
| Syntax error on save | Indentation, colons, array markers, and quoting | Return to a one-key minimal override |
| Core reports a missing policy | Exact spelling of the target proxy group | Use a group present in the active subscription |
| Original rules disappear | Whether rules: replaced the array | Use +rules: or rules+: as intended |
| The change has no effect | Binding, selected subscription, and higher-priority common settings | Inspect the effective configuration, not only the editor |
Treat each override as a small, versionable patch. Give it a purpose-specific filename, comment the proxy-group names it assumes, and add one class of change at a time. When a provider renames a group or restructures rules, this discipline exposes the expired assumption instead of turning every failure into an unexplained “override problem.”
Keep a known-good profile without the experimental binding. It provides a quick comparison and a working network path for reading official documentation if the test profile fails.
Official sources and version scope
- clashparty.org/docs/guide/override
- clashparty.org/docs/guide/override/yaml
- github.com/mihomo-party-org/clash-party
- github.com/mihomo-party-org/clash-party/releases/tag/v2.0.2
Version numbers, filenames, and interface labels can change. Confirm them in the linked project documentation before making changes.