Automation Control Catalogue
Automation Control Catalogue¶
Everything else on this site explains why a control exists. This page gives each one a short, stable name so you can point at it.
That sounds like a small thing. It is not. The moment two teams, a security reviewer, and an auditor need to discuss the same requirement, prose stops working — "the bit about checking the device is the right device" is not something you can put in a design document, a waiver, or a change record and expect to mean the same thing six months later. A code does that job.
What a control code is for
A code is a shorthand for a requirement, not a replacement for it. NP-CORE-02 is ten characters you can write in a service record. The reasoning behind it is a whole page, and the reviewer is expected to have read it.
How the Catalogue Is Organised¶
Seven families, grouped by what the control protects rather than by which document introduced it:
| Family | Covers | Count |
|---|---|---|
| NP-CORE | Targeting and execution safety — what happens before anything is touched | 8 |
| NP-CHG | Change control — the additional bar for anything that writes | 6 |
| NP-EVD | Evidence and observability — what the run leaves behind | 5 |
| NP-GOV | Governance and lifecycle — ownership, classification, review, retirement | 7 |
| NP-AI | Governed AI — constraints on a model's authority | 6 |
| NP-TOOL | Tool boundary — how a capability is exposed to an agent or caller | 8 |
| NP-PLAT | Platform and delivery — how the thing is built, shipped, and run | 6 |
Not every control applies to every service. Applicability is decided by risk class, and recording why a control does not apply is itself part of the assessment method.
NP-CORE — Targeting and Execution Safety¶
These apply to everything, including read-only work. A report that queries the wrong device is still wrong.
| ID | Control | Requirement | Minimum evidence |
|---|---|---|---|
| NP-CORE-01 | Source of truth resolution | Resolve every operational target through an approved authoritative source. A user-supplied identifier is a request to resolve, never a connection target | Resolved record with source and timestamp |
| NP-CORE-02 | Target identity verification | Compare expected, controller, and live identity before any controlled action | Three-way comparison and the allow, hold, or reject decision |
| NP-CORE-03 | Input validation | Treat all external input as untrusted. Validate type, range, format, and operational scope before opening a connection or changing state | Input schema with positive and negative tests |
| NP-CORE-04 | Read-only default | Observation is the default. Change capability is invoked explicitly and never inferred from context | Capability classification and role configuration |
| NP-CORE-05 | Pre-flight validation | Confirm prerequisites before acting, and abort when they fail | Pre-flight report with reason codes |
| NP-CORE-06 | Scope limitation | Bound the set of targets a single run can affect, and expand that set deliberately | Scope definition, canary results, batch promotion approvals |
| NP-CORE-07 | Idempotency | Read current state, compare against desired state, act only on the difference | Repeated-run and no-change-required tests |
| NP-CORE-08 | Safe failure | Bounded timeouts, finite retries, resource cleanup, and fail-closed behaviour on uncertainty | Failure-path tests, timeout and retry configuration |
Where the reasoning lives: Trust Boundaries Around Your Source of Truth (01), Validating Device Identity (02), From Script to Tool (03), Separating Read and Write Phases (04), Pre-Flight Checks (05), Scoping to Reduce Blast Radius (06), Real-World Idempotency (07), Designing Automation That Can Safely Fail (08).
NP-CHG — Change Control¶
These become mandatory the moment a workflow can alter device state — R3 and above.
| ID | Control | Requirement | Minimum evidence |
|---|---|---|---|
| NP-CHG-01 | Drift classification | Classify drift before remediating it. Not every difference from baseline is a defect | Drift diff, assigned severity, recorded disposition |
| NP-CHG-02 | Immutable change artifact | Every write executes from an artifact recorded before approval and unchanged after it | Artifact contents and integrity checksum |
| NP-CHG-03 | Approval and authority | A ticket, a named approver at an authority level matching the risk class, an expiry, and a permitted window | Approval record linked to the artifact |
| NP-CHG-04 | Pre-execution revalidation | Re-check identity, current state, checksum, approval validity, and scope immediately before execution — not at approval time | Revalidation log entry from the executing run |
| NP-CHG-05 | Post-change verification | Verify the resulting state after every write. Verification is mandatory and has no bypass path | Verification output and final status |
| NP-CHG-06 | Rollback or escalation | A recovery path is chosen and tested before the change runs, not designed during the incident | Rollback test evidence, or a documented escalation route where rollback is not possible |
Where the reasoning lives: Detecting and Handling Configuration Drift Safely (01), Remediation Packs (02, 04, 05), Human-in-the-Loop Automation Design (03), Rollback Strategies (06).
NP-EVD — Evidence and Observability¶
What the run leaves behind, and whether anyone can read it.
| ID | Control | Requirement | Minimum evidence |
|---|---|---|---|
| NP-EVD-01 | Audit record | Requestor, action, target, approval, result, and verification are correlated into one traceable record | Audit sample from a real run |
| NP-EVD-02 | Operational logging | Structured logs sufficient to support the service, with secrets and unnecessary sensitive configuration redacted | Log sample plus a redaction test |
| NP-EVD-03 | Operator-friendly output | Run output states what was checked, what changed, what failed, and why, in terms a duty engineer can act on without reading the code | Run summary and reason-code distribution |
| NP-EVD-04 | Provenance | Every operational claim carries its source and the timestamp that source was read | Output examples showing source attribution |
| NP-EVD-05 | Observability | Health, success rate, failure rate, latency, and dependency health are exposed and alerted on | Dashboard definitions and alert tests |
Keep NP-EVD-01 and NP-EVD-02 logically separate. Audit answers who did what, and was it allowed. Operational logging answers why did it break. Conflating them produces a stream that is too noisy to audit and too sparse to debug.
Where the reasoning lives: Building Audit-Ready Automation (01), Structured Logging (02), Making Automation Output Operator-Friendly (03, 04), DevOps and Observability (05).
NP-GOV — Governance and Lifecycle¶
The controls that decide whether the service should still exist.
| ID | Control | Requirement | Minimum evidence |
|---|---|---|---|
| NP-GOV-01 | Risk classification | A recorded risk class with the rationale behind it, reviewed when scope changes | Classification record and approver |
| NP-GOV-02 | Three-owner model | Service, technical, and operational ownership are each named — as people or roles, not as a team | Named owners in the service record |
| NP-GOV-03 | Service register entry | Registered before production acceptance, and maintained after material change | Register entry with mandatory fields complete |
| NP-GOV-04 | Lifecycle gates | Applicable gates passed, with evidence retained at a depth proportionate to risk class | Gate decision records |
| NP-GOV-05 | Documentation and handover | Purpose, execution flow, error conditions, recovery, and support route documented well enough to transfer | Repository documentation and runbook |
| NP-GOV-06 | Exception management | Deviations are documented, approved at the right authority level, and time-bound | Exception register entry with expiry |
| NP-GOV-07 | Recertification | Ownership, access, risk, dependencies, and continued value reviewed on a risk-based cadence | Service review output with decisions |
Where the reasoning lives: Enterprise Control Matrix (01), Automation Service Lifecycle (02, 03, 04, 05, 07), Exception and Waiver Process (06).
NP-AI — Governed AI¶
Constraints on what a model is permitted to be, regardless of how well it behaves in testing.
| ID | Control | Requirement | Minimum evidence |
|---|---|---|---|
| NP-AI-01 | Approved interfaces only | The model reaches operational systems only through approved governed tools | Enabled-tool inventory, reviewed and dated |
| NP-AI-02 | Human accountability | A named human owner remains accountable for what the agent does. The agent is never the accountable party | Ownership record |
| NP-AI-03 | No arbitrary execution | No generic command, script, or API-proxy capability exists — enabled or otherwise | Tool schemas and rejection tests |
| NP-AI-04 | Evidence before opinion | Observed facts are separated from recommendations. No invented state, tickets, approvals, or results | Sample transcripts and validation tests |
| NP-AI-05 | Approval enforcement outside the model | The model cannot bypass, satisfy, or self-issue an approval requirement | Negative approval tests |
| NP-AI-06 | AI risk class recorded | The agent's class is recorded and revisited whenever a tool is added or a schema widened | Classification in the service record |
Where the reasoning lives: Governed AI for Network Operations (01, 02, 04), Why Your Agent Must Not Have an execute_command Tool (03, 05), AI Risk Classification (06).
NP-TOOL — Tool Boundary¶
How a capability is exposed, whether the caller is an agent or a person.
| ID | Control | Requirement | Minimum evidence |
|---|---|---|---|
| NP-TOOL-01 | Tool approval | Purpose, owner, risk class, and scope approved before the tool is enabled anywhere | Tool approval record |
| NP-TOOL-02 | Narrow by construction | Each tool exposes one specific capability, not a configurable gateway to many | Tool catalogue review |
| NP-TOOL-03 | Strict schemas | Typed inputs, enumerations rather than free text, length limits, and rejection of unknown parameters | Schema definitions and rejection tests |
| NP-TOOL-04 | Scope enforcement in the service | Caller claims map to permitted tools, actions, and target scopes, enforced in code rather than in a prompt | Role-scope matrix and authorisation tests |
| NP-TOOL-05 | Structured output contract | Status, correlation ID, tool version, resolved target, source timestamps, observed facts, warnings, and whether anything changed | Example output and contract tests |
| NP-TOOL-06 | Categorised errors | Every failure carries a category that determines what the caller should do next | Error taxonomy and failure tests |
| NP-TOOL-07 | Invocation audit | Complete invocation context and outcome recorded, including attempts to use tools that are not enabled | Audit sample including a denied attempt |
| NP-TOOL-08 | Tool lifecycle | Draft, approved, enabled, deprecated, and retired states managed explicitly, with migration announced before removal | Tool catalogue with states and dates |
Where the reasoning lives: Designing the Tool Catalogue (01, 02, 08), Tool Contracts and Failure Modes (03, 05, 06, 07), From Script to Tool (04).
NP-PLAT — Platform and Delivery¶
Deliberately generic. How you satisfy these depends heavily on what your organisation already runs, and this catalogue does not assume a platform.
| ID | Control | Requirement | Minimum evidence |
|---|---|---|---|
| NP-PLAT-01 | Restricted runtime | Automation runs with least privilege, as a non-privileged identity, with only the network reach it needs | Runtime security configuration |
| NP-PLAT-02 | Trusted artifacts | Images and packages are scanned, immutable, and traceable to a source you trust | Digest, scan result, provenance record |
| NP-PLAT-03 | Runtime secret retrieval | Secrets are referenced by identifier and fetched at runtime. Never embedded in code, configuration, images, logs, or documentation | Secret-store references, repository and image scans |
| NP-PLAT-04 | Dependency control | Dependencies declared, locked, scanned for known vulnerabilities, and pruned when unused | Lock file and dependency scan |
| NP-PLAT-05 | Reproducible promotion | Build once, promote the same artifact through environments, keep environment configuration separate | Pipeline run and immutable artifact reference |
| NP-PLAT-06 | Pipeline assurance | Formatting, linting, type checking, security scanning, and tests run before anything is promoted | Pipeline results |
Where the reasoning lives: Secrets and Credentials in Enterprise Automation and Secure Credential Vaulting (03), Python Engineering Standard (04, 06).
Applicability by Risk Class¶
A starting map, not a rule. Classify the service first, then decide applicability control by control and record the reasoning either way.
| Risk class | Families that apply |
|---|---|
| R0 — Informational | NP-CORE, NP-EVD, NP-GOV, plus NP-PLAT where the service is deployed rather than run ad hoc |
| R1 — Advisory | R0 plus NP-CHG-01, and NP-TOOL where the output is consumed by another system |
| R2 — Controlled execution | R1 plus NP-TOOL in full |
| R3 — Change automation | R2 plus NP-CHG in full |
| R4 — High-impact or autonomous | Everything, plus formal risk acceptance and a documented kill control |
| Any class, with an agent involved | Add NP-AI in full, at the AI risk class the agent holds |
Maintenance Rules¶
The value of a catalogue is entirely in the stability of its identifiers. Four rules protect that:
- Identifiers never change meaning. Once published,
NP-CHG-04means what it meant on the day it was published. - Retired identifiers are not reused. A gap in the numbering is information; a recycled code is a trap for anyone reading an old assessment.
- Materially new requirements get new identifiers, even when they sit close to an existing one.
- Clarifications may keep an identifier where the intent genuinely has not changed. Rewording for readability is a clarification. Adding a condition is not.
Using This in Your Own Documents¶
The catalogue is published under CC-BY 4.0, so you are free to adopt the identifiers directly, including commercially, with attribution. Two reasonable approaches:
Adopt as-is. Reference NP-CORE-02 in your designs and cite this page. Cheapest option, and it means anyone joining your team can read the reasoning without you having to write it first.
Fork the numbering. Copy the families into your own catalogue under your own prefix, keeping a mapping column back to these identifiers. More work, but it lets you add organisation-specific controls without your numbering drifting away from a public source.
What does not work is adopting the codes without adopting the requirements. A design that cites NP-CHG-05 while leaving verification optional is worse than one that cites nothing, because it claims an assurance that is not there.
Continue¶
- Next: Assessing Yourself Against These Controls
- Standards Index: Automation Standards
- The reasoning behind the controls: Production-Grade Network Automation Principles · Governed AI for Network Operations