Why
Commands exiting 1 still apply JSON stdout decisions even though the documented protocol defines ordinary errors as non-blocking.
Scope
Gate control-output parsing on successful completion; preserve the explicit stderr/exit-2 blocking protocol and timeout diagnostics.
Approach
Turn the audit reproduction into a repository regression, fix the runtime boundary, and verify callers and adjacent hooks tests using Bun 1.3.14. Keep the user's existing working-tree edits outside this delivery.
Acceptance
Exit 1 and timeout cannot inject block/allow/context/rewritten input from stdout; exit 0 and exit 2 controls still work.
Why
Commands exiting 1 still apply JSON stdout decisions even though the documented protocol defines ordinary errors as non-blocking.
Scope
Gate control-output parsing on successful completion; preserve the explicit stderr/exit-2 blocking protocol and timeout diagnostics.
Approach
Turn the audit reproduction into a repository regression, fix the runtime boundary, and verify callers and adjacent hooks tests using Bun 1.3.14. Keep the user's existing working-tree edits outside this delivery.
Acceptance
Exit 1 and timeout cannot inject block/allow/context/rewritten input from stdout; exit 0 and exit 2 controls still work.