2026-04-25·15 min read·sota.io team

EU AI Act Art.86: Right to Explanation of Individual Decision-Making — What 'Meaningful' Requires for Developers (2026)

EU AI Act Article 86 is the Regulation's precision instrument for individual algorithmic transparency. Where Art.85 grants the broader right of recourse — encompassing the ability to seek human review, challenge a decision, and file a complaint with the national competent authority — Art.86 narrows the focus to the explanation itself: what a person is entitled to know, how a deployer must communicate it, and what standards define a legally sufficient explanation.

The distinction matters operationally. Art.85 recourse requests trigger a compliance workflow: intake, acknowledgement, human review escalation, formal response, and potentially NCA involvement. Art.86 explanation requests are simpler in procedure but more demanding in content: they require deployers to translate opaque AI outputs into accessible, accurate accounts of what the system did and why it mattered for the specific decision.

For deployers of high-risk AI systems listed in Annex III, Art.86 compliance is not achievable without explanation infrastructure built into the AI system's deployment architecture. An AI system that cannot generate Art.86-compliant explanations at decision time cannot be compliantly deployed.

Art.86 became applicable under the EU AI Act's phased rollout, with full application on 2 August 2026. Deployers must have compliant explanation mechanisms operational before this date.


Art.86 in the Final Provisions Architecture

Art.86 sits alongside Art.85 in the EU AI Act's closing individual-rights chapter — the two articles forming a paired framework for persons affected by high-risk AI decisions. While Art.85 addresses the procedural dimension (what remedies a person can pursue), Art.86 addresses the informational dimension (what a person is entitled to know).

The structural relationship across the EU AI Act's individual-rights provisions maps as follows:

ArticleObligation typeWho bears itWhen it applies
Art.13Technical transparencyProviderBefore deployment — AI system documentation
Art.26(1)Oversight implementationDeployerAt deployment — human oversight capability
Art.85Recourse rightsDeployerPost-decision — person can challenge and seek remedy
Art.86Explanation rightsDeployerOn request — person entitled to meaningful account of AI role

Art.86 is the downstream realisation of Art.13: the technical transparency that providers must build into the AI system under Art.13 becomes the source material that deployers draw on to provide the person-level explanations required under Art.86. A provider who fails to implement Art.13-compliant transparency documentation makes Art.86 compliance by the deployer structurally harder.


Art.86(1): The Core Right to Explanation

Art.86(1) establishes the primary entitlement: any natural person subject to an individual decision taken by a deployer, where that decision is significantly based on the output of a high-risk AI system listed in Annex III (with the exception of systems listed under point 2 of Annex III), and where the decision produces legal effects or similarly significant effects on that person, has the right to obtain from the deployer a clear and meaningful explanation comprising:

(a) The role of the AI system in the decision-making procedure — specifically, how the AI system was used, what function it performed (scoring, classification, recommendation, or prediction), and whether a human reviewer was involved and to what degree.

(b) The main elements of the decision taken — the outcome and the principal factors that drove it, expressed in terms accessible to the person receiving the explanation, not in technical model documentation language.

The "significantly based on" test

Art.86's scope matches Art.85's: it applies where the AI system output significantly influences the decision, not solely where the process is fully automated. This deliberately captures the practically dominant case: AI systems whose outputs are reviewed but typically followed by human decision-makers.

A credit scoring system whose outputs a loan officer reviews and rarely overrides falls within Art.86. An employment screening algorithm whose ranked shortlists a recruiter follows falls within Art.86. The substance of the AI's influence — not the nominal presence of a human step — determines applicability.

The scope mirrors GDPR Art.22 language but extends beyond it. "Similarly significant effects" include any decision that:

The threshold is substantive impact, not formal legal effect. An AI system that allocates a risk score used in a benefits eligibility review produces "similarly significant effects" even if no formal legal right attaches to the outcome.


What "Meaningful" Requires in Practice

Art.86 requires that explanations be clear and meaningful — a standard that goes beyond generic disclosure and requires explanation content to be specific to the person's actual decision.

Clarity requirements

A clear Art.86 explanation must:

A template statement — "an AI system was used in evaluating your application" — does not satisfy the clarity requirement. The explanation must address this decision about this person.

Meaningfulness requirements

A meaningful Art.86 explanation must:

The European Data Protection Board's guidance on GDPR Art.22 explanations provides useful reference for what "meaningful" requires: explanations must be specific enough to be actionable, not merely formal acknowledgements of AI involvement.

