Safety

The agent writes inside the frame. You decide what leaves it.

After activate, Allow publish is on (Pro). Tick Draft-only to lock it. Cloud MCP cannot override origin policy. Forms still start draft. Lite stays draft-only.

The write path (editor)

Every mutate: HMAC from cloud → WordPress capability → policy → snapshot → execute → origin audit + cloud log.

  • Trash only. No force-delete.
  • Dangerous abilities stay off until WP Adapter → Tools.
  • 60 cloud calls / minute / origin user.
  • The runtime user is wp-adapter-agent with no publish, no delete, no upload until you change Policy and Tools — and you still should not make that user an Administrator.

Draft-only

Off by default on Pro. Tick it (or uncheck Allow publish) to reject publish / future / private. Lite cannot turn this off. Editing an already-live post while draft-only is on is also rejected — including block-node edits. Set slug on create/update before set-status publish so WordPress does not strip æ/ø/å from the title.

Forms: create-form is always draft. The shortcode on WordPress only renders after set-form-status live and a sync. A draft form returns “This form is not live” if someone hits submit anyway.

Rollback

rollback (and Snapshots in wp-admin) restores:

  • title, content, excerpt, status, slug
  • categories and tags
  • featured image
  • wp_adapter_* meta and the canvas meta the dock knows (Elementor / Divi / Bricks / …)

It is not a blind dump of every ACF field or every plugin’s post meta. Snapshot before the write; rollback to that snapshot id.

WooCommerce products snapshot name, prices, stock, categories, tags, attributes, variations. Orders snapshot status and customer note. Plugin and core updates are not snapshotted — rollback cannot undo them.

Forms

  • Honeypot: bots that fill wpa_hp get a fake success.
  • 10 submits / minute / IP on the WordPress origin.
  • Notify email must be the account, an org member, or the site’s domain.
  • Cards never touch WP Adapter. Stripe Checkout is yours — EUR, DKK, or another listed currency, one-time or recurring.
  • Unknown field types error. They are not stored as text.

WooCommerce

Products start draft. Editing a live product while draft-only is on is refused — except set-product-stock, which is inventory. Order status needs Policy → Allow order status. set-order-status to refunded does not refund the payment. Product snapshots include prices, stock, categories, variations. Order snapshots are status + customer note. WooCommerce chapter.

Plugins and WordPress core

Off until you turn them on (Pro):

  • Allow plugin updates and wordpress.org installs — update-plugin and install-plugin. Slug from wordpress.org only. No zip, no URL, no GitHub.
  • Allow WordPress core updates — update-core. Own flag on purpose.

These writes do not snapshot. Rollback cannot undo a plugin or core update. If WordPress asks for FTP credentials, the tool stops and tells you to update from wp-admin.

Site CSS and cache

On by default (Pro). Uncheck in Policy to turn them off:

  • Allow site CSS — update-site-css on Additional CSS, Divi Custom CSS, or page _et_pb_custom_css. Snapshotted as object_type=css. HFCM is read-only. Theme PHP and files under wp-content are never written.
  • Allow cache purge — purge-cache for LiteSpeed, Super Cache, Rocket, Autoptimize, Fastest Cache, object cache. Not snapshotted.

search-css, inspect-front, and search-files are reads. Files: css/js/html/txt/json only. No PHP, no .env, no .htaccess.

Never

No eval, no theme PHP, no SQL, no zip upload, no create_user, no force-delete, no open-ended update_option. Plugin install is a wordpress.org slug, and only when Allow plugin updates is on. The plugin does not expose a public MCP server. Application Passwords are not used on the cloud path.

If you toggle options: blogname and blogdescription only.

Logs

Origin: WP Adapter → Activity. Cloud: Account → Usage (tool name, site, ok/error, truncated arguments). We do not sell post content that transits the cloud in order to patch a layout.

The WordPress® trademark is the intellectual property of the WordPress Foundation. Uses of the WordPress® names in this website are for identification purposes only and do not imply an endorsement by WordPress Foundation. WP Adapter is not endorsed or owned by, or affiliated with, the WordPress Foundation.