{"id":371275,"date":"2026-09-22T12:59:48","date_gmt":"2026-09-22T12:59:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/safedeploy-ai-site-maintenance-agent\/"},"modified":"2026-09-22T18:10:11","modified_gmt":"2026-09-22T18:10:11","slug":"zerofrik-maintenance-safety-agent","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/zerofrik-maintenance-safety-agent\/","author":23568556,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.6.2","stable_tag":"0.6.2","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"UpdateProof","header_author":"ZeroFrik","header_description":"Build a local deployment-safety snapshot and expose it through an authenticated, read-only API for optional integrations.","assets_banners_color":"71a1dd","last_updated":"2026-09-22 18:10:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":62,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.6.0":{"tag":"0.6.0","author":"zerofrik","date":"2026-09-22 12:59:28","revision":3707374},"0.6.1":{"tag":"0.6.1","author":"zerofrik","date":"2026-09-22 17:14:10","revision":3707823},"0.6.2":{"tag":"0.6.2","author":"zerofrik","date":"2026-09-22 18:10:11","revision":3707914}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3707374,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3707374,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3707374,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3707374,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.6.0","0.6.1","0.6.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[4932,732,600,151481,2550],"plugin_category":[52,54],"plugin_contributors":[282053],"plugin_business_model":[],"class_list":["post-371275","plugin","type-plugin","status-publish","hentry","plugin_tags-developer-tools","plugin_tags-maintenance","plugin_tags-security","plugin_tags-site-health","plugin_tags-updates","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-zerofrik","plugin_committers-zerofrik"],"banners":{"banner":"https:\/\/ps.w.org\/zerofrik-maintenance-safety-agent\/assets\/banner-772x250.png?rev=3707374","banner_2x":"https:\/\/ps.w.org\/zerofrik-maintenance-safety-agent\/assets\/banner-1544x500.png?rev=3707374","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/zerofrik-maintenance-safety-agent\/assets\/icon-128x128.png?rev=3707374","icon_2x":"https:\/\/ps.w.org\/zerofrik-maintenance-safety-agent\/assets\/icon-256x256.png?rev=3707374","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>UpdateProof is a free local tool for safer site maintenance.<\/p>\n\n<p>Start with one simple workflow: check your site, test important pages, review the update evidence, and approve changes only when you are ready. Learn about the broader UpdateProof roadmap at https:\/\/updateproof.zerofrik.com\/.<\/p>\n\n<p>The Free\/Base release helps developers and maintenance agencies establish an evidence-based update workflow before an update:<\/p>\n\n<ul>\n<li>Records WordPress and PHP versions.<\/li>\n<li>Records active plugins and the active theme without collecting their source code.<\/li>\n<li>Detects available WordPress, plugin, and theme updates using WordPress native update APIs.<\/li>\n<li>Runs a small, transparent set of deterministic checks and gives a low, review-recommended, or high-risk signal.<\/li>\n<li>Lets administrators configure up to four critical same-site URLs for manual preflight checks.<\/li>\n<li>Records HTTP status, response time, and a privacy-safe HTML fingerprint before and after a deployment attempt.<\/li>\n<li>Creates a selectable plugin\/theme deployment plan with an explicit approval step.<\/li>\n<li>Applies selected plugin and theme updates through WordPress native upgrader APIs.<\/li>\n<li>Records post-deployment checks and a local deployment history.<\/li>\n<li>Optionally connects to an administrator-owned browser worker for real Chromium screenshots of up to three public pages.<\/li>\n<li>Captures a baseline and reports pixel-level visual differences after an update, with screenshots stored in the site's uploads directory.<\/li>\n<li>Exposes site metadata, the latest snapshot, and update inventory through a read-only REST API.<\/li>\n<li>Lets an administrator generate and revoke a per-site API token.<\/li>\n<\/ul>\n\n<p>The Free\/Base plugin does not create a staging site, run synthetic form or WooCommerce tests, schedule updates, automatically roll back a failed update, or provide multi-site\/team management. Those are planned Pro\/service capabilities.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>UpdateProof stores the latest safety snapshot and a one-way hash of the optional site token in the WordPress options table. The free plugin does not send site content, visitor data, or telemetry to ZeroFrik or any third party.<\/p>\n\n<p>Visual regression is disabled by default. If an administrator enables it, the configured public page URLs are sent to the administrator-provided browser worker, which returns screenshots and pixel-difference data. The plugin stores those images in the site's uploads directory. Do not configure private, password-protected, or visitor-personalized pages in this Free\/Base feature.<\/p>\n\n<p>If an administrator generates a site token and gives it to an external service, that service can read the site metadata, update inventory, and safety snapshot exposed by the plugin's authenticated REST API. The token can be revoked at any time from the plugin settings in the WordPress admin.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The optional visual regression feature connects to a browser worker URL entered by the site administrator. There is no default hosted worker and no request is made unless the administrator enables the feature and presses Capture visual baseline or Run visual check. The worker receives the configured public page URL, viewport size, and a site identifier, then returns a Chromium screenshot and pixel-difference result. The plugin stores the returned screenshots in the site's uploads directory. The worker does not receive WordPress credentials, post content, or visitor data from this plugin. If a third-party worker is used, its operator's terms and privacy policy apply.<\/p>\n\n<h3>REST API<\/h3>\n\n<p>The optional read-only endpoints are available below the site REST URL:<\/p>\n\n<ul>\n<li>\/wp-json\/zerofrik-maintenance-safety-agent\/v1\/site<\/li>\n<li>\/wp-json\/zerofrik-maintenance-safety-agent\/v1\/snapshot<\/li>\n<li>\/wp-json\/zerofrik-maintenance-safety-agent\/v1\/updates<\/li>\n<li>\/wp-json\/zerofrik-maintenance-safety-agent\/v1\/preflight<\/li>\n<li>\/wp-json\/zerofrik-maintenance-safety-agent\/v1\/plan<\/li>\n<li>\/wp-json\/zerofrik-maintenance-safety-agent\/v1\/history<\/li>\n<li>\/wp-json\/zerofrik-maintenance-safety-agent\/v1\/visual<\/li>\n<\/ul>\n\n<p>Send the generated token in the X-UpdateProof-Token header. A token is never returned by the API.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the zerofrik-maintenance-safety-agent folder to \/wp-content\/plugins\/, or install the plugin ZIP from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open UpdateProof in the WordPress admin.<\/li>\n<li>Run a safety check.<\/li>\n<li>Generate a site token only if you are connecting the site to an external service.<\/li>\n<li>Optional: configure an administrator-owned browser worker under Visual page check, save a baseline, and run a visual check.<\/li>\n<\/ol>\n\n<p>The visual-regression screen can generate a one-time worker token. Copy it to the worker server as <code>UPDATEPROOF_WORKER_TOKEN<\/code>, restart the worker, and leave the saved token unchanged in WordPress. To rotate it later, use Generate and replace token, update the worker environment variable, restart the worker, and test again.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20update%20wordpress%20or%20plugins%3F\"><h3>Does the plugin update WordPress or plugins?<\/h3><\/dt>\n<dd><p>The Free\/Base version can apply selected plugin and theme updates only after an administrator explicitly approves a deployment plan. It does not apply WordPress core updates.<\/p><\/dd>\n<dt id=\"does%20it%20require%20an%20account%3F\"><h3>Does it require an account?<\/h3><\/dt>\n<dd><p>No. The local dashboard works without registration or an external service.<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20code%20to%20an%20ai%20service%3F\"><h3>Does it send my code to an AI service?<\/h3><\/dt>\n<dd><p>No. The free plugin does not read or transmit PHP source code, post content, or visitor data.<\/p><\/dd>\n<dt id=\"what%20is%20planned%20for%20pro%3F\"><h3>What is planned for Pro?<\/h3><\/dt>\n<dd><p>The planned Pro\/service layer will add connected multi-site management, staging or isolated test environments, more pages and viewports, synthetic form and WooCommerce tests, scheduled updates, automatic rollback, notifications, team access, client reports, and recovery workflows.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.2<\/h4>\n\n<ul>\n<li>Added a stable Pro approval hook so an active Pro recovery rule can block maintenance until a restore point is confirmed.<\/li>\n<li>Improved blocked-deployment notices so administrators see the actual safety reason.<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>Added a guided setup checklist to make the first safety check easier to follow.<\/li>\n<li>Added stable extension hooks for the separate UpdateProof Pro add-on.<\/li>\n<li>Added a restrained Pro roadmap link in the Help section.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to UpdateProof and requested the matching WordPress.org slug.<\/li>\n<li>Moved admin CSS and tab JavaScript into enqueued plugin assets.<\/li>\n<li>Audited request values and tightened worker-token sanitization.<\/li>\n<li>Shortened the directory submission description to meet the WordPress.org limit.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Improved the release-candidate branding and WordPress.org submission metadata.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Renamed the Tests tab to Site checks and added a simple recommended-check workflow.<\/li>\n<li>Added an explicit deployment workflow guide and clear empty-update states.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Reorganized the admin workspace into Dashboard, Tests, Updates &amp; deploy, Connection, and Help &amp; limits tabs.<\/li>\n<li>Simplified administrator-facing labels and added a guided start panel.<\/li>\n<li>Added a clear Free\/Base capability and limit summary.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Added visible per-page baseline capture results and screenshot previews.<\/li>\n<li>Fixed alignment of visual settings and token actions.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Fixed visual regression action buttons being rendered disabled even when configuration was complete.<\/li>\n<li>Added a visible visual-test readiness status and improved action-button alignment.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Clarified the worker shared-secret workflow and added one-time token generation and rotation in the admin UI.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added an opt-in administrator-owned browser-worker integration for three-page Chromium visual regression.<\/li>\n<li>Added encrypted-at-rest worker token storage, local screenshot storage, visual results in the admin UI, and a read-only visual REST summary.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added configurable critical-path HTTP preflight tests.<\/li>\n<li>Added selectable plugin\/theme deployment plans with explicit approval.<\/li>\n<li>Added post-deployment verification and local deployment history.<\/li>\n<li>Added read-only REST endpoints for preflight, plan, and history data.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial free WordPress.org release candidate.<\/li>\n<\/ul>","raw_excerpt":"Create a local WordPress safety snapshot, run preflight checks, review updates, and optionally compare screenshots before maintenance.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371275","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=371275"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zerofrik"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371275"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371275"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371275"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371275"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371275"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}