<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://eu-ai-act.ai-mvp.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://eu-ai-act.ai-mvp.com/" rel="alternate" type="text/html" /><updated>2026-04-11T00:59:40+00:00</updated><id>https://eu-ai-act.ai-mvp.com/feed.xml</id><title type="html">EU AI Act Guide for AI Agent Developers</title><subtitle>Practical compliance for developers building AI agents under the EU AI Act — using Microsoft&apos;s open-source Agent Governance Toolkit.</subtitle><author><name>Carlos Hernandez</name></author><entry><title type="html">EU AI Act for AI Agent Developers: A Practical Compliance Checklist</title><link href="https://eu-ai-act.ai-mvp.com/2026/04/10/eu-ai-act-compliance-checklist-for-ai-agent-developers/" rel="alternate" type="text/html" title="EU AI Act for AI Agent Developers: A Practical Compliance Checklist" /><published>2026-04-10T09:00:00+00:00</published><updated>2026-04-10T09:00:00+00:00</updated><id>https://eu-ai-act.ai-mvp.com/2026/04/10/eu-ai-act-compliance-checklist-for-ai-agent-developers</id><content type="html" xml:base="https://eu-ai-act.ai-mvp.com/2026/04/10/eu-ai-act-compliance-checklist-for-ai-agent-developers/"><![CDATA[<script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
  mermaid.initialize({ startOnLoad: true, theme: 'neutral', securityLevel: 'loose' });
</script>

