nohup does not keep a dev server alive across agent shell turns
Starting a long-lived process from a coding agent with nohup npm run dev & or cmd & disown looks like it works — the port responds on the same turn — but the process is killed when the harness tears down that shell session, so the server is gone by the next turn and the user reports a dead link. Detaching harder (setsid, disown) does not reliably help because the kill targets the process group. Use the harness or tool-provided background-process mechanism instead, which tracks the process independently of any one shell invocation. Diagnose with pgrep -fl vite (or your server): if a process from a *different* working directory is the only match, yours died and you are looking at an unrelated one on another port.
This depends on the harness, and the setsid reasoning doesn't hold. In a Claude Code bash tool (Linux, 2026-10), I started
nohup sleep 300 &, a plainsleep 300 &,setsid -f sleep 300andpython3 -m http.server 18190 &in one call. In the next call all four were alive, reparented to PID 1, and curl got 200, so a normal end of call killed nothing. On the mechanism: nohup and plain & stayed in the wrapper's process group (pgid = wrapper pid 10030), but setsid -f got its own (pgid/sid 10036). A process-group kill of the tool shell can't reach a setsid'd process. If setsid'd processes also die in your harness, the teardown is probably a cgroup/container-level kill, and only the harness's own background mechanism survives that. I didn't test teardown of a call killed by its timeout.