Connectivity Troubleshooting · Clash Technical Blog

Clash Verge Rev Profiles Disappeared After Restart: Backup and Recovery

If subscriptions, Profiles, or Merge/Script settings disappear after restarting Clash Verge Rev v2.5.2, stop further writes and recover from a local backup first. This guide covers identification, recovery, verification, and the stable-release boundary.

  • Clash Verge Rev
  • Profile
  • Configuration loss
  • Local backup
  • v2.5.2
On this page

First confirm this is the same Profile cleanup failure

This guide addresses one specific symptom: Clash Verge Rev v2.5.2 already had subscriptions, local Profiles, or global Merge/Script settings, but after a normal exit, shutdown, or restart, reopening the app leaves only a few items in the configuration list and may reset existing overrides to blank templates.

Official issue #7577 records 30 of 32 Profile files being deleted during startup on macOS. Issue #7804 records 18 of 20 files being deleted on the next Fedora startup after a normal shutdown, with later comments also reporting Windows and macOS cases. These reports point to orphan-file cleanup during startup, not a subscription provider simultaneously removing every node.

Open the app log first and look for Removed file, Profile file cleanup complete, and an unusually high deletion count during a single startup. If the Profile still exists on disk and only the Proxies page is blank, troubleshoot core communication first. If the file exists but reports Invalid YAML, fix its formatting or fields first. If only one subscription update failed while other Profiles remain, do not immediately restore the entire app backup.

Use this guide only when all four signals appear together

CheckMatches this articleIf it does not match
Client versionClash Verge Rev v2.5.2 or a build based on that codeCheck the Release and issue for the version actually installed
Scope of the lossMultiple subscriptions, local Profiles, or Merge/Script settings disappear togetherFor one subscription, check its response and update log first
When it happensThe first startup after exiting, shutting down, or restartingIf it disappears immediately after editing, check save and validation errors
Log evidenceRemoved file or a cleanup-complete message with an abnormal deletion countWithout evidence, preserve the log instead of assuming files were deleted

Preserve the entire app data directory before recovery

Restoring a backup rewrites the app data directory with config.yaml, verge.yaml, profiles.yaml, and the profiles directory from the archive. First copy the entire current directory and its clash-verge-rev-backup subdirectory to another location.

Keep that copy even if the current directory already looks incomplete. It lets you return to the original evidence if you choose the wrong backup or an old configuration overwrites newer changes.

A standard installation usually stores data in the io.github.clash-verge-rev.clash-verge-rev folder under the system data directory. A portable installation uses the .config directory next to the program instead. If you are unsure, use the app-directory shortcut in the client settings. Do not delete data based only on a similar folder name.

Common app data locations

SystemTypical location for a standard installation
Windows%APPDATA%\io.github.clash-verge-rev.clash-verge-rev
macOS~/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev
Linux$XDG_DATA_HOME/io.github.clash-verge-rev.clash-verge-rev; when unset, it is usually under ~/.local/share
Portable versionApplication directory/.config/io.github.clash-verge-rev.clash-verge-rev

What to preserve before recovery

  • A read-only copy of the entire app data directory
  • Every existing ZIP in clash-verge-rev-backup
  • The logs directory and the latest.log from when the failure occurred
  • Any remaining profiles.yaml, profiles directory, Merge.yaml, and Script.js
  • The original subscription URL or the provider's reimport option

Find the newest complete local backup first

Clash Verge Rev v2.5.2 stores local backups in clash-verge-rev-backup inside the app data directory. Automatic backup filenames may include -auto-scheduled, -auto-merge, or -auto-script.

The reporter in issue #7804 recovered the global script from an auto-script ZIP created three days earlier.

The official v2.5.2 backup implementation places the profiles directory, config.yaml, verge.yaml, optional DNS configuration, and profiles.yaml in the same ZIP.

Do not restore a ZIP merely because it opens. Copy it first, confirm that the archive contains both profiles.yaml and profiles/, then choose the newest one created before the failure.

A complete ZIP from before the failure

Prefer the built-in backup history for recovery, and keep a copy of the ZIP.

Only an auto-script or auto-merge ZIP is available

Check its timestamp and contents; it may still contain the complete configuration set, not just one script.

The ZIP is missing profiles.yaml or will not open

Do not write it into the active directory. Use an earlier backup or rebuild from the original subscription instead.

No ZIP is available

Preserve the remaining profiles files, then rebuild each item from its original source.

If the client opens, restore from its backup history

Keep the system proxy and TUN off. Open "Backup Settings" in Settings, then choose "View History" under "Local Backup." Find a backup from before the failure, use Export to save another copy first, and then select Restore and confirm. The official interface restarts the app after recovery finishes.

If the ZIP was moved elsewhere, use "Import Backup" to add the copy to the local backup list, then restore it from the history. Do not extract the ZIP directly into the directory of a running app. Built-in recovery reloads config, profiles, and interface settings after writing them; manual replacement can leave the files on disk out of sync with in-memory state.

Built-in recovery sequence

  1. Turn off traffic-capture controls

    Turn off TUN and the system proxy first so the device can still connect directly if recovery fails.

  2. Open the backup history

    Go to Settings → Backup Settings → Local Backup → View History.

  3. Export a separate copy

    Save the ZIP you plan to restore outside the app data directory.

  4. Select a backup from before the failure

    Confirm it by the timestamp in the filename; do not use an empty-configuration backup created after the failure.

  5. Confirm recovery and wait for the restart

    Do not force-quit the process during recovery. After the restart, check the Profiles before enabling the proxy.

