Two Kinds of Place Delta Never Serves
Serving a whole home folder to the other family Macs is generous, and it would be reckless without two exceptions. Delta's architecture states them as invariant 4: credential stores and TCC-guarded folders are never served or written, and a guarded folder is refused before it is touched. Each exception exists for a different reason, and the way each one is checked follows from its reason.
Credential Stores: Lexical, Case-Insensitive, at Any Depth
The first list is the obvious one: the places on a Mac where keys and tokens live. HomeShare is built with three tuples from shares.py:
CREDENTIAL_DIRS:.ssh,.gnupg,.aws,.azure,.kube,.docker,.config/gh,.config/gcloud,.config/cwk,Library/Keychains,Library/Cookies, andcwk-dbs/delta-db, Delta's own state, where its tickets, its TLS key and its local token live. These are anchored at the share's root:.sshmeans the home's own~/.sshand everything below it.CREDENTIAL_NAMES:.env,.env.*,.netrc,.npmrc,.pypirc,.git-credentials,.claude.json,.credentials.json, and the four private-key namesid_rsa,id_ed25519,id_ecdsa,id_dsa. These match a single path component anywhere in the tree, so a project's.env.localthree folders down is refused like one at the top.CREDENTIAL_PATHS: exact paths, today one,.codex/auth.json.
All three are compared in lower case, because APFS compares names case-insensitively by default: .SSH/config is the same folder as .ssh/config, and a guard that disagreed with the filesystem about that would be a guard with a hole. A name pattern's * and ? never cross a slash, so .env.* matches .env.production but not a folder path that merely starts with .env. In a listing, these entries are simply absent. On a read, the refusal names its reason: …: refused, .env.local is a credential file.
Guarded Folders: Refused Before They Are Touched
The second list exists because of how macOS privacy (TCC, Transparency, Consent and Control) works. Folders such as Desktop, Documents, Downloads, Pictures, Music, Movies, Library/Containers, Library/Group Containers, Library/Mail, Library/Messages and a dozen more are protected: when a process without a grant opens, lists or even stats something inside one, macOS attributes the access to that process's binary and raises a consent prompt.
For a person at a terminal, that prompt is a click. For a launchd daemon it is a hang. The prompt appears on the Mac's screen in the daemon's name, nobody is sitting there to answer it, and the read blocks inside opendir until somebody does. The family learned this from Watchfire's records before Delta existed: a memory engine had registered another app's capture folder under Library/Group Containers as a source, and every observer tick, once a minute, asked macOS for other apps' data on a screen nobody was watching. The rule that came out of it lives in one shared kit file, kit_guarded_paths: a family engine never enumerates a guarded folder, and it asks the kit before it touches a configured path.
So Delta's guard is not a check on the result of a read. It runs before the read, decided from the path alone. The kit's check is lexical first; when a prefix of the path is a symbolic link, it reads the link itself with readlink (which touches only the link's parent, already judged clean) and judges where it leads. With walk=True, meaning the caller wants to recurse, it also refuses any folder that holds a guarded one: the disk root, /Users, the home itself, ~/Library, ~/.local.
The Order Matters
For one read of one file, a DirectoryShare asks in this order:
clean_rel: no NUL, no...- The credential lists, on the path as asked.
- The privacy guard, on the path as asked, before any system call touches it. The house sign for Delta says it plainly: a
statinside a guarded folder raises the prompt too. - One
lstat. - The path with every link followed: it must stay inside the share, and it faces the credential lists and the guard a second time. A link from
~/projects/inboxinto~/Downloadsis refused exactly as~/Downloadsis.
That is what the phrase refusals are rules about places means. The rule is not "never accept the string Downloads"; it is "never reach the place where downloads live", however the request is spelled.
What It Looks Like From the Other Mac
A plain listing of the home leaves the guarded folders out. A recursive listing of the whole home is refused, because a walk from there would enter them. And a copy from a guarded folder on a Mac that kept the guard is refused by name, with the way out in the message: grant Full Disk Access to Delta's python3 on that Mac and set tcc_guard to false in its host config, ~/.config/cwk/delta.json. That is a decision a person makes once, on purpose, at the Mac in question. Delta never makes it for them, and never makes it by accident.