{"name": "WP Engine AI", "tags": ["authentication", "wp-engine", "security"], "requires_at_least": "6.5", "tested_up_to": "7.1.3", "stable_tag": "0.23.0", "contributors": ["wpengine"], "donate_link": null, "short_description": "Connects your WordPress site to WP Engine platform services.", "screenshots": [], "is_excerpt": false, "is_truncated": false, "sections": {"description": "WP Engine AI creates a secure connection between your WordPress site and WP Engine platform services. Once connected, your site can use AI models and other capabilities provided by WP Engine.\n\nNo API keys or manual configuration required. Connect through a simple setup flow in the WordPress admin.", "installation": "1. Upload the `power` directory to `/wp-content/plugins/`.\n2. Activate the plugin through the Plugins menu in WordPress.\n3. Open WP Engine AI \u2192 Overview in the admin sidebar to connect your site.", "frequently_asked_questions": "\n= Does this plugin work on non-WP Engine hosting? =\n\nYes. Sites not hosted on the WP Engine platform can register through a setup flow in the WordPress admin.\n\n= What data does this plugin store? =\n\nThe plugin stores cryptographic keys and registration credentials in the WordPress options table. No data is stored in external files. All sensitive values are removed on plugin deletion.\n", "screenshots": "", "changelog": "\n= 0.23.0 =\n* The \"Connection reset for security\" notice on the WP Engine AI Overview now shows as a titled alert, with the reconnect instruction in its own paragraph, so it is easier to read.\n* Change who can reach the WP Engine AI Overview page and its REST routes with the `wpe/ai/hub/capability` filter (default `manage_options`). Installing and activating extensions still needs the plugin capabilities, and connecting or disconnecting the site stays administrator-only.\n* Knowledge Base sync now stores each post's taxonomy values as a list of decoded term names instead of a single string. Site code that reads or rewrites `metadata` in the `wpe/ai/knowledgebase/document` filter should expect lists; the post's `wordpress_post_id` is always restored after the filter runs.\n* Knowledge Base hooks moved from `wpe/knowledgebase/*` to `wpe/ai/knowledgebase/*`. The old names still work and raise a deprecation notice; switch to the new names before a later release removes them.\n* Knowledge Base sync now indexes each post's element inventory: its links, images and embeds with the attributes that matter (such as alt text), so Coworker and Labs can answer questions about them. Change which tags and attributes are captured with the `wpe/ai/knowledgebase/elements` filter, or adjust or drop a single element with `wpe/ai/knowledgebase/element`. A site whose index predates this has its index schema brought up to date automatically.\n* Knowledge Base: after an update changes what gets indexed (or a site filter changes which elements are captured), the site reindexes itself once, so element data arrives without anyone clicking Reindex. It starts straight away when an administrator opens wp-admin, and otherwise at a random time within 4 hours so updated sites don't all reindex at once. There are at most 3 attempts, and the health check reports the reindex as scheduled or running.\n* Knowledge Base sync now records each post's links, groundwork for listing every page that links to a given URL. The listing itself is not turned on yet.\n* Image uploads: an image too large for the site to process is refused with a message saying so, large images are scaled in the request with their smaller sizes built afterwards, and alt text is written before processing so it is not lost if processing fails.\n* Image uploads: uploading an image again while its first upload is still processing now returns `upload_in_progress` instead of success, so the caller waits instead of leaving the image unscaled.\n* Image uploads: accept images from URLs with no file extension in the path, as many CDNs serve them. The type is read from the file itself and must be one the site allows.\n* When an Openverse image search times out, the agent now gets a message it can pass on to you instead of a generic failure.\n* Design fixes from the Base Design System: buttons no longer draw a second focus ring inside their own, and tooltips wrap at a readable width and match the design.\n\n= 0.22.0 =\n* Raise the `wp-engine-ai/upload-image-from-url` size cap to 25 MB.\n* Filter `list-<type>` results by publish date (`after`, `before`) or last-modified date (`modified_after`, `modified_before`). Bounds are exclusive ISO 8601 date-times in site time, as in the REST posts collection.\n* Pass `_fields` to `get-<type>` to get only the fields you need, with REST semantics (`id,content.raw` returns `{ id, content: { raw } }`). Without `_fields` the full record is returned as before.\n* Create and update abilities return a short summary (id, type, status, slug, link and modified, plus each field sent, as WordPress stored it) instead of the whole post, so bulk edits no longer fill the assistant's context.\n* Custom post types accept their taxonomy terms on create and update and offer their full REST write schema, and the term abilities work with any REST-visible taxonomy, not only categories and tags.\n* Clear Elementor's cached render and post CSS when an update writes `_elementor_data`, so the live page shows the new layout straight away.\n* Stop `get-site-health` reporting a false REST API 403 and a missing Authorization header on healthy sites.\n* Describe `content.raw` as the body exactly as saved, so assistants no longer report lost blocks on posts stored as classic HTML.\n* `upload-image-from-url` can import images staged from a Coworker chat without keeping the short-lived signed source URL on the attachment.\n* Require `upload_files` for Openverse image search.\n* Skip an ability that fails while registering instead of breaking every wp-admin page. This happened mid-upgrade, when a new ability file met a stale helper class.\n* Give the media, Openverse and At a glance abilities clearer labels.\n* Send the versions of active WP Engine plugins with the site heartbeat.\n* Let closed-beta customers connect their WordPress account instead of stopping at the closed-beta screen.\n* Stop the replay-protection cleanup rejecting gateway tokens on their first use.\n* Ship BDS React 0.6.2 across the Overview and the connection gate.\n* Ship bundled `wpengine/auth` 1.13.0, `wpengine/agents` 0.4.0, `wpengine/kb-sync` 0.3.4 and `wpengine/base` 0.4.2.\n\n= 0.21.0 =\n* Move the remote ability audit log out of the `WPE_HUB_DEBUG` menu. It is the Ability log experiment in WP Engine AI Labs.\n* Call the Labs card on the Overview services grid **AI Labs**.\n* Add `wp-engine-ai/search-content` to find every occurrence of a literal string in editable post content, excerpts and REST-visible meta and ACF fields. Matching ignores case by default, and long searches resume from a cursor.\n* Add `wp-engine-ai/replace-content` to replace literal text in the content and excerpts of many posts in one approved call.\n* Add `wp-engine-ai/manage-posts` to change the status, categories or tags of many posts in one approval. `tags_add` and `tags_remove` change individual tags without resending each post's full tag set.\n* Add `wp-engine-ai/upload-image-from-url` to sideload one public image into the media library, refusing local and private addresses. Uploading the same source URL again reuses that attachment and refreshes its alt text.\n* Add `wp-engine-ai/search-media` so assistants can find an image already in the media library instead of uploading a second copy.\n* Refuse writes carrying fields WordPress would silently drop. An unknown top-level field or unregistered meta key now fails with `unknown_fields` instead of returning success with nothing saved.\n* Refuse post writes naming category or tag IDs that do not exist (`unknown_term_ids`) instead of saving the post without those terms.\n* Reject arguments sent to abilities that take none, instead of a fatal error.\n* Refresh the connection state before the Overview renders, so a site disconnected from the Portal shows as disconnected straight away.\n* Prompt a knowledge-base reindex on sites last fully synced before extractor versioning, so block-built pages are no longer indexed as title only.\n* Ship BDS React 0.5.1 across the Overview and the connection gate.\n* Ship bundled `wpengine/auth` 1.12.0, `wpengine/agents` 0.3.3, `wpengine/kb-sync` 0.3.3 and `wpengine/base` 0.4.1.\n\n= 0.20.0 =\n* Add `wp-engine-ai/read-terms` and `wp-engine-ai/manage-terms` so assistants can list and create core categories and tags. Creating a category requires `manage_categories`; creating a tag requires `edit_posts`, matching the terms REST controller. A parent of 0 is omitted so a top-level category is created. Creating a term whose slug already belongs to a different name fails instead of reusing that term. An existing name is unchanged even when WordPress stored `&` as `&amp;`. Toggle the group with `wpe_ai_abilities_terms_enabled`.\n* Remove the compatibility filters `power_coworker_abilities_*`, `wpe_wp_agent_abilities_*`, and `power_coworker_post_write_schema`. The remaining group switches are `power_abilities_{group}_enabled`, except terms, which uses `wpe_ai_abilities_terms_enabled`.\n\n= 0.19.0 =\n* Point Overview \"Open Portal\" / \"Open in Portal\" and the connect-processing empty-project action at the WP Engine User Portal instead of Console.\n* Remove the unused PHP admin navigation bar that still said \"Manage in Console\".\n* Ship bundled `wpengine/auth` 1.11.0 (Portal URL helpers and connection milestones) and `wpengine/kb-sync` 0.3.2 (store plain text for knowledge-base citations).\n\n= 0.18.2 =\n* Index shortcode and block output in the knowledge base, so search includes rendered content rather than raw markup.\n* Append ACF field values to the indexed document body for knowledge-base search.\n* Count only accepted documents in the knowledge-base sync report.\n* Ship bundled `wpengine/kb-sync` 0.3.1, and the latest Intelligent Web Design System for the connection gate and Overview.\n\n= 0.18.1 =\n* Expose category and tag term-ID fields on post create and update abilities, so assistants can assign core post taxonomies.\n\n= 0.18.0 =\n* Rename customer-facing product name to **WP Engine AI**. Hub abilities now register as `wp-engine-ai/*`. Overview REST is `wpe/ai/v1`.\n* Recover broken knowledge-base bindings from Overview, and reindex the knowledge base after the site URL changes.\n* Preserve Openverse timeout diagnostics on image search.\n\n= 0.17.0 =\n* Own the shared WordPress abilities catalog (`power/*`) in the hub: post CRUD, comments, plugins, Site Health, Openverse, and site info. Coworker discovers them through the WordPress Abilities API and rewrites stored agent manifests from the old `power-coworker/*` names on load. Extensions can require this catalog by declaring a minimum Power version; the shared gate splash can one-click update an older hub.\n* Include network-activated plugins in site info on multisite.\n* Treat a plugin-update transient entry as an update only when it carries a version, matching the inventory, so junk `response` rows no longer start an upgrade.\n* Carry the post read/write round-trip into the hub catalog: get and list return `content.raw` in edit context, and update refuses writing rendered HTML back over stored block source.\n* List abilities (`list-<type>`, `list-comments`) now return what fits of an oversized page instead of throwing the whole page away. When the encoded listing would exceed 100 KB, trailing items are dropped, `truncated` is set, and `next_offset` tells the assistant where to continue. A single item over the limit is still refused.\n\n= 0.16.3 =\n* Ship Intelligent Web Design System 0.3.0 (latest Base DS and Console library) for the connection gate and Overview.\n\n= 0.16.2 =\n* Enable ACF AI automatically when Advanced Custom Fields (or ACF PRO) 6.8+ is active, so the model can also work with your ACF fields, post types, and taxonomies.\n* First-run Overview lets you continue when only one Power extension is active, instead of requiring more than one.\n* Fix: Site Health no longer fails when no knowledge-base post types are registered.\n\n= 0.16.1 =\n* Keep site metadata and WordPress abilities synchronized with WP Engine through authenticated, event-driven heartbeats and an on-demand sync ability.\n* Report Power activation and deactivation without revoking temporary deactivations, and revoke the remote site registration before uninstall cleanup.\n* Offer to connect your WordPress user to the Power Console right after connecting a site, so remote management and MCP work without hunting for the option later. Dismissible, and only shown where it can actually complete.\n* Fix: disconnecting from WordPress now actually removes the site from WP Engine. Previously the request was rejected and the site stayed listed as connected in the Console. If the disconnect cannot be completed, Power says so and keeps the connection intact so you can retry, instead of discarding credentials the site would need to try again.\n\n= 0.16.0 =\n* Migrate the shared connection gate screen (bundled `wpengine/base` 0.2.2) to the Intelligent Web Design System (IWDS), matching the rest of Power's admin UI.\n\n= 0.15.1 =\n* Fix: do not persist site_id after disconnect, so a later reconnect under another account addresses the right tenant (bundled agents 0.3.2 and kb-sync 0.2.2).\n\n= 0.15.0 =\n* Power architecture cutover: rename to Power; ship auth and Overview only \u2014 Connector, Coworker, Chatbot, and Labs are standalone extensions discovered from the Overview services grid.\n* Shared Power sidebar, hub gate splash, and PIS one-click extension installer via extend-base.\n* Rebuild Overview on the internal design system (iwds) with updated service cards, layout, and final in-plugin copy from Figma.\n* Skip first-run onboarding when every extension tool is already active on the site.\n* Auto-bind the default WP Engine project when connecting WordPress.\n* Address gateway `/v1/sites` by stable site id so multi-site identity stays consistent across reconnects and copies.\n* Retire standalone KB settings UI; consolidate content sync, chatbot filters, Coworker grounding, and debug tooling under the shared kb-sync library bundled in Power.\n* Move KB Sync and plugin updater libraries to Power hub only \u2014 extensions consume them through the hub instead of bundling their own copies.\n* Add Power Labs as a standalone extension on the Overview services grid.\n* Ship Power Coworker as a standalone PIS extension (no longer bundled inside the hub).\n* Remote abilities: WordPress plugin support for client-executed abilities routed through the gateway.\n* PSR-4 foundation for the Power hub and headless auth stack.\n* Staging plugin builds and update-source support for pre-release testing.\n* Remove AI Playground entirely; hide it from Overview ahead of removal.\n* Fix: correct the Overview connection button label and destination.\n* Fix: close sticky iwds tooltips and portal menu overlays on Overview.\n\n= 0.14.0 =\n* Knowledge Base: collection metadata (description and the set of indexed post types) is now kept in sync with WP Engine AI \u2014 backfilled on upgrade and repaired automatically in the background \u2014 so agent grounding and search stay accurate.\n* WP Agent: the assistant now discovers client-executed tools dynamically and keeps its prompt in sync between the browser and the gateway.\n* WP Agent: show a clear message when the account's credit limit is reached, instead of a generic failure.\n* WP Agent: session-start failures now show a specific, actionable title instead of a generic error.\n* WP Agent: left-justify user message text inside the chat bubble.\n* Update the bundled AI Playground module to 0.11.3 (build-toolchain maintenance; no functional changes).\n* Update the bundled AI Chatbot module to 0.3.0 (new drawer layout, customizable FAB icon, suggested prompt chips, refined guardrails, per-visitor conversation persistence, session revocation on logout, and assorted admin fixes).\n\n= 0.13.0 =\n* WP Agent: agents can now hand work off to one another \u2014 the general assistant can find or create a more specialised agent, pass a task over, and receive a reply back, with the hand-off shown inline in the conversation.\n* WP Agent: grouped agent and session actions into combined read/manage tools, so the assistant has a smaller, clearer toolset.\n* WP Agent: reliability fixes for switching between sessions, in-chat tool approval, and creating agents.\n* WP Agent: fixed a fatal error that could occur when opening the chat on a site that was not fully connected to WP Engine AI; the chat now fails cleanly instead.\n* WP Agent: when a chat session cannot start \u2014 because the site is not served over HTTPS, or is not fully connected to WP Engine AI \u2014 the chat now explains why and, for the connection case, offers a link to reconnect, instead of a generic error.\n* WP Agent: an agent grounded on a knowledge base that was since deleted can be saved again \u2014 the stale collection is dropped automatically instead of blocking the save.\n* WP Agent: no longer emits a duplicate ability-category admin notice when other WP Engine AI features are active.\n* Knowledge Base: \"Full reset\" now reliably deletes the site's remote collection (previously it could clear local settings without removing the collection).\n* Knowledge Base: fixed collection adoption failing to find an existing collection after a conflict, so a site could get stuck unable to reuse its own collection.\n* WP Agent: a transient failure to load the Knowledge Base catalog can no longer silently strip an agent's grounding \u2014 grounding is only pruned once the catalog has actually loaded.\n* WP Agent: local HTTP development sites (e.g. http://localhost) can now mint a browser token for chat; production sites still require HTTPS.\n* AI Chatbot is now available as a service card on the Hub home page.\n\n= 0.12.2 =\n* WP Agent: turning off \"Allow WordPress abilities\" in the agent editor now correctly removes those abilities from the agent \u2014 previously they stayed attached even though the setting was saved as off.\n* WP Agent: reconciling an agent's abilities no longer drops its Knowledge Base grounding.\n\n= 0.12.1 =\n* Agents: the model picker in the agent editor now lists only Anthropic models for now; support for additional model providers is coming shortly.\n\n= 0.12.0 =\n* Add a managed Knowledge Base: automatically sync your site's content into a knowledge base and manage it from a new settings page, so AI features can ground answers in your own content.\n* Add a shared PHP Agents management library for creating, updating, and running AI agents through the AI Gateway.\n* Add the WP Agent (proof of concept): create AI assistants and chat with them against your site \u2014 with a first-run onboarding experience, sessions, and client-executed WordPress abilities.\n* AI Chatbot: auto-provision a default gateway agent so the widget works out of the box.\n* Reorder the Hub home service cards (Knowledge Bases and Agents surfaced ahead of the coming-soon items).\n* Dependency and build fixes.\n\n= 0.10.1 =\n* Update the bundled AI Playground module to 0.10.1: prevent large ability results (e.g. base64 images) from filling the chat history and failing a confirmation/continuation resume; raise the agent conversation size limit to 3 MiB; make the chat Stop button clickable while generating so a response can be cancelled; clear ability action steps when chat history is cleared; and enable ACF AI automatically when Advanced Custom Fields 6.8+ is active.\n* Update the bundled AI Connector module to 0.10.1.\n* Make the Updates screen's \"Check again\" button force a fresh plugin-update check instead of serving the cached result.\n\n= 0.10.0 =\n* Update the bundled AI Playground module to 0.10.0, adding a core set of built-in abilities the chat model can use out of the box.\n* Update the bundled AI Connector module to 0.10.0, adding the connector-approval workflow.\n* Surface connector-approval prompts in the Hub admin so site owners can approve bundled gateway calls before they run.\n* Derive anonymous user identifiers and store a per-site HMAC secret for request signing.\n\n= 0.9.0 =\n* Update the bundled AI Playground module to 0.9.0, adding optional \"abilities\" mode: the chat model can call the site's registered WordPress Abilities (WP 7.0+) as tools, with destructive actions gated behind explicit confirmation.\n\n= 0.8.0 =\n* Introduce reusable plugin UI components shared across Hub plugins.\n\n= 0.7.0 =\n* Sync copy-detection state across sessions and surface blocking messages in the admin.\n* Auto-create a Default project when the connected WP Engine account has none.\n* Rename \"portal\" references to \"console\" throughout the admin UI.\n\n= 0.6.0 =\n* Migrate AI Gateway production URL to api.ai.wpengine.com/v1/.\n* Default production endpoint to ai.wpengine.com vanity domains.\n* Relocate external admin notices instead of suppressing them.\n\n= 0.5.0 =\n* Add AI Beta CTA Banner to the Hub admin.\n* Update Hub product card layout to match Figma design.\n* Polish accessibility and UX for admin modals.\n* Guard against missing AI Client SDK on WordPress 6.9 (pre-7.0 compatibility).\n* Pass project ID to AI Gateway from bundled plugins; track project-less usage.\n\n= 0.4.0 =\n* Rebrand top-level admin menu from \"WP Engine Hub\" to \"Power\" with AI Connector and AI Playground nested as submenus.\n* Move admin menu below Settings (position 80.742) to avoid collisions with other plugins.\n* Harden copy detection in wpe-auth-core: HMAC-bound fingerprinting now detects site copies that bypass plain URL comparison (e.g. search-replace database tools).\n\n= 0.3.0 =\n* Native self-update support via PIS self-update library.\n* Gate debug panel behind WPE_HUB_DEBUG constant.\n* Service-card module toggles in the Hub admin.\n* Show registered project name in nav; restyle connected-status view.\n* Suppress external admin notices on plugin pages.\n* Replace GPLv2 license with WP Engine EULA.\n* Various bug fixes and code-quality improvements.\n\n= 0.2.0 =\n* Bundle wpe-ai-connector and wpe-ai-playground as optional modules inside the Hub.\n* Redesign project picker with Hub Bouncer-aligned branding.\n* Plugin lifecycle events: user_authenticated and plugin_installed.\n* Upgrade minimum WordPress requirement to 7.0.\n* Prepare plugins for customer distribution.\n* Decouple AI plugins from Hub activation.\n* Security hardening across plugins and wpe-auth-core.\n\n= 0.1.0 =\n* Initial release.\n* Cryptographic key generation and token signing.\n* HTTP client for auth service communication.\n* Admin settings page with connection status.\n* Plugin activation and uninstall handlers.\n"}, "remaining_content": "", "upgrade_notice": null, "download_link": "https://wp-product-info.wpesvc.net/v1/plugins/wpe-hub/versions/0.23.0?download", "package": "https://wp-product-info.wpesvc.net/v1/plugins/wpe-hub/versions/0.23.0?download", "version": "0.23.0", "new_version": "0.23.0", "slug": "wpe-hub", "yanked": false, "yanked_reason": null, "checksums": {"sha256": "93f64a140ec86d51e18860a1976df9d512988066dcc54595d5e75ab663ebb621", "sha384": "3bfc293b3aa7093c999775e335a336ea1564a9309e710e154fe5096be252fa173cea53295dd8b7dc1ad49e67d2550b96"}}