BTT's background process-priority-boosting feature (the daemon com.hegenberg.BetterTouchProcessPrioWatcher) appears to interfere with terminal job control, causing unrelated CLI commands to be suspended with SIGTTIN ("suspended (tty input)" / "suspended (signal)").
Environment:
- macOS 15.8 (regression first appeared on 15.7.9)
- BetterTouchTool installed via Setapp
- Affects both Warp and Terminal.app equally — not terminal-app-specific
- 2018 Intel Mac Mini
Steps to reproduce:
- With BTT's priority watcher running normally, run any command that forks a subprocess, e.g.:
brakeman --quiet --summary
or
bin/importmap audit
- The shell reports the job as suspended:
[1] + <pid> suspended (signal) brakeman --quiet --summary
- The main command still completes and prints correct output, but an orphaned, permanently stopped duplicate process is left behind (confirmed via
ps -o pid,ppid,pgid,stat,command), accumulating with every run.
Isolation performed:
- Reproduced in both Warp and Terminal.app — ruled out terminal emulator
- Reproduced with
< /dev/nullon stdin removing the immediate suspend but not resolving root cause - Ruby-level
Process.fork/Process.spawnmonkey-patching caught no matching calls — the fork is happening below the Ruby VM - Booting into Safe Mode eliminated the issue entirely
- Disabling BetterTouchTool's login items/background helper (along with two other candidates, since ruled out) eliminated the issue in normal boot
- Confirmed BetterTouchTool as the specific cause after re-enabling it in isolation
Expected behavior:
The priority-watching daemon should not interfere with the process group or terminal foreground ownership of processes it's monitoring/adjusting.