{
 "slug": "fido-alliance-agentic-authentication-inside-race-standardize-verifiabl",
 "topic_id": "TOPIC-017",
 "cluster": "Agentic Commerce & MCP Tool-Call Gating",
 "tier": "Tier A",
 "title": "The race to standardise verifiable user instructions for AI agents",
 "summary": "Four groups are trying to standardise how a human authorises an agent action. They disagree about what gets signed — and that disagreement, not the cryptography, decides whether any of it works.",
 "lede": "Standards bodies, card networks and agent-payment startups have all arrived at the same conclusion within about eighteen months: agents need a way to carry human authorisation. They have not arrived at the same answer about what the human authorises.",
 "date": "2025-12-29",
 "category": "Future of Work",
 "author_id": "whit-calloway",
 "tags": [
  "FIDO Alliance",
  "WebAuthn",
  "standards",
  "agent authorization",
  "interoperability",
  "identity"
 ],
 "image_title": "Standardising Verifiable User Instructions",
 "schema": "Article",
 "key_takeaways": [
  "The convergence is real: multiple independent efforts have concluded that agent actions need carried human authorisation.",
  "They diverge on the signed object — a capability, a payment envelope, a policy, or the rendered effect. That choice determines what attacks remain possible.",
  "Signing a scope authorises a class of actions. Signing a rendered effect authorises one. Most proposals do the first and are described as though they did the second."
 ],
 "body": [
  {
   "type": "h2",
   "text": "Why everyone arrived at once"
  },
  {
   "type": "diagram",
   "kind": "compare",
   "alt": "Signing a scope authorises a class of future actions; signing an effect authorises one",
   "caption": "Both are needed. The failure is describing the first as though it carried the assurance of the second.",
   "nodes": [],
   "left": {
    "title": "Scope signature",
    "items": [
     "“This agent may do things of this kind”",
     "Bounded by limits and expiry",
     "Right for ordinary agent operation",
     "A compromised agent stays inside it"
    ]
   },
   "right": {
    "title": "Instance signature",
    "items": [
     "“I saw this effect and authorise it”",
     "Bounded to one execution",
     "Right for irreversible actions",
     "No move available inside the signed action"
    ]
   }
  },
  {
   "type": "p",
   "html": "Agent deployments hit the same wall in production. An agent holds credentials, takes actions, and produces no evidence of human authority behind any specific action. Every party downstream — a counterparty, a bank, an auditor, an insurer — eventually asks the same question, and there is no answer to give."
  },
  {
   "type": "p",
   "html": "The convergence on \"carry a signed authorisation\" is genuine and welcome. The disagreement is about what goes inside it."
  },
  {
   "type": "h2",
   "text": "Four answers to one question"
  },
  {
   "type": "table",
   "caption": "What each approach puts under the human signature",
   "head": [
    "Approach",
    "Signed object",
    "Authorises",
    "What survives"
   ],
   "rows": [
    [
     "Capability tokens",
     "A scope and a set of constraints",
     "A class of future actions",
     "Replay within scope; unrendered detail"
    ],
    [
     "Payment mandates",
     "A payment envelope: amount, merchant, window",
     "A bounded payment",
     "Non-payment actions; fields outside the envelope"
    ],
    [
     "Policy attestation",
     "A policy the agent claims to follow",
     "Compliance with a rule, asserted by the agent",
     "Anything the agent misreports"
    ],
    [
     "Rendered effect",
     "The canonical form of this specific action",
     "Exactly this action, once",
     "Nothing outside what was shown"
    ]
   ]
  },
  {
   "type": "p",
   "html": "The first three are easier to deploy and compose better with existing infrastructure. The fourth is narrower and harder to retrofit."
  },
  {
   "type": "h2",
   "text": "The scope-versus-instance distinction"
  },
  {
   "type": "p",
   "html": "This is the whole argument, so it is worth stating carefully."
  },
  {
   "type": "p",
   "html": "A scope signature says: <em>this agent may do things of this kind, within these limits, until this time</em>. It is a delegation. It is the right primitive for most agent operation, because requiring a human signature per action would make agents useless."
  },
  {
   "type": "p",
   "html": "An instance signature says: <em>I saw this exact effect and I authorise it</em>. It is an approval, not a delegation, and it is only tolerable on a small number of actions."
  },
  {
   "type": "p",
   "html": "Both are needed. The failure mode is describing a scope signature as though it carried the assurance of an instance signature — which happens routinely, because the marketing language for both is \"the user authorised it\"."
  },
  {
   "type": "h2",
   "text": "What an attacker does against each"
  },
  {
   "type": "ol",
   "items": [
    "<strong style=\"font-weight:600\">Against a capability token:</strong> operate within scope. A compromised agent holding a valid scoped token produces valid signed actions. Every one of them verifies.",
    "<strong style=\"font-weight:600\">Against a payment mandate:</strong> attack non-payment surfaces. Mandates bound the payment and say nothing about the account change, the address update, or the recipient added beforehand.",
    "<strong style=\"font-weight:600\">Against policy attestation:</strong> misreport. The attestation is a claim by the component being asked to behave.",
    "<strong style=\"font-weight:600\">Against an instance signature:</strong> there is no move inside the signed action. The attack shifts to what was rendered — which is a UI problem with known answers, rather than a cryptographic gap."
   ]
  },
  {
   "type": "h2",
   "text": "Where the standards effort actually matters"
  },
  {
   "type": "p",
   "html": "Not in the signing. Signing a digest with a hardware-backed credential is solved; WebAuthn has done it for years and the mechanism is not in dispute."
  },
  {
   "type": "p",
   "html": "It matters in three places that are much less glamorous."
  },
  {
   "type": "table",
   "head": [
    "Layer",
    "Why it needs a standard"
   ],
   "rows": [
    [
     "Canonicalisation",
     "Two parties must derive the same digest from the same action. Without an agreed canonical form, verification fails on formatting."
    ],
    [
     "Chain semantics",
     "Depth limits, constraint expressions, revocation and expiry must mean the same thing to issuer and verifier."
    ],
    [
     "Verification profile",
     "A verifier must know which trust anchors, which algorithms and which failure modes are mandatory rather than optional."
    ]
   ]
  },
  {
   "type": "p",
   "html": "These are interoperability problems, and they are exactly what standards bodies are for. They are also where fragmentation causes real cost, because a receipt that only one vendor can check is not portable evidence."
  },
  {
   "type": "h2",
   "text": "What to build before the standard settles"
  },
  {
   "type": "p",
   "html": "Standards work takes years. Deployments are happening now. Three decisions are stable regardless of which proposal wins."
  },
  {
   "type": "ol",
   "items": [
    "Canonicalise with a published, deterministic scheme rather than a house format. RFC 8785 is the obvious choice and costs nothing to adopt early.",
    "Separate delegation from approval in your own architecture, with distinct types and distinct verification paths. Conflating them now makes migration painful later.",
    "Render from the canonical form. Whatever the standard settles on, the rule that a human signs what they were shown does not change."
   ]
  },
  {
   "type": "p",
   "html": "An organisation that does those three things can adapt to any of the four approaches. One that has conflated delegation with approval will need to rebuild."
  },
  {
   "type": "h2",
   "text": "The likely outcome"
  },
  {
   "type": "p",
   "html": "Coexistence rather than a winner. Capability tokens for ordinary agent operation, payment mandates inside payment rails, instance signatures on the small set of actions where a dispute is expensive. That is a reasonable architecture and roughly what mature systems already do with human users."
  },
  {
   "type": "p",
   "html": "The risk is not that the wrong standard wins. It is that enterprises deploy scope signatures, describe them as approvals, and discover the difference during a dispute."
  },
  {
   "type": "h2",
   "text": "Where the standards work actually matters"
  },
  {
   "type": "p",
   "html": "Not in the signing. Hardware-backed signing over a digest has been deployed for years and is not in dispute. The interoperability problems are duller and more consequential."
  },
  {
   "type": "table",
   "caption": "Three layers that need agreement",
   "head": [
    "Layer",
    "Why a standard is required"
   ],
   "rows": [
    [
     "Canonicalisation",
     "Two parties must derive the same digest from the same action, or verification fails for formatting reasons unrelated to security"
    ],
    [
     "Chain semantics",
     "Depth limits, constraint expressions, revocation and expiry must mean the same thing to issuer and verifier"
    ],
    [
     "Verification profile",
     "A verifier must know which trust anchors, algorithms and failure modes are mandatory rather than optional"
    ]
   ]
  },
  {
   "type": "h2",
   "text": "Objections and honest limits"
  },
  {
   "type": "p",
   "html": "<strong style=\"font-weight:600\">“We should wait for the standard.”</strong> Three decisions hold under any outcome: canonicalise with a published deterministic scheme, keep delegation and approval as distinct types, and render from the canonical form. An organisation that does those can adopt whichever proposal wins."
  },
  {
   "type": "p",
   "html": "<strong style=\"font-weight:600\">“Capability tokens are insecure.”</strong> They are not. They are the right primitive for bounded delegation, and requiring a human signature per action would make agents useless. They simply do not establish that a human saw a specific effect."
  },
  {
   "type": "p",
   "html": "The likely outcome is coexistence rather than a winner: capability tokens for ordinary operation, payment mandates inside payment rails, instance signatures on the small set of actions where a dispute is expensive."
  }
 ],
 "faq": [
  {
   "q": "Is a capability token insecure?",
   "a": "No. It is the right primitive for bounded delegation and works well for that. It does not establish that a human saw and intended a specific action, which is a different property."
  },
  {
   "q": "Why does canonicalisation need standardising?",
   "a": "Because issuer and verifier must derive the same digest from the same action. Different serialisation of the same data produces different digests and verification fails for no security reason."
  },
  {
   "q": "Should we wait for the standard?",
   "a": "No. Canonicalise deterministically, separate delegation from approval, and render from canonical form. Those three hold under any outcome."
  },
  {
   "q": "Does this require WebAuthn specifically?",
   "a": "It requires a credential under the human's sole control that can sign a supplied challenge with user verification. WebAuthn is the widely deployed way to get that."
  },
  {
   "q": "Is this a criticism of FIDO's work?",
   "a": "No. The signing mechanism is solved and the standards effort is needed precisely for the unglamorous parts: canonicalisation, chain semantics and verification profiles."
  },
  {
   "q": "What is the practical risk of getting it wrong?",
   "a": "Deploying scope signatures, describing them as approvals, and discovering the difference during a dispute."
  }
 ],
 "sources": [
  {
   "t": "FIDO Alliance specifications",
   "u": "https://fidoalliance.org/specifications/"
  },
  {
   "t": "W3C Web Authentication: An API for accessing Public Key Credentials Level 3",
   "u": "https://www.w3.org/TR/webauthn-3/"
  },
  {
   "t": "RFC 8785 — JSON Canonicalization Scheme",
   "u": "https://www.rfc-editor.org/rfc/rfc8785"
  },
  {
   "t": "Visa — security and trust perspectives on agentic commerce",
   "u": "https://corporate.visa.com/en/sites/visa-perspectives/security-trust.html"
  }
 ],
 "related": [
  {
   "slug": "mastercard-verifiable-intent-vs-manav-deconstructing-sd-jwt",
   "title": "Mastercard Verifiable Intent, deconstructed",
   "category": "Comparison"
  },
  {
   "slug": "intelligence-cannot-mint-permission-mcp-security",
   "title": "Intelligence cannot mint permission",
   "category": "Developer"
  },
  {
   "slug": "consumer-mandate-receipt",
   "title": "Visa made cardholders responsible for their agents",
   "category": "Vertical"
  }
 ],
 "image": "https://cdn.twc.sh/images/igcache/Standardising%20Verifiable%20User%20Instructions/1200_630/blog.jpg",
 "wordcount": 1148,
 "url": "/blog/fido-alliance-agentic-authentication-inside-race-standardize-verifiabl.html",
 "reading_time": "5 min read",
 "seo_title": "Standardising verifiable user instructions for agents",
 "meta_description": "Four groups are standardising how a human authorises an agent action. They disagree about what gets signed, and that decides whether it works.",
 "hub": {
  "slug": "topics/agent-tool-call-gating",
  "title": "Agent tool-call gating"
 },
 "answer": "Not the cryptography, which is settled. They disagree about what goes under the human's signature: a capability scope, a payment envelope, a policy the agent claims to follow, or the rendered effect of one specific action. That choice determines which attacks remain possible.",
 "answer_q": "What are the standards bodies disagreeing about for agent authorisation?",
 "entities": [
  {
   "name": "FIDO Alliance",
   "type": "Organization",
   "url": "https://fidoalliance.org/specifications/",
   "primary": true
  },
  {
   "name": "World Wide Web Consortium",
   "type": "Organization",
   "url": "https://www.w3.org/TR/webauthn-3/"
  }
 ],
 "glossary": [
  {
   "term": "Capability token",
   "def": "A signed grant describing a class of permitted future actions, with constraints and an expiry. A delegation, not an approval."
  },
  {
   "term": "Instance signature",
   "def": "A signature over one specific rendered effect, valid for one execution."
  },
  {
   "term": "Canonicalisation",
   "def": "Reducing structured data to a single deterministic serialisation so that the same facts always produce the same digest."
  }
 ],
 "checklist": {
  "title": "Three decisions that survive any standard",
  "id": "decide",
  "desc": "What to build now, before the working groups converge.",
  "steps": [
   {
    "name": "Canonicalise with a published scheme.",
    "text": "RFC 8785 costs nothing to adopt and makes your digests reproducible by anyone."
   },
   {
    "name": "Separate delegation from approval.",
    "text": "Distinct types, distinct verification paths. Conflating them now makes migration painful later."
   },
   {
    "name": "Render from the canonical form.",
    "text": "Whatever wins, the rule that a human signs what they were shown does not change."
   },
   {
    "name": "Record which tier was used.",
    "text": "So a later reader knows whether an action carried a scope grant or an instance signature."
   }
  ]
 },
 "cta": {
  "title": "Where this fits in Manav",
  "html": "Manav implements both tiers as distinct objects: a delegation carrying scope, expiry and depth, and a receipt carrying one rendered effect. Both canonicalise with RFC 8785 and verify offline, so neither is locked to a standards outcome.",
  "href": "../architecture.html",
  "label": "Read the architecture"
 }
}