Tracedown Culprit Finder
Site broken after a plugin update? Seeing “There has been a critical error on this website”, a white screen of death, a checkout or contact form that silently stopped working, or a 500 error? Something in your plugin list did it, and Tracedown finds out which one, in minutes, without deactivating an
Site broken after a plugin update? Seeing “There has been a critical error on this website”, a white screen of death, a checkout or contact form that silently stopped working, or a 500 error? Something in your plugin list did it, and Tracedown finds out which one, in minutes, without deactivating anything and without touching what your visitors see.
You cannot get stuck. Tracedown never writes the active_plugins option. Not once, on any code path. It filters the active plugin list in memory, for one signed-in administrator, for the length of one expiring session. Because nothing is written, restoring is not an operation Tracedown has to perform correctly. There is nothing to undo. Doing nothing restores the site when the session expires. Deleting one file restores it instantly.
That is a checkable claim, not a slogan. Search this plugin for a write to the active_plugins option, or for a call to core’s plugin activation and deactivation helpers, and you will not find one. The build fails automatically if anyone ever adds one.
And it names the culprit. Tracedown does not hand you a list of 86 checkboxes to toggle one at a time. It runs a deterministic delta-debugging search (ddmin) over the plugins that were active when the session started and returns a minimal failing set, which stays correct when two plugins only break the site together , the case a naive one-at-a-time or split-in-half search reports as “everything looks fine”.
How the safety works
- Four independent ways out, all of them a delete or a no-op, never a repair. Add define( 'TRACEDOWN_DISABLE', true ); to wp-config.php . It is the first thing the safe-mode file checks.
- Delete wp-content/mu-plugins/tracedown-safe-mode.php over FTP, SFTP or your file manager.
- Run wp tracedown abort . The command is registered from the safe-mode file itself, so it works even while the plugin is filtered out.
- Wait. Sessions expire on their own: 30 minutes by default, 15 minutes idle, and a hard one-hour ceiling that is written into the file rather than the database, so tampering with a database row cannot extend it.
- Visitors are not affected. The session is bound to one signed-in administrator through an HMAC-signed, HttpOnly, SameSite=Strict cookie. It is never bound to an IP address, so a mobile network, a VPN or a CDN edge change cannot silently drop you out of safe mode and give you a false “this looks clean” reading. Tracedown’s own loopback checks run logged out and carry no WordPress login cookies; each one proves itself with a single random key that expires within a minute.