Skip to content

Exit codes

llms.txtlists every page for an agent

plywood exits with the codes of chant’s one exit-code table and passes each through unchanged. terragucci uses the same table, and both engines map onto it.

Code Name Meaning
0 done the stage finished, or had nothing to do
1 failed something broke and no approval changes it; usage and config errors too
2 drift a drift check found drift
3 waiting a gate, a review or an earlier wave waits for a person
4 moved the approved preview or saved plan no longer matches the one that would apply, or a merged wave’s plans differ from the ones its pull request previewed, so nothing applied
5 held another run or open pull request holds a lock on a stack or resource the change touches
6 superseded a newer push applies in its place
7 denied policy denied the preview and no override counts
8 declined a decision point got an answer the gate does not pass on

Pulumi’s own codes never pass through raw. A mandatory CrossGuard violation (Pulumi’s 5) is denied and changes under --expect-no-changes (Pulumi’s 7) are drift. Every other nonzero Pulumi code is failed. plunge’s exit 40, a saved plan whose records moved, is moved, as is a stock preview that no longer matches its approved shape.

plywood