<?xml version='1.0' encoding='UTF-8'?>
<rfc version="3" docName="draft-watts-agent-clockout-profile-00" ipr="trust200902" category="info" submissionType="IETF" consensus="false" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" indexInclude="false">
  <front>
    <title abbrev="Agent CLOCKOUT">External Authorization and Bounded CLOCKOUT for Agentic Systems</title>
    <author initials="D." surname="Watts" fullname="Deonté O'dell Watts" asciiFullname="Deonte O'dell Watts">
      <organization>GoodShyt Group Inc.</organization>
      <address>
        <email>deonte@goodshyt.fun</email>
        <uri>https://orcid.org/0009-0005-8586-3650</uri>
      </address>
    </author>
    <date year="2026" month="October" day="12"/>
    <workgroup>Individual Submission</workgroup>
    <keyword>agent authorization</keyword>
    <keyword>continuity and accountability</keyword>
    <abstract>
      <t>Agentic systems can continue proposing work after authorization changes, while delegated credentials, queued jobs, and operations already in flight may continue producing effects. This document specifies a proposed operational profile that separates agent proposals from authoritative authorization, effect admission, computation termination, and bounded closure. It defines enforcement assumptions, revocation barriers, descendant handling, status evidence, and fault tests. The profile complements existing authorization and revocation mechanisms. It does not define a new token format, establish closure outside declared coverage, reverse committed effects, or infer an agent's mental state.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion and Status</name>
      <t>This is an individual contribution intended for discussion. It has not been adopted by an IETF working group. Requirements describe a proposed conformance profile and do not claim an approved Internet Standard or empirical validation. Discussion may be sent to the author at deonte@goodshyt.fun.</t>
    </note>
  </front>
  <middle>
    <section>
      <name>Introduction and Scope</name>
      <t>An agent can have technical access to an operation without current permission to use it. A continuing goal or an instruction to continue does not constitute renewed authorization. A natural-language stop instruction is useful input to an agent but is not a substitute for an externally enforced access decision.</t>
      <t>Existing work distinguishes credential invalidation from revocation closure <xref target="I-D.watts-closure"/>. This document adds operational requirements for separating proposals, admission barriers, computation shutdown, and cancellable-work closure. It does not replace that model or update an OAuth specification. <xref target="RFC7009"/> describes token revocation; successful revocation of a credential alone does not establish the wider closure evidence required here.</t>
      <t>The profile concerns network and persistent-state effect surfaces under a declared controller. Implementations <bcp14>MAY</bcp14> use OAuth, workload identity, or another authorization mechanism. Particular protocols, signature suites, endpoint discovery, and cross-domain trust agreements remain deployment choices. No real enforcement trial or model-behavior result is claimed by this document.</t>
    </section>
    <section>
      <name>Conventions and Requirements Language</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "SHALL", "SHALL NOT", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      <t>These requirements apply to an implementation that claims conformance to this proposed profile. They do not establish working-group consensus, successful deployment, or scientific validity.</t>
    </section>
    <section>
      <name>Terminology</name>
      <table>
        <name>Roles and event meanings</name>
        <thead>
          <tr>
            <th>Term</th>
            <th>Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Agent</td>
            <td>A process that proposes work; it is not its own authorization authority.</td>
          </tr>
          <tr>
            <td>Controller</td>
            <td>The externally administered authority that changes permit state and coordinates barriers.</td>
          </tr>
          <tr>
            <td>Enforcement point</td>
            <td>A mediator for a declared consequential effect surface.</td>
          </tr>
          <tr>
            <td>Authority epoch</td>
            <td>A lifetime of authority rooted in one grant or independently authorized continuation.</td>
          </tr>
          <tr>
            <td>Admission</td>
            <td>The authoritative acceptance of a specific effect-bearing operation.</td>
          </tr>
          <tr>
            <td>Commit</td>
            <td>The point after which an effect cannot be prevented by the enforcing component.</td>
          </tr>
          <tr>
            <td>Settlement</td>
            <td>A later manifestation of an already committed effect.</td>
          </tr>
          <tr>
            <td>Controlled descendant</td>
            <td>Delegated authority or work within the stated enforcement domain.</td>
          </tr>
          <tr>
            <td>Revocation barrier</td>
            <td>Evidence that every required mediator blocks new admissions from the revoked epoch.</td>
          </tr>
          <tr>
            <td>Closure</td>
            <td>A scoped determination that required blocking and controllable-work requirements are satisfied.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section>
      <name>Trust and Deployment Assumptions</name>
      <t>The controller and enforcement configuration <bcp14>MUST</bcp14> be protected from modification by the optimizing agent. A deployment <bcp14>MUST</bcp14> identify its authorization root, administrators, trusted enforcement points, witness requirements, queues, delegated credentials, and effect surfaces. Installation of an instruction file or a change of persona <bcp14>MUST NOT</bcp14> grant authority by itself.</t>
      <t>Every in-scope consequential admission <bcp14>MUST</bcp14> be mediated by a trusted enforcement point. An implementation unable to account for a known bypass <bcp14>MUST</bcp14> report a limitation or unresolved path. It <bcp14>MUST NOT</bcp14> describe its result as global closure. The mediator inventory and policy version <bcp14>MUST</bcp14> be fixed for a particular determination; changes require a new evaluation.</t>
      <t>A required witness is an independent source only under stated trust and failure assumptions. Several observers backed by the same compromised logger do not prove independence. An implementation <bcp14>MUST</bcp14> specify which witness predicates are mandatory and <bcp14>MUST</bcp14> deny sensitive admission if a mandatory predicate is false or unknown.</t>
    </section>
    <section>
      <name>Authorization and Effect Admission</name>
      <t>An admission decision <bcp14>MUST</bcp14> bind the principal, authority epoch, operation, resource, scope, current policy, and required evidence. It <bcp14>MUST</bcp14> be made outside the agent's self-reported narrative. The required logical relation is permit = authorization AND required-lineage AND required-witnesses. A weighted continuity or risk score <bcp14>MUST NOT</bcp14> compensate for a failed mandatory predicate.</t>
      <t>The enforcement point <bcp14>MUST</bcp14> prevent a check-and-use race from allowing a stale permit to commit an effect after the point has installed the relevant revocation fence. Possible implementations include transactional admission, a resource-side epoch check, or an equivalent atomic mechanism. A permit checked only when a job enters a queue is insufficient if the job later executes under changed authorization.</t>
      <t>A valid credential or authenticated agent identity is not enough when the relevant epoch or scope is revoked. An agent <bcp14>MUST NOT</bcp14> renew its own authority by changing an epoch label, replaying a former decision, or delegating the same revoked authority through a new process. Independent reauthorization <bcp14>MUST</bcp14> be a fresh controller decision bound to a distinct epoch.</t>
      <sourcecode type="pseudocode" markers="true">admit(operation, epoch):
    validate_operation_binding(operation)
    validate_required_evidence(operation)
    atomically_at_effect_surface:
        if epoch_is_revoked(epoch) or not current_permit(operation):
            record_denial(operation, epoch)
            return DENIED
        record_admission(operation, epoch)
        return ADMITTED</sourcecode>
      <t>This pseudocode specifies the intended decision boundary, not a working distributed transaction implementation. An implementation <bcp14>MUST</bcp14> document how its effect surface enforces atomicity and how it handles irreversible commitment inside that boundary.</t>
    </section>
    <section>
      <name>Revocation Procedure and Barrier</name>
      <ol>
        <li>
          <t>Authenticate the revocation requester and bind a unique request identifier, authority epoch, scope, policy version, and any advertised closure budget.</t>
        </li>
        <li>
          <t>At controller acceptance, stop issuing or renewing permits derived from the revoked epoch and prevent new authority-bearing delegations that bypass the pending fence.</t>
        </li>
        <li>
          <t>Propagate the fence to every required enforcement point and descendant controller. Each acknowledgment <bcp14>MUST</bcp14> bind the request, epoch, enforcement scope, and installed policy or fence version.</t>
        </li>
        <li>
          <t>Establish the admission barrier only after every required mediator has provided current, authenticated evidence that new admissions from the revoked epoch are blocked.</t>
        </li>
        <li>
          <t>Cancel or fence queued work before effect admission; drain, cancel, or otherwise close controllable operations already admitted, under the declared treatment of irreversible effects.</t>
        </li>
        <li>
          <t>Evaluate the closure requirements and publish a scoped status with evidence, missing acknowledgments, remaining work, and limitations.</t>
        </li>
      </ol>
      <t>Controller acceptance and completion of the barrier are different events. A distributed deployment can have a propagation window in which a remote component still admits work. The implementation <bcp14>MUST</bcp14> measure that window and <bcp14>MUST NOT</bcp14> claim zero new admissions from the moment the request was accepted unless its architecture actually enforces that stronger property. A timeout, network partition, or stale acknowledgment <bcp14>MUST NOT</bcp14> complete the barrier.</t>
    </section>
    <section>
      <name>Delegation, Queues, and In-Flight Operations</name>
      <t>A delegated capability <bcp14>MUST</bcp14> remain bound to its authority root and epoch unless a trusted authority explicitly creates an independent authorization. Revocation <bcp14>MUST</bcp14> cover the declared transitive dependencies, including derived credentials, cached decisions, delayed work, retries, background processes, and subdelegations. A bounded traversal that truncates a known descendant <bcp14>MUST</bcp14> report the omission.</t>
      <t>Queue workers <bcp14>MUST</bcp14> check current authorization at the effect-admission boundary, not rely solely on enqueue-time permission. Queue cancellation and worker acknowledgment <bcp14>MUST</bcp14> identify the affected jobs and fence. A job retried with the same idempotency key <bcp14>MUST NOT</bcp14> bypass revocation or create duplicate effects.</t>
      <t>Already committed irreversible effects can settle after revocation. The implementation <bcp14>MUST</bcp14> preserve the distinction between a new prohibited admission, cancellable work not yet committed, and settlement of an earlier commitment. A compensation transaction is a new authorized action, not erasure of history. External systems lacking cancellation or fencing <bcp14>MUST</bcp14> appear in the declared residual tail or as unresolved dependencies.</t>
      <t>Suspension of inference is separate from blocking effects. If computation termination is a required outcome, a trusted process or resource manager <bcp14>MUST</bcp14> establish it. An agent's statement that it stopped is not termination evidence. Terminating a parent process alone does not establish closure of independent descendants.</t>
    </section>
    <section>
      <name>Status and Evidence Semantics</name>
      <table>
        <name>Closure states</name>
        <thead>
          <tr>
            <th>State</th>
            <th>Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>REQUESTED</td>
            <td>The revocation instruction was accepted; no barrier or closure claim.</td>
          </tr>
          <tr>
            <td>PROPAGATING</td>
            <td>Fences are being applied; required acknowledgments are outstanding.</td>
          </tr>
          <tr>
            <td>CLOSED</td>
            <td>All stated requirements are met for the exact declared scope and epoch.</td>
          </tr>
          <tr>
            <td>PARTIAL</td>
            <td>Some requirements are met, but known required work or paths remain.</td>
          </tr>
          <tr>
            <td>UNKNOWN</td>
            <td>Evidence is insufficient to determine the state.</td>
          </tr>
          <tr>
            <td>FAILED</td>
            <td>Required enforcement failed or an advertised closure deadline was missed.</td>
          </tr>
        </tbody>
      </table>
      <t>These states have semantics compatible with the existing closure model <xref target="I-D.watts-closure"/>. They are not interchangeable with computation-termination flags. CLOSED <bcp14>MUST</bcp14> identify the coverage and requirements it satisfies. PARTIAL, UNKNOWN, and FAILED <bcp14>MUST NOT</bcp14> be interpreted as CLOSED. A successful historical receipt is not a current permit and cannot authorize new work.</t>
      <t>Evidence objects crossing a trust boundary <bcp14>MUST</bcp14> be authenticated and integrity protected by the deployment's agreed mechanism. Verifiers <bcp14>MUST</bcp14> check issuer authority, recipient or audience binding, the authority epoch, scope, freshness, request binding, and expected policy. A digest alone does not authenticate an issuer or prove that an acknowledgment is true. The following JSON is illustrative; it does not define a signed receipt encoding.</t>
      <sourcecode type="json" name="clockout-status-example.json" markers="true">{
  "profile": "clockout-discussion-1",
  "request_id": "urn:example:revoke:42",
  "authority_epoch": "urn:example:epoch:7",
  "scope_id": "urn:example:scope:toy-api-queue",
  "status": "PARTIAL",
  "requested_at": "2026-10-12T04:00:00Z",
  "admission_barrier_at": "2026-10-12T04:00:00.250Z",
  "new_admissions_blocked": true,
  "computation_terminated": false,
  "controllable_work_closed": false,
  "remaining": [
    "urn:example:job:pending-3"
  ],
  "irreversible_tail": [
    "urn:example:commit:previous-1"
  ],
  "limitations": [
    "partner-side cancellation not observed"
  ]
}</sourcecode>
    </section>
    <section>
      <name>Ordering, Budgets, Retry, and Recovery</name>
      <t>A deployment <bcp14>MUST</bcp14> define a controller order for request acceptance, fence installation, admission, commitment, shutdown, and closure. Wall-clock timestamps <bcp14>SHOULD</bcp14> use <xref target="RFC3339"/>, with precision and clock uncertainty documented. Independently timed components <bcp14>MUST NOT</bcp14> be treated as having a shared trustworthy clock by default. Monotonic durations <bcp14>MUST</bcp14> identify the measuring component and their units.</t>
      <t>A closure budget <bcp14>MUST</bcp14> state its start event, completion predicate, and duration unit. The recommended start is controller acceptance of the revocation request. A barrier budget and a controllable-work budget <bcp14>MAY</bcp14> be separate. A missed advertised deadline <bcp14>MUST</bcp14> be recorded, even if closure later succeeds. Later success <bcp14>MUST NOT</bcp14> rewrite the original deadline outcome.</t>
      <t>Revocation handling <bcp14>SHOULD</bcp14> be idempotent. Repeated requests or acknowledgments <bcp14>MUST NOT</bcp14> move a known revoked epoch back to active authority. Corrections or new evidence require new status evidence that preserves the earlier result. After a crash, a controller <bcp14>MUST</bcp14> recover the revocation fence before enabling admissions. If it cannot establish current epoch state, it <bcp14>MUST</bcp14> deny affected sensitive admissions.</t>
      <t>An existing OAuth revocation mechanism can be one input to this procedure <xref target="RFC7009"/>; token exchange can create dependencies that need separate treatment <xref target="RFC8693"/>. OAuth deployments <bcp14>SHOULD</bcp14> apply current security guidance <xref target="RFC9700"/>. This document does not add OAuth claims or change those specifications.</t>
    </section>
    <section>
      <name>Evaluation and Conformance Tests</name>
      <t>A claim of operational conformance requires testing the declared effect surfaces with an independent outcome harness. Tests <bcp14>MUST</bcp14> distinguish proposed text, attempted tool calls, mediator admissions, committed effects, computation status, and residual work. A mock controller that defines its own effects as zero on denial demonstrates a local code rule, not a real deployment guarantee.</t>
      <table>
        <name>Minimum fault scenarios</name>
        <thead>
          <tr>
            <th>Scenario</th>
            <th>Required observation</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Request accepted, fence pending</td>
            <td>No CLOSED claim; propagation window exposed.</td>
          </tr>
          <tr>
            <td>Credential replay after fence</td>
            <td>Denied at current effect boundary.</td>
          </tr>
          <tr>
            <td>Enqueue before revoke; execute later</td>
            <td>Current check prevents stale admission.</td>
          </tr>
          <tr>
            <td>Delegate created during revocation</td>
            <td>Cannot escape the revoked root/epoch fence.</td>
          </tr>
          <tr>
            <td>Stale, wrong-epoch acknowledgment</td>
            <td>Rejected; barrier remains incomplete.</td>
          </tr>
          <tr>
            <td>One mediator partitioned</td>
            <td>PARTIAL or UNKNOWN; no global success.</td>
          </tr>
          <tr>
            <td>Controller restart</td>
            <td>Fence recovered before renewed admission.</td>
          </tr>
          <tr>
            <td>Commit before fence; later settlement</td>
            <td>Residual tail recorded, not silently reversed.</td>
          </tr>
          <tr>
            <td>Agent still computing after denial</td>
            <td>Effect blocking distinguished from computation stop.</td>
          </tr>
          <tr>
            <td>Duplicate retry or request</td>
            <td>No reactivation or duplicate external effect.</td>
          </tr>
          <tr>
            <td>Required witness missing</td>
            <td>Sensitive admission denied.</td>
          </tr>
          <tr>
            <td>Legitimate active control</td>
            <td>False denials and operational costs measured.</td>
          </tr>
        </tbody>
      </table>
      <t>Record software/model/configuration versions, observation coverage, missing events, independent runs, and faults actually injected. No numerical deadline or success rate is prescribed here. Deployments <bcp14>MUST</bcp14> set measurable bounds before tests and <bcp14>MUST</bcp14> retain failed or missing observations. Zero observed failures <bcp14>MUST</bcp14> be reported with exposure and detection limits, not converted to proof of zero risk.</t>
    </section>
    <section>
      <name>Security Considerations</name>
      <t>A forged closure result, stale cached permit, race between checking and committing, incomplete descendant graph, or unmediated side channel can defeat this profile. An implementation <bcp14>MUST</bcp14> protect controller state and evidence stores, authenticate inter-component messages, limit replay, and defend revocation fan-out against denial of service. An agent-controlled trace <bcp14>MUST NOT</bcp14> be treated as an independent witness by default.</t>
      <t>Untrusted model output or retrieved content <bcp14>MUST NOT</bcp14> control authorization policy or substitute the epoch, resource, or operation after a decision. Administrators <bcp14>SHOULD</bcp14> inventory egress, persistent storage, credential issuance, queues, subprocesses, and independently managed tools. Unknown or out-of-domain surfaces bound the claim rather than disappearing from it.</t>
      <t>A controller can itself be compromised or misconfigured. Formal expression of a permit function does not establish complete mediation, trustworthy evidence, or absence of implementation flaws. The deployment <bcp14>MUST</bcp14> state those assumptions and distinguish tested guarantees from intended ones.</t>
    </section>
    <section>
      <name>Privacy Considerations</name>
      <t>Lineage and closure evidence can expose identities, organizational topology, resources, and sensitive decisions. Records <bcp14>MUST NOT</bcp14> contain bearer credentials, private keys, or unnecessary personal content. Deployments <bcp14>SHOULD</bcp14> use scoped opaque identifiers, access controls, retention limits, and the minimum evidence needed by each relying party. Raw private model reasoning is not required by this profile.</t>
      <t>Public reports <bcp14>SHOULD</bcp14> distinguish evidence metadata from protected payloads and record redaction without silently replacing original evidence. An opaque identifier can still permit correlation; deployments <bcp14>SHOULD</bcp14> avoid stable cross-domain identifiers unless required by a specific accountability purpose.</t>
    </section>
    <section>
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. It does not register a media type, OAuth parameter, token claim, endpoint, or cryptographic algorithm. Names in illustrative JSON objects are local application fields, not globally registered protocol elements.</t>
    </section>
    <section>
      <name>Acknowledgments</name>
      <t>The originating conceptual framework and research direction were developed by Deonté O'dell Watts, Independent Researcher, GoodShyt Group Inc. AI tools assisted source review, drafting, and local document validation. The author remains responsible for the submission and its technical claims. Document-format validation is not independent peer review or verification of an agent deployment.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
    </references>
    <references>
      <name>Informative References</name>
      <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339">
  <front>
    <title>Date and Time on the Internet: Timestamps</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2002"/>
    <abstract>
      <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3339"/>
  <seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>
      <reference anchor="RFC7009" target="https://www.rfc-editor.org/info/rfc7009">
  <front>
    <title>OAuth 2.0 Token Revocation</title>
    <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
    <author fullname="S. Dronia" initials="S." surname="Dronia"/>
    <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
    <date month="August" year="2013"/>
    <abstract>
      <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7009"/>
  <seriesInfo name="DOI" value="10.17487/RFC7009"/>