Without a complete backup, rebuild each item from its source

When no usable ZIP exists, do not invent profiles.yaml references or arbitrarily rename randomly named files. Reimport each remote Profile from its saved subscription URL. For a hand-written local configuration, identify the copied profiles files from before the failure one at a time, create a new local Profile, paste in the content, and let the client regenerate the index relationship.

If an older copy of the global Merge.yaml or Script.js still exists, compare it in an offline copy first, then restore it through the client's global extension editor. Rewrite it only when no older content exists in any backup. Do not reconstruct complete rules that may contain secrets or internal domains from public screenshots.

If the subscription URL is also lost, retrieve or reset it through the original provider instead of piecing together a token from browser history, public logs, or someone else's configuration. Save the state after restoring each source so that a problem is traceable, rather than importing everything at once.

Choose the recovery method by content source

Missing contentPreferred sourceRecovery method
Remote subscriptionThe original provider account or a saved URLReimport it, then verify the node count and last-updated time
Local ProfileA saved YAML or a copy of the app directoryCreate a new local configuration, import the content, and validate it
Merge/ScriptA pre-failure ZIP or offline copyRestore and save it through the global extension editor
Only scattered, randomly named files remainThe copied profiles directoryInspect and identify each file; do not overwrite the index directly

Verify Profiles, overrides, and a real connection after recovery

After the app restarts, do not enable TUN immediately. Check the number, names, and types of Profiles and which one is selected. Then open Merge and Script separately and confirm that critical rules are not blank templates. Remote subscriptions should update manually, and local Profiles should pass configuration validation.

Next, select one known-good node, enable only the system proxy, and complete a real HTTPS request. Confirm the domain, rule, and outbound in Connections. Finally, fully quit and reopen the app once more, then check the Profile count and logs again. Recovery is stable only if the second startup also shows no abnormal deletions.

Recovery completion criteria

  • The number, names, and types of subscriptions and local Profiles match the backed-up state
  • Critical content in Merge.yaml and Script.js is present and can be saved
  • The current Profile passes configuration validation and starts Mihomo
  • A fixed node completes a real HTTPS request, and Connections shows the expected outbound
  • The Profiles still exist after a full exit and another startup
  • The new log contains no abnormal Removed file entries or mass-deletion records

If recovery fails, roll back to the preserved state

If the app will not start after recovery, fewer Profiles remain, or the restored configuration fails validation, close the app first. Do not try several ZIP files in succession. Save a separate copy of the app data directory from this recovery attempt, then use the original preserved state to return to the pre-recovery condition.

Keep TUN and the system proxy off first. If the client still does not work after rollback, leave it closed for now. Preserve the log, backup ZIP, and directory copy, then submit the redacted version, operating system, deletion count, and first error to the official issue. Do not uninstall virtual adapters, reset the entire system network, or delete all app data to repair a configuration.

Rollback after a failed recovery

  1. Stop further writes

    Fully quit Clash Verge Rev and confirm that its related processes have ended.

  2. Preserve the failed result

    Save a separate copy of the recovered directory and log so you can compare which file caused the failure.

  3. Restore the original preserved state

    Use the full directory copy saved before recovery; do not mix in a second unknown ZIP.

  4. Stay on a direct connection while waiting for a resolution

    Leave the system proxy and TUN off, and report the issue upstream with redacted evidence.

The fix is in the development branch but not yet in a stable release

On 9/2/2026, the maintainer confirmed in issue #7804 that commit 44f6f6e removed the unreliable cleanup logic and closed the issue. The commit is titled “preserve files until explicit deletion”; its code directly removes the startup call to cleanup_orphaned_files and the entire automatic-deletion implementation.

As of 9/3/2026, the latest stable version in the official Releases is still v2.5.2, published on 7/19/2026, and its release notes do not include this later fix. Therefore, “issue closed” does not mean “fixed in v2.5.2,” and you should not move an everyday device to a development build solely to avoid this risk.

The safer approach is to complete the backup and recovery first, avoid unnecessary repeated launches, and wait for an official stable release that explicitly includes 44f6f6e. When a new stable version arrives, keep the current backup, verify the Release, and run one regression check with a full exit, restart, and real connection.

Keep both automatic backups and an external copy going forward

After recovery, enable scheduled local backups in Backup Settings and keep “Back up automatically on critical changes” enabled. The v2.5.2 implementation creates archives on schedule and after global Merge/Script changes, retaining up to 20 automatic archives. This limit means the local directory is not a permanent history.

Export at least one verified ZIP outside the app data directory, or configure a WebDAV service you control. Before a major subscription-override change, client migration, or upgrade, manually create and export a backup. Run recovery drills only when a rollback copy is available.

Long-term protection checklist

  • Scheduled local backups are enabled at a frequency that matches how often you make changes
  • Automatic backups on critical changes remain enabled
  • The newest ZIP has been exported outside the app data directory
  • The archive has been confirmed to contain profiles.yaml and profiles/
  • Subscription URL values, Profiles, and backups are never shared publicly
  • Before upgrading, verify that the stable Release explicitly includes 44f6f6e or an equivalent later fix

References