The trade-off with technical accuracy

Meaningful explanations for non-technical recipients require translation of technical model outputs (feature importances, attention weights, confidence scores) into accessible language. Deployers should invest in explanation quality testing: before go-live, have non-technical persons review draft explanations and assess whether they genuinely understand the AI's role in a hypothetical decision.


Art.86(2): Exceptions and Limitations

Art.86(2) permits restrictions on the right to explanation where:

(a) Trade secrets or intellectual property rights would be disclosed — the explanation obligation does not require revealing proprietary model architecture, training data details, or feature-engineering methods that constitute intellectual property. Deployers may provide explanations that describe the AI system's role at the output level without disclosing model internals.

(b) National security, defence, or public security contexts apply — decisions in the context of security services, armed forces, criminal proceedings, or active criminal investigations are excluded from Art.86's scope.

(c) The decisions are made in the context of law enforcement activities — AI-assisted decisions in law enforcement fall outside Art.86's individual explanation right, reflecting the same carve-out applied in Art.85.

Trade secrets and the IP exception in practice

The trade secrets exception does not permit deployers to withhold explanations entirely by invoking intellectual property interests. It permits them to limit explanation depth: describing what the AI did (scored the application) and what factors mattered (income stability, debt-to-income ratio, repayment history) without revealing how the model was trained, what specific weights attach to each factor, or what the exact algorithmic process was.

Deployers who claim the trade secrets exception must be able to demonstrate, if challenged by an NCA, that the withheld information genuinely constitutes intellectual property and that the explanation provided remains meaningful despite the limitation.


Art.86 vs Art.85: Boundaries and Synergies

Art.86 and Art.85 are complementary provisions that address different aspects of the same underlying situation — a natural person affected by an AI-assisted decision. Understanding their boundary is essential for deployers designing compliance infrastructure:

DimensionArt.85 (Right of Recourse)Art.86 (Right to Explanation)
What it grantsRight to explanation AND right to seek remedy/challengeRight to explanation specifically
What it triggersHuman review escalation, NCA complaint pathwayExplanation delivery
Deployer obligationMaintain recourse infrastructure, SLA for full recourse responseMaintain explanation infrastructure, SLA for explanation delivery
Trade secretsDoes not eliminate explanation; limits scopeSame limitation applies
EnforcementArt.99(3): EUR 15M or 3% GTO for deployer obligation violationsArt.99(3): Same penalty regime
NCA escalationExplicit NCA complaint pathway referencedImplicit — NCA may investigate if explanation is inadequate

Can a deployer satisfy both with one process?

Yes. An Art.85/Art.86 unified compliance process is operationally efficient: a single intake mechanism that accepts both explanation requests (Art.86) and recourse requests (Art.85), with routing logic that applies the additional human review and NCA-escalation steps for Art.85 requests. The explanation pipeline built for Art.86 becomes the foundation for the Art.85 explanation component.

The key distinction is that Art.85 recourse requests may require the deployer to actually act — revisit the decision, engage a human reviewer — while Art.86 explanation requests may be satisfied by providing information without necessarily altering the decision.


Art.86 × GDPR Art.22: The Dual-Framework Obligation

Where an AI-assisted decision is solely automated (no meaningful human involvement), both GDPR Art.22 and EU AI Act Art.86 apply simultaneously. Deployers must satisfy the more demanding of the two standards where they diverge.

DimensionGDPR Art.22EU AI Act Art.86
ScopeSolely automated decisions with significant effectAI-assisted decisions significantly based on AI output with legal/significant effects
Right typeRight not to be subject to solely automated decision; right to human review; right to explanationRight to meaningful explanation of AI role and main decision elements
Explanation content"Meaningful information about the logic involved""Clear and meaningful" explanation of AI role + main elements
Consent/contract exceptionDecisions permitted if necessary for contract or with consentNo equivalent exception — applies irrespective of contractual basis
EnforcementGDPR supervisory authorities (DPAs)National competent authorities (NCAs under EU AI Act)

Multi-authority exposure

A deployer who fails to provide an adequate explanation faces potential investigation by both the DPA (GDPR Art.22 violation) and the NCA (EU AI Act Art.86 violation). Where these authorities are different bodies — which is common across Member States — the deployer must coordinate responses with two distinct supervisory authorities, each with independent enforcement powers.

Deployers should implement Art.86 explanation systems that satisfy both frameworks simultaneously, treating the more demanding standard as the baseline for all cases where both apply.


