Skip to content
styrev0.11.0
GitHub

Exit codes

The process exit code is the machine-readable result. Codes above 2 follow the BSD sysexits.h convention, so a scheduler or CI job can branch on them without parsing any output.

Code Meaning Retryable
0 Success. For run, a pull request is open and ready. Also returned by --version, --help, and --inspect.
1 The run finished cleanly but reached a dead end — it could not make further progress. No — a human should look at it
64 Command-line misuse, such as styre notify without --test. No — correct the invocation
65 Resume refused — the branch moved since the run parked. Yes — --accept-head or --inspect
69 A program your build or test commands need is not installed on this machine. Yes — install it, re-run
70 An internal error. This one is a bug in Styre, not in your setup. No — please report it
75 The run stopped early: it either ran out of capacity (parked, resumable) or hit something it wants a human for (escalated, not resumable). Sometimes — see below
78 Bad configuration — an invalid value, an unknown adapter, or a profile that is not usable. No — fix the config

75 is the one to handle deliberately. It covers two outcomes that are indistinguishable by exit code alone, and they recover differently:

  • Parked — a session limit, or credits ran out. The run saved its state, consumed no retry attempt, and styre run --resume picks it up where it stopped. Back off and retry later.
  • Escalated — the loop bounded its retries and wants a human. It writes no state dump, so --resume will fail with “no parked run at …”. Something has to change before a re-run is worth anything.

So 75 does not mean “safe to retry automatically”. A scheduler that blindly resumes on 75 will work for parks and fail on every escalation. Read the message. Only a park prints a Resume with: … line. See Recovering a run.

1 is not a crash. It means the run worked as designed and stopped at a genuine dead end — something a person should look at rather than something to re-run.

65 means the world moved underneath a parked run. Decide whether to accept the new state with --accept-head or investigate first with --inspect.

69 is caught before any tokens are spent, and the message names the missing program.

70 is worth reporting. Every other code is a situation Styre expects; 70 means it hit something it did not.

See Recovering a run for the full park-and-resume workflow.