Skip to main content
Every ctrlrun command exits 0 when it did what it was asked, 1 when CTRLRun refused (a CTRLRunError, printed as one line), and 2 on a usage error. ctrlrun verify adds a third code for its own failure, because a verifier that crashed must not look like one that refused.

Every command

A refusal is the command’s exit code and its last line. Nothing is retried on the operator’s behalf and nothing is written on a refusal.

ctrlrun verify

Not applicable never changes the code by itself, and zero applicable guarantees is exit 2, never 0: 0/0 reported as success is the same false green as 8/8 with five N/As. A partial run (--only) writes no badge. The GitHub Action fails the job on any code but 0 and carries the code through as an output.

ctrlrun gateway

The gateway runs until it is stopped. It exits 2 before listening when its configuration is refused: a non-loopback --listen without --allow-remote, an http:// webhook without --allow-insecure-webhook, a JWT option set without the identity extra, or a policy that will not load.

Next