First 5: I set them upSee
·SafeGuard Team

Why Your Backup Plugin Is Blocked on Managed WordPress Hosting

WP Engine bans Duplicator and BackWPup by name. Pantheon locks the codebase so All-in-One WP Migration cannot write its ai1wm-backups folder. Here is what managed hosts actually block, why, and what a plugin has to do to survive on them.

You install a backup plugin on a managed host, and it either refuses to activate, silently fails to write an archive, or disappears from the plugins list overnight. This is not a bug and it is not your configuration. Managed WordPress hosts deliberately block a lot of backup and migration plugins, and each host blocks a different set for different reasons.

Nobody tells you this at signup. You find out the day you try to move the site.

WP Engine bans specific plugins by name

WP Engine publishes a disallowed plugins list, and backup and migration tools are well represented on it. Named on that list right now:

  • Duplicator
  • BackWPup
  • BackupWordPress, because it "duplicates a large number of files on local storage that are already in our backups"
  • WP DB Backup, for needlessly bloating local storage
  • WP DB Manager, for the same reason
  • VersionPress, because it needs "access to server level functions that we disallow for security reasons"

The stated rationale for the category is that backup plugins "needlessly bloat your site and can store files in an insecure way". WP Engine takes its own nightly backups on separate servers that do not count against your storage, and would rather you used those.

That reasoning is defensible from the host's side. The problem is what it leaves you with. Host backups are for the host, not for you: they live on the host's infrastructure, they restore on the host's terms, and they are useless the day you want to leave. If your only copy of the site is held by the company you are trying to migrate away from, you do not really have a backup, you have a dependency.

WP Engine does permit external backup solutions that comply with the platform. The question is which ones qualify, and that comes down to architecture rather than branding.

Pantheon does not ban anything, it just locks the filesystem

Pantheon takes a different approach and it catches people harder, because nothing announces itself as blocked.

On Pantheon, code is writable in the Dev and Multidev environments but locked in Test and Live. Only wp-content/uploads/ accepts writes there, because that path is a symlink to the platform's own file storage. Any plugin that writes into the codebase rather than into uploads simply cannot create its files once you promote past Dev.

This is exactly why All-in-One WP Migration fails on Pantheon. It writes exports to wp-content/ai1wm-backups/, which sits in the locked part of the tree. The plugin works perfectly in Dev, you promote to Test, and the export dies with a permissions error on a directory it created without trouble yesterday. Pantheon's own documented workaround is to symlink the plugin's directory into wp-content/uploads/.

If you have been searching for why ai1wm-backups will not write on Pantheon, that is the whole answer. The plugin assumes write access it does not have.

Kinsta and Flywheel: quieter constraints

Neither maintains a ban list as blunt as WP Engine's, but both have behaviour that breaks assumptions.

Kinsta runs a custom cron system and does not fire wp-cron.php on every page load the way stock WordPress does. Any plugin whose schedule depends on visitor traffic triggering wp-cron.php will run late or not at all. Backups that "run nightly" quietly stop running, and because a backup that never started produces no error, nothing tells you.

Flywheel applies strict file permission rules with a custom Nginx configuration. A plugin's backup directory may need creating by hand because the web server user cannot create it, and again the failure surfaces as an unexplained permissions error rather than anything that names the cause.

What a plugin actually has to do to survive managed hosting

Read the four cases together and the requirements are consistent. A backup plugin works on managed hosts when it:

  1. Writes inside wp-content/uploads/, not into the codebase. This single decision is the difference between working and failing on Pantheon, and it addresses WP Engine's complaint about storing files where they should not be.
  2. Does not depend on wp-cron.php firing from page loads. Schedules need their own queue, so a quiet week does not silently skip every backup.
  3. Does not need server-level functions. That is what got VersionPress disallowed. Anything reaching for exec, shell_exec or direct process control will be blocked on managed platforms as a matter of policy.
  4. Pushes archives off the server by default, so the backup is not sitting on the same infrastructure as the site and not counting against your hosting storage. This is the honest answer to "backup plugins bloat your site": store the archive somewhere you own.
  5. Does not rely on loopback requests. WP Engine blocks a site making HTTP requests to itself, which is a common way for plugins to do background processing.

Anything meeting those five is not really what the ban lists are aimed at. The lists exist because of plugins that pile gigabytes of archives onto the host's disk and reach for functions the platform has closed.

Where SafeGuard sits, stated honestly

SafeGuard writes to wp-content/uploads/safeguard-backups by default, which is the one directory Pantheon leaves writable on Test and Live, so it needs no symlink and no setting changed. Scheduling runs on Action Scheduler rather than page-load cron, so it works on Kinsta's custom cron. It uses no server-level shell functions. It pushes to storage you own across more than 20 providers. Server-side processing can be switched off in one setting on WP Engine, where loopback requests are blocked.

The honest caveat: being architecturally compatible is not the same as being on an approved list. WP Engine's published position is that platform-compliant external backup tools are permitted, not that any particular plugin is blessed. If you are on a managed host and it matters to you, check the current disallowed list yourself before committing, because these lists change and the one you read in a blog post is a snapshot.

We also lose some of these comparisons on speed, and publish the runs that show it. The public benchmark is ours, we built it, and every run is reproducible so you do not have to take our word for any of it. More on how we measure in the buyer's guide.

What to do if you are stuck right now

If a plugin is already failing on your managed host:

  • On Pantheon, check whether the plugin is writing outside wp-content/uploads/. If it is, either symlink its directory into uploads as Pantheon documents, or use a plugin that writes into uploads in the first place.
  • On WP Engine, check the disallowed list before you debug anything. If the plugin is named there, no amount of configuration will fix it.
  • On Kinsta, if scheduled backups have stopped, the schedule is the suspect, not the backup. Confirm the job is firing before you look at anything else.
  • Everywhere, if you are migrating away from a host, do not rely on that host's own backups as your migration path. Take a copy you control first, and restore it somewhere to prove it works before you cancel anything.

The pattern behind all four hosts is the same: managed platforms constrain what a plugin may do, and plugins that assumed a normal server fail in ways that look like your fault. They are not. Check where the plugin writes, check what fires its schedule, and check the host's list before you spend an evening on it.

Full per-host configuration notes live in the hosting compatibility docs.

Sources: WP Engine disallowed plugins, Pantheon symlinks and assumed write access, Pantheon filesystem guide.