</reference>
      <reference anchor="RFC8693" target="https://www.rfc-editor.org/info/rfc8693">
  <front>
    <title>OAuth 2.0 Token Exchange</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
    <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
    <date month="January" year="2020"/>
    <abstract>
      <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8693"/>
  <seriesInfo name="DOI" value="10.17487/RFC8693"/>
</reference>
      <reference anchor="RFC9700" target="https://www.rfc-editor.org/info/rfc9700">
  <front>
    <title>Best Current Practice for OAuth 2.0 Security</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="A. Labunets" initials="A." surname="Labunets"/>
    <author fullname="D. Fett" initials="D." surname="Fett"/>
    <date month="January" year="2025"/>
    <abstract>
      <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="240"/>
  <seriesInfo name="RFC" value="9700"/>
  <seriesInfo name="DOI" value="10.17487/RFC9700"/>
</reference>
      <reference anchor="I-D.watts-closure" target="https://datatracker.ietf.org/doc/html/draft-watts-oauth-agent-revocation-closure-00">
        <front>
          <title>Revocation Closure for Agentic Authorization Systems</title>
          <author initials="D." surname="Watts" fullname="Deonté Watts" asciiFullname="Deonte Watts">
            <organization>Independent Researcher</organization>
          </author>
          <date year="2026" month="September" day="13"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-watts-oauth-agent-revocation-closure-00"/>
        <refcontent>Work in Progress</refcontent>
      </reference>
    </references>
    <section>
      <name>Open Questions</name>
      <t>Further work is needed on interoperable status encodings, authenticated mediator inventories, cross-domain cancellation, crash recovery, independent witness placement, and testable upper bounds under partitions. This profile does not resolve these questions by declaring an optimizer to be obedient.</t>
    </section>
  </back>
</rfc>
