Clash Verge Global Extended Configuration: Override All Subscriptions at Once (Rev v2.x)

If you searched “Clash Verge global extended configuration”, you most likely want to change one setting for all subscriptions at once (e.g. a unified DNS or port) instead of editing each one. That’s exactly what Global Extended Configuration is for.

This follows Clash Verge Rev v2.x.

The concept: two types × two scopes #

Clash Verge Rev modifies the final effective config through “extensions”, in two types and two scopes:

Extended Configuration (YAML)Extended Script (JavaScript)
Purposeoverride / merge config keysflexibly adjust the config object via code
GlobalGlobal Extended Configuration: applies to all subscriptionsGlobal Extended Script: applies to all
SubscriptionSubscription Extended Configuration: only that subscriptionSubscription Extended Script: only that one

Execution chain (later stages can override earlier ones):

Global Extended Configuration → Global Extended Script → Subscription Extended Configuration → Subscription Extended Script

⚠️ Key point: since v1.7.x the Extended Configuration is only for override/merge of config keys (DNS, ports, toggles, proxy groups, etc.). Adding rules no longer uses prepend-rules — use right-click profile → Edit Rule.

Where to open it #

  • Global: on the Profiles page, find the Global Extended Configuration / Global Extended Script entry near the top.
  • Per subscription: right-click the profile card → choose Edit (Extended Configuration / Script).

What Extended Configuration can do: override / merge examples #

Extended Configuration is a block of YAML; the top-level keys you write are merged into the final config (same-key override, map-type merge). Common uses:

Example 1: unify DNS and disable unified-delay (in Global Extended Configuration → applies to all subscriptions)

dns:
  enable: true
  ipv6: true
  nameserver:
    - https://223.5.5.5/dns-query
    - https://1.1.1.1/dns-query
unified-delay: false

Example 2: set the mixed port and allow LAN connections

mixed-port: 7890
allow-lan: true

Example 3: override a single subscription only (in that subscription’s Extended Configuration)

find-process-mode: always

Save and refresh. Because these live in the extension (separate from the subscription file), updates won’t wipe them.

Adding rules / proxies / proxy groups? #

These are not written in the Extended Configuration (prepend/append moved out in v1.7.x):

  • Rules: right-click profile → Edit Rule (prepend/append). Full guide: How to add rules / custom rules.
  • Proxies / proxy groups: right-click profile → Edit Node / Edit Proxy Group.
  • Or use an Extended Script to add/remove on config.rules / config.proxies / config["proxy-groups"].

Extended Script (in brief) #

For conditions or bulk generation, use an Extended Script (JavaScript on quickjs, no filesystem access):

function main(config) {
  // e.g. force-disable IPv6 DNS for every subscription
  config.dns = config.dns || {};
  config.dns.ipv6 = false;
  return config;
}

Put it in the Global Extended Script to apply to all subscriptions.

Troubleshooting #

SymptomCause / fix
No effect after editingNot refreshed — reselect the profile or reconnect the core
Global overridden by a subscriptionA later subscription extension overrode it — check if you set the same key there
prepend-rules has no effectExtended Configuration no longer adds rules in v1.7.x — use Edit Rule
Script errors, item turns redA thrown error skips the script — ensure main does return config and the syntax is valid