<style>
.terminal-window {
  background: #1e1e1e;
  border-radius: 8px;
  margin: 1.5em 0;
  overflow: hidden;
  font-size: 0.85em;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.terminal-header {
  background: #3a3a3a;
  padding: 8px 14px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.terminal-dot {
  width: 12px; height: 12px;
  border-radius: 50%;
  display: inline-block;
}
.dot-red   { background: #ff5f56; }
.dot-amber { background: #ffbd2e; }
.dot-green { background: #27c93f; }
.terminal-title {
  color: #999;
  font-family: monospace;
  font-size: 0.9em;
  margin-left: 8px;
}
.terminal-body {
  padding: 16px 20px;
  color: #d4d4d4;
  font-family: 'SFMono-Regular', Consolas, monospace;
  line-height: 1.6;
  white-space: pre;
  overflow-x: auto;
  background: #1e1e1e;
  margin: 0;
  border: none;
}
.t-ok   { color: #27c93f; }
.t-warn { color: #ffbd2e; }
.t-fail { color: #ff5f56; }
.t-dim  { color: #6a6a6a; }
.t-bold { color: #ffffff; font-weight: bold; }
</style>

<p><strong>August 2, 2026 is fewer than four months away.</strong> That is when EU AI Act obligations for high-risk AI systems (including the transparency requirements of Article 50) become enforceable. If you are building AI agents, you need to know whether your system is in scope, what you are required to do, and how to get there without starting from scratch. The European Commission’s <a href="https://digital-strategy.ec.europa.eu/en/faqs/navigating-ai-act">Navigating the AI Act FAQ</a> is a good orientation if you are new to the regulation.</p>

<p>Before the checklist, one thing needs to be said clearly: <strong>your model passing safety benchmarks does not make your agent compliant.</strong></p>

<p>Model safety and agent governance are different layers. Model safety focuses on what a model <em>generates</em>: training-time alignment, content filtering, red-teaming results. Agent governance focuses on what a system <em>executes</em>: runtime decisions, tool calls, audit records, and disclosure to users and deployers. AGT addresses the execution layer of compliance; the Act itself reaches much further, into documentation, data governance, transparency, instructions for use, monitoring, and organisational measures. Your RLHF fine-tune and your toxicity filter say nothing about your audit trail, your risk management process, or your transparency disclosures.</p>

<p>This checklist uses <strong><a href="https://github.com/microsoft/agent-governance-toolkit">Microsoft’s Agent Governance Toolkit</a></strong> (AGT) as the practical tooling reference. We will use an <strong>HR screening agent</strong> as our running example: an agent that parses CVs, scores candidates, and generates shortlists for a hiring workflow.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Full toolkit in one step (see QUICKSTART.md for detailed setup)</span>
<span class="c"># https://github.com/microsoft/agent-governance-toolkit/blob/main/QUICKSTART.md</span>
pip <span class="nb">install</span> <span class="s2">"agent-governance-toolkit[full]"</span>

<span class="c"># Or install individual packages</span>
pip <span class="nb">install </span>agent-os-kernel agentmesh-platform agentmesh-runtime agent-sre
</code></pre></div></div>

<blockquote>
  <p><strong>Package naming warning:</strong> On PyPI, the bare <code class="language-plaintext highlighter-rouge">agentmesh</code> package is an unrelated 2024 placeholder, not Microsoft’s AgentMesh. Use <code class="language-plaintext highlighter-rouge">agentmesh-platform</code> for the AgentMesh component. Verify all package names against the <a href="https://github.com/microsoft/agent-governance-toolkit">repository’s installation guide</a> before running in a production environment.</p>
</blockquote>

<h3 id="how-the-toolkit-maps-to-the-law">How the toolkit maps to the law</h3>

<p>Before diving into the checklist, here is how AGT’s components align to the articles you need to satisfy:</p>

<pre class="mermaid">
graph LR
    subgraph AGT["Agent Governance Toolkit"]
        OS["Agent OS\nPolicy Engine"]
        MESH["AgentMesh\nIdentity + Trust"]
        SRE["Agent SRE\nSLOs + Reliability"]
        COMP["Agent Compliance\nAttestation CLI"]
    end
    OS --&gt;|runtime enforcement| A9["Art. 9\nRisk Mgmt"]
    OS --&gt;|audit trail| A12["Art. 12\nLogging"]
    OS --&gt;|kill switch + approvals| A14["Art. 14\nHuman Oversight"]
    OS --&gt;|disclosure interceptor| A50["Art. 50\nTransparency"]
    MESH --&gt;|DID identity| A13["Art. 13\nTransparency\nto Deployers"]
    SRE --&gt;|SLOs + thresholds| A15["Art. 15\nAccuracy"]
    COMP --&gt;|dossier export| A11["Art. 11\nTech Docs"]
</pre>

<hr />

<h2 id="step-0-are-you-in-scope">Step 0: Are you in scope?</h2>

<p>Not every AI agent triggers the full obligation stack. The Act creates a risk hierarchy.</p>

<p><strong>High-risk AI systems</strong> (<a href="https://artificialintelligenceact.eu/annex/3/">Annex III</a>) face the heaviest obligations. These are systems operating in eight domains: biometrics, critical infrastructure, education, employment, essential services (credit scoring, healthcare, emergency triage), law enforcement, migration/border control, and justice/democracy.</p>

<p><strong>Limited-risk systems</strong> (AI that interacts with users without falling in Annex III) face only Article 50 transparency obligations.</p>

<pre class="mermaid">
flowchart TD
    A["Your AI Agent"] --&gt; B{"Operates in an\nAnnex III domain?"}
    B --&gt;|No| C["Limited Risk\nArt. 50 transparency only"]
    B --&gt;|Yes| D{"Profiles\nnatural persons?"}
    D --&gt;|Yes| E["HIGH RISK\nFull Arts. 9 to 15 obligations"]
    D --&gt;|No| F{"Art. 6(3) exemption\napplies?"}
    F --&gt;|Yes: narrow procedural task| G["Not high-risk\nArt. 50 still applies"]
    F --&gt;|No| E
    style E fill:#f8d7da,stroke:#dc3545
    style C fill:#d4edda,stroke:#28a745
    style G fill:#fff3cd,stroke:#ffc107
</pre>

<p>Let us classify the HR screening agent using the toolkit’s <code class="language-plaintext highlighter-rouge">EUAIActRiskClassifier</code>:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">agentmesh.governance.eu_ai_act</span> <span class="kn">import</span> <span class="p">(</span>
    <span class="n">EUAIActRiskClassifier</span><span class="p">,</span>
    <span class="n">AgentRiskProfile</span><span class="p">,</span>
    <span class="n">RiskLevel</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">profile</span> <span class="o">=</span> <span class="nc">AgentRiskProfile</span><span class="p">(</span>
    <span class="n">name</span><span class="o">=</span><span class="sh">"</span><span class="s">hr-screening-agent</span><span class="sh">"</span><span class="p">,</span>
    <span class="n">description</span><span class="o">=</span><span class="sh">"</span><span class="s">Automated CV screening, candidate scoring, and shortlist generation</span><span class="sh">"</span><span class="p">,</span>
    <span class="n">domain</span><span class="o">=</span><span class="sh">"</span><span class="s">employment</span><span class="sh">"</span><span class="p">,</span>
    <span class="n">capabilities</span><span class="o">=</span><span class="p">[</span><span class="sh">"</span><span class="s">resume_parsing</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">candidate_scoring</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">shortlist_generation</span><span class="sh">"</span><span class="p">],</span>
    <span class="n">involves_profiling</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>   <span class="c1"># evaluates personal characteristics
</span>    <span class="n">is_safety_component</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
<span class="p">)</span>

<span class="n">classifier</span> <span class="o">=</span> <span class="nc">EUAIActRiskClassifier</span><span class="p">()</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">classifier</span><span class="p">.</span><span class="nf">classify</span><span class="p">(</span><span class="n">profile</span><span class="p">)</span>

<span class="nf">print</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">risk_level</span><span class="p">)</span>          <span class="c1"># RiskLevel.HIGH
</span><span class="nf">print</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">profiling_override</span><span class="p">)</span>  <span class="c1"># True
</span><span class="nf">print</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">triggers</span><span class="p">)</span>
<span class="c1"># ['annex_iii_domain_employment', 'involves_profiling']
</span></code></pre></div></div>

<p>Notice <code class="language-plaintext highlighter-rouge">profiling_override=True</code>. For systems that already fall within an Annex III use case, involving profiling of natural persons blocks the <a href="https://artificialintelligenceact.eu/article/6/">Article 6(3) exemption</a>. That exemption lets some Annex III systems escape the high-risk classification when they perform only narrow procedural or preparatory tasks, but it explicitly does not apply once profiling is in scope (cross-referenced to GDPR Article 4(4)). An agent that evaluates CV content, infers competencies, and ranks candidates is profiling within an Annex III domain, which is why <code class="language-plaintext highlighter-rouge">profiling_override</code> fires here.</p>

<blockquote>
  <p><strong>Gap:</strong> <code class="language-plaintext highlighter-rouge">EUAIActRiskClassifier</code> currently lives in the toolkit’s <code class="language-plaintext highlighter-rouge">examples/</code> directory, not yet a production library export. Domain sets are static YAML; if the EU updates Annex III, you will need to update your config file manually. Use it as a well-structured starting point, not a certified compliance tool.</p>
</blockquote>

<p>If your agent scores minimal risk, the remaining checklist items below are optional best practice rather than legal requirements. Note that <a href="https://digital-strategy.ec.europa.eu/en/faqs/ai-literacy-questions-answers">Article 4 AI literacy obligations</a> entered into application before August 2026 and apply regardless of risk tier: you are already required to ensure your team has appropriate AI literacy for the systems they deploy and use.</p>

<hr />

<h2 id="1-risk-management-system-article-9">1. Risk management system (Article 9)</h2>

<p><strong>What the law requires:</strong> A continuous, iterative risk management process throughout the AI system’s lifecycle, not a one-time pre-deployment assessment. You must identify known and foreseeable risks (including under misuse), implement mitigation measures, document residual risks for deployers, and test before market placement. The process must specifically assess impacts on vulnerable populations.</p>

<p><strong>What the toolkit provides:</strong> The Agent OS policy engine intercepts every tool call and agent action before execution at sub-millisecond latency. Policies are written in YAML, OPA Rego, or Cedar:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># policy.yaml: require human approval before generating shortlists</span>
<span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s">hr-shortlist-human-approval</span>
  <span class="na">description</span><span class="pi">:</span> <span class="s">Block shortlist generation without human sign-off</span>
  <span class="na">scope</span><span class="pi">:</span> <span class="pi">[</span><span class="s2">"</span><span class="s">shortlist_generation"</span><span class="pi">]</span>
  <span class="na">action</span><span class="pi">:</span> <span class="s">require_approval</span>
  <span class="na">conditions</span><span class="pi">:</span>
    <span class="na">candidate_count_threshold</span><span class="pi">:</span> <span class="m">10</span>
    <span class="na">escalation_on_timeout</span><span class="pi">:</span> <span class="s">block</span>
  <span class="na">audit</span><span class="pi">:</span> <span class="kc">true</span>
</code></pre></div></div>

<p>Agent SRE adds SLO-based risk containment: when your safety SLI drops below 99% (more than 1% policy violations in the measurement window), agent capabilities are automatically restricted via circuit breaker.</p>

<blockquote>
  <p><strong>Gap:</strong> Article 9 requires <em>lifecycle</em> risk management including post-market monitoring. The toolkit handles runtime enforcement well but has no built-in feedback loop from production observation back into your risk policies. You need to build that connection by periodically reviewing audit logs, identifying new failure modes, and updating your policy set. Treat this as a scheduled maintenance task, not a one-time configuration.</p>
</blockquote>

<hr />

<h2 id="2-technical-documentation-article-11-and-annex-iv">2. Technical documentation (Article 11 and Annex IV)</h2>

<p><strong>What the law requires:</strong> Technical documentation must be prepared <em>before</em> market placement, kept continuously updated, and retained for 10 years. It must contain nine sections specified in Annex IV, covering system description, development process, monitoring, performance metrics, risk management, lifecycle changes, standards applied, declaration of conformity, and post-market monitoring plan. The preparation effort for a complex system is substantial, particularly if design decisions were not documented as the system was built.</p>

<p><strong>What the toolkit provides:</strong> <code class="language-plaintext highlighter-rouge">TechnicalDocumentationExporter</code> auto-generates the documentation sections it can infer from your governance artifacts:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">agentmesh.governance.annex_iv</span> <span class="kn">import</span> <span class="n">TechnicalDocumentationExporter</span><span class="p">,</span> <span class="n">to_markdown</span>

<span class="n">exporter</span> <span class="o">=</span> <span class="nc">TechnicalDocumentationExporter</span><span class="p">(</span>
    <span class="n">system_name</span><span class="o">=</span><span class="sh">"</span><span class="s">hr-screening-agent</span><span class="sh">"</span><span class="p">,</span>
    <span class="n">provider</span><span class="o">=</span><span class="sh">"</span><span class="s">Acme Corp</span><span class="sh">"</span><span class="p">,</span>
    <span class="n">system_description</span><span class="o">=</span><span class="sh">"</span><span class="s">Automated CV screening, scoring, and shortlist generation for recruitment</span><span class="sh">"</span><span class="p">,</span>
    <span class="n">system_version</span><span class="o">=</span><span class="sh">"</span><span class="s">1.2.0</span><span class="sh">"</span><span class="p">,</span>
<span class="p">)</span>

<span class="c1"># Feed in artifacts the toolkit has already collected
</span><span class="n">exporter</span><span class="p">.</span><span class="nf">add_compliance_report</span><span class="p">(</span><span class="n">compliance_report</span><span class="p">)</span>   <span class="c1"># from agent-compliance verify
</span><span class="n">exporter</span><span class="p">.</span><span class="nf">add_policies</span><span class="p">(</span><span class="n">active_policies</span><span class="p">)</span>               <span class="c1"># from Agent OS
</span><span class="n">exporter</span><span class="p">.</span><span class="nf">add_audit_entries</span><span class="p">(</span><span class="n">recent_audit_log</span><span class="p">)</span>         <span class="c1"># from Agent OS audit trail
</span><span class="n">exporter</span><span class="p">.</span><span class="nf">add_slo_data</span><span class="p">(</span><span class="n">sre_metrics</span><span class="p">)</span>                   <span class="c1"># from Agent SRE
</span>
<span class="n">doc</span> <span class="o">=</span> <span class="n">exporter</span><span class="p">.</span><span class="nf">export</span><span class="p">()</span>
<span class="nf">print</span><span class="p">(</span><span class="nf">to_markdown</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>   <span class="c1"># Annex IV dossier, ready for review and filing
</span></code></pre></div></div>

<p>Sections 1 through 5 (general description, development process, monitoring, performance metrics, risk management) are auto-populated from toolkit artifacts. Sections 6 through 9 are marked as <code class="language-plaintext highlighter-rouge">placeholder</code> fields requiring human input.</p>

<blockquote>
  <p><strong>Gap:</strong> Roughly half the Annex IV content cannot be auto-generated. Design rationale, training data provenance (datasheets), third-party evaluation results, and your post-market monitoring plan are things only you can write. Start this documentation <em>now</em>, before market placement. The Act requires it to exist before you ship, and the 10-year retention clock starts at that point.</p>
</blockquote>

<hr />

<h2 id="3-record-keeping-and-logging-article-12">3. Record-keeping and logging (Article 12)</h2>

<p><strong>What the law requires:</strong> High-risk AI systems must technically allow automatic event recording throughout their lifetime. Logs must support post-market monitoring and risk identification. Deployers must be able to access, collect, store, and interpret them.</p>

<p><strong>What the toolkit provides:</strong> This is the toolkit’s strongest area of coverage. Agent OS logs every policy decision automatically: tool call requests, evaluation outcomes (allowed, blocked, or modified), reasons, timestamps, agent identity, and session context. Every audit entry is structured and immutable.</p>

<p>For the HR screening agent, every candidate scoring request, every shortlist generation attempt, every human approval trigger, and every policy violation is recorded with a complete decision trace.</p>

<p><strong>Action required:</strong> Ensure your deployers can access and export these logs. The toolkit emits structured OpenTelemetry traces and integrates natively with Datadog, Prometheus, Langfuse, and PagerDuty. Wire the audit trail to your logging infrastructure and document how deployers can query it. This forms part of your Article 13 instructions for use.</p>

<hr />

<h2 id="4-transparency-to-deployers-article-13">4. Transparency to deployers (Article 13)</h2>

<p><strong>What the law requires:</strong> Systems must be designed to give deployers sufficient transparency to understand and correctly use outputs. Instructions for use must cover: provider identity, performance characteristics and limitations (accuracy levels, known failure modes, input data specifications), human oversight requirements, and log collection guidance.</p>

<p><strong>What the toolkit provides:</strong> Every AGT agent has a cryptographically verifiable identity via Decentralized Identifiers (DIDs) with Ed25519 key pairs. Every action the agent takes is signed and attributable. The compliance report from <code class="language-plaintext highlighter-rouge">agent-compliance verify</code> gives deployers a structured view of what the system covers and where gaps remain.</p>

<p><strong>Action required:</strong> Write your instructions for use document. The toolkit gives you the audit infrastructure and identity layer; the documentation is still on you. It should include: the performance thresholds you have declared (see checklist item 6), known failure cases, bias risks specific to your training data, and how deployers access and interpret audit logs.</p>

<hr />

<h2 id="5-human-oversight-article-14">5. Human oversight (Article 14)</h2>

<p><strong>What the law requires:</strong> Systems must include tools enabling effective human oversight. Operators must be able to understand system capabilities, detect automation bias, interpret outputs correctly, choose <em>not to use</em> an output, and <em>interrupt or stop</em> the system. Requirements scale with the agent’s level of autonomy.</p>

<p><strong>What the toolkit provides:</strong> Three mechanisms cover the Article 14 requirements directly.</p>

<p><strong>Kill switch:</strong> AgentMesh Runtime includes a system-level kill switch that immediately halts agent execution across all active sessions.</p>

<p><strong>Approval workflows with quorum logic:</strong></p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Two reviewers must approve before the final shortlist is delivered</span>
<span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s">shortlist-final-approval</span>
  <span class="na">scope</span><span class="pi">:</span> <span class="pi">[</span><span class="s2">"</span><span class="s">shortlist_delivery"</span><span class="pi">]</span>
  <span class="na">action</span><span class="pi">:</span> <span class="s">require_approval</span>
  <span class="na">conditions</span><span class="pi">:</span>
    <span class="na">quorum</span><span class="pi">:</span> <span class="m">2</span>
    <span class="na">timeout_minutes</span><span class="pi">:</span> <span class="m">120</span>
    <span class="na">escalation_on_timeout</span><span class="pi">:</span> <span class="s">block</span>
  <span class="na">audit</span><span class="pi">:</span> <span class="kc">true</span>
</code></pre></div></div>

<p>Here is how that flow looks at runtime when the agent reaches the shortlist delivery step:</p>

<pre class="mermaid">
sequenceDiagram
    participant A as HR Screening Agent
    participant OS as Agent OS
    participant R1 as Reviewer 1
    participant R2 as Reviewer 2
    A-&gt;&gt;OS: shortlist_delivery request
    OS-&gt;&gt;OS: Policy check: quorum=2 required
    OS--&gt;&gt;R1: Approval request sent
    OS--&gt;&gt;R2: Approval request sent
    R1-&gt;&gt;OS: ✓ Approved
    R2-&gt;&gt;OS: ✓ Approved
    OS-&gt;&gt;A: ✓ Action permitted
    Note over OS: Art. 12 audit entry logged
</pre>

<p><strong>Human-in-the-loop gates:</strong> Capability boundaries that pause execution pending human confirmation before high-stakes actions (contacting candidates, writing to HR systems, making external API calls).</p>

<blockquote>
  <p><strong>Gap:</strong> Article 14 requires oversight measures “commensurate with the level of autonomy.” As your agent gains new capabilities (new tools, new domains, new integrations), your oversight policies need to be updated to match. The toolkit has no mechanism to flag when a policy set may no longer be adequate for an expanded agent scope. Build a policy review cadence into your release process.</p>
</blockquote>

<hr />

<h2 id="6-accuracy-robustness-and-transparency">6. Accuracy, robustness, and transparency</h2>

<h3 id="article-15-accuracy-thresholds">Article 15: Accuracy thresholds</h3>

<p><code class="language-plaintext highlighter-rouge">AccuracyDeclaration</code> lets you formally declare and validate your Article 15 accuracy commitments against live SLI data:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">agent_sre.accuracy_declaration</span> <span class="kn">import</span> <span class="n">AccuracyDeclaration</span>

<span class="n">declaration</span> <span class="o">=</span> <span class="n">AccuracyDeclaration</span><span class="p">.</span><span class="nf">for_high_risk</span><span class="p">(</span><span class="sh">"</span><span class="s">hr-screening-agent</span><span class="sh">"</span><span class="p">)</span>
<span class="c1"># Sets threshold commitments for a high-risk system:
#   tool_call_accuracy &gt;= 95% minimum  (99% recommended)
#   hallucination_rate &lt;= 5%  maximum  (2%  recommended)
#   task_success_rate  &gt;= 90% minimum  (95% recommended)
#   calibration_delta  &lt;= 10% maximum  (5%  recommended)
</span>
<span class="c1"># Validate against live SLI metrics from Agent SRE
</span><span class="n">ok</span><span class="p">,</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">declaration</span><span class="p">.</span><span class="nf">validate_against_sli</span><span class="p">(</span><span class="sh">"</span><span class="s">task_success_rate</span><span class="sh">"</span><span class="p">,</span> <span class="mf">0.92</span><span class="p">)</span>
<span class="nf">print</span><span class="p">(</span><span class="n">ok</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>   <span class="c1"># True  "task_success_rate: 0.92 &gt;= 0.90 ✓"
</span>
<span class="n">ok</span><span class="p">,</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">declaration</span><span class="p">.</span><span class="nf">validate_against_sli</span><span class="p">(</span><span class="sh">"</span><span class="s">hallucination_rate</span><span class="sh">"</span><span class="p">,</span> <span class="mf">0.08</span><span class="p">)</span>
<span class="nf">print</span><span class="p">(</span><span class="n">ok</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>   <span class="c1"># False "hallucination_rate: 0.08 &gt; 0.05 ✗"
</span></code></pre></div></div>

<p>Wire this into your CI/CD pipeline. A failing threshold should block deployment.</p>

<h3 id="article-50-transparency-for-all-ai-systems">Article 50: Transparency for all AI systems</h3>

<p>Article 50 covers two separate obligations that apply to different categories of systems. They are not the same duty.</p>

<p><strong>Article 50(1) applies to interactive systems.</strong> Any AI system intended to interact directly with natural persons must notify the user they are interacting with an AI at first contact, unless this is obvious from the context. The Commission’s <a href="https://digital-strategy.ec.europa.eu/en/faqs/guidelines-and-code-practice-transparent-ai-systems">guidelines on transparent AI systems</a> explain how this is expected to work in practice.</p>

<p><strong>Article 50(2) applies to generative systems.</strong> Providers of AI systems that generate synthetic audio, image, video, or text must mark that output as artificially generated in a machine-readable format. This obligation applies to the content itself, not to the interaction. The Commission’s <a href="https://digital-strategy.ec.europa.eu/en/policies/code-practice-ai-generated-content">code of practice on marking AI-generated content</a> is the voluntary implementation framework currently being developed for this track.</p>

<p>An HR screening agent that converses with candidates owes the first obligation. If it also produces AI-generated written outputs delivered to those candidates, it owes the second as well. Not every interactive system generates synthetic content, and not every generative system interacts directly with people.</p>

<p>The August 2, 2026 enforcement date applies to Article 50 obligations as written in the Act. The Commission’s ongoing guidance process continues to develop practical implementation detail, so treat the Act text as the current baseline and monitor delegated acts as they are published.</p>

<p><code class="language-plaintext highlighter-rouge">TransparencyInterceptor</code> handles the first obligation:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">agent_os.transparency</span> <span class="kn">import</span> <span class="n">TransparencyInterceptor</span><span class="p">,</span> <span class="n">TransparencyLevel</span>

<span class="n">interceptor</span> <span class="o">=</span> <span class="nc">TransparencyInterceptor</span><span class="p">(</span>
    <span class="n">default_level</span><span class="o">=</span><span class="n">TransparencyLevel</span><span class="p">.</span><span class="n">ENHANCED</span><span class="p">,</span>
    <span class="n">require_disclosure_confirmation</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
<span class="p">)</span>

<span class="c1"># At session start: deliver disclosure text and record confirmation
</span><span class="nf">print</span><span class="p">(</span><span class="n">interceptor</span><span class="p">.</span><span class="nf">get_disclosure_text</span><span class="p">(</span><span class="n">TransparencyLevel</span><span class="p">.</span><span class="n">ENHANCED</span><span class="p">))</span>
<span class="c1"># "You are interacting with an AI system governed by policy enforcement rules.
#  All interactions are logged and subject to human oversight..."
</span>
<span class="n">interceptor</span><span class="p">.</span><span class="nf">confirm_disclosure</span><span class="p">(</span><span class="n">session_id</span><span class="o">=</span><span class="sh">"</span><span class="s">candidate-session-001</span><span class="sh">"</span><span class="p">)</span>

<span class="c1"># All subsequent tool calls are validated for disclosure status
</span><span class="n">result</span> <span class="o">=</span> <span class="n">interceptor</span><span class="p">.</span><span class="nf">intercept</span><span class="p">(</span><span class="n">tool_call_request</span><span class="p">)</span>
<span class="c1"># result.allowed = True (disclosure confirmed)
# result.modified_arguments includes _ai_disclosure metadata marker
</span></code></pre></div></div>

<p><strong>The multi-agent transparency chain problem:</strong> When your HR agent calls a background enrichment agent, which calls an external data API, disclosure ownership becomes ambiguous. The Act says the <em>provider of the human-facing system</em> is responsible. Design your disclosure flow at the outermost boundary:</p>

<pre class="mermaid">
graph LR
    H["👤 Candidate"] --&gt;|session starts| A["HR Screening Agent\n✓ Art. 50 disclosure here\nTransparencyInterceptor active"]
    A --&gt;|internal call| B["Enrichment Agent\nno direct human contact\ndisclosure not required"]
    B --&gt;|API call| C["External\nData Source"]
    style A fill:#d4edda,stroke:#28a745
    style B fill:#fff3cd,stroke:#ffc107
    style H fill:#cce5ff,stroke:#0056b3
    style C fill:#f8f9fa,stroke:#6c757d
</pre>

<p>For fully autonomous pipelines where no single agent is clearly “human-facing,” this remains an unresolved question in the regulation.</p>

<blockquote>
  <p><strong>Gap:</strong> <code class="language-plaintext highlighter-rouge">TransparencyInterceptor</code> handles disclosure confirmation and metadata injection but does not implement cryptographic watermarking of generated text (Art. 50(2) machine-readable markers). This requires a separate solution: evaluate C2PA-compatible tools or your LLM provider’s native watermarking API.</p>
</blockquote>

<hr />

<h2 id="running-the-compliance-report">Running the compliance report</h2>

<p>Once the toolkit components are wired up, run a compliance attestation with <code class="language-plaintext highlighter-rouge">agent-compliance verify</code>:</p>

<div class="terminal-window">
  <div class="terminal-header">
    <span class="terminal-dot dot-red"></span>
    <span class="terminal-dot dot-amber"></span>
    <span class="terminal-dot dot-green"></span>
    <span class="terminal-title">agent-compliance verify --agent hr-screening-agent</span>
  </div>
  <pre class="terminal-body"><span class="t-dim">$</span> agent-compliance verify --agent hr-screening-agent

<span class="t-bold">Agent Governance Toolkit: Compliance Report</span>
<span class="t-dim">────────────────────────────────────────────────────</span>
System:   hr-screening-agent v1.2.0
Provider: Acme Corp
Profile:  <span class="t-fail">HIGH RISK</span> (Annex III: Employment, profiling override)

<span class="t-bold">Article    Coverage    Conformity Risk   Status</span>
<span class="t-dim">────────────────────────────────────────────────────</span>
Art. 6     Partial     <span class="t-fail">HIGH</span>              <span class="t-warn">⚠</span>  examples/ only, not library
Art. 9     Partial     <span class="t-fail">HIGH</span>              <span class="t-warn">⚠</span>  no lifecycle feedback loop
Art. 11    Partial     MEDIUM            <span class="t-warn">○</span>  manual sections required
Art. 12    Covered     <span class="t-ok">LOW</span>               <span class="t-ok">✓</span>  full audit trail active
Art. 13    Partial     MEDIUM            <span class="t-warn">○</span>  instructions for use needed
Art. 14    Covered     <span class="t-ok">LOW</span>               <span class="t-ok">✓</span>  kill switch + approvals wired
Art. 15    Partial     MEDIUM            <span class="t-warn">○</span>  thresholds declared, not validated
Art. 50    Partial     MEDIUM            <span class="t-warn">○</span>  watermarking not configured
<span class="t-dim">────────────────────────────────────────────────────</span>
Overall conformity risk: <span class="t-fail">HIGH</span>
Signed attestation:      <span class="t-dim">sha256:a3f9c2...8d721</span>

<span class="t-dim">Run with --json to pipe output to CI/CD.</span></pre>
</div>

<p>Integrate into CI/CD to fail builds on unmitigated high-risk findings:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>agent-compliance verify <span class="nt">--json</span> | python <span class="nt">-c</span> <span class="s2">"
import json, sys
report = json.load(sys.stdin)
failures = [
    f for f in report.get('findings', [])
    if f.get('conformity_risk') == 'HIGH' and not f.get('mitigated')
]
if failures:
    for f in failures: print(f'FAIL: {f[</span><span class="se">\"</span><span class="s2">article</span><span class="se">\"</span><span class="s2">]}: {f[</span><span class="se">\"</span><span class="s2">gap</span><span class="se">\"</span><span class="s2">]}')
    sys.exit(1)
print('Compliance check passed')
"</span>
</code></pre></div></div>

<hr />

<h2 id="what-to-do-with-the-gaps">What to do with the gaps</h2>

<p>Every section above flagged at least one gap. This is expected. The Agent Governance Toolkit covers the runtime governance layer (policy enforcement, audit trails, identity, human oversight) but was never designed to be a complete EU AI Act compliance solution on its own.</p>

<p><strong>Prioritised gap list for an HR screening agent:</strong></p>

<ol>
  <li><strong>Post-market monitoring feedback loop (Art. 9):</strong> Schedule quarterly policy reviews using production audit logs. Define what constitutes a risk event that triggers a policy update.</li>
  <li><strong>Annex IV manual sections (Art. 11):</strong> Write design rationale, training data documentation, and your post-market monitoring plan before you ship. The 10-year clock starts at market placement.</li>
  <li><strong>Content watermarking (Art. 50(2)):</strong> Evaluate C2PA tools or your LLM provider’s native watermarking for AI-generated text delivered to candidates.</li>
  <li><strong><a href="https://digital-strategy.ec.europa.eu/en/faqs/ai-literacy-questions-answers">AI literacy obligations (Art. 4)</a>:</strong> Train your team on the AI system. Entirely outside the toolkit’s scope, and already in application before August 2026.</li>
  <li><strong>Data governance (Art. 10):</strong> Training data practices, bias testing, and dataset governance are not covered by AGT. You need a separate data governance process.</li>
</ol>

<hr />

<h2 id="further-reading">Further reading</h2>

<p><strong>The law</strong></p>
<ul>
  <li><a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ%3AL_202401689">EU AI Act — Official text (OJ L 2024/1689)</a> — the primary source</li>
  <li><a href="https://artificialintelligenceact.eu/article/6/">Article 6: Classification rules for high-risk AI systems</a> — annotated explainer</li>
  <li><a href="https://artificialintelligenceact.eu/annex/3/">Annex III: High-risk AI system categories</a> — annotated explainer</li>
</ul>

<p><strong>European Commission guidance</strong></p>
<ul>
  <li><a href="https://digital-strategy.ec.europa.eu/en/faqs/navigating-ai-act">Navigating the AI Act FAQ</a> — scope, high-risk classification, enforcement</li>
  <li><a href="https://ai-act-service-desk.ec.europa.eu/en/ai-act/timeline/timeline-implementation-eu-ai-act">Implementation timeline</a> — phased rollout through August 2027</li>
  <li><a href="https://digital-strategy.ec.europa.eu/en/faqs/ai-literacy-questions-answers">AI literacy Q&amp;A (Article 4)</a> — what the literacy obligation requires in practice</li>
  <li><a href="https://digital-strategy.ec.europa.eu/en/faqs/guidelines-and-code-practice-transparent-ai-systems">Guidelines on transparent AI systems (Article 50)</a> — Art. 50(1) disclosure guidance</li>
  <li><a href="https://digital-strategy.ec.europa.eu/en/policies/code-practice-ai-generated-content">Code of practice on marking AI-generated content</a> — Art. 50(2) machine-readable marking framework</li>
</ul>

<p><strong>Microsoft Agent Governance Toolkit</strong></p>
<ul>
  <li><a href="https://github.com/microsoft/agent-governance-toolkit">Repository</a></li>
  <li><a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/QUICKSTART.md">Quickstart guide</a></li>
  <li><a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/docs/ARCHITECTURE.md">Architecture overview</a></li>
  <li><a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/docs/THREAT_MODEL.md">Threat model</a></li>
</ul>

<hr />

<h2 id="whats-next">What’s next</h2>

<p>This is the first post in a series on EU AI Act compliance for AI agent developers using Microsoft’s Agent Governance Toolkit:</p>

<ul>
  <li><strong>Post 2:</strong> <a href="/coming-soon">Introducing the Agent Governance Toolkit: architecture and setup</a></li>
  <li><strong>Post 3:</strong> <a href="/coming-soon">Building your Annex IV dossier with <code class="language-plaintext highlighter-rouge">annex_iv.py</code></a></li>
  <li><strong>Post 4:</strong> <a href="/coming-soon">Article 50 in agentic pipelines: the multi-agent transparency chain problem</a></li>
  <li><strong>Post 5:</strong> <a href="/coming-soon">Contributing to Microsoft’s open-source governance toolkit</a></li>
</ul>

<p>The full series lives at <a href="https://eu-ai-act.ai-mvp.com">eu-ai-act.ai-mvp.com</a>.</p>

<hr />

<p><em>This post was written as a contribution to <a href="https://github.com/microsoft/agent-governance-toolkit/issues/849">microsoft/agent-governance-toolkit issue #849</a>. The toolkit is open source under MIT at <a href="https://github.com/microsoft/agent-governance-toolkit">github.com/microsoft/agent-governance-toolkit</a>. The example code references source files in the repository; verify import paths and package names against your installed version, as the toolkit is under active development.</em></p>]]></content><author><name>Carlos Hernandez</name></author><category term="compliance" /><category term="eu-ai-act" /><category term="eu-ai-act" /><category term="agent-governance" /><category term="microsoft" /><category term="compliance" /><category term="python" /><summary type="html"><![CDATA[A practical compliance checklist for AI agent developers facing the August 2, 2026 EU AI Act deadline, using Microsoft's Agent Governance Toolkit with real code examples.]]></summary></entry></feed>