← back to Nas Setup
auto-data-snapshot: 2026-08-07T08:00:20 (3 data files) — launchd/com.steve.nas-dwdump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror.plist
0003120c6c5f89180e406c45aff07d4502316ea6 · 2026-08-07 08:02:36 -0700 · auto-commit-fleet
Files touched
A launchd/com.steve.nas-dwdump-mirror-root.plistA launchd/com.steve.nas-realestate-dump-mirror-root.plistM launchd/com.steve.nas-realestate-dump-mirror.plist
Diff
commit 0003120c6c5f89180e406c45aff07d4502316ea6
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date: Fri Aug 7 08:02:36 2026 -0700
auto-data-snapshot: 2026-08-07T08:00:20 (3 data files) — launchd/com.steve.nas-dwdump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror.plist
---
launchd/com.steve.nas-dwdump-mirror-root.plist | 46 ++++++++++++++++++
...com.steve.nas-realestate-dump-mirror-root.plist | 54 ++++++++++++++++++++++
launchd/com.steve.nas-realestate-dump-mirror.plist | 6 ++-
3 files changed, 105 insertions(+), 1 deletion(-)
diff --git a/launchd/com.steve.nas-dwdump-mirror-root.plist b/launchd/com.steve.nas-dwdump-mirror-root.plist
new file mode 100644
index 0000000..be50ef3
--- /dev/null
+++ b/launchd/com.steve.nas-dwdump-mirror-root.plist
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!--
+ com.steve.nas-dwdump-mirror-ROOT — root-context replacement for the user LaunchAgent
+ com.steve.nas-dwdump-mirror (the dw_unified 3-2-1 on-prem mirror). Same TCC fix as the
+ realestate sibling: a user launchd agent EPERM'd writing to /Volumes/Henry because macOS
+ won't honor Full Disk Access on the SIP /bin/bash responsible-process; a system
+ LaunchDaemon runs outside the per-user TCC consent domain and can write the external
+ volume. This is what let the dw_unified backup go 41 days stale silently.
+ Installed to /Library/LaunchDaemons by scripts/install-root-daemon-dwdump.sh.
+ HOME=/var/root points ssh at root's copy of the Kamatera key. Runs 03:45 as root.
+ Added 2026-08-07 (TK-10323).
+-->
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>com.steve.nas-dwdump-mirror-root</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/opt/homebrew/bin/bash</string>
+ <string>/Users/macstudio3/Projects/nas-setup/scripts/pull-dw-dump.sh</string>
+ </array>
+ <key>EnvironmentVariables</key>
+ <dict>
+ <key>HOME</key>
+ <string>/var/root</string>
+ <key>HENRY_BACKUP_DIR</key>
+ <string>/Volumes/Henry/dw-backups/dw_unified</string>
+ <key>NAS_BACKUP_DIR</key>
+ <string>/Volumes/DW-Backups/dw_unified</string>
+ <key>PATH</key>
+ <string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
+ </dict>
+ <key>StartCalendarInterval</key>
+ <dict>
+ <key>Hour</key><integer>3</integer>
+ <key>Minute</key><integer>45</integer>
+ </dict>
+ <key>RunAtLoad</key>
+ <false/>
+ <key>StandardOutPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd-dwdump-root.out.log</string>
+ <key>StandardErrorPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd-dwdump-root.err.log</string>
+</dict>
+</plist>
diff --git a/launchd/com.steve.nas-realestate-dump-mirror-root.plist b/launchd/com.steve.nas-realestate-dump-mirror-root.plist
new file mode 100644
index 0000000..128b767
--- /dev/null
+++ b/launchd/com.steve.nas-realestate-dump-mirror-root.plist
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!--
+ com.steve.nas-realestate-dump-mirror-ROOT — root-context replacement for the user LaunchAgent
+ of the same name. Installed to /Library/LaunchDaemons (root:wheel 644), bootstrapped into the
+ system/ domain by scripts/install-root-daemon.sh.
+
+ WHY root: the user LaunchAgent EPERM'd writing to /Volumes/Henry because macOS TCC won't honor
+ a Full Disk Access grant on the SIP /bin/bash responsible-process for a launchd job. A system
+ LaunchDaemon runs outside the per-user TCC consent domain, so it can write the external volume
+ without a GUI Full Disk Access toggle. Root gets its own copy of the Kamatera SSH key
+ (/var/root/.ssh/) + config from the install script — HOME=/var/root points ssh at it.
+ Added 2026-08-07 (TK-10323). The George-email leg of pull-dw-dump.sh self-skips under
+ HOME=/var/root (its `[ -f $HOME/.claude/... ]` guard); the CNCP alert card still fires.
+-->
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>com.steve.nas-realestate-dump-mirror-root</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/opt/homebrew/bin/bash</string>
+ <string>/Users/macstudio3/Projects/nas-setup/scripts/pull-dw-dump.sh</string>
+ </array>
+ <key>EnvironmentVariables</key>
+ <dict>
+ <key>HOME</key>
+ <string>/var/root</string>
+ <key>HENRY_BACKUP_DIR</key>
+ <string>/Volumes/Henry/dw-backups/realestate</string>
+ <key>NAS_BACKUP_DIR</key>
+ <string>/Volumes/DW-Backups/realestate</string>
+ <key>PGDUMP_GLOB</key>
+ <string>/root/backups/db/realestate_*.dump</string>
+ <key>PGDUMP_FLOOR_MB</key>
+ <string>1</string>
+ <key>PGDUMP_TOC_FLOOR</key>
+ <string>5</string>
+ <key>PATH</key>
+ <string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
+ </dict>
+ <key>StartCalendarInterval</key>
+ <dict>
+ <key>Hour</key><integer>3</integer>
+ <key>Minute</key><integer>50</integer>
+ </dict>
+ <key>RunAtLoad</key>
+ <false/>
+ <key>StandardOutPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd-realestate-root.out.log</string>
+ <key>StandardErrorPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd-realestate-root.err.log</string>
+</dict>
+</plist>
diff --git a/launchd/com.steve.nas-realestate-dump-mirror.plist b/launchd/com.steve.nas-realestate-dump-mirror.plist
index a823f95..c3cad59 100644
--- a/launchd/com.steve.nas-realestate-dump-mirror.plist
+++ b/launchd/com.steve.nas-realestate-dump-mirror.plist
@@ -14,7 +14,11 @@
<string>com.steve.nas-realestate-dump-mirror</string>
<key>ProgramArguments</key>
<array>
- <string>/bin/bash</string>
+ <!-- non-SIP bash as the TCC responsible process: SIP /bin/bash cannot durably hold an
+ FDA grant for launchd, so writes to /Volumes/Henry EPERM'd. /opt/homebrew/bin/bash
+ (Homebrew, non-SIP) CAN hold the grant. Requires Homebrew bash to have Full Disk
+ Access (System Settings → Privacy → Full Disk Access). Swapped 2026-08-07 TK-10323. -->
+ <string>/opt/homebrew/bin/bash</string>
<string>/Users/macstudio3/Projects/nas-setup/scripts/pull-dw-dump.sh</string>
</array>
<key>EnvironmentVariables</key>
← a442f8d auto-data-snapshot: 2026-08-07T07:29:27 (1 data files) — lau
·
back to Nas Setup
·
docs(nas): add DW-Backups activation checklist (root-context fb2f00f →