Successful evaluation (geval check, geval demo)
These commands exit with:
| Code | Outcome | Typical CI use |
|---|---|---|
0 | PASS | Allow merge / deploy |
1 | REQUIRE_APPROVAL | Stop for human review (or your org’s override flow) |
2 | BLOCK | Fail the job; do not merge |
1 vs 2 lets you distinguish approval from hard block if you script it.
For GitHub Actions patterns (labels, follow-up jobs, Slack, geval approve), see Handling REQUIRE_APPROVAL: extra logic on the GitHub Actions page.
Configuration and parse errors
If the contract cannot be loaded, policies are missing, or signals JSON is invalid, the process exits non-zero with an error message on stderr — treat as pipeline misconfiguration, not as a policy BLOCK. Always rungeval validate-contract in a separate CI step if you want fast feedback without signals.
Example shell handling
JSON output
geval check --json prints structured decision data to stdout; exit codes still apply the same way.