Fix macOS DeepSeek Harness errors: launchd PATH and exFAT install failures
Two typical DeepSeek Harness errors on macOS: a launchd autostart crash loop (launchd does not inherit the shell PATH and cannot find node) and exFAT volume install failures (exFAT has no inode ownership checks, so pnpm errors during dependency installs). Fix them by writing a full PATH into the plist and moving installs onto APFS or a local volume, then verify.
Two symptoms: DeepSeek Harness autostart crash loop and exFAT install failures
The two symptoms differ: an autostart crash is a process-management problem, and an install failure is a filesystem problem. One by one (source: dshbase troubleshooting):
- launchd cannot find node, autostart crash loop — after enabling autostart, the service crashes on launch and restarts repeatedly; running the same command manually in a terminal works fine;
- exFAT volume install failure — installing with the project on an external exFAT volume (or a portable drive) makes pnpm fail (e.g. lefthook-related inode validation errors);
- Manual runs fine but only autostart crashes → launchd; only a specific volume fails to install → filesystem.
DeepSeek Harness error roots: launchd does not inherit PATH, exFAT lacks inode checks
Two root causes: services started by launchd carry no shell PATH, and exFAT has no inode ownership checks so pnpm dependency installs fail validation. In detail:
- launchd does not inherit the shell PATH — launchd is a system-level process manager; services it starts do not go through the shell and do not inherit the PATH from
.zshrc; node installed in non-default directories such as/opt/homebrew/bincannot be found (source: Apple launchd documentation); - exFAT has no inode ownership checks — exFAT is designed for removable storage and lacks POSIX inode ownership/permission metadata, so pnpm fails validation while installing dependencies (source: dshbase troubleshooting);
- Both have corresponding discussions and fixes in the official repository (source: DeepSeek Harness issues).
Fix DeepSeek Harness errors: full PATH in the plist, install on APFS/local volume
Route by symptom: an autostart crash is fixed with plist environment variables, and an install failure by moving to APFS or a local volume. Step by step:
- Find node's actual path (for the plist):
bash
which node # e.g. /opt/homebrew/bin/node (Homebrew on Apple Silicon) - Write a full PATH into the launchd plist — edit the plist and add
EnvironmentVariablesinside thedict:Save and reload:xml<key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string> </dict>Confirm the PATH took effect withbashlaunchctl unload <plist-path> launchctl load <plist-path> # Newer systems can use the equivalent bootout/bootstrap commandslaunchctl print <label>(source: Apple launchd documentation). - Install on APFS or a local volume (fixes exFAT install failures):
- Copy the project from the external exFAT volume to the system disk (APFS) or a local volume;
- Delete leftover
node_modulesand.pnpm-storeon the volume to avoid stale metadata; - Re-run the install at the APFS path (
pnpm installordsh plugin ... add).
- Verify:
- Autostart: after a reboot the service starts on its own without the crash loop;
- Install:
pnpm installand dependency installs all succeed, anddsh webstarts normally.
How to verify a DeepSeek Harness fix on macOS: PATH takes effect, autostart recovers, install completes
Three checks confirm the fix: the plist PATH took effect, autostart no longer crash-loops, and the install on APFS is all green — only when all three pass is it fixed. In order:
-
Confirm the plist PATH took effect — inspect the environment variables in launchd:
bashlaunchctl print <label> | grep PATHSeeing
/opt/homebrew/bin(which contains node) in the output means it took effect; only the default PATH means the plist is wrong — back to step 2 of the fix section. -
Autostart regression check — start the service manually and confirm there is no crash loop:
bashlaunchctl kickstart -k gui/$(id -u)/<label>The service keeps running and the process does not exit and restart repeatedly; if possible, reboot and confirm the service starts on its own.
-
Confirm the project sits on APFS or a local volume — check the filesystem type of the volume holding the working directory:
bashmount | grep "<volume-path-or-working-dir>" # Expect apfs, hfs+ or another local format; exfat means keep migrating -
Reinstall and verify — run the install under the APFS path:
bashpnpm installAll dependencies install cleanly with no inode/lefthook validation errors.
-
Full-chain verification —
dsh webstarts normally, a chat message gets a reply, and the autostart service runs after a reboot — the macOS platform issue is closed.
Notes: tell whether DeepSeek Harness has a launchd or filesystem issue
- If manual runs work and only autostart crashes, check launchd's PATH first — do not doubt the installation itself.
- Use the real path from
which nodewhen writing the plist PATH; different install methods give different paths. - External exFAT drives are fine for data backups, not for dependencies; install dependencies on APFS or a local volume.
- Clear leftover node_modules before reinstalling after switching volumes, so stale filesystem metadata does not interfere.
- See install error troubleshooting for other install issues.
Sources: dshbase troubleshooting, Apple developer documentation (launchd.plist), DeepSeek Harness official repository
FAQ
DeepSeek Harness autostart crashes because launchd does not inherit the shell PATH and cannot find node: write the full path to node (e.g. /usr/local/bin:/opt/homebrew/bin) into the EnvironmentVariables of the launchd plist, then reload, and autostart works (source: Apple launchd documentation).
DeepSeek Harness installs fail on exFAT because exFAT has no inode ownership checks, so pnpm fails dependency-install validation (such as lefthook-related errors). Put the project on an APFS or local volume (e.g. the system disk) and install there; keep external exFAT drives for data backups only, not for dependencies (source: dshbase troubleshooting).
To give dsh (DeepSeek Harness) a full PATH: add an EnvironmentVariables key inside the plist dict with the actual node directory (run which node to find it first), save it, reload with launchctl unload/load (or bootout/bootstrap), and check with launchctl print to confirm it took effect (source: Apple launchd documentation).
Judge by when it happens: if DeepSeek Harness crashes on autostart while manual runs work → launchd PATH; if pnpm errors while installing on an exFAT or external volume → filesystem. Fix the former with the plist environment variables and the latter by reinstalling on APFS or a local volume (source: dshbase troubleshooting).
Related Terms
- launchd
- launchd is macOS's system-level process manager that runs autostart and background services configured through plists; it does not inherit the shell environment, so the PATH must be declared explicitly in the plist.— Apple developer documentation
- PATH environment variable
- PATH is the list of directories a shell or process uses to find executables; services started by launchd have no shell PATH, so when node and other commands are missing you must complete it in the plist's EnvironmentVariables.— Apple developer documentation
- exFAT
- exFAT is a filesystem commonly used on external storage that lacks POSIX features such as inode ownership checks; package managers like pnpm fail dependency installs on it.— dshbase troubleshooting
- inode
- An inode is the data structure a filesystem uses to record file metadata; ownership and permission checks rely on it, and exFAT lacks these checks, which is why dependency installs such as lefthook fail.— dshbase troubleshooting