Troubleshooting¶
For current service status and incident history, see the Patcherly status page.
This guide helps you resolve common issues with Patcherly.
Dashboard sign-in problems¶
The dashboard at app.patcherly.com keeps you signed in with a regular session cookie - nothing is stored in your browser's local storage.
- If parts of the dashboard (billing, trial banner, metrics filters, onboarding checklist, in-app toasts, page tours, account-deletion status) seem stuck loading, refresh the page after signing in, or sign out and sign in again.
- If you use a strict privacy mode, make sure cookies are not blocked for
app.patcherly.com.
Connector Issues¶
Applies to: all connectors (Node.js, Python, PHP, WordPress) on Linux, macOS, and Windows hosts. WordPress-specific guidance lives in Connectors → WordPress.
Agent status on Sites¶
The colored dot next to the site name on Sites means:
| Tip | What to do |
|---|---|
| Agent healthy | Nothing. Check-in within 24 hours. |
| Agent stale | Connector may still be installed. Confirm the agent or daily heartbeat is running; quiet sites need a daily check-in. |
| Agent offline | No check-in for 7+ days, or pairing was cleared. Re-pair if you still want the site connected. |
| Plugin / Connector reported deactivated | Turned off on purpose (WordPress Deactivate). Reactivate or remove the site row when you are done. |
| Plugin / Connector reported uninstalled | Removed on purpose (WordPress Delete, or patcherly uninstall). Safe to Unplug / delete the site row if you will not reconnect. |
| Re-auth required | Use Auto-Reconnect, or re-pair (patcherly login / WordPress Re-Connect Account). |
Full table: Connector management → Agent status. Logout vs uninstall: Logout vs uninstall.
Connector Not Connecting¶
Symptoms: - Connector shows "Disconnected" status - Errors not being detected - Fixes not being applied
Solutions:
- Verify OAuth credentials
-
Check that
~/.patcherly/credentials.jsonexists on the site server. If the file is missing or the access token has expired and refresh failed, re-pair from your installer'sINSTALL_DIR- match the elevation you used the first time so credentials land in the same home:# macOS / Linux (defaults to /opt/patcherly-connector; add sudo if installer enabled systemd) /opt/patcherly-connector/start.sh login # Windows PowerShell (defaults to %USERPROFILE%\patcherly-connector) & "$env:USERPROFILE\patcherly-connector\start.ps1" login # Package installs patcherly login # PHP zip / Composer (CLI, not the agent poll loop) php patcherly_cli.php login -
Confirm the connector can reach Patcherly
- In the dashboard, open your site and confirm status updates when the connector runs
- The Patcherly API is hosted by us at
https://api.patcherly.com. Connectors point at this host out of the box; you should not normally need to override it. -
Docker / private networks: ensure outbound HTTPS to
api.patcherly.comis allowed, and that containers can resolve DNS and reach the API (see connector logs for connection errors) -
Review Connector Logs
- Check
logs/error.log(PHP/Python) - Check console output (Node.js)
-
Look for connection errors or authentication failures
-
Verify network and firewall
- Production/Shared Hosting: Ensure firewall allows outbound HTTPS to
api.patcherly.com - Docker / VPN: Confirm the connector’s environment can reach
api.patcherly.com; fix DNS, routing, or proxy rules if logs show timeouts or TLS errors
“API server unavailable” during a Patcherly service outage¶
Applies to: all connectors (Node.js, Python, PHP, WordPress) on any OS.
Symptoms: - The connector or WordPress plugin reports API server unavailable (sometimes shown as a 503 error) - New errors on your site are not appearing in the dashboard - The site or app may look connected in places but error reporting and fixes are paused
What this usually means:
Occasionally Patcherly runs service recovery after a major incident (restoring Patcherly's own service data - not your website files). While that work is in progress, connectors are intentionally paused so nothing is half-processed. This is temporary and expected.
What you should do:
- Check the Patcherly status page for an active incident or maintenance notice.
- If you are signed into the dashboard, you may be redirected to a maintenance page with a short “recovery in progress” message - that is normal; it does not mean your account was deleted.
- Wait until the incident is resolved - you do not need to reinstall the connector or rotate your OAuth token.
- After service is healthy again, refresh Sites in the dashboard; queued errors on the connector side resume sending automatically once the API accepts traffic again.
- Your pre-apply backups (copies of files on your server before a fix) are not affected by service recovery.
When to keep troubleshooting:
If messages continue after the status page shows all systems operational for 15+ minutes, use the steps under Connector Not Connecting above - that points to a normal connectivity or credentials issue, not a service outage.
Connector Keeps Disconnecting¶
Symptoms: - Connector connects but disconnects frequently - Intermittent error detection
Solutions:
- Verify OAuth credentials
- Check that
~/.patcherly/credentials.json(or/root/.patcherly/credentials.jsonif paired withsudo) exists on the site server. - If it is missing or the token has expired, re-pair from your installer's
INSTALL_DIR:start.sh login(Linux/macOS) /start.ps1 login(Windows) - orpatcherly loginfor package installs. -
Each pairing issues a new OAuth access token plus a fresh signing secret.
-
Check HMAC signing
- HMAC secrets are per-token and bundled inside
~/.patcherly/credentials.json - HMAC verification is always mandatory for fix payloads (cannot be disabled)
-
If signature errors persist, re-pair to get a fresh token and secret
-
Review Rate Limits
- Check if you're hitting rate limits (connector logs may mention throttling or “too many requests”)
-
Consider upgrading your plan if limits are too low
-
Check System Resources
- Verify sufficient memory/CPU for connector
- Check for process crashes or restarts
- Review system logs for OOM (Out of Memory) errors
Account / Profile Updates¶
Applies to: the Patcherly dashboard at
app.patcherly.com- browser-side only, no connector involved.
Email field won’t update in Profile¶
Why it happens: - Your sign-in email is fixed for security; it isn’t editable from Profile.
What to do: - Change password, name, or other fields without changing the email field. To use a different email, open Support from the bottom of the dashboard sidebar (Pro workspaces may include direct email there).
Error Detection Issues¶
Applies to: all connectors. Most steps below assume shell access on the host running the connector (Linux/macOS) - see the WordPress-specific path under Connectors → WordPress when commands aren't available.
Errors Not Being Detected¶
Symptoms: - Errors occur in application but don't appear in Patcherly - Connector is connected but no errors reported
Solutions:
- Verify Log File Path
- Check connector is monitoring correct log file
- Verify log file exists and is readable
-
Check file permissions
-
Check Error Log Format
- Connector looks for "ERROR" in log lines
- Ensure your application logs errors with "ERROR" keyword
-
Check log format matches expected pattern
-
Test error reporting
- Manually trigger an error in your application
- Check if connector detects it
-
Review connector logs for error-reporting attempts
-
Check Queue Status
- Review queue file for pending errors
- Check for queue processing errors
- Verify queue file is writable
Duplicate Errors¶
Symptoms: - Same error appears multiple times - Error count keeps increasing for same issue
Solutions:
- This is Normal
- Patcherly tracks how often the same error happens
-
The error detail shows occurrence count and last seen time
-
Ignore Repeated Errors
- Use "Ignore" action to stop tracking specific errors
- Errors are automatically deduplicated by normalized signature (log timestamps stripped); repeat hits bump occurrence count on the same row
Fix Application Issues¶
Applies to: all connectors (Node.js, Python, PHP, and WordPress).
Fixes Not Applying¶
Symptoms: - Fixes are approved but not applied - Connector shows "Pending" status for fixes - Error row ends Failed after an apply attempt, or returns to Analyzed with Stale patch
Solutions:
- Check that Dry-run is off for the site. While Dry-run is on, the connector previews the change but never writes files. New sites start with Dry-run off; if you turned it on for a test, turn it off on the Sites page (table or expanded row under Auto Analysis / Auto Apply) when you want the connector to apply fixes.
- Verify file permissions
- Make sure the connector's process can write to your application files.
- Check directory permissions and file ownership.
- Check the backup directory
- The backup directory must exist and be writable by the connector.
- On Python, Node, and PHP, this is controlled by the
PATCHERLY_BACKUP_ROOTenvironment variable (default.patcherly_backupsunder the agent working directory). - Review connector logs near the time of the failed apply, or see the next section when the dashboard shows Failed or Stale patch.
Fix could not be applied safely¶
Symptoms: - Error status becomes Failed, or returns to Analyzed with orange Stale patch - The site file on disk is unchanged (this is intentional) - No new backup folder was created for that attempt
Why: Before writing anything, the connector checks that the fix is usable and that the live files still match. If the fix is unreadable, or someone (or a deploy) changed the file after the draft was prepared, Patcherly leaves your site alone. See Connectors → When a fix cannot be applied safely.
Solutions:
- For Stale patch - update or restore the live file as you prefer, then Mark as manually fixed or Delete the error (or run a fresh analysis on a new error if the issue returns).
- For Failed after approve - run Analyze with AI again from Errors so a fresh draft is prepared.
- Update the connector to the latest version if you are on an older build.
- Don't keep retrying the same failed apply - nothing on disk changes until a new draft is ready or the live file matches again.
Fixes Causing Errors¶
Symptoms: - Fix is applied but causes new errors - Application breaks after fix
Solutions:
- Automatic Rollback
- A basic health check runs for all plans after every fix (site URL must respond and not return 5xx). If it fails, Patcherly automatically rolls back (included on every plan).
- On Agent Testing plans, enhanced health and test failures can also trigger automatic rollback.
- Check rollback status in dashboard (Rolling back → Rolled back or Rollback failed)
-
Review rollback logs
-
Manual Rollback
- Manual rollback is available to all users (every plan). Use "Rollback" in the dashboard on fixed/failed errors, choose a reason, and confirm.
- Restore from backup manually if needed
-
See Rollback Guide
-
Review Fix Quality
- Check confidence score (lower scores = higher risk)
- Review fix code before approving
- Test fixes in staging first
HMAC Verification Failures¶
Symptoms: - Fixes rejected with "HMAC verification failed" - Connector logs show signature errors
Solutions:
- Re-pair the connector
- The per-token HMAC secret lives in
~/.patcherly/credentials.json; re-pair from your installer'sINSTALL_DIRto get a fresh token and secret: -
WordPress: on Patcherly → Home, click Re-Connect Account (or Disconnect, then Connect with Patcherly)
-
Check Timestamp
- HMAC includes timestamp (5-minute window)
- Verify system clock is synchronized (NTP)
- Check for timezone issues
Backup Issues¶
Applies to: Node.js, Python, and PHP connectors on Linux/macOS hosts (default backup root
.patcherly_backups). For the WordPress plugin, backups live underwp-content/uploads/patcherly/backups/. Web-server hardening for both is in Connectors overview → Hardening backup folders and the public web.
Backups Not Created¶
Symptoms: - Fixes applied but no backups found - Backup directory is empty
Solutions:
-
Check Backup Directory
-
Verify Environment Variable
-
Check File Permissions
- Ensure connector process can write to backup directory
- Verify directory ownership
-
Check disk space
-
Review Backup Manager Logs
- Check for backup creation errors
- Verify backup manager is initialized
- Review error messages
Backup Directory Accessible via Web¶
Symptoms: - Backups can be accessed via browser - Security risk
Solutions:
- Move Outside Webroot
- Set
PATCHERLY_BACKUP_ROOTto a path outside the public document root -
Or use an absolute path outside webroot
-
Protect the backup path - Prefer moving backups outside the webroot (
PATCHERLY_BACKUP_ROOT). Connectors write.htaccessand IISweb.configinside the backup folder; those only help on Apache (AllowOverride All) or IIS: both are ignored on Nginx. For full coverage including ready-to-paste Nginx and Apache vhost snippets, see Connectors overview → Hardening backup folders and the public web. On WordPress, Tools → Site Health and Settings → Diagnostics explain when a canary underuploads/patcherlyreturns HTTP 200 and how to add optional vhost hardening (optionalPATCHERLY_BACKUP_ROOTmoves backups only).
Performance Issues¶
Applies to: all connectors on any OS. Resource-usage symptoms most often show up on shared-hosting PHP/WordPress sites, but the diagnostic steps apply across the board.
Slow Error Detection¶
Symptoms: - Errors take long time to appear in dashboard - Delayed notifications
Solutions:
- Check Polling Interval
- Connectors poll every 5-30 seconds
- Reduce interval for faster detection (increases load)
-
Check connector configuration
-
Review Queue Processing
- Check queue size (large queues = slower processing)
- Review queue processing frequency
-
Consider increasing processing rate
-
Check Network Latency
- Slow or unstable networks delay the connector and dashboard updates
- Try from a stable connection; if you use a VPN or strict firewall, ensure HTTPS to Patcherly isn’t blocked
High Resource Usage¶
Symptoms: - Connector using too much CPU/memory - System performance degraded
Solutions:
- Review Connector Configuration
- Reduce polling frequency
- Limit queue size
-
Adjust log monitoring interval
-
Check for Memory Leaks
- Monitor connector memory usage over time
- Restart connector periodically if needed
-
Review connector code for leaks
-
Optimize Log Monitoring
- Use log rotation
- Limit log file size
- Archive old logs
Authentication Issues¶
Applies to: all connectors on any OS. Pairing uses OAuth Device Authorization Grant; the
~/.patcherly/credentials.jsonlocation is the same on Linux, macOS, and Windows (under the home directory of the user that ranpatcherly login).
Connector Authentication Failed¶
Symptoms: - "Authentication failed" errors - Connector shows as disconnected despite being installed
Solutions:
- Verify OAuth credentials
-
Check that
~/.patcherly/credentials.jsonexists on the site server. If it is missing or you see an authentication error in the connector logs, re-pair from your installer'sINSTALL_DIR: -
Re-pair the connector
- On the site server, run
start.sh login(Linux/macOS) orstart.ps1 login(Windows) from your installer'sINSTALL_DIR- orpatcherly login(orpatcherly logout && patcherly login) for package installs -
WordPress: on Patcherly → Home, click Re-Connect Account (or Disconnect, then Connect with Patcherly)
-
Check Site Status
- Verify the site is active in the dashboard
- Ensure the Patcherly account used during pairing still has access
Session expired / signed out unexpectedly¶
Symptoms: - Dashboard shows Session expired or sends you back to login - Actions fail until you sign in again
Solutions:
- Sign in again
-
Use Sign out (if shown), then sign back in with your email and password
-
Browser data
-
Clear cookies for
app.patcherly.comandpatcherly.com, or try a private/incognito window -
Network or device change
-
After switching VPN, network, or device, sign out and sign in again
-
Signed out elsewhere
- If you used Sign out on another tab or device, sign in again on this browser
Billing & subscriptions¶
Applies to: the Patcherly dashboard at
app.patcherly.com- browser-side only, no connector involved.
I don’t see Billing or “Manage billing (Stripe portal)”¶
- The Billing tab on Profile is shown when you are the workspace owner of your active workspace, or when you do not own any workspace yet (so you can create one with a name, slug, and plan). Invited members who already own a workspace manage billing after switching to that workspace in the top bar. If you expected employer billing controls but only see create-your-own, that is expected - members cannot manage someone else’s subscription.
I can’t switch plan in the Stripe portal¶
- Your Stripe Customer portal settings must allow plan switching and proration (configured in the Stripe Dashboard). If options are missing, open Support from the bottom of the dashboard sidebar.
- Always change plans via Profile → Billing → Manage billing (Stripe portal) for an existing workspace. The public Pricing page buttons point to new signup (
/register?plan=...), not in-app upgrades for accounts you already have.
Payment failed or subscription stopped¶
- Open Profile → Billing → Manage billing (Stripe portal) and update your payment method.
- Check the email Stripe sent for a direct link. See Plans.
Downgrade blocked or limits after downgrade¶
- You may have more sites or usage than the new plan allows. Remove or disable extra sites, then try again. Limits and features are defined on the Pricing page.
Where are prices and plan features defined?¶
- Public list: patcherly.com/pricing. In app: Profile → Billing shows your current plan and what’s included. Overview: Plans.
Getting More Help¶
If you're still experiencing issues:
- Check Documentation
- Review relevant connector documentation
- Check error management guides
-
Review FAQ
-
Collect Information
- Connector logs
- Error messages
- System information
-
Steps to reproduce
-
Contact Support
- Open Support from the bottom of the dashboard sidebar (FAQ: Support for plan-specific options)
- Include collected information
- Describe issue in detail