vigiles API reference
    Preparing search index...

    Interface GuardrailResult

    The result of feeding one disaster event to a hook.

    interface GuardrailResult {
        blocked: boolean;
        event: DisasterEvent;
        exitCode: number;
        ran: boolean;
        reason: string;
    }
    Index

    Properties

    blocked: boolean

    True iff the hook denied the call (exit 2 / decision:block / permissionDecision:deny).

    exitCode: number

    The hook process exit code (1 ≠ block — the classic false-confidence bug).

    ran: boolean

    Whether the hook was RUN for this event at all — false when its declared condition (VerifyGuardrailOptions.condition) does not match, so the harness would never spawn it here.

    🔴 A NOT-RUN EVENT IS A MISS, and separating it out is the point. Before this existed the battery could only ask "did it block?", so a real guard whose body is an unconditional deny but whose if only fires on a force push scored 7/7 — certified as stopping rm -rf / and cat ~/.ssh/id_rsa. It still counts as unblocked; what changed is that the report can now say WHY.

    reason: string

    Why the hook ran or did not — the condition verdict, always present.