<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-haberkamp-ipp-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="independent"
  xml:lang="en"
  tocInclude="true"
  tocDepth="4"
  symRefs="true"
  sortRefs="true"
  version="3">

  <front>
    <title abbrev="Intent Provenance Protocol">Intent Provenance Protocol (IPP)</title>

    <seriesInfo name="Internet-Draft" value="draft-haberkamp-ipp-00"/>

    <author fullname="Amanda Haberkamp" initials="A." surname="Haberkamp">
      <organization>KH Sovereign, Inc.</organization>
      <address>
        <postal>
          <city>Chicago</city>
          <region>Illinois</region>
          <country>United States</country>
        </postal>
        <email>amanda@khsovereign.com</email>
        <uri>https://ipp.khsovereign.com</uri>
      </address>
    </author>

    <date year="2026" month="March"/>

    <area>Security</area>
    <workgroup>Internet Engineering Task Force</workgroup>

    <keyword>AI agents</keyword>
    <keyword>intent provenance</keyword>
    <keyword>agentic AI</keyword>
    <keyword>non-human identity</keyword>
    <keyword>cryptographic protocol</keyword>
    <keyword>Ed25519</keyword>
    <keyword>decentralized identifiers</keyword>
    <keyword>audit trail</keyword>

    <abstract>
      <t>
        This document specifies the Intent Provenance Protocol (IPP), a
        cryptographic infrastructure standard for carrying verified human
        intent through chains of autonomous artificial intelligence agent
        actions. IPP defines the Intent Token -- a signed, bounded, and
        tamper-evident data structure that travels with every agentic action,
        preserving an unbroken, auditable lineage from the originating human
        principal to each terminal action executed on their behalf.
      </t>
      <t>
        As AI agents become primary actors in enterprise environments --
        executing transactions, accessing sensitive data, orchestrating
        sub-agents, and operating across organizational boundaries -- the
        absence of a shared trust substrate creates systemic risk to
        organizational accountability, regulatory compliance, and legal
        liability attribution. IPP addresses this gap by establishing a
        protocol layer that operates above cryptographic authentication and
        below application logic, making human intent a first-class,
        verifiable primitive in agentic systems.
      </t>
      <t>
        IPP introduces four foundational properties -- Lineage, Boundedness,
        Non-repudiation, and Interoperability -- enforced through a
        combination of Ed25519 digital signatures, Decentralized Identifiers
        (DIDs), and a Narrowing Invariant that prevents any derived token from
        exceeding its parent's authorized scope. The protocol is
        framework-agnostic, cloud-agnostic, and designed for open
        implementation across the ecosystem of AI orchestration platforms.
      </t>
    </abstract>

  </front>

  <middle>

    <section numbered="true" toc="default">
      <name>Introduction</name>

      <section numbered="true" toc="default">
        <name>Background and Motivation</name>
        <t>
          For three decades, enterprise security has operated under a single
          foundational assumption: that every consequential digital action
          originates from, and is ultimately accountable to, a human being.
          Access control systems, identity governance frameworks, audit logging
          infrastructures, and regulatory compliance regimes all derive their
          validity from this assumption. A human authenticates. A human is
          authorized. A human acts. A human is accountable.
        </t>
        <t>
          The emergence of autonomous artificial intelligence agents --
          software entities capable of perceiving their environment, reasoning
          about goals, taking sequences of actions, and spawning additional
          agents to fulfill sub-tasks -- fundamentally invalidates this
          assumption. In agentic environments, the majority of consequential
          actions are executed by software entities operating without real-time
          human supervision. A human sets a goal; an agent, or a hierarchy of
          agents, determines and executes the means.
        </t>
        <t>
          This creates a category of risk that existing security infrastructure
          is architecturally unequipped to address: not the risk of
          unauthorized access, but the risk of authorized-but-misaligned
          action -- agent behavior that is technically permitted by access
          control systems but inconsistent with the human intent that
          originally authorized the agent's deployment.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>The Authorship Problem in Agentic Systems</name>
        <t>
          Consider a scenario in which a Chief Financial Officer instructs an
          AI assistant to "optimize cash positions across all subsidiaries and
          move any idle balances over ten million dollars into short-term
          treasuries." The assistant spawns three sub-agents: one to query
          treasury balances, one to evaluate current rates, and one to execute
          transfers. The transfer agent, drawing on outputs from the other two,
          initiates eleven separate wire transfers totaling three hundred forty
          million dollars.
        </t>
        <t>
          At the moment the eleventh transfer is executed, no existing system
          can answer the following questions with cryptographic certainty:
        </t>
        <ol type="a">
          <li>What specific human intent authorized this action?</li>
          <li>What constraints bounded that intent?</li>
          <li>What is the complete chain of delegation from the CFO's
              instruction to this specific transfer?</li>
          <li>Is this action consistent with what the CFO meant, or merely
              consistent with what the CFO said?</li>
          <li>Who bears legal accountability if this action causes harm?</li>
        </ol>
        <t>
          The Intent Provenance Protocol is designed to make all five of these
          questions answerable with cryptographic precision, in real time,
          without requiring a central authority, and in a form that is legally
          defensible across jurisdictions.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Scope</name>
        <t>
          This specification defines: the structure and semantics of the Intent
          Token; the Genesis Seal mechanism for permanent authorship
          attribution; the cryptographic mechanisms underlying token signing
          and verification; the Narrowing Invariant governing token derivation;
          the revocation protocol; the provenance chain format; and the
          interoperability requirements for compliant implementations.
        </t>
        <t>
          This specification does not define: specific AI agent architectures
          or orchestration frameworks; natural language processing mechanisms
          for intent parsing; application-layer authorization policies; or
          legal standards for accountability attribution (though it is designed
          to support such standards).
        </t>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Terminology and Definitions</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 newline="true" spacing="normal">
        <dt>Agent:</dt>
        <dd>
          An autonomous software entity capable of perceiving inputs,
          reasoning about goals, taking sequences of actions, and potentially
          spawning additional agents. Agents are the primary non-human actors
          governed by this protocol.
        </dd>
        <dt>Principal:</dt>
        <dd>
          A human being or legally accountable organization at the root of an
          intent chain. Every valid Intent Token chain MUST have a human
          Principal at its origin. There is no such thing as an
          agent-originated intent chain under this protocol.
        </dd>
        <dt>Intent Token:</dt>
        <dd>
          The atomic unit of this protocol. A cryptographically signed,
          bounded, and time-limited data structure that carries verified human
          intent through a chain of agentic actions.
        </dd>
        <dt>Genesis Seal:</dt>
        <dd>
          A cryptographic artifact embedded in every Intent Token that
          permanently links the token to the original IPP specification and
          its author, Amanda Haberkamp. The Genesis Seal contains a hash of
          the specification document signed by the Founding Key.
        </dd>
        <dt>Founding Key:</dt>
        <dd>
          The Ed25519 private key generated by Amanda Haberkamp during the Key
          Generation Ceremony and used exclusively to produce the Genesis Seal
          signature. This key is never used after the ceremony and is stored
          in offline cold storage.
        </dd>
        <dt>Narrowing Invariant:</dt>
        <dd>
          The protocol rule that a Derived Token MUST be strictly less than or
          equal to its Parent Token in every dimension of scope, delegation
          depth, and expiry. Violations of this invariant are detectable by
          any participant without contacting a central authority.
        </dd>
        <dt>Derived Token:</dt>
        <dd>
          An Intent Token produced by an agent from a Parent Token. A Derived
          Token carries narrowed scope and reduced delegation depth, and is
          signed by both the issuing agent and linked to the Parent Token's
          signature.
        </dd>
        <dt>Delegation Depth:</dt>
        <dd>
          A non-negative integer field in the Intent Token specifying how many
          additional levels of sub-agent spawning are authorized. A value of
          zero means the token holder may act but may not spawn sub-agents.
        </dd>
        <dt>Provenance Chain:</dt>
        <dd>
          An append-only, cryptographically linked sequence of records within
          an Intent Token documenting every action taken under that token's
          authority.
        </dd>
        <dt>Domain Taxonomy:</dt>
        <dd>
          The hierarchical dot-notation vocabulary for classifying intent
          domains, maintained by KH Sovereign, Inc. and open for community
          contribution. Examples: financial.treasury,
          healthcare.records.read, infrastructure.compute.provision.
        </dd>
        <dt>DID:</dt>
        <dd>
          Decentralized Identifier. A W3C standard identifier that enables
          verifiable, self-sovereign identity without relying on a centralized
          registry. All Principal and Agent identities in this protocol are
          expressed as DIDs.
        </dd>
        <dt>Revocation Registry:</dt>
        <dd>
          A distributed service providing real-time token revocation status.
          Agents MUST check the registry before taking any action under a
          token.
        </dd>
      </dl>
    </section>

    <section numbered="true" toc="default">
      <name>Protocol Overview</name>

      <section numbered="true" toc="default">
        <name>Design Principles</name>
        <t>IPP is designed according to the following principles:</t>
        <ul spacing="normal">
          <li>
            <strong>Decentralized enforcement:</strong> Token validity is
            verifiable by any participant without contacting a central
            authority. The cryptographic structure of the token itself makes
            violations detectable.
          </li>
          <li>
            <strong>Human primacy:</strong> Every intent chain MUST originate
            from a human Principal. This is not a policy choice -- it is a
            structural requirement enforced by the token schema.
          </li>
          <li>
            <strong>Minimal footprint:</strong> The SDK integration surface is
            intentionally small. Developers add governance capability to
            existing agents without rewriting their architecture.
          </li>
          <li>
            <strong>Open interoperability:</strong> The protocol is
            framework-agnostic, cloud-agnostic, and jurisdiction-agnostic.
            Any conformant implementation can interoperate with any other.
          </li>
          <li>
            <strong>Permanent authorship:</strong> The Genesis Seal embeds
            cryptographic attribution to the protocol's author in every token,
            making the authorship record tamper-evident and permanent by
            design.
          </li>
        </ul>
      </section>

      <section numbered="true" toc="default">
        <name>The Four Foundational Properties</name>
        <t>
          Every compliant IPP implementation MUST guarantee the following four
          properties:
        </t>
        <dl newline="true" spacing="normal">
          <dt>Lineage:</dt>
          <dd>
            Every action taken by any agent under an Intent Token MUST be
            traceable, through an unbroken chain of cryptographic signatures,
            to a human Principal. The chain may pass through any number of
            intermediate agents, but the terminal node in the backwards trace
            MUST always be a DID resolving to a human or human-accountable
            legal entity.
          </dd>
          <dt>Boundedness:</dt>
          <dd>
            Every Intent Token MUST carry explicit, machine-readable
            constraints on the scope of authorized action. These constraints
            MUST be enforced by the SDK before any action is taken.
            Constraints travel with the token through every delegation level
            and MUST NOT be expanded by any intermediate agent.
          </dd>
          <dt>Non-Repudiation:</dt>
          <dd>
            Every Intent Token MUST be cryptographically signed such that the
            signing Principal or Agent cannot credibly deny having issued the
            token. The signature MUST be verifiable by any third party using
            only the signer's public key, without requiring communication with
            the signer or any central authority.
          </dd>
          <dt>Interoperability:</dt>
          <dd>
            Compliant implementations MUST be capable of consuming and
            producing Intent Tokens regardless of the AI framework, cloud
            environment, or programming language used. The token format is
            defined in JSON with a canonical serialization for signature
            purposes.
          </dd>
        </dl>
      </section>

      <section numbered="true" toc="default">
        <name>Protocol Layers</name>
        <t>
          IPP operates as a distinct protocol layer between cryptographic
          identity infrastructure and application logic:
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+------------------------------------------+
|          Application Logic               |
|    <- Agent goals, actions, outputs      |
+------------------------------------------+
|   Intent Provenance Protocol (IPP)       |
|   - Intent Tokens                        |
|   - Delegation and Derivation            |
|   - Provenance Chain                     |
|   - Revocation                           |
+------------------------------------------+
|   Cryptographic Identity Layer           |
|   <- DIDs, Ed25519, TLS                  |
+------------------------------------------+
|   Transport / Infrastructure             |
|   <- HTTP, gRPC, cloud APIs              |
+------------------------------------------+
        ]]></artwork>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>The Intent Token</name>

      <section numbered="true" toc="default">
        <name>Token Structure</name>
        <t>
          The Intent Token is a JSON object with a canonical structure.
          The following is a complete example of a root Intent Token issued
          by a Principal:
        </t>
        <artwork name="" type="json" align="left" alt=""><![CDATA[
{
  "$schema": "https://ipp.khsovereign.com/schema/v0.1/intent-token.json",
  "version": "0.1",
  "genesis": {
    "spec_hash": "sha3-256:a3f9c2d8e1b74f6a...",
    "author_did": "did:key:z6MkHaberkamp...",
    "author_name": "Amanda Haberkamp",
    "org": "KH Sovereign, Inc.",
    "genesis_sig": "ed25519:BASE64URL..."
  },
  "token_id": "ipp:tok:550e8400-e29b-41d4-a716-446655440000",
  "schema_version": "0.1",
  "created_at": "2026-09-01T14:32:00Z",
  "expires_at": "2026-09-01T22:32:00Z",
  "principal": {
    "did": "did:key:z6MkPrincipalXXX...",
    "name": "Amanda Haberkamp",
    "org": "KH Sovereign, Inc.",
    "legal_jurisdiction": "US-IL",
    "signature": "ed25519:BASE64URL..."
  },
  "intent": {
    "natural_language": "Optimize cash positions across subsidiaries",
    "domain": "financial.treasury",
    "resource_scope": ["subsidiary:*", "account_type:cash"],
    "quantitative_bounds": {
      "min_balance_threshold": 10000000,
      "currency": "USD",
      "max_single_transaction": 50000000,
      "time_window": "business_hours_CT"
    },
    "prohibited_actions": ["equity_purchase", "account_closure"]
  },
  "delegation": {
    "parent_token_id": null,
    "depth_remaining": 3,
    "depth_original": 3,
    "agent_id": "ipp:agent:langchain:treasury-optimizer-v1",
    "agent_framework": "langchain",
    "agent_version": "0.1.0",
    "spawned_by_principal": true
  },
  "revocation": {
    "registry_endpoint": "https://revoke.khsovereign.com/v1",
    "token_id_hash": "sha3-256:HASH...",
    "check_interval_ms": 5000
  },
  "provenance_chain": [],
  "token_signature": "ed25519:BASE64URL_SIGNED_BY_PRINCIPAL"
}
        ]]></artwork>
      </section>

      <section numbered="true" toc="default">
        <name>The Intent Scope Envelope</name>
        <t>
          The intent field encodes the human's goal as a Structured Intent
          Envelope. The natural_language field is human-readable but NOT
          machine-enforceable. Enforcement is performed against the structured
          fields only.
        </t>
        <t>
          The domain field value MUST be drawn from the IPP Domain Taxonomy
          maintained at https://ipp.khsovereign.com/taxonomy.
          Implementations using non-standard domain values MUST prefix them
          with "x." (e.g., x.mycompany.custom_domain) to avoid collision with
          future taxonomy additions.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Quantitative Bounds</name>
        <t>
          The quantitative_bounds object is domain-specific. Standard bound
          fields for the financial domain are defined below. Domain-specific
          extensions are published in the IPP Domain Taxonomy registry.
        </t>
        <artwork name="" type="json" align="left" alt=""><![CDATA[
"quantitative_bounds": {
  "min_balance_threshold": integer,
  "max_single_transaction": integer,
  "max_total_exposure": integer,
  "currency": "ISO 4217 code",
  "time_window": "named window or ISO 8601 interval",
  "geographic_restriction": ["ISO 3166-1 alpha-2 codes"],
  "counterparty_allowlist": ["DID or entity identifier"],
  "counterparty_blocklist": ["DID or entity identifier"]
}
        ]]></artwork>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>The Genesis Seal</name>

      <section numbered="true" toc="default">
        <name>Purpose and Design</name>
        <t>
          The Genesis Seal is a cryptographic artifact embedded in every
          Intent Token that permanently and irrevocably links the token to
          this specification and to its author, Amanda Haberkamp. The Genesis
          Seal serves three simultaneous functions:
        </t>
        <ul spacing="normal">
          <li>
            <strong>Protocol versioning:</strong> The spec_hash field uniquely
            identifies the exact version of the IPP specification under which
            the token was issued.
          </li>
          <li>
            <strong>Authorship attribution:</strong> The author_did and
            genesis_sig fields constitute a permanent, cryptographically
            verifiable record that Amanda Haberkamp is the originator of this
            protocol.
          </li>
          <li>
            <strong>Ecosystem integrity:</strong> Because the Genesis Seal is
            required in all tokens, any token that omits or falsifies it is
            detectable as non-compliant without reference to any external
            authority.
          </li>
        </ul>
        <t>
          The genesis_sig is produced using the Founding Key -- an Ed25519
          private key generated by Amanda Haberkamp and used ONLY ONCE, during
          the Key Generation Ceremony described in <xref target="sec-ceremony"/>.
          The private component of this key is stored in offline cold storage
          and is never used again. The public component is published in this
          specification and in the IPP specification repository.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Genesis Seal Structure</name>
        <artwork name="" type="json" align="left" alt=""><![CDATA[
"genesis": {
  "spec_hash":      "sha3-256:[HASH OF IPP SPECIFICATION DOCUMENT]",
  "author_did":     "did:key:z6MkHaberkampXXXXXXXXXXXXXXXXXXXXXXXX",
  "author_name":    "Amanda Haberkamp",
  "org":            "KH Sovereign, Inc.",
  "founding_pubkey":"ed25519-pub:[BASE64URL PUBLIC KEY]",
  "genesis_sig":    "ed25519:[BASE64URL SIGNATURE]"
}

Where genesis_sig = Ed25519Sign(
  private_key = FOUNDING_PRIVATE_KEY,
  message     = SHA3-256(spec_hash || author_did
                         || author_name || org || timestamp)
)
        ]]></artwork>
        <t>
          Verification of the Genesis Seal MUST proceed as follows:
        </t>
        <ol spacing="normal">
          <li>
            Retrieve the IPP specification from the canonical location:
            https://ipp.khsovereign.com/spec/v0.1
          </li>
          <li>
            Compute SHA3-256 of the specification document and compare with
            spec_hash. If they do not match, the token was issued under a
            modified or forged specification.
          </li>
          <li>
            Retrieve Amanda Haberkamp's founding public key from the
            specification repository at
            https://ipp.khsovereign.com/keys/founding_public.pem
          </li>
          <li>
            Verify the genesis_sig using the founding public key. If
            verification fails, the Genesis Seal is invalid.
          </li>
          <li>
            If both checks pass, the token is certified as issued under the
            authentic IPP specification authored by Amanda Haberkamp.
          </li>
        </ol>
      </section>

      <section anchor="sec-ceremony" numbered="true" toc="default">
        <name>Key Generation Ceremony</name>
        <t>
          The Founding Key pair was generated according to the following
          procedure, designed to maximize security and establish a clear,
          witnessed chain of custody:
        </t>
        <ol spacing="normal">
          <li>
            An air-gapped machine (disconnected from all networks) was used
            for all key generation operations.
          </li>
          <li>
            The Ed25519 key pair was generated using OpenSSL 3.x:
          </li>
        </ol>
        <artwork name="" type="" align="left" alt=""><![CDATA[
openssl genpkey -algorithm ed25519 \
  -out amanda_haberkamp_founding_private.pem

openssl pkey -in amanda_haberkamp_founding_private.pem \
  -pubout \
  -out amanda_haberkamp_founding_public.pem
        ]]></artwork>
        <ol spacing="normal" start="3">
          <li>
            A DID was generated from the public key using the did:key method.
          </li>
          <li>
            The Genesis Seal payload was constructed and signed using the
            private key.
          </li>
          <li>
            The private key was printed to paper (two copies), placed in
            fireproof storage in separate physical locations, and deleted from
            all digital media.
          </li>
          <li>
            The public key, DID, and Genesis Seal were committed to the IPP
            specification repository with a cryptographic timestamp.
          </li>
        </ol>
        <t>
          SECURITY NOTE: The Founding Private Key is used exactly once. If the
          Founding Private Key is ever compromised, a Key Compromise event MUST
          be declared via a signed notice published at
          https://ipp.khsovereign.com/security, and a successor key ceremony
          MUST be conducted.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Authorship Attribution Requirements</name>
        <t>
          Any implementation, derivative protocol, or software product that
          uses, embeds, or interoperates with Intent Tokens MUST include the
          following attribution:
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Implements the Intent Provenance Protocol (IPP) v0.1,
authored by Amanda Haberkamp, KH Sovereign, Inc., 2026.
https://ipp.khsovereign.com
        ]]></artwork>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Cryptographic Mechanisms</name>

      <section numbered="true" toc="default">
        <name>Signature Algorithm</name>
        <t>
          All signatures in this protocol MUST use Ed25519 as defined in
          <xref target="RFC8032"/>. Signature values are encoded as Base64URL
          without padding, prefixed with "ed25519:".
        </t>
        <t>
          The canonical serialization for signing MUST be produced by:
          (1) removing the token_signature field,
          (2) sorting all keys lexicographically at every nesting level,
          (3) serializing to JSON with no extraneous whitespace, and
          (4) encoding as UTF-8.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Decentralized Identifiers (DIDs)</name>
        <t>
          All Principal and Agent identities MUST be expressed as DIDs
          conforming to the W3C DID Core specification
          <xref target="W3C-DID"/>. This specification RECOMMENDS the did:key
          method for its self-sovereign properties. Implementations MAY
          additionally support did:web, did:ion, or other conformant DID
          methods provided they satisfy the following requirements: (a) the DID
          is resolvable without requiring communication with the token issuer;
          (b) the resolved DID document contains a verificationMethod with the
          public key material; and (c) the DID is persistent.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Hash Functions</name>
        <t>
          All hash operations in this specification use SHA3-256
          <xref target="FIPS202"/>. Hash values are represented as lowercase
          hexadecimal strings prefixed with "sha3-256:".
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>The Narrowing Invariant</name>
        <t>
          For any Derived Token D with Parent Token P, the following MUST hold:
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
D.expires_at            <= P.expires_at
D.delegation.depth      <  P.delegation.depth
D.intent.domain         is a sub-domain of P.intent.domain
D.intent.resource_scope  ⊆ P.intent.resource_scope
D.intent.quant_bounds    ⊆ P.intent.quant_bounds
D.intent.prohibited      ⊇ P.intent.prohibited_actions
        ]]></artwork>
        <t>
          Any receiving agent MUST independently verify this invariant before
          accepting a Derived Token. Verification failure MUST result in token
          rejection.
        </t>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Delegation and Derived Tokens</name>

      <section numbered="true" toc="default">
        <name>Derivation Rules</name>
        <t>When an agent derives a child token from a parent, it MUST:</t>
        <ol spacing="normal">
          <li>Set parent_token_id to the token_id of the parent.</li>
          <li>Reduce depth_remaining by exactly one.</li>
          <li>Set the intent scope to a subset of the parent's scope,
              satisfying the Narrowing Invariant.</li>
          <li>Set expires_at to be no later than the parent's expires_at.</li>
          <li>Set the agent_id to a unique identifier for the spawned
              sub-agent.</li>
          <li>Compute and embed a valid narrowing_proof.</li>
          <li>Sign the new token with the parent agent's private key.</li>
          <li>Propagate the genesis field unchanged from the parent token.
              The Genesis Seal is never re-derived.</li>
        </ol>
      </section>

      <section numbered="true" toc="default">
        <name>Delegation Depth</name>
        <t>
          The depth_remaining field represents the number of additional
          sub-agent spawning levels authorized. An agent holding a token with
          depth_remaining = 0 MAY act under the token but MUST NOT issue
          Derived Tokens.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Sub-Agent Spawning</name>
        <t>
          An agent spawning a sub-agent MUST provide the Derived Token to the
          sub-agent as its authorization credential. The sub-agent MUST NOT
          accept instructions that are inconsistent with its token's intent
          scope, even if those instructions come from the spawning parent
          agent. The token is the authority -- not the parent agent.
        </t>
        <t>
          CRITICAL SECURITY PROPERTY: An agent MUST refuse instructions from
          any source -- including its parent agent -- that would require it to
          act outside its token's authorized scope.
        </t>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Revocation</name>

      <section numbered="true" toc="default">
        <name>Revocation Registry</name>
        <t>
          The Revocation Registry accepts token revocation notices from
          authorized principals and returns revocation status for token IDs.
          Revocation is keyed on token_id_hash -- the SHA3-256 hash of the
          token_id -- to preserve privacy while maintaining revocability.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Polling Requirements</name>
        <t>
          Agents MUST poll the revocation registry at the interval specified
          by check_interval_ms before taking any action. The RECOMMENDED
          default interval is 5000 milliseconds. If the revocation registry is
          unreachable, agents MUST NOT proceed with actions unless an
          offline_grace_period_ms is specified and has not been exceeded.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Mid-Chain Revocation</name>
        <t>
          Revocation of a parent token MUST propagate to all derived tokens.
          The registry MUST maintain the full ancestry tree of token
          derivation so that when a root or intermediate token is revoked,
          all descendant tokens are simultaneously marked as revoked.
        </t>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Provenance Chain</name>

      <section numbered="true" toc="default">
        <name>Append-Only Structure</name>
        <t>
          The provenance_chain is an append-only array. Agents MUST append a
          record to the chain before taking any action under the token.
          Records MUST NOT be modified or removed once appended. Each record
          is signed by the acting agent, creating a cryptographically linked
          sequence of accountability records.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Provenance Record Format</name>
        <artwork name="" type="json" align="left" alt=""><![CDATA[
{
  "record_id":      "ipp:pr:uuid4",
  "token_id":       "ipp:tok:parent-token-id",
  "agent_id":       "ipp:agent:uuid4",
  "timestamp":      "ISO8601_UTC",
  "action_type":    "financial.treasury.transfer",
  "action_summary": "Human-readable description of action",
  "resource_id":    "Identifier of resource acted upon",
  "outcome":        "success | failure | partial | blocked",
  "within_bounds":  true,
  "agent_sig":      "ed25519:BASE64URL"
}
        ]]></artwork>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Interoperability</name>

      <section numbered="true" toc="default">
        <name>Framework Integration</name>
        <t>
          The IPP SDK MUST provide integration adapters for the following AI
          orchestration frameworks at minimum: LangChain (Python and
          JavaScript), AutoGen (Microsoft), CrewAI, Microsoft Semantic Kernel,
          and Google Vertex AI Agent Builder. Integration MUST NOT require
          rewriting existing agent logic.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Cross-Organization Trust</name>
        <t>
          When an agent from Organization A must interact with an agent from
          Organization B, the inter-organization trust handshake proceeds as
          follows:
        </t>
        <ol spacing="normal">
          <li>Organization A's agent presents its Derived Token to
              Organization B's agent.</li>
          <li>Organization B's agent verifies the Genesis Seal, validates
              the token signature chain back to a Principal DID, verifies the
              token has not expired, and checks revocation status.</li>
          <li>Organization B's agent verifies that the requested interaction
              falls within the scope defined in the presented token.</li>
          <li>If all checks pass, Organization B's agent may respond and
              optionally issue its own Derived Token for downstream
              actions.</li>
          <li>Both agents append provenance records to their respective
              tokens for the interaction.</li>
        </ol>
      </section>

      <section numbered="true" toc="default">
        <name>Domain Taxonomy</name>
        <t>
          The IPP Domain Taxonomy is maintained at
          https://ipp.khsovereign.com/taxonomy as an open standard with
          community contribution via pull request. KH Sovereign, Inc. serves
          as the taxonomy steward. Current top-level domains include:
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
financial.*      - Financial operations (treasury, payments, trading)
healthcare.*     - Healthcare data and clinical operations
infrastructure.* - Cloud and system infrastructure operations
analytics.*      - Data analysis and reporting
communications.* - Email, messaging, external communications
hr.*             - Human resources and personnel operations
legal.*          - Legal document and compliance operations
security.*       - Security monitoring and response operations
x.*              - Private/experimental namespace (not standardized)
        ]]></artwork>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Implementers MUST be aware of the following security considerations:</t>
      <dl newline="true" spacing="normal">
        <dt>Private Key Compromise:</dt>
        <dd>
          If a Principal's private key is compromised, an attacker can issue
          Intent Tokens on behalf of that Principal. Revocation of all tokens
          issued under the compromised key MUST be performed immediately.
        </dd>
        <dt>Replay Attacks:</dt>
        <dd>
          Intent Tokens are time-bounded by the expires_at field.
          Implementations MUST reject expired tokens. The token_id SHOULD be
          checked against a short-term cache of recently used token IDs to
          prevent replay of valid, non-expired tokens.
        </dd>
        <dt>Scope Creep:</dt>
        <dd>
          The Narrowing Invariant prevents scope expansion in derived tokens.
          However, implementations MUST verify the invariant independently --
          they MUST NOT trust the narrowing_proof field without cryptographic
          verification.
        </dd>
        <dt>Registry Availability:</dt>
        <dd>
          The Revocation Registry is a critical dependency. Implementations
          MUST design for registry unavailability and MUST fail safe when the
          registry is unreachable and no offline grace period applies.
        </dd>
      </dl>
    </section>

    <section numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>
        Intent Tokens contain sensitive information about organizational
        operations. Implementations MUST transmit tokens only over encrypted
        channels (TLS 1.3 minimum). The Revocation Registry uses
        token_id_hash rather than token_id to prevent the registry operator
        from building a map of active tokens. Implementations MUST NOT send
        the full token to the revocation registry.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
        This document requests registration of the URI scheme "ipp:" for use
        as the prefix for Intent Token identifiers (ipp:tok:*), Agent
        identifiers (ipp:agent:*), and Provenance Record identifiers
        (ipp:pr:*). This document also requests registration of the media type
        application/ipp+json for serialized Intent Token payloads.
      </t>
    </section>

  </middle>

  <back>

    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>

        <reference anchor="RFC2119" target="https://www.rfc-editor.org/rfc/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
        </reference>

        <reference anchor="RFC8032" target="https://www.rfc-editor.org/rfc/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author initials="S." surname="Josefsson" fullname="S. Josefsson"/>
            <author initials="I." surname="Liusvaara" fullname="I. Liusvaara"/>
            <date year="2017" month="January"/>
          </front>
          <seriesInfo name="RFC" value="8032"/>
        </reference>

        <reference anchor="RFC8174" target="https://www.rfc-editor.org/rfc/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
        </reference>

        <reference anchor="RFC3161" target="https://www.rfc-editor.org/rfc/rfc3161">
          <front>
            <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
            <author initials="C." surname="Adams" fullname="C. Adams"/>
            <date year="2001" month="August"/>
          </front>
          <seriesInfo name="RFC" value="3161"/>
        </reference>

        <reference anchor="W3C-DID" target="https://www.w3.org/TR/did-core/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author initials="M." surname="Sporny" fullname="M. Sporny"/>
            <date year="2022" month="July"/>
          </front>
        </reference>

        <reference anchor="FIPS202" target="https://doi.org/10.6028/NIST.FIPS.202">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author><organization>NIST</organization></author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="202"/>
        </reference>

      </references>

      <references>
        <name>Informative References</name>

        <reference anchor="RFC8446" target="https://www.rfc-editor.org/rfc/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla"/>
            <date year="2018" month="August"/>
          </front>
          <seriesInfo name="RFC" value="8446"/>
        </reference>

        <reference anchor="RFC6749" target="https://www.rfc-editor.org/rfc/rfc6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author initials="D." surname="Hardt" fullname="D. Hardt"/>
            <date year="2012" month="October"/>
          </front>
          <seriesInfo name="RFC" value="6749"/>
        </reference>

      </references>

    </references>

  </back>

</rfc>
