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. 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 reloading the front end. The switch is a