<?xml version="1.0" encoding="UTF-8"?>
<rfc version="3" ipr="trust200902" docName="draft-feng-agentproto-session-requirements-00" category="info" submissionType="IETF" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="false">
  <front>
    <title abbrev="Agent Session Requirements">Requirements for Agent Session Establishment and Capability Negotiation</title>
    <seriesInfo name="Internet-Draft" value="draft-feng-agentproto-session-requirements-00"/>
    <author fullname="Chong Feng" initials="C." surname="Feng">
      <organization/>
      <address>
        <email>fengchongllly@gmail.com</email>
      </address>
    </author>
    <date day="15" month="August" year="2026"/>
    <area>Applications</area>
    <workgroup>agentproto</workgroup>
    <keyword>agent</keyword>
    <keyword>session establishment</keyword>
    <keyword>capability negotiation</keyword>
    <keyword>requirements</keyword>
    <abstract>
      <t>This document defines requirements for the establishment of sessions between entities and for the negotiation of capabilities within such sessions. It is assumed that the entities involved already know of each other; how they came to know each other is outside the scope of this document. At least one party to a session is an agent as defined in <xref target="terminology" format="none"/>Section 3. This document is intended as a contribution to the agentproto working group's use cases, gap analysis, and requirements deliverable.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Autonomous agents collaborating across administrative domains require a common understanding of when a session begins, what each side is capable of, and which capabilities are in effect for a given interaction. This document states requirements for session establishment and capability negotiation that follow from these needs.</t>
      <t>Session establishment is orthogonal to peer location. Two entities may come to know of each other through intent routing, through directory-based discovery, or because one side cached the other's information from a previous session. In all cases, the same session establishment flow applies. This document therefore assumes that the entities already know of each other and does not presuppose any particular locating mechanism.</t>
      <t>The need for this document follows from gaps stated by adjacent work. The DAWN problem statement explicitly places the exchange that follows discovery outside its scope: "after discovery, an interview-style exchange may be conducted using the communication method indicated by the entity &#8212; outside the scope of DAWN" <xref target="I-D.akhavain-moussa-dawn-problem-statement"/>. The DAWN terminology likewise defines capability exchange, negotiation, and selection as out of scope for DAWN <xref target="I-D.farrel-dawn-terminology"/>. Intent routing <xref target="I-D.feng-dmsc-intent-routing-requirements"/> addresses how a request reaches an entity, not what happens once it does. Session establishment and capability negotiation, the subject of this document, fall between these efforts.</t>
    </section>
    <section anchor="scope" numbered="true" toc="default">
      <name>Scope</name>
      <t>This document defines requirements for:</t>
      <ul spacing="normal">
        <li>the establishment of sessions between entities, and</li>
        <li>the negotiation of capabilities within such sessions.</li>
      </ul>
      <t>It is assumed that the entities involved already know of each other. How they came to know each other &#8212; whether through intent routing, directory-based discovery, information cached from a prior session, or any other mechanism &#8212; is outside the scope of this document and does not affect the requirements stated herein.</t>
      <t>At least one party to a session MUST be an agent as defined in <xref target="terminology"/>. A session between two deterministic systems, neither of which is an agent, is outside the scope of this document.</t>
      <t>The following are out of scope:</t>
      <ul spacing="normal">
        <li>discovery of entities (covered by DAWN <xref target="I-D.farrel-dawn-terminology"/>);</li>
        <li>routing of intent or requests between entities (covered by <xref target="I-D.feng-dmsc-intent-routing-requirements"/>);</li>
        <li>the transport protocol over which a session is carried; and</li>
        <li>any mechanism or protocol design for session establishment.</li>
      </ul>
      <t>This document is a requirements document, not a solution document. It deliberately does not specify how the requirements are to be met.</t>
    </section>
    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
      <dl spacing="normal">
        <dt>Agent</dt>
        <dd>An autonomous software entity capable of perceiving its environment, making decisions, and acting to achieve goals on behalf of a user or another agent.</dd>
        <dt>Entity</dt>
        <dd>A party to a session. An entity MAY be an agent, a deterministic program such as an MCP server, a human, or a system acting on a human's behalf. The term is consistent with its use in the DAWN work <xref target="I-D.farrel-dawn-terminology"/>.</dd>
        <dt>Originator</dt>
        <dd>An entity that initiates a session with another entity in order to request an action or obtain a result.</dd>
        <dt>Handler</dt>
        <dd>An entity that may be selected by an originator to perform an action or provide a result.</dd>
        <dt>Capability</dt>
        <dd>A function, service, or behavior that an entity is able to offer.</dd>
        <dt>Capability Card</dt>
        <dd>A structured description of an entity's capabilities, as defined in the DAWN work <xref target="I-D.farrel-dawn-terminology"/>. A capability card is a container; its content format is not specified by DAWN.</dd>
        <dt>Capability Description Language (CDL)</dt>
        <dd>The machine-readable language used in this document to describe the capabilities contained in a capability card. A CDL is a concrete description of a capability card's content. The CDL concept originates from the AIN architecture <xref target="I-D.feng-nmrg-ain-architecture"/>.</dd>
        <dt>Session</dt>
        <dd>An association established between two entities for the purpose of collaboration, encompassing the negotiated capabilities and the interactions that take place under them.</dd>
      </dl>
    </section>
    <section anchor="requirements" numbered="true" toc="default">
      <name>Requirements</name>
      <section anchor="req-1" numbered="true" toc="default">
        <name>REQ-1: Timing of Capability Negotiation</name>
        <t>Capability negotiation MUST be completed before the session is considered established. A session MUST NOT be presented as usable for collaboration unless capability negotiation has succeeded.</t>
        <t>Rationale: An originator cannot meaningfully commit to a session if it does not know whether the handler can satisfy the intended action. Negotiation is a precondition of the session, not a detail of it.</t>
      </section>
      <section anchor="req-2" numbered="true" toc="default">
        <name>REQ-2: Endpoint Autonomy</name>
        <t>Capability declaration and negotiation MUST be decided by the entities that hold them. Discovery and routing layers MUST NOT make or substitute for capability decisions on behalf of either entity.</t>
        <t>Rationale: Capability is a property of the entity. Any party that does not hold the capability cannot truthfully declare it, and any intermediate layer that preselects on capability inserts itself into an autonomy boundary it does not own.</t>
      </section>
      <section anchor="req-3" numbered="true" toc="default">
        <name>REQ-3: Negotiation over the Direct Connection</name>
        <t>Once a direct connection between the two entities is established, capability negotiation MUST take place over that connection and MUST NOT traverse any intermediate intent routing or discovery layer.</t>
        <t>Rationale: Negotiation content is private to the session entities. Routing layers are involved only in getting the entities to each other; once they are connected, the negotiation proceeds directly between them. An implementation in which negotiation traverses an intermediate layer violates this requirement.</t>
      </section>
      <section anchor="req-4" numbered="true" toc="default">
        <name>REQ-4: Mutual Selection Rights</name>
        <t>Both entities MUST retain selection rights. The originator selects the handler it wishes to engage, and the handler MAY choose to connect to the originator actively, to respond passively, or to decline.</t>
        <t>Rationale: Selection is not one-directional. A handler is an autonomous party with its own interests and constraints; its choice of whether and how to engage is part of the negotiation, not an outcome imposed by the originator.</t>
      </section>
      <section anchor="req-5" numbered="true" toc="default">
        <name>REQ-5: Authorization Boundary</name>
        <t>Successful session establishment MUST NOT be presented as authorization to execute the requested action. Execution authorization is a separate decision that MUST be made explicitly.</t>
        <t>Rationale: Routing and session establishment answer "can these entities talk to each other"; they do not answer "may this action be performed". Conflating the two creates a security boundary violation, particularly when a routing layer is involved in getting the entities together.</t>
      </section>
      <section anchor="req-6" numbered="true" toc="default">
        <name>REQ-6: Session Lifecycle Management</name>
        <t>Session revocation, transfer of session ownership, and the termination of negotiated capabilities MUST be expressible explicitly by either entity.</t>
        <t>Rationale: Sessions are not static. A handler may lose a capability, an originator may need to transfer a session to another entity, and either side may revoke. A session model that cannot express these transitions cannot be managed safely.</t>
      </section>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The security properties of this document follow from REQ-3 and REQ-5. Because negotiation occurs over the direct connection (<xref target="req-3" format="none"/>REQ-3), intermediate layers have no opportunity to observe or tamper with capability content. Because session establishment does not confer execution authority (<xref target="req-5" format="none"/>REQ-5), the blast radius of a compromised routing or discovery layer is limited to connection establishment, not to the actions performed within the session.</t>
      <t>Entities SHOULD authenticate each other before engaging in capability negotiation. Capability declarations are claims made by the declaring entity and are subject to its own trust and verification policies. Where one entity is a human, execution authorization is ultimately a human decision; session establishment must not be presented to the human as having authorized execution.</t>
    </section>
    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="normative">
        <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 initials="S." surname="Bradner" fullname="Scott Bradner"/>
            <date month="March" year="1997"/>
          </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 initials="B." surname="Leiba" fullname="Barry Leiba"/>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="informative">
        <name>Informative References</name>
        <reference anchor="I-D.farrel-dawn-terminology" target="https://datatracker.ietf.org/doc/html/draft-farrel-dawn-terminology">
          <front>
            <title>Terminology for the Discovery of Agents, Workloads, and Named Entities (DAWN)</title>
            <author initials="A." surname="Farrel" fullname="Adrian Farrel"/>
            <author initials="K." surname="Yao" fullname="Kevin Yao"/>
            <author initials="R." surname="Schott" fullname="Roland Schott"/>
            <author initials="N." surname="Williams" fullname="Nigel Williams"/>
            <date day="26" month="July" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-farrel-dawn-terminology-04"/>
        </reference>
        <reference anchor="I-D.akhavain-moussa-dawn-problem-statement" target="https://datatracker.ietf.org/doc/html/draft-akhavain-moussa-dawn-problem-statement">
          <front>
            <title>Problem Statement for the Discovery of Agents, Workloads, and Named Entities (DAWN)</title>
            <author initials="A." surname="Akhavain" fullname="A. Akhavain"/>
            <author initials="H." surname="Moussa" fullname="H. Moussa"/>
            <author initials="D." surname="King" fullname="D. King"/>
            <author initials="K." surname="Yao" fullname="K. Yao"/>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-akhavain-moussa-dawn-problem-statement-04"/>
        </reference>
        <reference anchor="I-D.feng-nmrg-ain-architecture" target="https://datatracker.ietf.org/doc/html/draft-feng-nmrg-ain-architecture">
          <front>
            <title>AIN Architecture</title>
            <author initials="C." surname="Feng" fullname="C. Feng"/>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-feng-nmrg-ain-architecture-01"/>
        </reference>
        <reference anchor="I-D.feng-dmsc-intent-routing-requirements" target="https://datatracker.ietf.org/doc/html/draft-feng-dmsc-intent-routing-requirements">
          <front>
            <title>Requirements for Intent Routing in DMSC</title>
            <author initials="C." surname="Feng" fullname="C. Feng"/>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-feng-dmsc-intent-routing-requirements-00"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
