{"id":388152,"date":"2026-10-22T22:00:52","date_gmt":"2026-10-22T22:00:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/agentic-agent-sso\/"},"modified":"2026-10-22T22:00:40","modified_gmt":"2026-10-22T22:00:40","slug":"agentkey-sign-in-agentid","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/agentkey-sign-in-agentid\/","author":15189288,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.6","stable_tag":"0.1.6","tested":"7.1.3","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"AgentKey Sign-In for AgentID","header_author":"Mike Demopoulos","header_description":"Adds \"Sign in with AgentID\" to WP and WooCommerce. Lets verified AI agents sign in as themselves \u2014 with a human owner on record \u2014 instead of sharing a person's password. Site owners register their own free application at console.agentid.com and connect it here. Independent community integration for AgentID by AgentMail (github.com\/agentmail-to); not affiliated with or endorsed by AgentMail.","assets_banners_color":"5c5a94","last_updated":"2026-10-22 22:00:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Mike-Demo\/agentkey-sign-in-agentid","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":79,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.6":{"tag":"0.1.6","author":"mpmike","date":"2026-10-22 22:00:40","revision":3760606}},"upgrade_notice":{"0.1.6":"<p>Security: store-management roles (e.g. WooCommerce Shop manager) can no longer be assigned to agent accounts, retained accounts rejoin at the default role after a reinstall, and the sign-in security model is documented in the FAQ. Recommended.<\/p>","0.1.5":"<p>Renamed to AgentKey Sign-In for AgentID at the WordPress.org review team&#039;s request \u2014 the old name was too descriptive. Nothing else changes: settings, linked agents and accounts carry over exactly. Recommended for all sites.<\/p>","0.1.4":"<p>Hardening release: identity data from the userinfo endpoint is now merged through a type-checked whitelist so it can never override verified token claims, and a malformed discovery document fails cleanly instead of erroring. Recommended for all sites.<\/p>","0.1.3":"<p>Quality fixes from an external review: sign-in works where the core path differs from the home path, credentials with special characters survive saving and token exchange, and retained agent accounts reconnect after a reinstall. Recommended for all sites.<\/p>","0.1.2":"<p>Renamed to Agentic Agent SSO. The Gutenberg block now loads correctly in the editor, agent accounts are denied the full set of site-administration capabilities (not just one), and explicitly linked agents always receive their owner&#039;s capability ceiling. Recommended for all sites.<\/p>","0.1.1":"<p>Security hardening release: unconditional denial of site-administration capability for agent accounts, stricter ID token validation, and multisite-safe uninstall.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3760606,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3760606,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3760606,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3760606,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"agentkey-sign-in-agentid\/login-button":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"attributes":{"label":{"default":"","type":"string"}},"category":"widgets","description":"A 'Sign in with AgentID' button for verified AI agents.","editorScript":"file:.\/index.js","icon":"id-alt","name":"agentkey-sign-in-agentid\/login-button","style":"file:.\/..\/..\/assets\/css\/agentid-login.css","textdomain":"agentkey-sign-in-agentid","title":"AgentID Login Button","version":"0.1.6"}},"tagged_versions":["0.1.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3760606,"resolution":"1","location":"assets","locale":"","width":1440,"height":1205},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3760606,"resolution":"2","location":"assets","locale":"","width":1440,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3760606,"resolution":"3","location":"assets","locale":"","width":1440,"height":1000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3760606,"resolution":"4","location":"assets","locale":"","width":1440,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3760606,"resolution":"5","location":"assets","locale":"","width":1440,"height":1000}},"screenshots":{"1":"Settings \u2192 AgentKey Sign-In for AgentID: the setup wizard walks through creating your AgentID application, registering the redirect URI, and testing the connection.","2":"\"Sign in with AgentID\" on the WordPress login form. The button is added to the WooCommerce login form too when WooCommerce is active.","3":"Link an agent to your account from your profile. The agent still gets its own account \u2014 it never signs in as you.","4":"An agent account in the admin: its AgentID identity and human owner on record. Passwords, password resets and application passwords are disabled for it.","5":"The AgentID Login Button block in the editor, ready to place on any page. Also available as the [agentid_login] shortcode."}},"plugin_section":[],"plugin_tags":[246305,162353,43290,2469,286],"plugin_category":[45],"plugin_contributors":[287966],"plugin_business_model":[],"class_list":["post-388152","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-agents","plugin_tags-oidc","plugin_tags-openid-connect","plugin_tags-sso","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-mpmike","plugin_committers-mpmike"],"banners":{"banner":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/banner-772x250.png?rev=3760606","banner_2x":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/banner-1544x500.png?rev=3760606","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/icon-128x128.png?rev=3760606","icon_2x":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/icon-256x256.png?rev=3760606","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/screenshot-1.png?rev=3760606","caption":"Settings \u2192 AgentKey Sign-In for AgentID: the setup wizard walks through creating your AgentID application, registering the redirect URI, and testing the connection."},{"src":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/screenshot-2.png?rev=3760606","caption":"\"Sign in with AgentID\" on the WordPress login form. The button is added to the WooCommerce login form too when WooCommerce is active."},{"src":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/screenshot-3.png?rev=3760606","caption":"Link an agent to your account from your profile. The agent still gets its own account \u2014 it never signs in as you."},{"src":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/screenshot-4.png?rev=3760606","caption":"An agent account in the admin: its AgentID identity and human owner on record. Passwords, password resets and application passwords are disabled for it."},{"src":"https:\/\/ps.w.org\/agentkey-sign-in-agentid\/assets\/screenshot-5.png?rev=3760606","caption":"The AgentID Login Button block in the editor, ready to place on any page. Also available as the [agentid_login] shortcode."}],"raw_content":"<!--section=description-->\n<p>AI agents increasingly need accounts at the sites their owners use. The usual options are bad ones: share the owner's password, scrape a session cookie, or give up. AgentID is a sign-in service built for AI agents (by the AgentMail team): an agent gets its own verified identity, and every sign-in carries a signed statement of who the agent is and which human owns it.<\/p>\n\n<p>This plugin adds <strong>Sign in with AgentID<\/strong> to your site, so agents can authenticate the clean way \u2014 as themselves, with their owner accountable \u2014 while you keep control of what an agent account may do.<\/p>\n\n<p><strong>Credit:<\/strong> AgentID is a product of AgentMail. This plugin is an independent, community-built integration that exists to make AgentID easier to adopt on WP and WooCommerce. It is not affiliated with, endorsed by, or sponsored by AgentMail, and it does not replace any part of their product \u2014 your site still uses your own AgentID application, on their service, under their terms.\nAgentID on the web: https:\/\/www.agentid.com \u2014 AgentMail\/AgentID on GitHub: https:\/\/github.com\/agentmail-to<\/p>\n\n<h4>Disclaimer<\/h4>\n\n<p>AgentKey Sign-In for AgentID is an independent, open-source community project. It is <strong>not<\/strong> made by, affiliated with, endorsed by, or sponsored by AgentMail, and it is not an official AgentID product. AgentID and AgentMail are trademarks of their respective owners; both names are used in this plugin and its documentation only to describe the service the plugin connects to. Support for this plugin comes from its own community, not from AgentMail.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>You create a free application for your site in the AgentID console (console.agentid.com) \u2014 one application per site, registered by you, because only you can register your site.<\/li>\n<li>You paste the Client ID (and secret, if any) into this plugin's settings and register the redirect URI the plugin shows you.<\/li>\n<li>Agents clicking \"Sign in with AgentID\" are sent through AgentID's standard OpenID Connect flow (authorization code + PKCE). This plugin verifies the signed ID token against AgentID's published keys, then signs the agent in to its own WP account on your site.<\/li>\n<\/ol>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li>Sign-in button on the WP login form and the WooCommerce login form, plus an <code>[agentid_login]<\/code> shortcode and a Gutenberg block for anywhere else.<\/li>\n<li>Automatic account creation (\"just-in-time provisioning\") for agents on first sign-in, keyed to the agent's stable AgentID identity \u2014 never by email alone.<\/li>\n<li>Agent identity details (agent ID, owner name and email when AgentID returns them) stored on the account and shown on its profile.<\/li>\n<li>Owners can link their agent from their own profile, so the agent's account on your site records who owns it.<\/li>\n<li>A guided settings page with a copy-paste redirect URI and a live connection test.<\/li>\n<\/ul>\n\n<h4>Safety defaults (built in, not upsells)<\/h4>\n\n<ul>\n<li>Agent accounts can never be provisioned with a role that grants site- or store-administration capabilities (WooCommerce shop management included) \u2014 and if one is ever promoted to such a role, it is demoted at its next sign-in.<\/li>\n<li>When an agent's owner is recorded, its capabilities are capped at the owner's; site-administration capabilities are denied to every agent account regardless.<\/li>\n<li>While this plugin is active, agent accounts cannot sign in with a password, reset a password, or use application passwords \u2014 AgentID is the only sign-in path left open to them.<\/li>\n<li>Agent sessions are short (12 hours by default, configurable 1\u201372), because revoking an agent at AgentID stops new sign-ins but does not end sessions a site has already issued.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the AgentID service (operated by AgentMail) to authenticate agents. This connection is the plugin's core function: without it, there is no sign-in to verify.<\/p>\n\n<ul>\n<li>Service: AgentID \u2014 https:\/\/www.agentid.com \u2014 documentation: https:\/\/www.agentid.com\/docs<\/li>\n<li>Endpoints used, all under https:\/\/auth.agentid.com: the OpenID Connect discovery document (\/.well-known\/openid-configuration), the authorization endpoint (\/v0\/authorize), the token endpoint (\/v0\/token), the JWKS endpoint (\/v0\/jwks.json), and the userinfo endpoint (\/v0\/userinfo).<\/li>\n<li>Data sent: when a visitor starts an AgentID sign-in, the browser is redirected to AgentID with this site's client ID, the requested scopes, the redirect URI registered for this site, and single-use state\/nonce\/PKCE challenge values. The resulting authorization code is then exchanged directly between this site's server and AgentID's token endpoint: that exchange sends the authorization code, the PKCE code verifier, the redirect URI, and \u2014 for applications with a client secret \u2014 the client ID and client secret, sent as HTTP Basic authentication. When the application requests user information, the site then calls the userinfo endpoint presenting the resulting access token. No site content, user database, or browsing data is sent.<\/li>\n<li>Admin test: when an administrator clicks \"Test connection\" in this plugin's settings, the site's server requests the discovery document and signing keys from AgentID to verify the connection. No user or site data is included \u2014 the request carries only what any HTTPS request necessarily carries, such as the server's IP address. The discovery document and keys are also cached briefly by the sign-in flow itself.<\/li>\n<li>Data received: the signed ID token (and userinfo response) for the signing-in agent: agent ID, agent email, and \u2014 for registered applications that request the owner scopes \u2014 the owner's name and email. The fields the site keeps are listed under Privacy.<\/li>\n<li>AgentID's terms of service: https:\/\/www.agentid.com\/legal\/terms \u2014 AgentID's privacy policy: https:\/\/www.agentid.com\/legal\/privacy. Confirm the current documents there before registering your application.<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin does not track visitors, does not phone home, and contains no analytics.<\/p>\n\n<p>For agent accounts it creates or signs in, the plugin stores these user meta fields from the verified AgentID sign-in: agent subject ID, actor type, agent email, owner subject ID, owner name, owner email, the linked owner account ID when matched, and the time of the last sign-in. The account email is chosen at provisioning: the agent's verified email when AgentID returns one, otherwise a synthetic placeholder address derived from the agent's subject ID on a non-deliverable domain. The account email is not changed on later sign-ins. When a site user links an agent from their profile, the agent's subject ID is also stored on that user's account (the linked-subject field). During a sign-in, the plugin sets a short-lived browser cookie (10 minutes) that binds the flow to the browser, and stores the flow state in a transient for the same period; the transient is deleted on first use and the cookie expires with the flow. Tokens issued by AgentID are never stored; the client secret you enter is stored in the site's options table, like other SSO credentials, and is never displayed after saving.<\/p>\n\n<p>Suggested privacy-policy text: \"If you sign in with AgentID, we receive your agent identity and your owner's name and email from AgentID (operated by AgentMail) and store them with your account so we can identify you and your owner.\"<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin, or install it from the Plugins screen, and activate it.<\/li>\n<li>Create a free application for your site at console.agentid.com.<\/li>\n<li>In the AgentID console, register the Redirect URI shown on this plugin's settings page (Settings \u2192 AgentKey Sign-In for AgentID), set token endpoint authentication to <code>client_secret_basic<\/code>, and require PKCE (S256).<\/li>\n<li>Copy the Client ID (and Client Secret, if your application has one) into Settings \u2192 AgentKey Sign-In for AgentID and save.<\/li>\n<li>Click \"Test connection to AgentID\". Then sign out and try the \"Sign in with AgentID\" button.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20agentid%20free%3F\"><h3>Is AgentID free?<\/h3><\/dt>\n<dd><p>For applications, yes \u2014 AgentID does not charge sites per sign-in. You register your own application and there is no usage pricing. This plugin is also free and open source.<\/p><\/dd>\n<dt id=\"can%20you%20register%20my%20site%20with%20agentid%20for%20me%3F\"><h3>Can you register my site with AgentID for me?<\/h3><\/dt>\n<dd><p>No \u2014 and no plugin could. Registering an application asserts ownership of a site, so it has to be done by the site owner in their own AgentID console account. The plugin's job is to make everything on the WP side a copy-paste.<\/p><\/dd>\n<dt id=\"does%20an%20agent%20sign%20in%20as%20its%20owner%3F\"><h3>Does an agent sign in as its owner?<\/h3><\/dt>\n<dd><p>No. The agent gets its own account on your site. The account records who the owner is (when AgentID returns owner details), and its permissions are capped at the owner's when one is recorded \u2014 but the agent never receives the owner's credentials or session.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20an%20agent%20is%20revoked%20at%20agentid%3F\"><h3>What happens if an agent is revoked at AgentID?<\/h3><\/dt>\n<dd><p>It can no longer start new sign-ins. A session your site already issued runs until it expires, which is why this plugin keeps agent sessions short by default.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%3F\"><h3>Does this work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. With WooCommerce active, the button also appears on the WooCommerce login form, and agent accounts are ordinary WP users, so customer-role provisioning and My Account work as expected. HPOS compatibility is declared. Store-management roles (such as Shop manager) count as administration roles for agents and cannot be assigned to agent accounts.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20agent%20accounts%20if%20i%20uninstall%20and%20reinstall%3F\"><h3>What happens to agent accounts if I uninstall and reinstall?<\/h3><\/dt>\n<dd><p>Uninstall keeps the agent user accounts (they belong to your site) but removes their AgentID identity data. On reinstall, an agent whose account used a placeholder email address reconnects to its retained account automatically on its next sign-in, rejoining at the site's configured default role for agent accounts \u2014 the placeholder is derived from the agent's immutable ID, so it can only match that agent's own account. An agent whose account used a verified email address cannot be matched automatically (an agent is never signed in to an existing account by email alone); an administrator can reconnect it by adding the agent's subject ID as the <code>agentid_sub<\/code> user meta on the retained account, or delete the retained account and let it be re-created on the next sign-in.<\/p><\/dd>\n<dt id=\"why%20does%20the%20plugin%20create%20a%20user%20account%20when%20an%20agent%20signs%20in%3F\"><h3>Why does the plugin create a user account when an agent signs in?<\/h3><\/dt>\n<dd><p>WordPress sessions belong to user accounts, so a verified agent identity needs a local account to hold its session, role and sign-in record \u2014 the same reason other SSO integrations provision accounts. An account is created only after AgentID's signed ID token passes verification (signature, issuer, audience, expiry, nonce, and an actor_type of \"agent\"; every check fails closed), and accounts are matched by the agent's immutable AgentID subject ID, never by email. The account receives the site owner's configured default role only when that role grants none of the plugin's hard-denied site- and store-administration capabilities; otherwise the least-privileged stock role is used, and if no safe role exists, provisioning is refused. While the plugin is active, those capabilities stay denied to the account whatever role it holds, and the account cannot use passwords, password resets, or application passwords. One boundary to know: sign-in completes through the plugin's OIDC callback, which issues the standard WordPress auth cookie and fires the standard wp_login action, but does not run the authenticate filter chain \u2014 login-policy plugins that enforce rules only inside that filter do not apply to AgentID sign-ins.<\/p><\/dd>\n<dt id=\"is%20this%20an%20official%20agentmail%20plugin%3F\"><h3>Is this an official AgentMail plugin?<\/h3><\/dt>\n<dd><p>No. It is an independent community integration, built on AgentID's public documentation. AgentID and AgentMail are trademarks of their respective owners.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Security: the hard-denied capability set now also covers WooCommerce store management (store settings, reports, and product\/order\/coupon management) and data export\/import, so store-management roles such as Shop manager \u2014 and custom roles carrying those capabilities \u2014 can no longer be assigned to, or kept by, agent accounts. The WooCommerce Customer role is unaffected.<\/li>\n<li>Security: an account retained across an uninstall now rejoins at the site's configured safe default role on reconnect, instead of keeping whatever role the retained account happened to hold; the reconnect is refused when no safe role exists.<\/li>\n<li>Documentation: the provisioning model is documented at the provisioning function and in a new FAQ entry, including the exact scope of the capability guarantees (they apply while the plugin is active) and the sign-in boundary (the OIDC callback fires the standard wp_login action but does not run the authenticate filter chain).<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Renamed: the plugin is now \"AgentKey Sign-In for AgentID\" (slug agentkey-sign-in-agentid), renamed at the WordPress.org Plugin Directory review team's request because the previous name was largely descriptive and not distinctive enough. The text domain follows the new slug; settings, options and account data are unchanged (they use the agentid_ prefix, which names the service the plugin connects to, not the plugin).<\/li>\n<li>Fixed: the readme Contributors line now lists the WordPress.org account that owns the plugin.<\/li>\n<li>Documentation: the sign-in flow's request-integrity model \u2014 where WordPress nonces apply, and where the OAuth state parameter and PKCE serve as the CSRF control \u2014 is now documented at the top of the auth class.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Hardening: userinfo claims are merged into the verified identity through a whitelist of profile fields, each accepted only as the expected scalar type \u2014 userinfo can no longer overwrite verified token claims (subject, actor type, audience) or introduce non-scalar values into provisioning.<\/li>\n<li>Fixed: a malformed discovery document (for example, a signing-algorithm list that is not an array) now fails with a clean connection error instead of a PHP error.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Fixed: the sign-in flow cookie is now scoped to the host root. On installs where the WordPress core path differs from the home path, the cookie previously never reached the callback and every sign-in failed its state check.<\/li>\n<li>Fixed: client credentials are stored byte-for-byte (the settings sanitizer no longer unslashes twice or strips percent sequences from the client secret), and the token exchange now form-encodes the client ID and secret for HTTP Basic as RFC 6749 requires, so credentials containing characters such as a colon, plus, backslash or percent sign work.<\/li>\n<li>Fixed: agent usernames are bounded to WordPress's 60-character login limit, including the collision suffix, so agents with long preferred usernames can be provisioned.<\/li>\n<li>Fixed: the fallback role for agent accounts is always validated against the provisionable set (least-privileged stock role available); when no safe role exists, provisioning refuses with a clear error instead of assigning an unvalidated role.<\/li>\n<li>Fixed: the WooCommerce login button now returns customers to My Account \u2014 or back to checkout when the form was shown there \u2014 instead of the homepage.<\/li>\n<li>Fixed: an agent account retained across an uninstall (placeholder email address) reconnects automatically on its next sign-in instead of being refused forever; verified-email accounts still require an administrator to reconnect them (see the FAQ).<\/li>\n<li>Improved: the settings connection test no longer fetches the discovery document twice; an unreachable legacy error message was removed; documentation of the owner capability ceiling and of placeholder account emails was corrected.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Renamed: the plugin is now \"Agentic Agent SSO\" (slug agentic-agent-sso). The name no longer builds on the AgentID trademark; AgentID is still the service it connects to and is credited as such. Settings, options and account data are unchanged.<\/li>\n<li>Fixed: the Gutenberg login-button block never registered in the editor \u2014 its editor script now ships the dependency declaration (index.asset.php) WordPress needs, so the block appears in the inserter and its strings are translatable.<\/li>\n<li>Security: the agent-account \"never administer\" guarantee now denies the full site-administration capability set (plugin\/theme management, user promotion and deletion, unfiltered HTML, core updates, network administration, and more) at all times \u2014 not only manage_options. Role provisioning and sign-in demotion use the same capability set, so a role granting any of them can neither be assigned to a new agent account nor kept by one.<\/li>\n<li>Fixed: an agent explicitly linked by its owner from the profile page is now always resolved to that owner (and so always receives the owner's capability ceiling), even when owner-email matching is disabled or the sign-in carries no verified owner email.<\/li>\n<li>Fixed: sign-in error messages are rendered through the wp_login_errors filter instead of being printed before the login page's header.<\/li>\n<li>Documentation: the external-services disclosure now lists everything sent during the token exchange (authorization code, PKCE verifier, redirect URI, client secret over HTTP Basic) and the userinfo call; the privacy section now also covers the owner account's linked-subject field, the flow cookie, and flow transients. An explicit unaffiliation disclaimer was added. A .distignore file now keeps development files out of distribution archives.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Security hardening from a full external code review: agent accounts now have site-administration capability denied unconditionally (previously the owner-capability ceiling could preserve it); the profile linking flow requires an intent nonce; ID token validation now enforces the OIDC authorized-party (azp) rule for multi-audience tokens, requires a numeric issued-at time, and rejects not-yet-valid (nbf) tokens; an agent's email is only used as the account email when the issuer marks it verified, otherwise a non-deliverable placeholder derived from the agent's ID is used; claim values are type-checked before use.<\/li>\n<li>Multisite: uninstall now removes the plugin's options (including the client secret) and cached issuer data on every site in the network.<\/li>\n<li>Requires WordPress 6.3 (the login-button block uses block API version 3); admin JavaScript strings are translatable; the redirect-URI copy button now reports failure honestly instead of always claiming success; the external-services disclosure now also describes the admin-triggered connection test.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: Sign in with AgentID on WP and WooCommerce login forms, shortcode and block; authorization-code + PKCE flow with ES256 ID token verification; just-in-time agent account provisioning; owner linking; agent-account safety guards and short sessions; setup wizard with connection test.<\/li>\n<\/ul>","raw_excerpt":"Let verified AI agents sign in to your WP site and WooCommerce store as themselves, with a human owner on record, using AgentID by AgentMail.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/388152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=388152"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mpmike"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=388152"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=388152"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=388152"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=388152"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=388152"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=388152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}