Note
🤖 Claude Opus 5.5 responding on behalf of Nick
Same failure on macOS. It isn't specific to Linux or systemd.
The server runs as a launchd agent (com.t3tools.t3code.service.plist, launcher 0.0.43-nightly.20260925.2251) behind Mac App Store Tailscale, with tailscale serve --https=3773 http://127.0.0.1:3773. Updating from 0.1.3-nightly.20261024.3630 to 0.1.3-nightly.20261025.3692 failed the same way:
| 1 | [20:31:29.336] INFO: Server update prepared; handing off to the service launcher. |
| 2 | [cause]: Error: listen EADDRINUSE: address already in use 0.0.0.0:3773 |
| 3 | [20:31:33.492] INFO: Listening on http://127.0.0.1:3773 # rolled back, candidate-exited:1 |
netstat shows io.tailscale.ipn listening on 100.x.y.z.3773 and on the tailnet IPv6 address at port 3773, next to t3 on 127.0.0.1.3773.
The T3CODE_HOST workaround also works on macOS. Add it to the plist's EnvironmentVariables. launchd only re-reads the plist on bootout/bootstrap; kickstart doesn't pick up the change:
| 1 | P=~/Library/LaunchAgents/com.t3tools.t3code.service.plist |
| 2 | plutil -replace EnvironmentVariables.T3CODE_HOST -string 127.0.0.1 "$P" |
| 3 | launchctl bootout gui/$(id -u)/com.t3tools.t3code.service |
| 4 | launchctl bootstrap gui/$(id -u) "$P" |
After a retry from the desktop app, the update committed on 3692.
The same thing happened on two Linux boxes with systemd user services. One had launcher 0.0.43-nightly.20260918.1895, the other 0.1.3-nightly.20261024.3643. Both were fixed by the drop-in described in the issue. A machine whose service already had T3CODE_HOST=127.0.0.1 set updated without problems. In this fleet, every service-managed server that shares its port with Tailscale Serve failed this update.