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-agentwith 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_hpget 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-pluginandinstall-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-csson Additional CSS, Divi Custom CSS, or page_et_pb_custom_css. Snapshotted asobject_type=css. HFCM is read-only. Theme PHP and files underwp-contentare never written. - Allow cache purge —
purge-cachefor 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.