Skip to content
↑↓ to move · Enter to openEsc to close
Release notes · dns · domain connect · release notes

Domain control evidence, and why AgenID holds no DNS write credentials

Shipped · commits 1806e54

/verify/domain lets an operator show that it controls the domain named in its agent's manifest. The operator publishes an _agenid.<domain> TXT record, and AgenID performs a real DNS lookup for it. For one-click setup the page uses Domain Connect, the open protocol in which the operator authorizes a record change at its own DNS provider.

The architectural decision in this release matters more than the page. There were two ways to offer one-click DNS setup: hold a provider API credential and write into the customer's zone, or have the customer authorize the change where their DNS lives. AgenID chose the second, and later deleted the code for the first.

What the page checks

POST /api/verify-dns performs a real _agenid.<domain> TXT lookup against a per-domain token, joining chunked TXT records, and on a match reports proves: "domain_control". /verify/domain polls POST /api/domain/status, which returns provider detection, one-click availability, TXT record state and the state of the operator's .well-known key document from a single read, so the page cannot display a combination of states that never coexisted.

The token is per domain. That is worth saying because an earlier generated route used one hard-coded token for every user and every domain; it was removed as a fabricated-verification stub on 2026-09-14.

Why AgenID holds no DNS write credentials

A service that proves identity should not hold standing write access to its users' DNS zones. That credential can redirect mail, obtain certificates for the domain and publish a different key document, which is the very evidence a verifier relies on. Holding it would make AgenID a single point from which operator identities could be rewritten.

With Domain Connect the operator signs in to its own provider and approves one specific record. AgenID never sees a provider credential. A route that did hold a Cloudflare or GoDaddy credential existed in the tree, unconfigured. It was later deleted rather than left idle, and a test now forbids any web source file from reading a DNS provider credential or calling a provider write API.

Where one-click stands today

One-click Domain Connect is pending registration of AgenID's service template with DNS providers. Until then the one-click URL is null, and the interface renders no button rather than a link that would 404 on someone else's dashboard. Operators add the TXT record by hand, which the page walks through with the exact name and value.

Provider detection uses spec-literal Domain Connect discovery with a GoDaddy fallback, and a resolver failure on the polling endpoint reports pending and retries rather than failing the flow.

Evidence is not a level

Confirming domain control records evidence. It raises nothing. The reference deployment at agenid.com issues nothing above L1_REGISTERED today: L2 and higher require a VerificationAssertion signed by a root authority key, and that key has not been created yet. L5 is reserved and is not issuable at all.

When L2 does ship, it is planned as the first level above L1 precisely because its evidence is a DNS record any third party can re-derive, so a wrongly issued L2 would be externally detectable.

What it does not do, and how to try it

Which agent is acting is not the same question as what it is allowed to do. AgenID answers the first. Protocol v1.1.1 defines no signed authorization object, so permission stays with the operator and with the party on the other side. Domain control says an operator controls a name. It says nothing about what the operator's agent may do on anyone's behalf.

Open /verify/domain, enter a domain you control, publish the record it shows and wait for the check to complete. The domain control verification and Domain Connect entries cover the background.

Frequently asked questions

Does AgenID ever ask for my DNS provider password or API key?

No. AgenID holds no DNS write credentials. One-click setup, once the template is registered, goes through your own provider, and today you add the TXT record yourself.

Will confirming domain control make my agent L2_DOMAIN_VERIFIED?

No. The reference deployment at agenid.com issues nothing above L1_REGISTERED today: L2 and higher require a VerificationAssertion signed by a root authority key, and that key has not been created yet. L5 is reserved and is not issuable at all.

Why is there no one-click button yet?

Domain Connect requires AgenID's service template to be registered with each provider. Until it is, the page shows manual steps instead of a link that would not work.

What agenid.com issues today

The reference deployment at agenid.com issues DECLARED and L1_REGISTERED only. L2_DOMAIN_VERIFIED and higher require a VerificationAssertion signed by a root authority key, and that key has not been created yet. L5 is reserved by the specification and is not issuable at all.

Identity is not permission

Which agent is acting and who declared it is one question. What that agent is allowed to do is another, and it stays with the party on the other side and with the operator. Protocol v1.1.1 defines no signed authorization object.

Give your agent an identity

Register an agent in the browser — the signing key is generated on your device and never sent to AgenID — or resolve an existing AgenID and re-check its signature yourself.