Outcome
By the end of this lesson, you will be able to identify which rules can be one-click auto-remediated, explain the two independent checks a recommendation passes before an Apply button appears, and plan adoption by deciding who in your org may start a remediation.
| Prerequisites | M2.1 · M2.2 · M2.3.L1 |
| Time | 9 minutes |
1. Concept
Before a rule is allowed to act on its own, somebody has to be confident the action is safe on a real cloud account. Some actions, like a delete, cannot be undone.
That confidence is recorded in a list, written into the code. It is a list, not a certification programme, and this lesson says “certified” only as shorthand for “on the list”.
113 rules are on it. 26 can be applied with one click. The other 87 are guided, meaning you type a confirmation before anything happens. Every rule not on the list is advisory: you see the recommendation and there is no Apply button to press.
THE AUTO-REMEDIATION ALLOWLIST:
ON THE ALLOWLIST, AUTO (26, one-click Apply): Listed by rule id in the allowlist table Still subject to the per-resource safety gate
ON THE ALLOWLIST, GUIDED (87, type-to-confirm): Same table, plus a human confirmation step
NOT ON THE ALLOWLIST (advisory, manual execution): Remediation steps shown Apply button NOT shown Customer executes manuallyThe allowlist changes over time: rules are added as their levers are proven, and removed when an audit shows a lever is unsafe.
What the allowlist actually is
The allowlist is a table in ZopNight’s code, keyed by rule id. For each rule it records which kind of action the workflow runs (delete, resize, resize with a stop, or pause a service) and whether the rule is guided.
THE ALLOWLIST IN CODE:
ONE TABLE, TWO COPIES The recommender reads it to decide whether a rule gets an Apply button The provisioner reads it to know which action step to run The two copies must be byte-for-byte identical
ENFORCED BY A TEST A test compares the two copies and fails the build if they drift Other tests check the auto and guided counts and catch duplicate rule ids
ADDING OR REMOVING A RULE One edit to the table, made identically in both copiesOne more requirement is easy to miss: every allowlisted rule ships a paired dispatch test that drives the literal JSON the recommender emits through the real dispatcher with real handlers registered. Producer and consumer live in separate modules, so capturing the wire bytes on one side and replaying them on the other is the only durable way to stop the two drifting apart. A rule without that paired test does not go on the list.
The allowlist is only the first of two checks
This is the part that surprises people. Being on the allowlist means the rule supports automation. It does not mean the Apply button appears on a given card. A second gate re-decides per recommendation, against that specific resource:
TWO TIERS:
TIER 1 allowlist "does this RULE support auto?" keyed on rule id, nothing else
TIER 2 safety gate "is it safe on THIS resource?" reads authoritative control-plane fields on the recommendation, never tags and never name tokens
Tier 2 disagrees -> the recommendation is DEMOTED to advisory. It is still shown. Nothing is suppressed.What the gate demotes, every time:
one-shot stop of compute always demoted. The workload inside a generic instance is opaque to every cloud API, so "this is not a bastion" can never be proven. The finding shows How to Fix steps instead.
delete of a stateful resource demoted. Managed database types, a non-empty engine field, or a data tier.
delete without proof demoted unless an authoritative field proves the thing is unused: an elastic IP explicitly not associated a volume flagged unattached with a real detach time at least 7 days old a snapshot whose source is provably gone a backup vault with zero protected items
resize needing a stop demoted on a stateful resource.Absent evidence is not evidence. The gate fails closed, so a new rule inherits this protection without anyone remembering to add it. It is also why the summary pill on a rule group and the pill on an individual recommendation can disagree: the first reflects capability, the second reflects this decision.
What’s on the allowlist
The authoritative auto and guided sets live in the allowlist in ZopNight’s code (26 auto + 87 guided). Treat that list as the source of truth; the entries below are illustrative of the categories, not a fixed list.
AUTO (one-click), illustrative: RC-016 Unassociated Elastic IP release (evidence: not associated) RC-112 / RC-212 Unattached GCP / Azure disk delete (evidence: detach time) RC-003 EC2 rightsizing (resize with a stop; demoted on stateful resources) RC-002 Orphan EBS volume delete: on the list, but the safety gate demotes it to advisory today because AWS gives no real detach time
GUIDED (type-to-confirm), illustrative: RC-021 Orphan EBS snapshot delete (irreversible, so human-confirmed) Single-replica K8s bump 1->2 (RC-1706 / 1806 / 1906) RC-214 Azure Hybrid Benefit (a reversible licensing setting) Pause services: Synapse SQL Pool, Data Factory, ML Compute, Cognitive Services, Databricks cluster, GCP Dataproc
NOT auto-remediable (advisory only): RC-001 Idle EC2: advisory. It fires on already-stopped instances and recommends termination; it is explicitly OFF the allowlist. Compliance, network, and IAM changesThe allowlisted rules cluster around the simplest, safest categories: orphan deletes backed by evidence, resizes, and pause/resume. Compliance, network and IAM changes are deliberately advisory.
Why advisory rules don’t have Apply
For advisory rules, the recommendation card hides the Apply Remediate button. The remediation steps are still shown: but as instructions for manual execution.
ADVISORY RULE CARD example: RC-001 Idle EC2 (stopped 30+ days)─────────────────────────────────────────────────────────RC-001 · Idle EC2[no Apply button]
REMEDIATION (manual)1. Confirm nobody needs the stopped instance2. Snapshot any attached EBS volumes you want to keep3. Terminate the instance and release its Elastic IP4. Delete the volumes you no longer need
[Console URL: https://us-east-1.console.aws.amazon.com/ec2/...][Dismiss] [Mark Resolved]The “Mark Resolved” button lets the customer note they’ve completed the action manually, so savings tracking works correctly.
Asking for a rule to be added
IF YOUR TEAM WANTS A RULE ALLOWLISTED: Raise it with ZopDev support An addition is a code change to the allowlist table, so there is no self-serve request
WHAT AN ADDITION DOES NOT CHANGE: The per-recommendation safety gate still re-decides on every resource No snapshot is taken before a delete; the action is the plain cloud API call (see L1)When uncertified ≠ unsafe
UNCERTIFIED rule isn't "unsafe to apply" Just hasn't passed ZopNight's bar for one-click execution The remediation is still shown Customer executes manually with full context
COMMON UNCERTIFIED CATEGORIES: Rightsizing outside the allowlisted resize rules Risk: workload-specific; needs validation Reason: tested only in narrow workloads
Compliance configuration changes Risk: policy interpretation varies Reason: customer policy varies
Network changes Risk: high blast radius Reason: cross-team dependencies
IAM changes Risk: lockout potential Reason: hard to test without breakingCustomer judgment fills in. Manual execution is still safe.
Default state: on, with a kill-switch
DEFAULT for ALL ALLOWLISTED rules: Enabled for every org from day one No setup, no opt-in, no per-rule toggle page
THE PER-RULE, PER-ORG FLAG: A kill-switch, not an opt-in No flag set means the rule is enabled Set only by ZopNight through an internal endpoint; there is no customer settings page
WHY A KILL-SWITCH: A brand-new org needs no setup A rule can be switched off for one org if it misbehaves there If you need that, raise it with ZopNight supportDefault on; the flag exists to switch a rule off, and only ZopNight sets it.
What you actually plan: who clicks Remediate
Because every allowlisted rule is already on, adoption is not a question of which rules to enable. It is a question of who in your org may press Remediate, and what happens when they do:
INITIATOR ROLE WHAT HAPPENS ON REMEDIATE──────────────────────────────────────────────────────────Admin Runs straight through. No approval step: the admin's click is the approval.
Editor Waits for an admin. Deletes, resizes, pauses and K8s manifest edits add an "Awaiting admin approval" step.
Viewer Cannot start a remediation at all. Sees the recommendation and its steps.So the lever you control is role assignment. Giving a person the admin role means their clicks act on your cloud without a second pair of eyes. Keeping people as editors routes every destructive click past an admin. L3 covers the approval step in detail.
2. Demo
A 40-engineer team planning its first quarter with auto-remediation:
STARTING POINT: Every allowlisted rule already enabled (default) Recommendations page shows Remediate on the cards the safety gate has not demoted Advisory ones show "How to Fix" steps in the drawer instead
DECISION 1: WHO IS ADMIN 2 platform leads hold the admin role Their Remediate clicks run with no approval step Reason: they already own production change approval
DECISION 2: WHO IS EDITOR 12 service owners hold the editor role They can start remediations on their resources Each destructive click waits for one of the 2 admins Two admins means an approval never waits on one person's calendar
DECISION 3: EVERYONE ELSE Viewer role: reads recommendations and evidence, cannot start a remediation
DECISION 4: ADVISORY WORK RC-001 idle stopped EC2 is advisory (off the list) Service owners follow the "How to Fix" steps by hand and mark the recommendation resolved
AFTER A MONTH: One allowlisted rule misbehaved on an unusual resource shape in their account They asked ZopNight support to switch that one rule off for their org while it was investigated Every other rule stayed onThe plan is about people, not toggles. Roles decide who acts; the allowlist and the safety gate decide what can be acted on.
3. Hands-on (5 min)
Audit who can act on your cloud through remediation:
□ STEP 1: List your org's admins Count: _____ Each admin's Remediate click runs without approval. Is that right for every one of them? □ Yes □ No
□ STEP 2: List your editors Count: _____ Their destructive clicks wait for an admin. Is there more than one admin to approve them? □ Yes □ No
□ STEP 3: Open the Recommendations page Pick 3 cards: which show Remediate, which are advisory? RC-_____: □ Remediate □ advisory RC-_____: □ Remediate □ advisory RC-_____: □ Remediate □ advisory
□ STEP 4: Note any rule you want switched off Rule: RC-_____ Reason: __________ (Raise with ZopNight support; there is no self-serve toggle)
□ STEP 5: Set a quarterly role review Date: __________ Owner: __________A 15-minute audit tells you who can change your cloud and whether every destructive click gets a second look.
4. Knowledge check
Q1
A recommendation card doesn’t show Apply Remediate. Most likely cause:
A. Either the rule is advisory, or it is allowlisted but the per-recommendation safety gate demoted it on this resource
B. The user lacks permission
C. The cloud is down
D. The recommendation has already been applied by somebody else on the same team earlier in the working day
Show answer
Correct: A. Either way the remediation steps and console link are shown for manual execution, and the card still offers “Mark Resolved” for tracking. Manual does not mean unsafe. Two different causes produce the same missing button, and the distinction matters when a customer asks why one instance has Apply and another does not.
Q2
113 rules are on the auto-remediation allowlist (26 auto + 87 guided). The rest of the 684 rules:
A. Don’t exist
B. Are advisory: shown with remediation steps but no one-click apply
C. Are buggy
D. Will never be remediated automatically under any configuration
Show answer
Correct: B. The allowlist grows over time; to ask for a specific rule to be added, raise it with ZopDev support. The list grows as levers are proven, and it shrinks too: rules have been removed from it when an audit showed the lever was unsafe or the saving was not concrete.
Q3
Each org has a per-rule flag for allowlisted rules. With no flag set, the default state:
A. All rules off until you opt in
B. Rules with savings above $1,000 on
C. All allowlisted rules on
D. Critical rules on by default
Show answer
Correct: C. The flag is a kill-switch: a missing flag means the rule is enabled, so a new org needs no setup. The flag exists to switch a misbehaving rule off for one org.
5. Apply
Every allowlisted rule is on by default; there is no per-rule settings page. Plan adoption through roles: admins act without approval, editors wait for an admin, viewers cannot start a remediation.
For your team: review who holds admin and editor once a quarter, and ask ZopNight support if a single rule needs switching off for your org.
Related lessons
- L1: 3-step workflow
- L3: Approval gate (next)
- L4: Error classes
- L5: Database denylist
- L6: Remediation notifications
Glossary terms touched
Certified rule · Apply / dismiss / snooze