Policy-as-code took security review out of meeting rooms and PDF checklists and turned it into something that executes — rules that run in the developer's editor, at the pull request, against the infrastructure-as-code plan, and again in the live cloud account. It catches the unencrypted bucket before it ships, and that is a genuine achievement. But take an inventory of what those rules are about, and one pattern holds without exception: every policy in the toolchain governs a condition; none governs a conduct. The one rule the business actually cares about — this process may not take this action without this authorization — appears in none of the policy languages, because none of them has a word for the action.
The idea that earned its pride
Give the category its due, because it earned this one. Policy-as-code made security review version-controlled, peer-reviewed, and testable like any other code. The rules evaluate early and often — in the IDE, at the merge, at plan time, in the running cloud estate — and they map onto the frameworks a CIO answers for: CIS benchmarks, NIST control families, the industry baselines auditors recognize on sight.
The results are real. Misconfigured storage and over-permissive identities sit behind a large share of the cloud incidents that make the news, and a rule that blocks the public bucket at plan time prevents the breach for the cost of a failed check. Finding the flaw in the pull request instead of production is cheaper, faster, and kinder to everyone involved. Nothing in this essay argues against any of that. Keep the rules. Keep the gates.
The argument is about what the rules can talk about.
An inventory of policy objects
Every policy has an object — the thing the rule is about. Inventory the policies in a mature DevSecOps estate and they sort into two families.
- Configuration policy. Encryption on the bucket. The security group open to the internet. The over-permissive role. The unpinned dependency, the privileged container, the missing audit log. These rules govern the conditions under which software runs — the state of the environment before and around execution.
- Exposure policy. The posture-graph platforms go a layer up: they correlate code, cloud, identity, and runtime signals, chain individual weaknesses into attack paths, and tell you which of ten thousand findings actually matters. This is genuinely useful — prioritization is where scanning programs go to die — but note the object. It is still conditions, now compounded: an attack path is a set of correlated configurations.
Now write down the policies your business actually runs on. A payment above a defined threshold requires a second, independent approver. The same identity may not both create a vendor and approve its first invoice. A production record of this class may not change without a linked change request and a named accountable human. Customer data of this classification may not leave this boundary without an explicit, logged decision.
These are action policies. Their object is not a resource's state; it is a specific act, by a specific actor, in a specific business context. And you cannot write one in a configuration-rule language, because that language's nouns are resources — buckets, roles, workloads, network paths — and its verbs stop at deploy. There is no way to say "payment," "approver," or "threshold" in a language whose subjects are infrastructure.
The two strongest objections
Two objections come back from any strong security team, and both deserve to be taken at full strength.
"Our pipeline is governed end to end." True — and the platforms that pitch a single governed path from commit to deployment have built something real. Policy gates the merge, the build, and the release; exceptions are logged; the pipeline itself is auditable. But be precise about what is governed: the delivery of code. The moment the artifact deploys, the platform's writ ends. The running application's business actions — the payment it releases at 2 a.m., the record it silently updates — answer to whatever logic the application happens to contain, and to nothing the pipeline shipped.
"We enforce at runtime." Also true, for the most runtime-oriented of the cloud-native security platforms — and this deserves particular respect, because it is enforcement, not posture. Admission control that refuses a workload without a valid signature is a real execution-time control. Immutability enforcement that pins a workload to its build genuinely guarantees that the software running is the software you built. But again, name the object: these controls govern which software runs and that it stays unmodified — workload integrity. A perfectly attested, drift-free, CVE-free workload can still release the wrong payment, because nothing checked the payment. Integrity of the actor is not governance of the action.
What the frameworks are actually about
Here is the uncomfortable part, and it is written into the very frameworks the category proudly maps to. Open the control families your auditors actually test — change control, authorization, segregation of duties — and read what they demand. They are not, at root, about encryption settings. They are about actions: who may do what, under whose approval, with what record.
The toolchain approximates each one with a configuration proxy, because a configuration is what it can see. Authorization becomes a scan of role definitions — evidence that the permission is scoped, not that any given act was approved. Change control becomes a protected branch and a required review — governance of the change to the code, not of the changes the running code makes to business records a thousand times a day. Segregation of duties becomes an identity-configuration rule — proof that one role could not hold both permissions, not proof that no single actor performed both halves of a sensitive transaction.
Auditors accept the proxies because proxies are what the estate can produce. But the distance between the proxy and the control is exactly where the incidents live that no scanner will ever flag — the ones where the post-mortem finds that nothing was misconfigured, nothing was vulnerable, and something was simply done that should have required more than it required.
When the workflow is the policy
Expressing action policy takes an architecture in which the action itself is a first-class, governable object — and that is a property of the runtime, not a feature you can bolt onto a scanner.
Entroid is built as a composable process fabric: five primitives — Deterministic Workflows, Intelligence Orchestration, Atomic Agents, Functions, and Connectors — composed on a shared Semantic Ontology and executed on one runtime. Three architectural consequences matter here.
- The Deterministic Workflow is the policy. An authorization threshold, a segregation-of-duties constraint, a human-in-the-loop approval is not a rule about the process, checked elsewhere and earlier; it is a step in the process, evaluated inline at the moment the action executes. There is no gap between the policy and the act for conduct to fall through, because the policy sits on the execution path.
- The Semantic Ontology gives the policy its nouns. "Payment," "approver," "threshold," and "vendor" are typed business objects on the fabric — so action policy is written in the vocabulary the control frameworks themselves use, not translated into resource tags and role identifiers.
- Connectors are the only door out. External systems are touched exclusively through governed Connectors, so an action cannot route around its gate — and every action emits an immutable per-action audit record as a byproduct of executing, not as evidence collected afterward.
To make it concrete — as an illustrative composition, not a case study: a refund process built on the fabric would carry its threshold check and its second-approver requirement as workflow steps; a refund over the line would pause, mid-execution, for a named human; the release would flow through a governed Connector into the payment system; and the record of who approved what, when, against which policy version, would exist the instant the action did.
None of this replaces the toolchain. ES is not a CI/CD platform, and the scanning, signing, and admission work remains genuinely necessary — the fabric operates over the systems you already run, through those same governed Connectors, not in place of them. The claim is narrower and structural: the security control lives on the executing action — which is precisely the place the artifact-and-pipeline model, by design, does not reach.
A test you can run this week
Take your three most consequential business controls — the ones your audit committee would name unprompted — and write down how each is enforced today, end to end. If every enforcement point turns out to be a configuration proxy — a role scanned, a branch protected, a workload admitted — you have not found a tooling failure. Your vendors did their jobs. You have found the boundary of a category: a policy stack whose languages can describe every condition of execution and cannot express a single sentence about conduct.
The conditions are guarded. The question worth carrying into the next planning cycle is what guards the conduct.
Policy-as-code can name every resource in your estate — and not one action your business takes.
See what this looks like for your enterprise.
Not a demo. A strategic conversation about how your enterprise could operate
when every process runs on one governed fabric.
