Most teams building agents end up with a catch-all: if the action is not on the allow list, ask a human. It is a reasonable first move. It also quietly becomes permanent, and then it becomes the policy. The problem is that a fallback tells you nothing. It does not say which action was proposed, why it was not on the list, or who should decide next time. It just stops the run and puts a stranger in front of a screen.
The distinction matters because a fallback is a stopgap, and stopgaps rot. In production, a fallback that fires constantly trains reviewers to click approve without reading, which the Arthur AI guide on human-in-the-loop governance describes as worse than no gate at all, because it creates the appearance of oversight without the substance (Arthur AI). A fallback that fires rarely leaves a hole nobody notices until the incident review.
So the goal of the loop below is not better fallback coverage. It is an empty fallback: a net that has nothing left to catch because every action worth doing has been named, owned, tested and scheduled for review.
One more framing before the steps. A rule in the system prompt is text the model reads, and a prompt injection can override it; a rule at the dispatch path sits outside the model's reach. Governance only exists when the system can deny a call before side effects occur, rather than hoping the model self-restrains (NHI Mgmt Group). Everything below assumes the gate sits at dispatch.



