Exit codes and environment

Exit codes

CodeMeaning
0Success
1Generic failure (refusal, bad arguments, no project config)
2Plan or config validation
3Unsafe git state
4Gate failure (after the fix loop is exhausted)
5Agent invocation error (Claude, Vibe, or Codex)
6Archive blocked by a dirty worktree
7Lock conflict
8Rate or usage limit hit (resumable)
9Phase produced no changes (resumable)
10Registry corruption
11Security or preflight refusal
12Artifact lifecycle refusal

phax prune uses a subset of these codes: 0 when every selected run was pruned, for a --dry-run preview, or when there is nothing to prune; 1 when nothing was deleted (a bad selection, no project config, or a declined or missing confirmation); 3 when at least one selected run was kept; 7 when a selected run is locked.

Environment

phax reads no environment variable for its configuration: everything is in phax.json, its layers and ~/.phax/. The one variable it honours, PHAX_E2E_RUN=1, enables its own end-to-end tests.