What we fixed in the 1.7.2 connection release

Every fix in version 1.7.2 sits on the connection path, which is the part of the plugin you touch once and then never think about again until it fails. One of them was our own bad default breaking a real connection for real people, so that is where this starts. This is the fourth release in a row carrying a batch of correctness work, after 1.6.2, 1.7.0 and 1.7.1. As with those, the catalog did not move: 153 governed abilities, none added, removed, renamed, or repermissioned.

Our own default stopped ChatGPT connecting

Dynamic client registration is how an MCP client registers itself with your site’s OAuth server without you copying a client ID out of one screen and into another. It was off by default. That default is why ChatGPT reported a discovery failure and could not connect, on sites where nobody had ever gone looking for the setting, which is most sites.

That one is ours, and there is no client bug or spec ambiguity to share it with. We shipped a default that made the most common connection fail, and the failure reached the user as a message about discovery rather than as anything pointing at a setting they could go and change.

In 1.7.2 dynamic client registration has its own switch on the Settings tab again, and it is on by default. Existing installs get switched on when they update, including sites that never touched the setting, because leaving them on the old default would leave them broken. You can turn it back off, and it stays off if you do. If you are documenting or scripting a setup, this is the setting that has to be on for ChatGPT and Claude to self-register.

An off-by-default posture is the point of this plugin, and it still is. It applies to what an agent is allowed to do on your site. Applying it to whether an agent can complete a handshake was not caution, it was a bug with a principled-sounding excuse.

Three connection bugs

Three separate faults, all of them in the space between a client asking and a session existing.

The OAuth authorize step mangled percent-encoded redirect addresses. An address carrying encoded characters was altered on the way through authorize, so what came back out no longer matched what the client had registered and the flow stopped there. Clients with plain addresses never saw it, which is the kind of bug that stays invisible until the one client that needs it turns up.

A failed session write handed back a session ID that did not exist. The write could fail and the response would still carry an ID, so the client walked away holding a reference to nothing and its next request failed for a reason unrelated to the actual problem. Handing back a live-looking handle for a session that was never stored is the same failure class as a sweep that reports success over a partial scan: the caller is told the wrong thing confidently.

A very large tool schema could exhaust memory while the tool list was built. Building tools/list assembles the schema for every enabled tool at once, and with enough tools enabled and a large enough schema among them, that build could run the site out of memory before it produced a list. It is bounded now.

Smaller fixes

A wrong capability check on delete-revision is corrected. OAuth options were being left behind in the database at uninstall and are now removed with everything else. There is a batch of correctness fixes across the WooCommerce, ACF, and Rank Math integrations, which are vendor delegation paths where the plugin hands off to another plugin’s own API and has to get that handoff exactly right.

The readme also gained a new FAQ entry for CDNs that block the agent at the edge, which came out of a real user report that turned out not to be a plugin fault at all. That one is worth reading on its own: your agent signs in, then nothing happens.

What this release is

1.7.2 is not fix-only. It also rebuilt the consent screen and added transport rows to the Activity Log, both covered in what 1.7.2 adds. But the fixes above are the reason to update. None of them changes what an agent is permitted to do. They change whether the connection you were trying to make actually completes, and whether a failure tells you the truth about why.

Full release history is on the changelog, and the current controls are on security.