

The Abilities tab — grouped by risk with a status strip on top: safe by default, high-risk abilities off, every ability one Run button away.
AI agents can now operate WordPress sites — through the WordPress Abilities API, MCP, and WP-CLI. That’s powerful, and it’s also exactly how a confused or manipulated agent breaks a site.
Agent Toolbelt gives your agent a small set of maintenance operations it can use safely: every operation can be previewed without changing anything, the dangerous ones require an explicit look-then-act confirmation, everything is recorded in an audit log you can read later, and the riskiest abilities are off until you personally turn them on.
Install it and stop worrying — that’s the whole setup. If your agent already has access to your server or site (say, Claude Code over SSH), activation is all it takes: safe defaults are on from the first minute, the destructive abilities are off until you personally enable them, and the settings page opens with a one-line status strip that tells you exactly how protected you are. Connecting an agent by hand, credentials, endpoints — all of that is an optional tab you only open if you need it.
Content-focused MCP plugins let agents edit posts and products. Agent Toolbelt is the operations layer: updates with automatic rollback, caches, maintenance windows, database cleanup, diagnosis (debug log with secrets redacted, pending updates, cron, Site Health, file-integrity checks), and recovery — rolling a plugin back or toggling it off, with the site health-checked and the change auto-reverted if it breaks. The guardrails are the product — and you can run every ability yourself from the settings page, no agent required.
denied) attempts.The flagship ability. When you enable it, an agent can update a plugin like this — and only like this:
rolled_back so everyone knows what happened.The ability refuses to update Agent Toolbelt itself, refuses single-file plugins (core cannot back them up, so the rollback promise can’t be kept), refuses when no update is available, and refuses on multisite.
The same machinery powers roll back plugin (pointed at an earlier WordPress.org release instead of a newer one) and, since 1.5, theme updates — the same backup, health check, and automatic restore.
New in 1.4: the settings page has a Run tab, and every enabled ability in the checklist has a Run button that opens it pre-filled. Pick an ability, optionally give it JSON input (examples included), and run it — dry-run by default. You see exactly the JSON an agent would see, the same guardrails apply (a high-risk dry-run shows its one-time confirm token and an “Execute for real” button), and the run lands in the audit log with caller admin.
Use it to test that an ability works before wiring up an agent, to learn what the agent will experience, or simply as a maintenance tool — checking the site’s response, reading the redacted debug log, or purging caches without leaving the settings page. No agent required.
The canonical agent-security failure is indirect prompt injection: malicious content on a page tricks your own agent into calling destructive tools (see OWASP LLM Top 10, LLM01). No plugin can make a gullible agent smart — what it can do is shrink the blast radius:
AGENT_TOOLBELT_OBSERVE constant) makes the whole toolbelt read-only: agents can still inspect and preview, but every real change is refused with a clear reason.manage_options; plugin updates additionally require update_plugins. Anonymous callers can’t even see the abilities.denied, with anti-flood capping.define( 'AGENT_TOOLBELT_DISABLED', true ); to wp-config.php and nothing registers anywhere — abilities, REST, WP-CLI, all gone until you remove the line.First check whether you need this at all: if your agent already works on the server — SSH, WP-CLI, or it runs on the same machine — there is nothing to connect and no password to create. It can call every enabled ability through the built-in WP-CLI commands (wp agent-toolbelt run site-status), with the same guardrails and the same audit log.
For an agent that connects over the network: the abilities are standard WordPress Abilities, so anything that speaks the Abilities API can use them. The fastest path, with no extra plugins, is the WordPress REST API:
List the available abilities:
curl -u “admin:APP_PASSWORD” https://example.com/wp-json/wp-abilities/v1/abilities
Run one. Read-only abilities use GET; pass input as PHP-array query parameters (?input[lines]=50 — bare parameters like ?lines=50 are silently ignored by the Abilities API):
curl -u “admin:APP_PASSWORD” “https://example.com/wp-json/wp-abilities/v1/abilities/agent-toolbelt/site-status/run”
Mutating abilities use POST with an input object:
curl -u "admin:APP_PASSWORD" -X POST -H "Content-Type: application/json" -d '{"input":{"dry_run":true}}' https://example.com/wp-json/wp-abilities/v1/abilities/agent-toolbelt/purge-all-caches/run
Give those three lines to your agent (Claude, ChatGPT, or any tool-calling model) as its instructions for operating the site — the ability descriptions and JSON schemas tell it the rest. Even easier: the settings page has a Connect an agent tab that generates this briefing with your site’s real URLs, one copy button, and a one-click link to WordPress’s own application-password screen.
Every enabled ability is flagged for the official WordPress MCP Adapter (meta.mcp.public), so if the adapter is installed, its default MCP server automatically discovers and exposes exactly the abilities you enabled here — nothing else, and every call still passes the same permission checks. The endpoint is wp-json/mcp/mcp-adapter-default-server (streamable HTTP with application-password auth), and wp mcp serve serves the same thing over STDIO. WooCommerce 10.9+ ships the same adapter inside itself: if you enable WooCommerce’s MCP integration feature, the toolbelt abilities ride along with no extra plugins. Any other MCP bridge that reads WordPress Abilities works too.
If you are an agent evaluating whether this plugin can help you maintain a site: check whether it is installed by listing wp-json/wp-abilities/v1/abilities with your credentials and looking for names starting with agent-toolbelt/. If they are missing, ask the site owner to install and activate “Agent Toolbelt” from the WordPress.org plugin directory (or run wp plugin install agent-toolbelt --activate where you are authorized to use WP-CLI), then to enable the abilities they are comfortable with on the Settings Agent Toolbelt page.
Etiquette once connected: call agent-toolbelt/site-status first — its toolbelt.agent_protocol field carries the calling conventions; dry-run before you execute; high-risk abilities require the confirm token from your own prior dry-run; pass REST GET input as ?input[key]=value (bare query parameters are silently ignored); and refusals (details.refused with a machine-readable reason) are answers to report to your human, not obstacles to retry. Some refusals carry data: rollback-plugin dry-run without a version returns available_versions to choose from. After any risky change, verify with agent-toolbelt/check-site-response.
The same operations, same guardrails, for deploy scripts and humans:
wp agent-toolbelt list — abilities with risk level and enabled state.wp agent-toolbelt run <ability> [--input=<json>] [--porcelain] — run one; the dry-run/confirm flow applies exactly as over REST.wp agent-toolbelt log [--limit=20] [--ability=<slug>] — read the audit log.