CLOUD Act: Explanation Records on US Infrastructure

Art.86 explanation requests, deployer responses, and the decision logs that support them constitute compliance records with direct relevance to NCA investigations. Where these records are stored on US-incorporated cloud infrastructure, the CLOUD Act (18 U.S.C. § 2713) creates a potential compelled-disclosure pathway that bypasses EU data protection law:

ScenarioArt.86 record locationCLOUD Act risk
EU-sovereign infrastructureEU jurisdiction onlyNo CLOUD Act compelled disclosure
US-incorporated cloud, EU-regionUS law may compel disclosure despite EU hostingCLOUD Act applicable; EU Art.48 GDPR limits voluntary cooperation
Hybrid (decision log EU, model on US infra)Split jurisdictionPartial exposure — US authorities may access model-related records
EU-incorporated cloud subsidiaryEU jurisdiction governsCLOUD Act generally inapplicable

For Annex III deployers, the prudent approach is to store Art.86-relevant records — decision logs, explanation outputs, AI system output records, and human review notes — on EU-hosted infrastructure. This eliminates CLOUD Act compelled-disclosure risk in the event that explanation requests trigger NCA investigation.


Python Art86ExplanationManager

The following implementation provides a structured Art.86 compliance workflow:

from dataclasses import dataclass, field
from datetime import datetime, timedelta
from enum import Enum
from typing import Optional
import uuid


class ExplanationStatus(str, Enum):
    PENDING = "pending"
    IN_PROGRESS = "in_progress"
    DELIVERED = "delivered"
    ESCALATED_NCA = "escalated_nca"
    EXCEPTION_APPLIED = "exception_applied"


class ExceptionType(str, Enum):
    TRADE_SECRET = "trade_secret"
    NATIONAL_SECURITY = "national_security"
    LAW_ENFORCEMENT = "law_enforcement"
    PUBLIC_SECURITY = "public_security"


@dataclass
class DecisionRecord:
    decision_id: str
    deployer_id: str
    annex_iii_category: str
    ai_system_output: dict  # {factor: value} — the AI's output parameters
    main_factors: list[str]  # Top factors that drove the output
    human_reviewer_involved: bool
    human_reviewer_override: bool
    decision_outcome: str  # "approved", "rejected", "referred", etc.
    decision_timestamp: datetime
    eu_infrastructure: bool  # True if records stored on EU-hosted infra


@dataclass
class Art86Request:
    request_id: str = field(default_factory=lambda: str(uuid.uuid4()))
    decision_id: str = ""
    person_contact: str = ""
    request_timestamp: datetime = field(default_factory=datetime.utcnow)
    sla_deadline: datetime = field(init=False)
    status: ExplanationStatus = ExplanationStatus.PENDING
    exception_applied: Optional[ExceptionType] = None
    explanation_delivered: Optional[str] = None
    delivery_timestamp: Optional[datetime] = None

    def __post_init__(self):
        self.sla_deadline = self.request_timestamp + timedelta(days=30)

    @property
    def sla_met(self) -> bool:
        if self.delivery_timestamp is None:
            return datetime.utcnow() <= self.sla_deadline
        return self.delivery_timestamp <= self.sla_deadline

    @property
    def days_remaining(self) -> int:
        delta = self.sla_deadline - datetime.utcnow()
        return max(0, delta.days)


