Skip to content

disk-hygiene: the destructive-operation guard has never launched — 73 recorded runs, all hook_non_blocking_error #1416

Description

@kyle-sexton

The finding

disk-hygiene's destructive-operation guard has not run at all across the entire measured window.
Both comparators fail at launch, so every recorded invocation is a hook_non_blocking_error and no
permission decision is contributed:

  • destructive_guard.py --mode engine-gate — all 16 recorded runs are
    hook_non_blocking_error, exitCode: 1, stderr:

    Failed to run: Plugin option "disk_hygiene_enabled" isn't set.
    

    This is config validation refusing to launch, before any process is spawned. It is also why the
    guard appeared to run in 2 ms — python3 -c 'pass' costs 396 ms on the measuring host, so 2 ms was
    never physically achievable for real work.

  • destructive-guard.sh — all 57 recorded runs are hook_non_blocking_error, stderr:

    execvpe(/bin/bash) failed: No such file or directory
    

    The hook is being routed to WSL, which has no /bin/bash at that path.

Why it was invisible

A hook that fails to launch writes an error to the transcript and then gets out of the way. Nothing
surfaces "your destructive-operation guard has never made a decision", so the failure reads
identically to a guard that ran and approved. The 2 ms figure was even cited in a machine-health
decision (D-12) as evidence of a fast sibling guard — the opposite of what it meant.

Two things to fix, and they are separable

  1. The launch failures themselves — the unset disk_hygiene_enabled plugin option, and the
    /bin/bash resolution on a WSL-routed host.
  2. The silence. A PreToolUse guard that cannot launch should be loud, because the failure mode
    is that the guarded operation proceeds unguarded. Whatever shape that takes — a one-time session
    warning, a /doctor line, an observability counter — the property to restore is that "guard never
    ran" and "guard approved" do not look the same from outside.

Related

Refs #1403 — the guardrails PreToolUse fail-open, the same class of defect in a sibling plugin,
found in the same measurement pass. The two are independent fixes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: criticalProduction broken, data loss, active exploit, or release blocker.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions