Tested Templates & Toolstested before it ships

● Server & Claude Code

status=203/EXEC means the program never started

✓ ReproducedUbuntu 24.04.5 · systemd 255.42026-10-19
systemd

The shell only says Job for the unit failed because the control process exited with error code. It does not say 203/EXEC. The journal does. On systemd 255.4 that code means ExecStart never ran. I hit it four ways on 2026-10-19, and two nearby codes that are easy to call 203 when they are not. The units lived under /run and were removed.

Four ways to get status=203/EXEC

What the unit hadsystemd-analyze verifyJournal
Absolute ExecStart path, file not thereExit 1. not executable: No such file or directorystatus=203/EXEC. The journal did not repeat the errno.
File name with no slash. Environment=PATH listed a directory that contained that file, mode 755Exit 1. not executable: No such file or directorystatus=203/EXEC. PATH was not used to find ExecStart.
Absolute path to a copy of /bin/true, mode 644Exit 1. not executable: Permission deniedstatus=203/EXEC. The journal did not say permission denied.
Absolute path to a mode-755 script whose first line was #!/no/such/interpreterExit 0. No output.Failed to execute the script, No such file or directory, then status=203/EXEC. The script file was there. The interpreter was not. The journal named the script, not the interpreter.

Each of those starts ended Result=exit-code, ExecMainStatus=203, ActiveState=failed. A relative ExecStart (./ plus a file name) is a different failure. Verify exits 1 and says Neither a valid executable name nor an absolute path, then Unit configuration has fatal error, unit will not be started. After systemctl start, Result=success, ExecMainStatus=0, ActiveState=inactive. That is not status=203/EXEC. The start command itself still exited 1.

status=217/USER is not 203

User= set to a name getent passwd does not find, ExecStart=/bin/true. Verify exits 0 and prints nothing. The journal says Failed to determine user credentials: No such process, then status=217/USER, then Failed with result 'exit-code'. ExecMainStatus=217. The words are "No such process", not "no such user".

status=200/CHDIR is not 203

WorkingDirectory= set to a directory that was not there, ExecStart=/bin/true. Verify exits 0 and prints nothing. The journal says Changing to the requested working directory failed: No such file or directory, then status=200/CHDIR. ExecMainStatus=200.

status=1/FAILURE means the program did start

/bin/false with Restart=always logs status=1/FAILURE on each crash. That is the process exiting, which is the opposite of 203. With RestartSec=1 the journal reached restart counter is at 5, then Start request repeated too quickly. With RestartSec=10 the same unit, stopped during the third start, had not printed that sentence. Both runs are on the start-limit note.

The remote-control unit already running on this server was ActiveState=active, Result=success, NRestarts=0, ExecMainStatus=0, with StandardInput=null and StartLimitIntervalUSec=0. Its unit file has no script wrapper. I did not start it, and I did not start claude. An active unit is not evidence about a fresh install, and it is not a 203.

What to change

ExecStart has to be an absolute path, and test -x on that path has to succeed as the service user. getent passwd has to find User=. The working directory has to exist. Environment=PATH is for programs that process starts. It did not locate ExecStart in the run above.

systemd-analyze verify is the check that caught the missing file, the bare name, the mode-644 file, and the relative path. It exited 0 for the bad shebang, the missing user, and the missing directory, and all three failed at start. The free lockout check flags StartLimitIntervalSec under [Service]. It does not look at whether the binary, the user, or the directory exists.

Once the path is real, the remote-control unit with StartLimitIntervalSec in [Unit] is the Agent Ops Kit ($19). The same unit is on the kit page. The file does not create a binary that is not installed. The remote-control note and the Cursor worker note are the units those paths belong in.

Need a VPS to try this on? Everything here was tested on a DigitalOcean Ubuntu 24.04 droplet: get one on DigitalOcean. The DigitalOcean link pays the site owner account credit, not cash. Any other affiliate link may pay a commission. Your price is the same. Disclosure.