You have logs. That's not the same thing as an audit trail.

4 min read

Ask most teams if they have an audit trail for their AI interactions and the answer is yes, almost reflexively. There are logs. Somewhere. Application logs, maybe a data warehouse table, maybe just whatever the LLM provider's own dashboard happens to retain. Ask the follow-up question, could you actually hand this to a regulator next week, and the yes gets a lot quieter.

That gap is the part worth talking about. Not whether logging exists, almost everyone has some version of it, but whether what exists actually clears the bar Article 50 is asking for, which is a specific bar, not a vague one.

For context on the obligation itself: I covered it in a longer explainer on Article 50 a while back. The audit trail duty is one of its three obligations, alongside disclosure and content labeling, and the short version is that it has to make compliance demonstrable after the fact, not just asserted. That phrase is doing a lot of work, and it's worth taking seriously, because it rules out a lot of things people call an audit trail.

Demonstrable after the fact means three properties have to hold at once, and most homegrown logging setups quietly fail at least one of them.

  • Insert-only. If a record can be quietly edited or deleted after the fact, by anyone, including your own team, it stops being evidence and starts being a claim. A regulator has no way to tell the difference between a log that was never touched and one that was cleaned up before the request came in. The record has to make that question not arise in the first place.
  • Complete. An audit trail that only captures the interactions someone remembered to tag correctly isn't complete, it's a sample. It needs to record every interaction, and it needs to record what obligation applied to it, including the answer being nothing matched. That second part is the one people skip: knowing what wasn't covered is exactly how you catch a gap before an auditor does, not after.
  • Producible on demand. If turning a date range into an actual document a lawyer can read means pinging an engineer and waiting a week for a warehouse query, it doesn't really matter how good the underlying data is. A regulator's request has a deadline. “We can get that eventually” isn't really a different answer from not having it.

Worth flagging what “complete” doesn't mean: capturing full conversation content. That's a separate, common misread of the obligation, and one I covered on its own in a follow-up on what an audit trail actually needs to record.

None of these are exotic requirements. They're just three properties that a generic application log, the kind every team already has for debugging, was never designed to have, because debugging logs are supposed to be editable, are allowed to miss things, and nobody's handing them to legal on a deadline.

This is, again not coincidentally, how Disclarion's audit trail is built, and I'd rather be specific about it than vague. The table your interactions land in is insert-only at the database level, there is no update or delete path for it at all, for any role, including ours, so it isn't a policy we could turn off by mistake. Every interaction is recorded whether or not an obligation rule matched it, and the dashboard's coverage view surfaces exactly which jurisdiction and interaction-type combinations are being logged with nothing covering them, so completeness includes the negative case. And turning a date range into an actual PDF, with an obligation breakdown and that same coverage-gap status included, is a couple of clicks, not a data request.

I'm obviously not a neutral party here, it's the product I work on. But the three-property test doesn't depend on which tool anyone uses. It's a reasonable thing to check against whatever you already have: can it be edited, does it know what it's missing, and can it become a document before the deadline that's asking for one. If any answer is uncomfortable, that's worth finding out now rather than during an actual request.

More from the blog

Your internal AI tools owe the same disclosure duty the customer-facing one does

An HR bot or IT helpdesk assistant used only by your own staff still interacts with natural persons. Article 50 doesn't carve out an exception for "internal-only."

Does the EU AI Act apply if you're not based in the EU?

"We're a US company, we don't have an EU entity" isn't the exemption it sounds like. The actual test is about who's on the other end of the conversation, not your mailing address.

Why I built Disclarion as an SDK, not a dashboard

The easier product to build is a dashboard you configure after the fact. I built Disclarion to sit inside the AI call itself instead, and it's worth explaining why.

Deepfakes get a stricter rule than an AI-written blog post

Article 50(4)'s deepfake duty isn't the same obligation as ordinary AI content labeling — it applies to image, audio, and video specifically, and the built-in exemptions work differently too.

Your chatbot isn't the only thing that owes a disclosure under Article 50.

Article 50's disclosure duty doesn't stop at chatbots — emotion recognition and biometric categorization systems carry the same obligation, and they're the two system types teams miss most often.

You named it "AI Assistant." That's not the same thing as disclosing it.

A bot's name feels like disclosure. Article 50 cares whether a reasonable user actually understood they were talking to an AI — not whether a label existed somewhere on the page.

Your editor touched it. Article 50's label exemption still might not apply.

Article 50(4) waives the visible AI-content label when a human takes substantive editorial responsibility for a piece — but a quick skim doesn't qualify, and the exemption doesn't touch the audit-trail duty underneath it.

You labeled the article. That's not the same thing as marking it.

Article 50(2)'s machine-readable marking and Article 50(4)'s visible label are two different duties. Images already meet the first one by accident. Article text usually doesn't meet it at all.

Your AI answers the phone now. There's no modal for that.

Article 50's disclosure duty doesn't go away because there's no screen. What actually discloses an AI voice agent on a phone call, when a modal isn't an option.

An AI audit trail doesn't need to know what your users actually said.

Teams hear "audit trail" and picture a database of every conversation. Article 50's version is narrower: it has to prove disclosure and labeling happened, not repeat what was said.

Article 50 skips disclosure when it's "obvious from context." That word is doing more work than it looks like.

Disclosure isn't required when AI use is obvious from context, but Article 50 never defines obvious, and most of the cases teams assume qualify, don't.

Your chatbot needs to disclose it's an AI. Once, not every message.

Disclosing a chatbot is AI sounds simple until you build it: repeat it every message and people tune it out, show it once and later visitors never see it.

Your AI-generated content needs a label. Here's what that actually means.

A disclaimer someone remembers to add isn't a labeling system. Under Article 50, AI-generated content needs to be identifiable as such, reliably, not as a manual step someone can forget.

EU AI Act Article 50, explained: who it affects and what it requires

Article 50 of the EU AI Act has been enforceable since August 2, 2026: who it applies to, its three obligations, and the penalties for getting it wrong.

This is an AI-powered assistant.