
Prohibited practices aren’t a legal footnote — they’re product constraints. This month is about turning “don’t do this” into guardrails you can deploy: policy gates, capability limits, audit trails, and incident-ready governance.
Axel Domingues
February taught us how to test agents.
March teaches the harder lesson:
You can have perfect evals and still ship something you’re not allowed to ship.
This is the “compliance cliff” every team hits the first time an agent leaves the lab:
…and then someone asks:
“Are we allowed to do this?”
The uncomfortable truth is that compliance is not a document.
Compliance is runtime behavior + evidence.
So this month I’m going to treat regulation the way an engineer should treat it:
as a set of constraints that must be designed into the system.
Always validate your interpretation with counsel for your specific product, jurisdiction, and use case.Think of this as an engineering translation layer: how to turn “prohibited practices” and “governance requirements” into controls you can actually ship.
The real goal
Turn legal “must not” statements into invariants enforced by architecture.
The real output
Not a policy PDF — an evidence trail: logs, evals, approvals, and kill switches.
The real risk
Agents blur UX + decisions + persuasion. That’s where prohibited behavior hides.
The real win
Ship faster by making compliance repeatable (like CI), not heroic (like audits).
Most compliance regimes have two kinds of rules:
Engineers naturally gravitate to (1) because it sounds like features.
But (2) is where teams get surprised — because prohibited behavior often emerges from composition:
None of those parts are “illegal” in isolation.
Together, they can become a prohibited system behavior.
So the right mental move is this:
Treat “prohibited practices” as system-level failure modes.
You don’t “comply” with them by adding a checkbox.
You comply by preventing the system from entering those states.
Prohibited practices are written in legal language, but the operational meaning is usually one of these traps.
Manipulation at scale
When the agent’s “helpfulness” becomes behavior steering (nudges, dark patterns, coercive copy, pressure).
Exploiting vulnerability
When the agent targets people who can’t reasonably defend themselves (children, impaired users, dependency contexts).
Automated judgment
When the system assigns “worthiness” and uses it to gate outcomes (ranking people, eligibility, reputational scoring).
Biometric + emotion shortcuts
When “efficiency” leads to facial scraping, biometric categorization, or emotion detection in sensitive settings.
These show up in agent systems in very practical ways:
That means your system needs explicit “persuasion boundaries,” not just good intentions.Even if you don’t ask them to persuade, their job is to produce language that moves the user toward actions.
If you only learn one pattern from this post, make it this:
Put compliance controls in a separate plane from product code.
Because compliance isn’t one feature.
It’s a cross-cutting set of guarantees:
That’s not “an agent prompt.”
That’s a platform layer.

A practical control plane usually has these building blocks:
The goal is not bureaucracy.
The goal is making “what we are allowed to do” enforceable at runtime.
When compliance hands you a rule, you need to translate it into four artifacts:
This is the same move we used in 2023 for hallucinations:
Define truth boundaries. Enforce them. Measure them.
Now we’re doing it for governance.
If you can’t test it, you can’t ship it.
Below is a minimum viable governance stack that teams can implement without turning product development into molasses.
It’s structured like production architecture: layered defenses, clear owners, and evidence by default.
Goal: prevent “we built it, now legal says no.”
Evidence: intake record + assigned risk class + reviewer identity + timestamp.
Goal: enforce boundaries even when the model improvises.
Evidence: policy rules + tool scope configs + denied-action logs.
Goal: oversight at decision points with real harm.
Use human approval for:
Design the UX so the human can:
Evidence: approval records + diffs + final action traceability.
Goal: answer “what happened?” without archaeology.
Log structured events for:
Evidence: immutable log store + retention policy + replay handles.
Goal: prevent prohibited behavior regression the same way we prevent test regressions.
Add eval suites for:
Evidence: CI run history + thresholds + red-team findings + fixes.
Goal: make failures survivable.
Evidence: tested runbooks + incident drills + change history.
Here’s the pragmatic stance:
You don’t need to memorize every line of regulation to build safer systems.
You need a design posture that makes prohibited outcomes difficult.
That posture is:
So what should you do on Monday morning?
Build controls around the four traps.
The mistake is treating manipulation as “bad prompts.”
Manipulation is usually an optimization target hidden inside product metrics: conversion, retention, “resolution rate.”
Controls that ship:
That’s fine — but it must be governed like one.
The failure mode here is subtle:
A model adapts tone based on signals. Those signals correlate with vulnerability. Now the agent “helps” by applying pressure in the exact places it shouldn’t.
Controls that ship:
Agents are great at summarizing.
They’re dangerous at adjudicating.
Controls that ship:
The fastest way into a compliance cliff is “we added webcam analysis.”
Controls that ship:
Here’s a lightweight process that works in real teams.
It doesn’t require an army of lawyers.
It requires discipline and automation.
Write a one-pager that answers:
Produce one of:
Turn the decision into:
Ship tests that fail when:
Assume failure. Make it reversible.
The real reason governance fails is that it’s “someone’s job” instead of “how the system works.”
When you run fleets of agents, you need governance like you need DevOps:
A practical operating model looks like this:
A governance rule worth stealing
If a control isn’t enforceable by the platform, it doesn’t exist.
If it isn’t measurable, it isn’t reliable.
If it isn’t repeatable, it won’t survive scale.
EU AI Act — official text (Regulation (EU) 2024/1689)
The source of truth for what’s prohibited, what’s required, and how obligations are scoped — use this to anchor every “invariant” you encode.
AI Act Service Desk — Article 5 (Prohibited AI practices)
A practical, navigable view of the prohibited-practices bucket — useful when translating legal language into product-level failure modes (manipulation, vulnerability, social scoring, etc.).
No. The point is to stage risk.
Start with low-risk use cases:
Build the control plane once, then reuse it.
No.
Models are probabilistic. They drift with prompts, context, and tool availability.
You need hard boundaries:
No.
The same engineering controls show up everywhere:
Treat this as a general “governance architecture” playbook.
March was about turning “prohibited practices” into controls that can be enforced and audited.
April is where agent platforms start to look real:
Agent runtimes emerge — SDKs, orchestration primitives, and the observability stack you need to run agents as a product, not a demo.
Agent Runtimes Emerge: SDKs, orchestration primitives, and observability
In 2025, “agents” stop being demos and start being products. This is the month you realize you don’t need a smarter model — you need a runtime: durable execution, safety gates, and traces you can debug.
Agent Evals as CI - From Prompt Tests to Scenario Harnesses and Red Teams
If your agent ships without tests, it’s not an agent — it’s a production incident with good marketing. This month is about turning “it seems fine” into eval gates you can run in CI.