Clash Verge system_proxy_bypass: verge.yaml Examples

If you need the system_proxy_bypass format, the short answer is:

  • File: the application’s verge.yaml, not a downloaded subscription profile.
  • Value type: one semicolon-separated string, not a YAML list.
  • Default local bypasses: keep use_default_bypass: true unless you intentionally want to replace the built-in list.
use_default_bypass: true
system_proxy_bypass: localhost;127.*;10.*;192.168.*;<local>

Back up verge.yaml before editing. Restart Clash Verge Rev or reapply the System Proxy setting after saving.

system_proxy_bypass in verge.yaml #

system_proxy_bypass is an application-level System Proxy preference. It controls destinations that bypass the operating-system proxy when Clash Verge Rev manages System Proxy.

The entries are separated by semicolons:

localhost;127.*;10.*;192.168.*;<local>

Three common mistakes #

  1. Do not convert the value to a YAML array. It is stored as one semicolon-separated string.
  2. Do not paste it into a subscription profile. The downloaded profile contains Mihomo routing configuration; system_proxy_bypass belongs to the application’s verge.yaml.
  3. Do not expect a live edit to apply instantly. Restart the application or toggle/reapply System Proxy after saving.

When the user interface exposes the same bypass fields, prefer editing them in the UI. Direct file editing is most useful for recovery, inspection or versions where the option is not visible.

verge.yaml settings vs Mihomo profile settings #

These names look related but belong to different layers:

SettingLayerWhere it belongs
system_proxy_bypassClash Verge applicationverge.yaml / System Proxy UI
use_default_bypassClash Verge applicationverge.yaml / System Proxy UI
allow-lanMihomo configurationGlobal or profile Extended Configuration
mixed-portMihomo configurationGlobal or profile Extended Configuration
dnsMihomo configurationGlobal or profile Extended Configuration

Do not combine all five keys into one block unless the editor explicitly targets the appropriate layer.

What is Global Extended Configuration? #

Global Extended Configuration is YAML that Clash Verge Rev merges into the final Mihomo configuration for every imported subscription. It is useful for stable config keys such as DNS, ports, allow-lan, find-process-mode and similar options.

Clash Verge Rev has two extension types at two scopes:

ScopeExtended ConfigurationExtended Script
GlobalYAML merged into every profileJavaScript applied to every profile
SubscriptionYAML merged into one profileJavaScript applied to one profile

The execution order is:

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

Later stages can override values set earlier.

Where to open the editors #

  • Global: open the Profiles page and use the Global Extended Configuration or Global Extended Script entry near the top.
  • One subscription: right-click that profile card and choose the relevant edit option.
  • Rules: right-click the profile and choose Edit Rule; do not add rules to Extended Configuration in current v1.7.x+/v2.x versions.

allow-lan and mixed-port example #

The following block belongs in Global Extended Configuration or a profile’s Extended Configuration, not in the application-level bypass field:

allow-lan: true
mixed-port: 7890
  • allow-lan: true allows other devices to reach the Mihomo listener, subject to bind address, firewall and network isolation.
  • mixed-port exposes a combined HTTP/SOCKS listener on the selected port.

Turning on allow-lan is not sufficient by itself if the operating-system firewall blocks the port or the service only binds to localhost.

DNS override example #

Use a Mihomo config block for DNS:

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

This changes the effective proxy configuration for the selected scope. It does not alter the System Proxy bypass list in verge.yaml.

Global vs subscription scope #

Use Global Extended Configuration when every imported profile should share the same setting. Use a subscription-level extension when only one profile needs the change.

Example for one profile:

find-process-mode: always

Because extensions are stored separately from the downloaded subscription file, a subscription refresh does not normally erase them.

Adding rules, nodes or proxy groups #

Current Clash Verge Rev versions separate these tasks:

  • Rules: use Edit Rule and prepend/append rules.
  • Nodes: use the profile’s node editor when available.
  • Proxy groups: use the profile’s proxy-group editor.
  • Dynamic or bulk changes: use an Extended Script.

Since v1.7.x, writing prepend-rules or append-rules inside Extended Configuration is no longer the current rule workflow.

Extended Script example #

Use a script for conditional or generated changes:

function main(config) {
  config.dns = config.dns || {};
  config.dns.ipv6 = false;
  return config;
}

A script must return the final config object. Put it in the Global Extended Script editor to apply it to every profile.

Troubleshooting #

SymptomCause and fix
system_proxy_bypass has no effectConfirm it is in verge.yaml, uses semicolons, and reapply System Proxy
Local network destinations still use the proxyKeep use_default_bypass: true or add the required private ranges
allow-lan is enabled but another device cannot connectCheck bind address, firewall, client isolation and the configured port
Global YAML is overriddenA later subscription extension or script sets the same key
prepend-rules has no effectUse Edit Rule instead of Extended Configuration
Script item turns redFix syntax errors and ensure main returns config