<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Armando Gaona</title>
    <description>The latest articles on DEV Community by Armando Gaona (@armando_gaona_2a8c0e88bce).</description>
    <link>https://dev.to/armando_gaona_2a8c0e88bce</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3990353%2F4cbedf3b-22c9-4115-8696-a1fc9270a629.png</url>
      <title>DEV Community: Armando Gaona</title>
      <link>https://dev.to/armando_gaona_2a8c0e88bce</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/armando_gaona_2a8c0e88bce"/>
    <language>en</language>
    <item>
      <title>Your AI agent talks to one EU user on Aug 2. Can you prove it disclosed it was AI?</title>
      <dc:creator>Armando Gaona</dc:creator>
      <pubDate>Thu, 18 Jun 2026 07:50:08 +0000</pubDate>
      <link>https://dev.to/armando_gaona_2a8c0e88bce/your-ai-agent-talks-to-one-eu-user-on-aug-2-can-you-prove-it-disclosed-it-was-ai-1lg7</link>
      <guid>https://dev.to/armando_gaona_2a8c0e88bce/your-ai-agent-talks-to-one-eu-user-on-aug-2-can-you-prove-it-disclosed-it-was-ai-1lg7</guid>
      <description>&lt;p&gt;On August 2, 2026, Article 50 of the EU AI Act becomes enforceable. If you ship AI agents, this date matters to you — and probably more than anyone has told you. I keep seeing teams get one big thing wrong about it, so let me be direct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Article 50 introduces transparency obligations for anyone who builds or deploys AI systems. The core idea: a person has the right to know when they're talking to an AI, and when content was generated or manipulated by one. This isn't a best-practice guideline. It's law, with fines up to €15M or 3% of worldwide annual turnover, whichever is higher.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake almost everyone is making&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"This doesn't apply to me — my company isn't in the EU."&lt;/p&gt;

&lt;p&gt;Wrong. The EU AI Act has extraterritorial scope. It doesn't matter where your company is incorporated: if your AI system reaches users inside the EU, you're in scope. A fintech in Bogotá with one corporate client in Madrid. A dev shop in Austin building agents for a brand with European users. A SaaS in São Paulo whose app gets opened from Berlin. All on the clock.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The part that bites developers specifically&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most teams assume "compliance" means slapping a "you're chatting with an AI assistant" banner on the UI. That's the easy half. The hard half shows up later, when a client, an auditor, or a regulator asks:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Show me that this agent, in this specific interaction, actually disclosed and behaved the way you claim."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's where almost nobody has an answer. Because complying is one thing — being able to prove you complied is a completely different data problem. And it's an engineering problem, not a legal one. If your only "evidence" is scattered application logs with 14-day retention and no integrity guarantee, you have nothing to hand over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you can start instrumenting today (free)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An honest checklist you can act on this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Inventory.&lt;/strong&gt; List every point where an agent interacts with a person or generates content. Most teams undercount.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EU exposure map.&lt;/strong&gt; Does any of those touch an EU user, even indirectly? If unsure, assume yes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disclosure at first contact.&lt;/strong&gt; Verify the AI-interaction notice fires on the first turn, not buried in a footer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence trail.&lt;/strong&gt; The one everyone forgets. Can you reconstruct what the agent did and disclosed, after the fact, in a form you can show someone?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calendar.&lt;/strong&gt; Aug 2 is the baseline. Doing this in July is cheap. Doing it in August under pressure is not.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Point #4 is the one I got obsessed with. Here's the minimal pattern I landed on — wrap the agent, and every action becomes a structured, replayable event:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pythonfrom&lt;/span&gt; &lt;span class="n"&gt;centinela&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Centinela&lt;/span&gt;

&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Centinela&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;my-agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;handle_request&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;llm_call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-sonnet-4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1234&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;send_email&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                 &lt;span class="n"&gt;blocked&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;human_review&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;approved&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ai_disclosed&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No backend, no signup needed to try it — set CENTINELA_ENDPOINT=stdout and every event prints to your console so you can see exactly what you're capturing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;centinela
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why I'm writing this&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've been deep in agent observability and auditability for months, and I'm surprised how little this is being discussed right when it matters most — especially for teams outside the EU who wrongly think they're exempt.&lt;/p&gt;

&lt;p&gt;I'm building Centinela, an open-source SDK that records what your agents actually did — every call, every action, flagged and queryable — and turns it into auditable evidence. To be upfront: the SDK is free and works today (MIT, runs 100% on your machine). The hosted dashboards and the bilingual audit report are in early access — I'm building those in public. I'm not selling you anything here; the code is open and you can start instrumenting in two minutes if you want.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SDK (free, open-source): &lt;a href="https://github.com/centinela-ai/centinela-python" rel="noopener noreferrer"&gt;https://github.com/centinela-ai/centinela-python&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How it maps to Article 50 + where it's headed: &lt;a href="https://getcentinela.dev" rel="noopener noreferrer"&gt;https://getcentinela.dev&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But beyond any tool, the real message is this: &lt;strong&gt;the hard part is no longer building agents. It's being able to answer for them.&lt;/strong&gt; And that question arrives sooner than it looks.&lt;/p&gt;

&lt;p&gt;If you deploy agents and this hits close to home — how are you handling the evidence trail today? Genuinely want to learn what's working in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
