{"id":10637,"date":"2026-10-05T07:20:00","date_gmt":"2026-10-05T05:20:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10637"},"modified":"2026-09-25T09:45:52","modified_gmt":"2026-09-25T07:45:52","slug":"web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/","title":{"rendered":"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves"},"content":{"rendered":"<p>An agentic browser looks like a person in an analytics report because it is a genuine browser engine. The question of who is actually asking can only be estimated from behaviour &#8211; or answered by the other side, by signing.<\/p>\n<p>That is what Web Bot Auth is. The mechanism is short, the cryptography unspectacular, and the most interesting thing about it is what it expressly does not prove.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/agentenunterschrift-en.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"A directed graph of six nodes: operator, key pair, the request with three headers, verifier, key directory on the operator&apos;s own domain, and a red-bordered node for the agent&apos;s future behaviour, reached only by a dashed edge\"><figcaption>Five edges are solid and demonstrable. The sixth is dashed because it does not exist &#8211; and it is the one usually meant in conversations about verified agents.<\/figcaption><\/figure>\n<h2>What travels on the wire<\/h2>\n<p>The basis is RFC 9421, HTTP message signatures. The operator of an agent generates an Ed25519 key pair, publishes the public half as a JSON web key set at a fixed path on a domain it controls, and signs every outgoing request. Three headers carry the result.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>Signature-Agent: \"https:\/\/example-agent.com\"\nSignature-Input: sig=(\"@authority\" \"signature-agent\");\n                 created=1700000000;\n                 expires=1700011111;\n                 keyid=\"poqkLGiymh_W0uP6PZFw-dvez3QJT5SolqXBCW38r0U\";\n                 tag=\"web-bot-auth\"\nSignature: sig=jdq0SqOwHdyHr9+r5jw3iYZH6aNGKijYp\/EstF4RQTQdi5N5YYKrD+mCT1HA1nZD\u2026\n\n  directory     \/.well-known\/http-message-signatures-directory\n  content type  application\/http-message-signatures-directory+json\n\n  The bracket after sig= names what is signed. Here it is two\n  components: the target host and the directory reference.<\/code><\/pre>\n<p>The verifier reads <code>Signature-Agent<\/code>, fetches the directory from there, looks up the key named by <code>keyid<\/code>, rebuilds the signature base from the components named in <code>Signature-Input<\/code>, and recomputes the signature.<\/p>\n<h2>What the signature proves<\/h2>\n<p>Two things, and both are strong. First: whoever produced it holds the private key matching a public one published under a particular domain. Second: they control that domain, since otherwise they could publish nothing there. Together that yields a verifiable origin, and that is more than a string in the user agent ever was.<\/p>\n<p>Added to this is the substitute for replay protection: <code>expires<\/code> bounds the validity, and a signature presented after that moment is rejected. A captured request cannot therefore be reused indefinitely.<\/p>\n<h2>What it does not prove<\/h2>\n<p>The signature covers named components, in the published example the target host and the directory reference. It does not cover the body of the request, and it says nothing about intent. It proves identity, not behaviour.<\/p>\n<p>A valid signature is therefore not a permission. A cleanly signed agent can scrape the same content as an unsigned one, only demonstrably so. The gain lies not in defence but in accountability: knowing which operator asked makes a rule per operator possible &#8211; and, in a dispute, makes it provable who was there.<\/p>\n<h2>How to verify it<\/h2>\n<p>The check is manageable and worth doing as an exercise, because it shows the limits of the scheme directly. Four steps: read <code>Signature-Agent<\/code> and test it against an expected domain; fetch the directory at the fixed path and find the key for <code>keyid<\/code>; assemble the signature base from the components named in <code>Signature-Input<\/code>, in the order given; compute the Ed25519 check and hold <code>expires<\/code> against the local clock.<\/p>\n<p>The third step is where in-house implementations fail, because the signature base has to match byte for byte. Building it by hand once also explains why the body is not signed along with it: it would have to be buffered in full before the first check could begin.<\/p>\n<h2>The state of play, stated honestly<\/h2>\n<p>Both specifications are Internet-Drafts &#8211; the architecture and the directory, the latter at its fifth revision. An IETF working group has been dealing with it since early 2026, no adopted document exists, and drafts do still change header names and paths.<\/p>\n<p>At the same time several large network and security providers already verify these signatures in production. For a single site that means: understand it, yes; depend on it, not yet. And the sentence to keep in mind while reading the announcements is in the picture as a dashed edge &#8211; a signature proves who is asking, and never what they intend.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Can anyone simply fill the Signature-Agent header with the domain of a well-known operator?<\/h3>\n<p>Writing it is easy; getting it to verify is not. The check fetches the key from the directory of exactly that domain, and without the matching private key the Ed25519 verification fails. Because Signature-Agent is itself one of the signed components, it cannot be swapped for another domain afterwards either.<\/p>\n<h3>Can a captured, valid signature be reused before expires is reached?<\/h3>\n<p>Within the window, in principle yes. expires is only a substitute for replay protection: it limits how long a signature is valid, but it does not stop the same signature from being presented several times during that period. In the example, created and expires are 11,111 seconds apart, a little over three hours.<\/p>\n<p>Then there is the question of what is signed. In the example it is only the target host and the directory reference, not the path, the method or the body. Anyone who knows the three headers of such a request can therefore attach them to a different address on the same host within that period, and the check still succeeds.<\/p>\n<p>In practice this requires the headers to fall into other hands in the first place. Over HTTPS they are encrypted on the wire, but they are visible wherever TLS terminates, at a CDN or a reverse proxy for example, and in logs that record headers. For a rule per operator this means: a valid signature shows that the operator produced these headers, not necessarily that it sent this particular request.<\/p>\n<h3>Does Web Bot Auth help to filter agents out of an analytics report?<\/h3>\n<p>Only where the request headers arrive. The signature sits in the headers of the HTTP request, and those are seen by the server, a CDN in front of it or the server log. A measurement tag running as JavaScript in the browser cannot read the headers of the request that loaded its own page, so an agentic browser still counts as a person there.<\/p>\n<p>Getting the distinction into the report means making it on the server: running the check there and passing its result on, for instance as a flag the page hands to the tag, or by measuring on the server itself. This presumes that the agent signs at all; unsigned agents stay as invisible as before.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9421.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9421: HTTP Message Signatures (February 2024)<\/a><\/li>\n<li><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/draft-meunier-web-bot-auth-architecture\" target=\"_blank\" rel=\"noopener noreferrer\">IETF draft: HTTP Message Signatures for Automated Traffic \u2014 Architecture<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/cloudflare\/web-bot-auth\" target=\"_blank\" rel=\"noopener noreferrer\">Cloudflare: web-bot-auth reference implementation<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Web Bot Auth signs agent requests with Ed25519 per RFC 9421, publishes the public key as a JSON web key set at a fixed well-known path, and lets a site verify who asked. It proves the operator and the domain &#8211; and nothing at all about intent.<\/p>\n","protected":false},"author":1,"featured_media":16067,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[91380,91392,91115],"class_list":["post-10637","post","type-post","status-publish","format-standard","hentry","category-cloud-ai","tag-artificial-intelligence","tag-rest-api","tag-web-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"How Web Bot Auth works: the three headers, which components are signed, the well-known key directory, and the one thing a signature never proves.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"How Web Bot Auth works: the three headers, which components are signed, the well-known key directory, and the one thing a signature never proves.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-05T05:20:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10637-a-signature-an-agent-brings-along-nz.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves\",\"datePublished\":\"2026-10-05T05:20:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/\"},\"wordCount\":1002,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10637-a-signature-an-agent-brings-along-nz.png\",\"keywords\":[\"Artificial Intelligence\",\"REST API\",\"Web Security\"],\"articleSection\":[\"Cloud &amp; AI\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/\",\"name\":\"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10637-a-signature-an-agent-brings-along-nz.png\",\"datePublished\":\"2026-10-05T05:20:00+00:00\",\"description\":\"How Web Bot Auth works: the three headers, which components are signed, the well-known key directory, and the one thing a signature never proves.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10637-a-signature-an-agent-brings-along-nz.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10637-a-signature-an-agent-brings-along-nz.png\",\"width\":1200,\"height\":630,\"caption\":\"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/cloud-ai\\\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves | Lukas Wojcik","description":"How Web Bot Auth works: the three headers, which components are signed, the well-known key directory, and the one thing a signature never proves.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/","og_locale":"en_US","og_type":"article","og_title":"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves | Lukas Wojcik","og_description":"How Web Bot Auth works: the three headers, which components are signed, the well-known key directory, and the one thing a signature never proves.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-05T05:20:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10637-a-signature-an-agent-brings-along-nz.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves","datePublished":"2026-10-05T05:20:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/"},"wordCount":1002,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10637-a-signature-an-agent-brings-along-nz.png","keywords":["Artificial Intelligence","REST API","Web Security"],"articleSection":["Cloud &amp; AI"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/","name":"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10637-a-signature-an-agent-brings-along-nz.png","datePublished":"2026-10-05T05:20:00+00:00","description":"How Web Bot Auth works: the three headers, which components are signed, the well-known key directory, and the one thing a signature never proves.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10637-a-signature-an-agent-brings-along-nz.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10637-a-signature-an-agent-brings-along-nz.png","width":1200,"height":630,"caption":"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/cloud-ai\/web-bot-auth-how-agent-requests-are-signed-and-what-the-signature-proves\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Web Bot Auth: How Agent Requests Are Signed and What the Signature Proves"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10637"}],"version-history":[{"count":4,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10637\/revisions"}],"predecessor-version":[{"id":21077,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10637\/revisions\/21077"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/16067"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}