First, congratulations on successfully upgrading to the latest macOS Catalina 10.15. Ordinary users may notice no dramatic change in daily use, but developers hit some odd phenomena while building apps, because Apple works black magic in the new system.
When developers search for an app, do two files show up — two files that only differ by path? For example:
-
/Applications/Microsoft Excel.app
-
/System/Volumes/Data/Applications/Microsoft Excel.app
And after entering Macintosh HD/System/Volumes/, it seems you’re back at Macintosh HD — a self-loop? See the image below:

macOS System File Security Update
As early as 2015, Apple engineers added System Integrity Protection (SIP) to El Capitan, requiring root to modify any system file — but malware that gains root can still damage system files.
In Catalina 10.15, Apple engineers went further: they fully separated system files from user files into a new file system that is read-only and cannot be written to.
This black magic is thanks to the APFS file system introduced in macOS High Sierra, which brings many new features: Clones, Snapshots, Space Sharing, Encryption, Crash Protection, Sparse Files, Fast Directory Sizing, Atomic Safe-Save. Catalina first creates a new Volume in the APFS Container: “Macintosh HD”, and the original disk is renamed to “Macintosh HD - Data” — an ugly name; who knows if Apple will change the “-Data” suffix later. “Macintosh HD - Data” is our old disk, where users can freely read and write data; the new “Macintosh HD” is dedicated to storing system files and is entirely read-only. This separates system files from user files, so neither user actions nor malware can affect the system itself.
Apple Works Its Black Magic
Separating system and user files is a great idea, but showing two partitions feels weird to users — where on earth is the file I want? To solve this, Apple puts on another show: in macOS 10.15 Catalina it introduced a new file concept — Volume Groups, which let it present the two volumes inside the container as a single one. Next problem: all system files are now moved into “Macintosh HD”, while third-party apps can only stay in “Macintosh HD - Data”. Developers’ programs need to call system files, but the programs don’t know the system files moved house; they still call them by the old paths and can’t find them. Apple puts on yet another show: it uses “firmlink” technology, which Apple’s own engineers call a “two-way wormhole” between the data volume and the system volume. In practice it’s a mirror between the two, so the system files appear to still be near us — except what you see is only the mirror image, not the real thing. For example, /Users is a folder in Macintosh HD - Data, but it has a firmlink at the root of the system volume. So the /Users you see at the disk root is actually physically at /System/Volumes/Data/Users/. If you want to see which files your Mac has created firmlinks for, open /usr/share/firmlinks.
