EU AI Act
Human oversight, as a thing you can actually ship.
The AI Act asks that a person can oversee a high-risk system and that what happened is recorded. Most of that is a product question about reaching the right person and keeping the evidence. This page separates the parts you can build from the parts you need counsel for.
What does the EU AI Act require for human oversight?
Article 14 of Regulation (EU) 2024/1689 requires high-risk AI systems to be designed so natural persons can effectively oversee them, including the ability to intervene or interrupt. Article 12 requires automatic logging of events over the system's lifetime. Pushary covers the operational half: it reaches a named person, blocks the agent until they decide, fails closed if they do not, and writes each decision to a durable ledger.
Read the regulation itself: Regulation (EU) 2024/1689 on EUR-Lex.
Article by article
What the text asks for, and which part is buildable
Article 14
Human oversight
High-risk systems must be designed and developed so that natural persons can effectively oversee them during use, including understanding the system's capacity and limits, staying alert to automation bias, correctly interpreting output, and being able to decide not to use the output or to intervene and interrupt.
Interrupting is a call your agent makes and waits on. Pushary blocks the run, puts one narrowed question in front of a named person on the device they carry, and returns their choice. Overriding output is a first-class answer rather than an exception path.
Article 12
Record-keeping
High-risk systems must technically allow for the automatic recording of events over the lifetime of the system, to a degree appropriate to the intended purpose.
Each decision is written to a durable ledger holding the question as the person saw it, the option they chose, their identity, and the timestamp. It is queryable and exportable, and resolved decisions post a signed webhook into your own evidence store.
Article 26
Deployer obligations
Deployers of high-risk systems must assign human oversight to natural persons who have the necessary competence, training, and authority, and must ensure they have the support to carry it out.
Oversight is addressed to a specific person by the id you already hold for them, not to a shared channel. Two approvers on the same action are two independent calls with two separately attributable ledger rows.
Annex III
High-risk use cases
The annex lists the use cases treated as high-risk, including areas such as employment, essential private and public services, creditworthiness, and risk assessment and pricing in life and health insurance.
Whether your product is in scope is a legal question about your use case, not a technical one, and it is the question to settle before anything on this page is relevant to you.
What this page is not
- This is not legal advice, and Pushary does not make anyone compliant. Human oversight is a property of how your system is designed and operated. A tool can supply part of the mechanism and cannot supply the obligation.
- Dates in the AI Act timetable have been the subject of active political discussion, including proposals affecting when parts of the high-risk regime apply. Check the current position on EUR-Lex or with your counsel rather than relying on a date on a vendor page. We deliberately do not print a countdown.
- Pushary is GDPR-aligned and self-assessed. It holds no ISO certification, no SOC 2 report, and no AI Act conformity assessment, and we will not claim any of those.
- Whether your product falls inside Annex III at all is the first question, and it is one for your own counsel. Nothing here should be read as an opinion on your classification.
The oversight step in code
Override is an answer rather than an escape hatch, and a person who does not respond produces a denial rather than a default action.
import { createPusharyServer } from "@pushary/server"
const px = createPusharyServer({ apiKey: process.env.PUSHARY_API_KEY! })
// The oversight step: a named natural person, not a role or a queue.
const decision = await px.decisions.ask({
externalId: reviewer.id,
type: "select",
question: `Case ${caseRef}: system proposes ${proposal}. ${topReason}`,
options: ["Accept", "Override", "Refer upward"],
})
// Nothing proceeds unless a person chose it. A timeout returns denied.
if (decision.answer === "Override") return recordOverride(caseRef, decision)
if (!decision.approved) return holdForReview(caseRef)
// The ledger row is the event record: who saw what, what they chose, when.
return applyProposal(caseRef, proposal)Questions, answered
Build the oversight step, keep the record.
One call reaches a named person and waits for them. Nothing proceeds on silence, and every decision is written down. What that means for your obligations is a conversation with your counsel, and this is the part you can ship.