Your subscription works without you ever reading it — so why bother? Because the moment you want custom rules, need to debug misrouted traffic, or write a Merge patch, the config file is where the answers are. And it is genuinely simple: three main sections, half an hour to understand for good.

The three sections of a Clash config: proxies, proxy-groups and rules
Top to bottom: global fields, nodes, groups, rules

The global fields up top

mixed-port: 7897        # shared HTTP + SOCKS port
allow-lan: false        # accept connections from the LAN?
mode: rule              # rule / global / direct
log-level: info
external-controller: 127.0.0.1:9097   # control API address

In Clash Verge most of these are managed by the UI — changing the port or enabling LAN sharing in Settings is literally editing these lines for you.

proxies: what a node looks like

proxies:
  - name: "HK-01"
    type: ss
    server: hk01.example.com
    port: 443
    cipher: aes-256-gcm
    password: "…"
  - name: "JP-05"
    type: vmess
    server: jp05.example.com
    port: 443
    uuid: "…"
    tls: true

type selects the protocol (ss/vmess/vless/trojan/hysteria2/tuic…); the remaining fields vary per protocol. Your provider generates this section — normally nothing to touch here.

proxy-groups: organizing the nodes

Groups are the strategy layer — the tabs you click on the Proxies page are these groups.

proxy-groups:
  - name: "PROXY"
    type: select          # manual choice
    proxies: [Auto, HK-01, JP-05]
  - name: "Auto"
    type: url-test        # fastest wins
    proxies: [HK-01, JP-05]
    url: "https://www.gstatic.com/generate_204"
    interval: 300

Groups nest (PROXY contains Auto), which is how subscriptions build "region → auto-select" hierarchies. Behavior of each group type is covered in node selection.

rules: the referee

rules:
  - DOMAIN-SUFFIX,openai.com,PROXY
  - DOMAIN-KEYWORD,github,PROXY
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

Each rule is a triple: type, value, exit. The exit is a group name, DIRECT or REJECT. Matching runs top to bottom and stops at the first hit — order is priority. MATCH catches whatever nothing else claimed. Full syntax: custom rules guide.

Before you start editing

Never edit the subscription file itself — the next update overwrites it wholesale. Personal changes belong in Merge or Script layers: see enhancement configs.

To test your understanding, right-click your profile card → "Edit file" and read it section by section against this page — more instructive than any tutorial.