[Atp] Re: Opening the AT URI (at://) Syntax Discussion

Paul Syverson <aslovensyrup@gmail.com> Sat, 11 July 2026 15:15 UTC

Return-Path: <aslovensyrup@gmail.com>
X-Original-To: atp@mail2.ietf.org
Delivered-To: atp@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 648AC115168BB for <atp@mail2.ietf.org>; Sat, 11 Jul 2026 08:15:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1783782913; bh=q/HEzT34H9nUo5i/Fmytstv5XWY1EPvWsYKqQTE5q6Y=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=ZJMXdbJdDHtypTuvzhaVOLP5hZTvcutl9IOtTwcDk89F5W50kt+EWe9r8z6YhDpRY BalZIE+/b8SLPfa8Omjq91pBNxDVDd9HuoaUeY+LqiNqtYR7VuVLdu1wZS9/1xSAAo HXu1wjGGqILkqtDXdPEEl0LeGhcsH6j6JthbxtVw=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ERmygPftjBKa for <atp@mail2.ietf.org>; Sat, 11 Jul 2026 08:15:11 -0700 (PDT)
Received: from mail-qt1-x82e.google.com (mail-qt1-x82e.google.com [IPv6:2607:f8b0:4864:20::82e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id B3A94115168AF for <atp@ietf.org>; Sat, 11 Jul 2026 08:15:11 -0700 (PDT)
Received: by mail-qt1-x82e.google.com with SMTP id d75a77b69052e-51c2a76536bso17952391cf.1 for <atp@ietf.org>; Sat, 11 Jul 2026 08:15:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783782911; x=1784387711; darn=ietf.org; h=in-reply-to:content-transfer-encoding:content-disposition :content-type:mime-version:references:message-id:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to:content-type; bh=J8Ewp7aBrX1ffyVTKirn4fCFfkJkWFrrqkVz2SGjCQs=; b=C5mwIKH1cJDFVWHRKvVO+YdDRujt/f+VOBzIV7uXx2PM9UL5E4t35ny9+7vA9atFQI emcEo7g4M+NTf1lso2w5806937DMDCJZXxfIXW2rgQRS8Oqp/TLZ/hQyLCiYo3TPmH0+ APUw9IvsCGI0JIXsznySX65t3UDYvFUOPQW2qscwUetu6BZzwFNKlTOqwixrFam08tg1 vFgHGbTu1RzdlFbw6CbTGlhf1AmIWszDdoEQaGLbrN4wboa2lqOFbF0ZLM/MFLU21UxF yHdoVFiXKISrT7pZ0NINT3rFrSYDe3VLb0FFpV9omolJEToXmXUBuwrQ3eyV8UYaCKUB aLyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783782911; x=1784387711; h=in-reply-to:content-transfer-encoding:content-disposition :content-type:mime-version:references:message-id:subject:cc:to:from :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=J8Ewp7aBrX1ffyVTKirn4fCFfkJkWFrrqkVz2SGjCQs=; b=IGsuHTZ8s4l1Kwe02wP+/Otoh/XtRXeOOj2VKvL5Ao/NNHevXB26G+KlmE1wqyCck+ T2gxVXvj30oahrZXxmv8L1Qh2VUMBAVWLBDXvsqhqnucEIEWgAIOB0A9O+cHwUdWbwG2 EN1q4TXnNF9DpWkITDrfmLSuUs4Bys/Kaas1033DgwI2Yp9OhuObmA3NKEACtQ9mtnuW iG/os9g+SRBCFBVryciEpz4cZMNBr33P5rEZGqcFk9DovxNCRifeyEInftmuGEzUjxRz v+PCkbyAZWxOhDrjofYJMN8fVp8vyZcTIdiNYgObgr+ZDSGybkJO/CiGzeqGqUy03siy vifg==
X-Gm-Message-State: AOJu0YygsU9PiLvjZfiizO2LJoVE22QSnTmNoduDhODWpXQ+IiXyQClT nr0MQOMchCcjf7LI2xMTr1eUJjUW/P87lHBXigKRlU55yB8P6e6sqaRd
X-Gm-Gg: AfdE7cnmL+L3s+zwUDzy+ZHvw94qg1u21/N6Es/AVJ3o1exozMWHZu0k51zt36A9bdh NQpaBwXgt6+bmkvDwDhkRCDQQNgnYRH+EhJTfR+jeeXgdQ9ByXoHq4/H+JJqC2/spVmsZJ1yDcl v0eAvdq9pdhr3VpyQ/R+aOaxSr/zDQQHsmi4XCx9F0B+hgEiXiCnA5Dzp6OZfMehAw/qY3PIRQ5 xBJHq1VHFIXnL8PUSEDRRJToTkyns37uQtezlAKFBRO7cvBZDNEayRJLXQFa5egMzN6AIP85tEy UEt7YuGt1PqzmN25TxYDU4PvOIHiXRD1EbisBwQjw83yZLcqs9a+SN4rpSkZY4e0LkJpmKynOCG lRt58qYChKOeZGOEBEE7XklKnlB+HhMpbnNZXiBQEQaSOYk8ZkCTJAmOxjVJiRTtzxvmkyqmf5Y VxDMXDwODwXwg73FW0RfKQ2ui5qOobeLNBgyrO2rv2HsVrut9suKhjpAbtcpu3OpoUUU55UNL93 g==
X-Received: by 2002:a05:622a:5a09:b0:50f:b13e:b746 with SMTP id d75a77b69052e-51cbf26ed4emr35110551cf.44.1783782910925; Sat, 11 Jul 2026 08:15:10 -0700 (PDT)
Received: from heap (pool-108-48-72-248.washdc.fios.verizon.net. [108.48.72.248]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8ffd7c1e8aesm68394536d6.28.2026.07.11.08.15.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jul 2026 08:15:09 -0700 (PDT)
Date: Sat, 11 Jul 2026 11:15:08 -0400
From: Paul Syverson <aslovensyrup@gmail.com>
To: Bryan Newbold <bryan=40blueskyweb.xyz@dmarc.ietf.org>
Message-ID: <alJd_HIAA-4vbzmm@heap>
References: <CABFYohg6ZCym+OJr9W2TmHb2MLasyiU+GghST0e5VsdiGiQDEg@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CABFYohg6ZCym+OJr9W2TmHb2MLasyiU+GghST0e5VsdiGiQDEg@mail.gmail.com>
Message-ID-Hash: SGA3BOW5X4NC4BZL6SHXR3BSLAQUY2CP
X-Message-ID-Hash: SGA3BOW5X4NC4BZL6SHXR3BSLAQUY2CP
X-MailFrom: aslovensyrup@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: atp@ietf.org, Paul Syverson <aslovensyrup@gmail.com>, Paul Syverson <paul.f.syverson.civ@us.navy.mil>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Atp] Re: Opening the AT URI (at://) Syntax Discussion
List-Id: Authenticated Transfer <atp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/atp/xSNOiuvQl2xJ98D4qnJQb9ha2PQ>
List-Archive: <https://mailarchive.ietf.org/arch/browse/atp>
List-Help: <mailto:atp-request@ietf.org?subject=help>
List-Owner: <mailto:atp-owner@ietf.org>
List-Post: <mailto:atp@ietf.org>
List-Subscribe: <mailto:atp-join@ietf.org>
List-Unsubscribe: <mailto:atp-leave@ietf.org>

Hi Bryan and all,

Sorry, topposting and responding to the original message because
I am responding more to the entire thread up to this point rather
than individual messages per se (though I do quote from one of them).

First I would like to voice support for Nick's proposal for lax and
strict syntax. I'm all for trying to move the mountain if that makes
sense in the long run, but I am also in favor of doing things now that
progress the agenda while maximizing compatibility with both existing
practice and existing standards.  It's all trade-offs and compromises,
but this proposal strikes me as the one amongst those Bryan set out in
his blog post and/or were raised on the list that provides such
maximum compatibility.

A few reactions to things that have been said:

On Tue, Jul 07, 2026 at 10:07:33PM -0400, Roscoe Rubin-Rottenberg wrote:
> The fact that handles aren´t a persistent identifier (people can
> change their handle) makes that a non starter. I think either Brian
> or Daniel mentioned that they actually think the opposite should be
> true. Handles should be disallowed in URIs because it breaks future
> URIs and isn´t a persistent identifier.

I find this misleading in a couple of ways. A handle that is a
registered domain can effectively also be a did:web DID (of course not
exactly, which is a major element of this discussion). So, the first
point is that, for most current usage, in this case the handle and the
DID are equally permanent. Indeed, the lack of persistent transparency
here is a motivation for the work on did:webvh. I said "most current
usage" because a did:web DID does not always have to correspond to the
handle in this way. As one example, Nick and I have work that uses a
clearweb URL example.com as handle with a DID, did:web:xyz...123.onion
(more on that below).

The next point is that this (and some other posts) reflects the
perspective primarily of developers (understandably). It overlooks an
important feature of handles: not their impermanence, but their
meaningfulness. Developers and administrators may be mostly using
did:plc syntax, but users much less so. It is a virtue that
https://atproto.com/specs/at-uri-scheme allows both handles and
DIDs as authorities.

https://atproto.com/specs/at-uri-scheme is also misleading. It says,

   A major semantic difference between AT URIs and common URL formats
   like https://, ftp://, or wss:// is that the "authority" part of an
   AT URI does not indicate a network location for the indicated
   resource.

Misleading here is the idea that domain names represent network
locations. That is, at best, only after DNS resolution (which is
subject to lots of issues I will skip so as to not make this post even
longer).

The problem with handles is not so much their impermanence. How and
why links, names, data stores, etc. die matters, PLC DIDs are
reflected in transparent public append-only logs, but we shouldn't
pretend that even PLC DIDs are permanent. If somone in control of the
DID loses/corrupts all copies of all their private keys and then gets
hit by a bus, the DID is a dead as they are. The primary tension is
rather between identifiers that are typically meaningful (e.g. handles
or domain names) and identifiers that are self-authenticating (e.g.,
PLC DIDs or onion addresses). But one can have identifiers that are
both. There are a few ways to do that. Rather than get into it,
I will just note that there is code to bind these together as well
as to check when these are properly bound together and when they are not
https://github.com/ngerakines/domain-attestations

Si sanus es, sanus sum,
Paul

On Thu, Jul 02, 2026 at 12:41:37PM -0700, Bryan Newbold wrote:
> Hi folks,
> 
> I want to kick of a thread to discuss the AT URI syntax, and in particular
> the use of DID syntax (with multiple colons) in the "authority" part of the
> URI. This group is chartered to formalize the "at://" URI scheme in a
> standards-track document. But the currently deployed URIs (with billions of
> strings in the wild) are unfortunately not strictly valid under RFC 3986.
> 
> I recently wrote a blog post about the situation[0]:
> https://bnewbold.leaflet.pub/3mph4hzvbdc2v
> 
> Here is an example URI:  at://did:plc:vwzwgnygau7ed7b7wt5ux7y2/
> app.bsky.feed.post/3k5nobkf2w72g
> 
> Here is the current AT URI syntax specification (which will form the basis
> for a URI scheme I-D) as an informative reference:
> https://atproto.com/specs/at-uri-scheme
> 
> I provisionally registered the "at" URI scheme with IANA back in 2023:
> https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
> 
> One path forward would be to "move the mountain" and try to change the IETF
> URI syntax rules to be more permissive about the "authority" part. This
> would make the current AT URI syntax valid. I assume this would be
> difficult, but could be a positive contribution to the broader internet
> ecosystem in the long run.
> 
> Another path forward would be coming up with a variant syntax or encoding
> which is valid under the current rules. Realistically, the existing syntax
> would need to be supported indefinitely in "legacy" form. For example,
> replacing colons in DIDs with dashes ( at://did-plc-abc123/... ).
> 
> --bryan
> 
> [0]: I'm not sure what the etiquette is, but i'd be happy to copy/paste
> this long-form blog post in to an I-D or on to this mailing list if helpful

> _______________________________________________
> Atp mailing list -- atp@ietf.org
> To unsubscribe send an email to atp-leave@ietf.org