From watching it to letting it run
The point of this sequence is not that Memnox refuses more over time. It is that you supervise less over time, and each step is a decision you make with a real day of work in front of you.
It also avoids the reason governance tools get removed: refusing something legitimate, loudly, at a bad moment, with nobody able to explain why fast enough.
Nothing in this sequence needs an account.
Where you start
memnox setup leaves a machine in observe, and it stays there until you say
otherwise. Every seam is in the path and every rule is matched, but nothing is
refused: the verdict is recorded and the action proceeds.
memnox status
memnox doctor --wiringstatus says the machine is watching rather than stopping, and its today row
counts what enforce would have asked and denied, which is the number this
whole page is about.
That is the question worth asking first, and it is not "what is risky here". It is whether Memnox is gating anything at all, because a verdict nobody is obliged to ask for is advice. The reading is on Coverage and containment.
Step 1. Read what would have been refused
memnox timeline --only deny --since 7dEvery line is a conversation, and it is one of three things:
The line looks like
Something you genuinely want stopped
Something routine that should not be flagged
Something you did not know was happening
Do this while nothing is enforced. Editing a rule after it has refused a colleague is a much worse conversation. See Writing policies.
Step 2. Roll one rule out at a time
mode = "observe" on a single rule rolls it out without enforcing it, while the
rest of the file enforces normally.
[[policies]]
name = "candidate-rule"
[policies.match]
actions = [ "deploy.*" ]
[policies.decision]
effect = "deny"
mode = "observe"Use it for the rule you are least sure about. The recorded event carries the verdict it would have applied, so you get a week of evidence at no cost to anybody's day.
Step 3. Check the file before you commit it
memnox policy check # every rule file this machine loads
memnox policy test 'git push --force origin main'policy check exits non-zero when something will not parse, so CI can run it, and
it reads each file on its own so one repository's broken file never blanks
another's. policy test answers what one action would get, without running it.
Step 4. Enforce the uncontroversial rule
Pick the one everybody already agrees with. Production database protection.
Force-pushes to main. Credential files.
memnox config set mode enforcememnox protect --enforce is the same setting. A rule still carrying
mode = "observe" from step 2 keeps observing after the switch, so mark every
rule you are not yet sure of before you flip it.
Then announce it: what is enforced, what happens when it fires, and who to ask. In the channel people read, not in a document. A rule nobody was told about is a support ticket.
Step 5. Widen, one rule per week
Resist enforcing the whole file at once. One rule a week gives you a small blast radius when a rule turns out to be wrong, a clear cause when something breaks, and a team that learns the rules rather than working around them.
Step 6. Turn approvals on
ask is where most of the long-term value is, and it is also where rollouts
stall. Two things decide whether it works.
Route to people who will actually look.
memnox approvalsEach line carries how long it has been waiting. Rising numbers are the earliest
sign that a rule is routed to the wrong group: the rule is not wrong, the audience
is. Fix the approvers list before somebody fixes it for you by deleting the rule.
Scope with time windows so overnight automation does not sit waiting for a person who is asleep:
[policies.match]
windows = [ { days = [ 1, 2, 3, 4, 5 ], startHour = 17, endHour = 9 } ]When something does break
memnox why # the last thing that did not simply proceed, and its rule
memnox trace <id> # that one action end to end
memnox rewind # the working tree, back to before the agent touched itwhy reads back from the recorded row rather than re-evaluating against today's
rules, so the answer is what was decided and not what would be decided now. That
distinction is what makes it worth trusting during an incident.

