[OAUTH-WG] New Draft: draft-williams-oauth-poi-core-00 (Proof-of-Intent Core)

Paul Williams <paul@barefootcoders.com> Fri, 06 November 2026 20:06 UTC

Received: from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com [IPv6:2607:f8b0:4864:20::112d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by mx.ietf.org (Postfix) with ESMTPS id DA96A46 for <oauth@ietf.org>; Fri, 06 Nov 2026 20:06:57 +0000 (UTC)
Authentication-Results: mx.ietf.org; dkim=pass header.d=barefootcoders.com header.s=google header.b=C3tw9N2f; spf=pass (mx.ietf.org: domain of paul.williams@barefootcoders.com designates 2607:f8b0:4864:20::112d as permitted sender) smtp.mailfrom=paul.williams@barefootcoders.com; dmarc=pass (policy=none) header.from=barefootcoders.com; arc=pass ("google.com:s=arc-20260327:i=1")
Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-8b315dd057bso7007167b3.1 for <oauth@ietf.org>; Fri, 06 Nov 2026 12:06:57 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1793995617; cv=none; d=google.com; s=arc-20260327; b=XbXhTkoyfQy8X0tvCii9pgY/GRd5V+c5zztskuv0923zXx08l+yjienCtIzatZN/lG b01h9YswHuWwtCwVnOpH0EcE94YTZw6aY+RMcJtVOjVFv5tzMeNXha7BKnfQ9yz2/r8b bqvgwK2gZ4td+H0Z7oXrdNW3PlAVT6+EOUqXG9tyoV2e3M+mD/aI8SH2MFijl/mwbwqE fWZzIFBgTIdMA2HbPUvQaz4bJTjLCphb3C704udWBcCxbmTZYWpN7xyS2FxiWRUOGbub kTG0DJrvRD42dsqg+7U+SaZhqQlKnjkyuONCaaGUGPHfT7davRHrSPmVtL4Qp6B6UNcd vEwA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=3xm19a3eu2cl5uSpvauRyNHro3wj+RgdKpjQX8Ygxio=; fh=HRwJNtTTtPgtfgvXyPaPq+Te1JrkxlJZMfmgN30AIzQ=; b=NCl6DuoO1X9eABeJRDXGGy8AUFILgeEH1sxTl6MYqjpy9IA3n3qt0AoDHTH5r+s23e a9PHDGVFcMIGtfITqsSBtV7/rBLaCRi7UKfeCCtouNp2eCdmkOiAwiiVvO5PxwD8AC+0 cxDVAnYRyOLykSyZAJm8sgxwxOyb7URavLkRCWK7U15WCyoCWr7sgMF7J2KSronF3QQy Qu0YMetu+y4kJjwtnXkhremHLTJvNHPIz+l9yHejmjR7X3900oCUnKtcp0iKGjoONevZ Ij9lWjlQsJNdmHfD3SHb+GPWURHhYxKMcezGIcBLm/H8kdD76nQAQdqPsfdVL0pXZi9o Nojg==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=barefootcoders.com; s=google; t=1793995617; x=1794600417; darn=ietf.org; h=content-type:to:subject:message-id:date:from:mime-version:from:to :cc:subject:date:message-id:reply-to:content-type; bh=3xm19a3eu2cl5uSpvauRyNHro3wj+RgdKpjQX8Ygxio=; b=C3tw9N2fBA5y1a1UOgOFhRrrwAGStvmNXfQXIfwmIYmgS7e8dKxQzyFoa5gRKq+yAz XT4G5bo1xDW/30YyIpAPwOnxs2+LCjHcmTjHwNanKE8SifA4Kca5FPafoim3L6ixkTC6 apzqTVIox9H2xfOprE2luasDU0uE4sbRGpXV+uxiB6o8oDO2SI6zhDhiyd7Uhx+GIMt1 f5yhUhujMV7DFK/wUKAb6bKNTHbqL2WcsuSG1ffBgwjkdEWlszEIV5XZtbWq+59LD5CF +tYQntVyV4nLFSLf84160duiBQCrrWWbMCaikwBohQUFQn4Zcn/HemO1xob+6YzTY5+J 38Ew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793995617; x=1794600417; h=content-type:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=3xm19a3eu2cl5uSpvauRyNHro3wj+RgdKpjQX8Ygxio=; b=gufEJjDwhKLpwHNVesoafY/76e6Izvw9JxWSaHUD835hiP+gYo5624lEfPNHSIyBWU 6DeNywHQle+29x1ER0C48wcsZtY6hwgHbvp72eqzbL7flmoykz1rwhb1TDXleY2zJlTD vOEOcH4JFBc8UQ0sXpmoti6pbvwrF71IqpIxQql37Cu33qs3QxcA1yk0p1abZ6MzJkMT 8B1cZy//VbeObiULAI24j68usm+I7HDOJuHmDNn8BbJasQES2O2FEpaYF2OyPHhvnjK4 a0cGTuubBiBYZHqHCz2C4kYS79BiP8XnCT83sM0cFoCdb+PkwtTwPRB+iwDkMJE3Jeb6 90uQ==
X-Gm-Message-State: APuU4Z8J8+BJToZbFowWoF/cnHNMPUmvrWxzVROOdkFomMHpeji/FUxk /XRfLpOIX0R5Cv6HU0NKwE6zoSJloQDR65MN+shyRd6TrhklIfXecshzGEXfbEZK+reBcZRZHuy dj5i8xBDhTYRtzHNaY+1LU5sSFEF+zJ/vTcF3k9TWb5d+69hMGX8/fVk=
X-Gm-Gg: AYBFou1fljEX9gIg4nx732yX9kArVETjW8WuZ4bFj0yU1EPmQlFNXindZwawT9oKYwf AS6su18cdyONHfH9fZ7yjtDXnYxXPWDfxQMlz+v5AeSZSroeoQg9KYXLkzW4CdIU3dGP814ZJED US1lfMDc8N4yLDmA5jP3e/Vyi0tgs3p1+0iRDAR07EthGkTpqEZ5wkfjHGqccnk2PPGid6Am/It QNlrgErFdrCkznM+doDe0Pzvwxtbi/1j+2zeifVuSy8uwcxOgi/tWg+VFlnhNysxiRLCInfHEcm yHDIpSEulTrGZR2cGnWegYmfjOTyeug3dwWbmW6Wwya02KgN4hOUCjD/ibtiekrZ2aG9cvVxPYh nVbSe681ozKG/9yBMNKJ7/QqIKQo04k1fUgIlielhbNs82aD9ggpobRwRF8LkoBPoAu9ebmytzq AevCvP4XlpamTLLQYLB9PPoP4OQn6GDix0UsOPqDFsaUSu53DpyZ2QRk9DmqTzNZn6Uho4xTLAJ q0eublRBiB+anhiLA==
X-Received: by 2002:a05:690c:c50d:b0:8b3:5121:3d7d with SMTP id 00721157ae682-8b35121411emr7721597b3.30.1793995616958; Fri, 06 Nov 2026 12:06:56 -0800 (PST)
MIME-Version: 1.0
From: Paul Williams <paul@barefootcoders.com>
Date: Fri, 06 Nov 2026 13:06:45 -0700
X-Gm-Features: AclHuK9-B51Ke0QmKM6gRaXIhMKSC9wOo0x6tGGPnPqUq4vmsjfCGLyPMs9GSsY
Message-ID: <CAPbki7e5RdS7k1Aus==iABBkSRM-rMhqj9Q5F6snG9DT+L08qw@mail.gmail.com>
To: oauth@ietf.org
Content-Type: multipart/alternative; boundary="0000000000007a4fe3065fa1278e"
X-Spamd-Bar: ----------------
Message-ID-Hash: 2QK225YRT62BXXFD54GVZKZ5ZXMSD3GK
X-Message-ID-Hash: 2QK225YRT62BXXFD54GVZKZ5ZXMSD3GK
X-MailFrom: paul.williams@barefootcoders.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-oauth.ietf.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.10
Precedence: list
Subject: [OAUTH-WG] New Draft: draft-williams-oauth-poi-core-00 (Proof-of-Intent Core)
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/FD4LLf6MJkGO-7gEassAblQJD90>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Owner: <mailto:oauth-owner@ietf.org>
List-Post: <mailto:oauth@ietf.org>
List-Subscribe: <mailto:oauth-join@ietf.org>
List-Unsubscribe: <mailto:oauth-leave@ietf.org>

Hi OAuth WG,

I have submitted a new individual Internet-Draft,
draft-williams-oauth-poi-core-00:
https://datatracker.ietf.org/doc/draft-williams-oauth-poi-core/

A companion extension covering multi-hop escalations and concurrency is
also available:
https://datatracker.ietf.org/doc/draft-williams-oauth-poi-chained-state/

Motivation and Common Ground with AAuth

The recent discussion around draft-rosenberg-oauth-aauth highlights a
consensus
in the working group:

1. AI agents cannot be trusted with broad, ambient access tokens.
2. AI agents cannot be trusted to author their own approval justifications
(under prompt injection or hallucination, an agent can misrepresent its
actions to the human).
3. The Resource Server (RS) must generate the human-readable explanation
and sign it inside a challenge, as only the RS understands the operational
semantics of the request.

I strongly agree with these premises. Where Proof-of-Intent (PoI) diverges
from AAuth
is on the operational mechanics: specifically, whether human approval
should result in an
elevated bearer token issued via an Authorization Server (AS) round-trip,
or an atomic,
stateless cryptographic attestation delivered directly to the Resource
Server.

The Architectural Contrast with AAuth

1. Atomic Transaction Attestation vs. Ambient Scope Elevation

In AAuth, user approval results in the AS issuing an access token with
broader scope (e.g., 'reservations.write'). Once granted, the agent holds a
time-bounded ambient capability that could be reused for other unreviewed
operations until expiry.

PoI Core does not elevate the agent's access token. Instead, the human
signs an atomic
Proof-of-Intent Envelope (PoIE) committing to the exact canonical SHA-256
hash of the
transaction parameters (RFC 8785 JCS). The RS verifies the signature and
executes only
that specific action.

2. Eliminating the "AS Round-Trip Tax"

AAuth models human approval through the AS (using HTTP polling, SSE
streams, or WebSockets to wait for token delivery).

PoI Core completely removes the AS from the live transaction path. During
initial session
login, the client generates a short-lived Ephemeral Intent Key (EIK)
certified by the AS
via RFC 7800 'cnf' claims. When the RS challenges an action, the client
signs the challenge
locally and returns it directly to the RS. Runtime verification is entirely
stateless at the RS.

3. In-Situ Signing Vault vs. Out-of-Band Redirects

AAuth relies on out-of-band mobile push notifications or instructs the
agent to launch a browser to the AS's user approval endpoint.

PoI Core defines a client-side Signing Vault (e.g., an isolated iframe or
secure enclave) embedded in the agent application. The vault validates the
RS's signed display facts and presents the approval prompt directly in the
user's primary workflow.

4. Hardware-Backed Step-Up Assurance

PoI Core integrates W3C WebAuthn Level 3 directly into the challenge
semantics. The RS dynamically dictates the required assurance tier based on
consequence: Tier 1 (session key PoP), Tier 2 (platform biometrics like
TouchID/Windows Hello), or Tier 3 (FIDO2 cross-platform hardware tokens).

5. Alignment with Established Stateless Prior Art

Rather than inventing new stateful queuing patterns, PoI builds on
battle-tested prior art:
- FAPI / PSD2 Dynamic Linking (RTS Article 5): Applying "What You See Is
What You Sign" directly to agent parameter payloads.
- DPoP (RFC 9449) & RFC 7800: Lifting proof-of-possession key confirmation
from HTTP transport to application transaction intent.
- WebAuthn: Validating that client-held keys and local challenge-response
scale without an IdP in the critical path of every operation.

Running Code & Implementation Status

In the spirit of "rough consensus and running code", an open-source
reference implementation of the PoI challenge-handling, key rotation, and
verification pipeline is available in the Mandrel Collet repository:

https://gitlab.com/the-mandrel-project/mandrel-collet
https://gitlab.com/the-mandrel-project/mandrel-demo/-/tree/main/scripts

I see PoI Core as a high-performance, stateless complement to the ongoing
agentic authorization discussions in OAuth. I welcome feedback from the
list on the cryptographic bindings and operational trade-offs, and I would
be glad to request agenda time to present a brief comparison at an upcoming
interim or meeting.

Regards,

Paul Charles Williams
Barefoot Coders, LLC
https://mandrelproject.ai