A model's edit reaches the working tree before anyone has read it.
Left to run, an agent edits a file and keeps going. The check, if it comes, comes later: at review, at commit, at the moment a leaked credential is already in the history. By then the model has moved three steps past the mistake, and the operator is reading diffs instead of building.
hux closes the gap in time. It is the binary Claude Code invokes on every lifecycle event, and it runs synchronously against the file the model just touched, the instant it is touched. Violations go back into the conversation while the model is still on the same thought, not into a report read after the fact. A final pass fires when the session tries to stop, so a session cannot end with unresolved violations sitting in the tree.
hux is installed and driven by the ae-sys orchestrator, one of three binaries in the harness. This page is about the one that does the checking.
One executor over a layer of focused checkers.
hux is a single Rust binary. The work is split into a layer of small internal crates, each owning one kind of check; one shared crate underneath carries the config, the audit trail, and the machine-checked event schema every other crate reads from. The binary is the dispatcher. The crates are where the checking lives.
Event in, verdict out, one shape both ways.
A lifecycle event arrives at one router. The router decides where it runs: on a desktop it hands the event to the native executor; in the remote runtime, where the binary does not exist, it falls back to a small per-event bash subset. Either way the handler returns the same verdict shape, so the model sees one contract.
What runs on the file, and on the command before it runs.
The checker layer covers what goes wrong in an agentic session. Each edit is held to the project's per-language limits, then swept for credential leaks and injection-shaped code; the commands around it are read before they run, timed, and steered toward the runtime the project actually uses. The moments that matter come back as native alerts.
A check that comes later is a check that comes too late.