Process-priority watcher causes SIGTTIN/terminal job-control suspension of unrelated CLI tools

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:

  1. With BTT's priority watcher running normally, run any command that forks a subprocess, e.g.:
   brakeman --quiet --summary

or

   bin/importmap audit
  1. The shell reports the job as suspended:
   [1]  + <pid> suspended (signal)  brakeman --quiet --summary
  1. 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/null on stdin removing the immediate suspend but not resolving root cause
  • Ruby-level Process.fork/Process.spawn monkey-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.

I don’t see how that could happen, however the process priority helper has been deprecated for a while and is not useful on modern macOS anymore. I’d recommend to uninstall it.

Aoologies - false alarm.

I found the real culprit.