-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
OAuth redirects and the Application Password bootstrap both require a secure callback. Serve the hub over HTTPS and make sure Settings → General uses its HTTPS address.
Check the managed site:
- Open
https://example.com/wp-json/and confirm it returns the WordPress REST index. - If OpenStation is active, confirm the root's
authenticationobject containsopenstation-fleet-oauth. - Open
https://example.com/.well-known/oauth-authorization-serverand confirm it returns JSON metadata. - Check for a firewall, login proxy, maintenance page, or security plugin intercepting either URL.
- Confirm Settings → General uses the site's public HTTPS address.
Fleet also tries WordPress's plain-permalink REST form automatically. If OpenStation is not installed, Fleet falls back to Core Application Password discovery.
Fleet rejects the callback when state, issuer, code, callback URI, client id, or PKCE verification fails. Start a new connection instead of reloading an old approval URL; the authorization code is single-use and expires after five minutes.
Also confirm the hub can make a server-to-server HTTPS request to the managed site's token endpoint. A browser being able to reach the site does not prove that the hub server can.
The access token should refresh automatically. Common reasons both tokens become unusable are:
- the connection was revoked from the managed user's profile;
- the approving user's password changed or the user was deleted;
- the refresh token was idle for 30 days or reached its 90-day lifetime;
- the hub's WordPress authentication salt changed, so its encrypted token cannot be opened; or
- an old refresh token was replayed and OpenStation revoked the token family.
Disconnect any stale local entry if possible and create a new connection.
OAuth authentication does not override route permissions. The approving WordPress account must have the capability required by that Core or plugin endpoint. Reconnect while signed into the intended administrator account, or change that account's role on the managed site.
Open the managed site's REST index and confirm the namespace and route exist. A plugin may be inactive, may not expose that feature through REST, or may register a different route or method than expected. Fleet cannot remotely manage a feature with no API.
Possible causes include:
- the approving bootstrap user cannot install or activate plugins;
- WordPress cannot write to the plugins directory;
- the server requires interactive FTP or SSH credentials;
- WordPress.org is blocked from the managed server;
- the site does not meet OpenStation requirements; or
- a security policy blocks REST-based plugin installation.
Try installing OpenStation through the managed site's normal Plugins → Add New Plugin screen. WordPress usually shows the same underlying error more directly.
This applies only to the bootstrap path. A server, proxy, CDN, or security plugin may be stripping the HTTP Authorization header before it reaches WordPress. The credential may already exist even if Fleet verification failed; revoke the unused Fleet for OpenStation on hub-domain entry under Users → Profile before retrying.
Fleet removes the local connection only after the managed site confirms revocation. Make sure the site and REST API are reachable, then try again. You can revoke an OAuth connection directly under Users → Profile → Fleet connections on the managed site, but Fleet will still retain its local record until its disconnect request succeeds.
Fleet intentionally keeps WordPress's safe HTTP boundary and rejects loopback and private-network targets. Do not disable that protection in production. The repository's local Studio test setup uses a disposable, development-only override that is never shipped.
Open a GitHub issue with the expected result, actual result, both WordPress and PHP versions, HTTP status, fixed Fleet notice, and sanitized error. Never include tokens, passwords, authorization headers, callback URLs, WordPress salts, or private domains.