class Art86ExplanationManager:
    """
    Manages Art.86 right-to-explanation compliance for a deployer.
    Handles intake, exception assessment, explanation generation, and SLA tracking.
    """

    def __init__(self, deployer_id: str, ai_system_id: str, annex_iii_category: str):
        self.deployer_id = deployer_id
        self.ai_system_id = ai_system_id
        self.annex_iii_category = annex_iii_category
        self._decisions: dict[str, DecisionRecord] = {}
        self._requests: dict[str, Art86Request] = {}

    def register_decision(self, record: DecisionRecord) -> str:
        self._decisions[record.decision_id] = record
        return record.decision_id

    def receive_art86_request(
        self, decision_id: str, person_contact: str
    ) -> Art86Request:
        request = Art86Request(
            decision_id=decision_id,
            person_contact=person_contact,
        )
        self._requests[request.request_id] = request
        return request

    def assess_exception(self, request_id: str) -> Optional[ExceptionType]:
        """
        Assess whether an exception under Art.86(2) applies.
        Returns the exception type if applicable, None otherwise.
        """
        request = self._requests[request_id]
        decision = self._decisions.get(request.decision_id)
        if decision is None:
            return None

        # Law enforcement decisions are excluded from Art.86 scope
        if self.annex_iii_category in ("law_enforcement", "border_control_migration"):
            request.exception_applied = ExceptionType.LAW_ENFORCEMENT
            request.status = ExplanationStatus.EXCEPTION_APPLIED
            return ExceptionType.LAW_ENFORCEMENT

        return None

    def generate_explanation(self, request_id: str) -> str:
        """
        Generate an Art.86-compliant meaningful explanation.
        Applies trade-secret limitation if main_factors contain proprietary signals.
        """
        request = self._requests[request_id]
        decision = self._decisions.get(request.decision_id)

        if decision is None:
            return "Error: Decision record not found for this request."

        exception = self.assess_exception(request_id)
        if exception == ExceptionType.LAW_ENFORCEMENT:
            return (
                f"The right to explanation under EU AI Act Art.86 does not apply to "
                f"this decision, which falls within the {self.annex_iii_category} "
                f"category excluded under Art.86(2)."
            )

        # Build explanation components
        role_description = (
            f"The AI system ({self.ai_system_id}, deployed under EU AI Act Annex III "
            f"category: {self.annex_iii_category}) was used to generate a scored output "
            f"that formed a significant basis for this decision. "
        )

        if decision.human_reviewer_involved:
            if decision.human_reviewer_override:
                role_description += (
                    "A qualified human reviewer assessed the AI system's output and "
                    "modified the recommendation before the final decision was taken."
                )
            else:
                role_description += (
                    "A qualified human reviewer assessed the AI system's output "
                    "and confirmed the recommendation before the final decision was taken."
                )
        else:
            role_description += (
                "The decision was taken without an additional human review step."
            )

        # Main factors — trade-secret limitation applied at output level only
        factors_text = ", ".join(decision.main_factors[:5])  # Cap at 5 main factors
        factors_description = (
            f"The primary factors assessed by the AI system that influenced this "
            f"decision were: {factors_text}. These factors are derived from the "
            f"information provided and publicly available data sources. Specific model "
            f"weights and training parameters are not disclosed as they constitute "
            f"protected intellectual property under Art.86(2)(a)."
        )

        outcome_description = (
            f"The outcome of this decision was: {decision.decision_outcome}. "
            f"The AI system's assessment contributed to this outcome through the "
            f"factors described above."
        )

        rights_notice = (
            "You have the right under EU AI Act Art.85 to request human review "
            "of this decision and to file a complaint with the national competent "
            "authority if you believe the decision was made in violation of the "
            "EU AI Act."
        )

        explanation = "\n\n".join([
            "## EU AI Act Art.86 Explanation",
            f"**Role of the AI system:** {role_description}",
            f"**Main factors considered:** {factors_description}",
            f"**Decision outcome:** {outcome_description}",
            f"**Your rights:** {rights_notice}",
        ])

        # Record delivery
        request.explanation_delivered = explanation
        request.delivery_timestamp = datetime.utcnow()
        request.status = ExplanationStatus.DELIVERED

        return explanation

    def compliance_summary(self) -> dict:
        total = len(self._requests)
        delivered = sum(
            1 for r in self._requests.values()
            if r.status == ExplanationStatus.DELIVERED
        )
        sla_met = sum(
            1 for r in self._requests.values()
            if r.sla_met
        )
        exceptions = sum(
            1 for r in self._requests.values()
            if r.status == ExplanationStatus.EXCEPTION_APPLIED
        )
        return {
            "deployer_id": self.deployer_id,
            "ai_system_id": self.ai_system_id,
            "total_requests": total,
            "explanations_delivered": delivered,
            "exceptions_applied": exceptions,
            "sla_compliance_rate": (sla_met / total * 100) if total > 0 else 100.0,
            "pending": total - delivered - exceptions,
        }


