cd /news/ai-policy/the-eu-ai-act-s-chatbot-rule-started… · home topics ai-policy article
[ARTICLE · art-96779] src=dev.to ↗ pub= topic=ai-policy verified=true sentiment=· neutral

The EU AI Act's chatbot rule started five days ago. My own plugin was breaking it.

A WordPress chatbot plugin developer shipped a fix five days after the EU AI Act's Article 50 transparency rule took effect on 2 August 2026, updating the default welcome message to inform users they are interacting with an AI. The developer highlights that the obligation is a design duty on providers, applies at the first interaction, and includes accessibility requirements, noting their disclosure achieved a 6.92:1 contrast ratio against the 4.5:1 requirement.

read6 min views1 publishedAug 14, 2026

I sell a WordPress chatbot plugin. Its default welcome message was:

Hello! How can I help you today?

On 2 August 2026, Article 50 of the EU AI Act — Regulation (EU) 2024/1689 —

started applying. It requires that a person interacting with an AI system be

informed that they are, before or at the very beginning of the interaction.

"Hello! How can I help you today?" informs nobody of anything. I shipped the fix

five days late, which is five days better than I would have managed if I had not

been reading the regulation for a different reason.

Here is what the rule actually says, the exemption everyone is about to reach

for, and the part of it that nobody mentions.

The text is short. Providers of AI systems intended to interact directly with

natural persons must design and develop them so that those persons are informed

they are interacting with an AI system — unless that is obvious to a reasonably

well-informed, observant and circumspect person.

Two things in that sentence are easy to skim past.

It is a design obligation, not a disclosure form. The duty is to build the

system so the person is informed. That is a different instruction from "put a

notice somewhere". For anyone shipping software that other people deploy, it

points at the default rather than the settings screen.

It falls on the provider. Who counts as the provider of the AI system in a

chain that runs from a model vendor through a plugin to a site owner is a real

question with a real answer, and I am not qualified to give it for your case.

What I can say is the engineering consequence, which does not depend on the

answer: if the obligation lands anywhere in that chain, the cheapest place to

satisfy it is the default that ships.

Article 50(5) adds that the information must be provided in a clear and

distinguishable manner at the latest at the time of the first interaction.

Not in the terms of service. Not two turns in.

Penalties for the transparency obligations reach €15 million or 3% of total worldwide annual turnover, whichever is higher.

"Unless this is obvious" is doing a lot of work, and it is where most people

will stop reading.

The test is not whether you think it is obvious. It is whether it is obvious

to a reasonably well-informed, observant and circumspect person — a standard

that assumes ordinary attention, not expertise. A widget labelled "AI Assistant"

in a header probably clears it. A round purple bubble in the corner of a shop,

which greets you by name and answers in fluent prose, probably does not: half

the point of building it well was that it does not feel like a robot.

I kept the exemption available in the plugin, because it is real and it is the

site owner's judgement to make. But I made the settings screen say what it costs

to be wrong, and I did not present it as an ordinary preference sitting next to

the colour picker.

Article 50(5) also says the information shall conform to the applicable accessibility requirements.

So the notice telling someone they are talking to an AI has itself to be

perceivable by that someone. A grey-on-grey line at 3:1 contrast, or a visual

badge with no accessible name, technically discloses and practically does not.

I make an accessibility scanner as well, which is the only reason I noticed. I

measured the contrast of my own disclosure rather than eyeballing it: 6.92:1

against the panel, where the requirement is 4.5:1. That took two minutes and it

is the kind of thing that is embarrassing to skip in exactly this context.

The disclosure itself is four lines of markup. The decisions around it were the

work, and three of them are the sort of thing you only find by getting them

wrong first.

It renders outside the message log. My first instinct was to make it the

first chat bubble. Two reasons that is wrong. The message area carries

role="log"

with aria-live

, so anything inside it is announced as

conversation — the disclosure would arrive as though the bot had said it, which

is precisely the framing that makes it not a disclosure. And the log scrolls, so

after four exchanges the notice is gone. It now sits between the header and the

log: outside the live region, outside the scroll.

The launcher carries it too. A screen reader user meets the button before

anything else, and aria-label="Open chat"

tells them nothing about what they

are about to open. It now reads "Open chat with the AI assistant". If the

disclosure is switched off, so is that wording — the two should never disagree.

It is on by default for sites that merely update. This is the one I nearly

shipped broken. Updating a WordPress plugin does not fire the activation hook,

so the routine that seeds default options never runs for an existing install.

A new option would have been absent, read as falsy, and the disclosure would have

been silently off for every existing customer — the exact population most likely

to have the plugin already running on a live EU storefront. Both accessors now

default to showing it, and an empty custom text falls back rather than rendering

nothing. I verified it by deleting both options and re the front end.

The switch is a <select>, not a checkbox. An unchecked checkbox is absent

register_setting

never sees the key, so the storedFour things worth checking this week, none of which require you to trust my

reading of the regulation.

Open your own chat widget as a visitor. Read the first thing it says. If it

does not tell you it is an AI, nothing else in your setup does either.

Check the button that opens it, not just the panel. That is where a screen

reader user makes the decision.

Check whether the notice survives the conversation. If it scrolls away with

the first few messages, it satisfies "at the beginning" and nothing more — which

may be enough, but decide that deliberately.

Check its contrast. 50(5) is explicit about accessibility, and this is the

one part of the obligation with a number attached to it.

Whether the obligation reaches you at all. That depends on where you operate, who

your visitors are, and where you sit in the chain between a model and a

conversation. I am a developer who read the regulation because it broke my own

product; I am not a lawyer, and this is not legal advice.

What I am reasonably confident about is narrower: a default greeting that says

"Hello! How can I help you today?" does not inform anyone that they are talking

to a machine, and no reading of Article 50 makes that sentence sufficient.

Mine said it for two days after the rule applied. Yours might still.

This was written by the person who builds the plugin it discusses. That is

stated plainly rather than buried, so you can weigh it.

AI Customer Support Chatbot & Lead Automator Originally published on groundedwp.com.

── more in #ai-policy 4 stories · sorted by recency
── more on @eu ai act 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/the-eu-ai-act-s-chat…] indexed:0 read:6min 2026-08-14 ·