def build_sample_manager() -> Art86ExplanationManager:
    manager = Art86ExplanationManager(
        deployer_id="BANK-EU-001",
        ai_system_id="credit-score-v3",
        annex_iii_category="credit_scoring",
    )

    # Register a credit decision
    decision = DecisionRecord(
        decision_id="CREDIT-2026-08-0099",
        deployer_id="BANK-EU-001",
        annex_iii_category="credit_scoring",
        ai_system_output={"risk_score": 0.72, "confidence": 0.85},
        main_factors=[
            "debt-to-income ratio",
            "recent missed payments",
            "length of credit history",
            "existing credit utilisation",
            "income stability indicator",
        ],
        human_reviewer_involved=True,
        human_reviewer_override=False,
        decision_outcome="loan application declined",
        decision_timestamp=datetime.utcnow(),
        eu_infrastructure=True,
    )
    manager.register_decision(decision)

    # Receive an Art.86 explanation request
    request = manager.receive_art86_request(
        decision_id="CREDIT-2026-08-0099",
        person_contact="applicant@example.com",
    )

    explanation = manager.generate_explanation(request.request_id)
    print(f"Art.86 explanation generated:\n{explanation}")
    print(f"\nCompliance summary: {manager.compliance_summary()}")
    return manager


if __name__ == "__main__":
    build_sample_manager()

Art.86 in the Enforcement Arc

From an NCA enforcement perspective, Art.86 explanation requests are an early signal of potential systemic non-compliance. A pattern of inadequate explanations — explanations that are generic, that fail to address the specific decision, or that cannot be generated because the deployer lacks the necessary decision records — suggests underlying failures in:

The penalty exposure for Art.86 failures connects to Art.99(3): violations of deployer obligations, of which Art.86 compliance is a component, expose deployers to fines of up to EUR 15 million or 3% of global annual turnover, whichever is higher. For systemic explanation failures across large deployed populations, NCA investigation may result in remediation orders affecting the entire deployment.

Art.86 request received
    ↓
Exception assessment (Art.86(2))
    ├─ Exception applies → Notify person; document basis
    └─ No exception → Generate meaningful explanation within 30-day SLA
              ↓
         Explanation delivered?
              ├─ Yes, SLA met → Art.86 satisfied
              └─ No / inadequate → Person escalates to NCA
                        ↓
                   NCA investigation
                        ↓
                   Art.99(3) penalty exposure (EUR 15M / 3% GTO)

Series: EU AI Act Final Provisions (Art.83–87)

ArticleTopicStatus
Art.83Substantial Modification — Conformity Re-AssessmentPublished
Art.84Commission Evaluation — 3-Year Review CyclePublished
Art.85Right of Recourse — Explanation and Remedy for Affected PersonsPublished
Art.86Right to Explanation of Individual Decision-MakingThis post
Art.87Reporting of Serious IncidentsUpcoming

10-Item Developer Checklist: Art.86 Compliance

  1. Annex III scope audit — Confirm which of your high-risk AI systems produce outputs that significantly influence individual decisions with legal or similarly significant effects. Systems under Annex III point 2 are excluded from Art.86.

  2. Decision record architecture — Implement decision logging that captures, for each individual decision: the AI system's main output factors, the confidence level or score, whether human review occurred, and the final decision outcome. Records must be available to support Art.86 explanations on request.

  3. Explanation template design — Draft Art.86 explanation templates that address the three required elements: AI system role, main factors, and decision outcome. Have non-technical persons review drafts to confirm they are clear and meaningful.

  4. Trade-secret boundary mapping — Identify which aspects of your AI system constitute protected intellectual property and define the explanation depth limit accordingly. Document this boundary so it is applied consistently and can be justified to an NCA.

  5. Exception assessment protocol — Establish a documented process for assessing whether an Art.86(2) exception applies to a given request. Do not apply exceptions as a default; each exception application must be individually justified.

  6. 30-day SLA infrastructure — Build an explanation intake mechanism (dedicated form, email, or API endpoint) with an SLA tracking system. Default to 30 days; verify whether applicable Member State procedural law or GDPR Art.12(3) requires a shorter response period.

  7. Art.86 × GDPR Art.22 gap analysis — Map each Art.86-covered decision against GDPR Art.22. Where both apply (solely automated decisions), confirm your explanation satisfies the more demanding of the two standards.

  8. Rights notice in decision communications — Add a standardised Art.86 rights notice to all decision communications: state that the person may request an explanation and provide the designated contact point.

  9. EU infrastructure for explanation records — Store decision logs, explanation outputs, and human review records on EU-hosted infrastructure to eliminate CLOUD Act compelled-disclosure risk if NCA investigation follows an Art.86 escalation.

  10. Penalty exposure review — Assess your Art.86 exposure under Art.99(3): EUR 15M or 3% of global annual turnover. For large-scale deployments, the per-request failure rate multiplied by the affected population can make systemic non-compliance a material financial risk even before any NCA investigation is opened.


See Also