versions/set-core-pin writes the WordPress core version pin through the WP Downgrade plugin, so update checks keep offering the version you chose instead of the latest — and an automatic update cannot quietly undo a downgrade.
Setting a pin does not move core. That is the single most important thing about this ability, and the response states it in as many words. An assistant that reported a downgrade which had not happened would be worse than no answer at all.
At a glance
| Ability | versions/set-core-pin |
| Toolset | WP Downgrade — toolset/wp-downgrade |
| Group | WP Downgrade › Core Pinning |
| Requires | The WP Downgrade plugin, installed and active |
| Capability | manage_options and update_core |
| Safety | Settings write — stores one option. No files change. Requires confirm: true |
| Repeatable | Idempotent — setting the same pin twice leaves the same state |
| Ships in | AcrossAI Abilities Manager 0.0.45 and later |
The two-step that this is step one of
A pin changes which package the WordPress update offer points at. It does not apply it. So holding core on 7.0.8 is two calls:
versions/set-core-pinwithversion: "7.0.8"andconfirm: true— nothing moves yet.core/update-wp-corewithconfirm: true— this applies it. Confirmation is needed because moving core backwards is a downgrade, and it is checked for PHP compatibility first.
The response’s next_step field names that second call, so an assistant does not have to infer it.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
version | string | Yes | The core version to hold, e.g. 7.0.8. Must be a release WordPress.org publishes a package for. |
confirm | boolean | Yes, in practice | Must be true. |
What comes back
| Name | Type | What it is |
|---|---|---|
pinned_version | string | The version now held. |
previous_pin | string | What the pin was before, if any. |
running_version | string | What WordPress is still running — unchanged by this call. |
core_moved | boolean | Always false. Stated explicitly rather than left to inference. |
relation | string | Whether the pin is older or newer than what is running. |
package_url | string | The package the pin resolves to. |
next_step | string | The call that actually applies the pin. |
warnings | array | Including that core/reinstall-wp-core will refuse while this pin is set. |
Example
Ask your assistant:
Hold WordPress on 7.0.8 — the new release breaks our booking plugin.
{
"ability": "versions/set-core-pin",
"parameters": {
"version": "7.0.8",
"confirm": true
}
}Worth knowing
- Pinning the version already running is refused, because WP Downgrade ignores such a pin — it would be stored and do nothing.
- Refused outright while WP Downgrade’s caller-supplied download URL option is enabled, because the pin would then resolve through an archive this plugin did not choose.
- While the pin is set,
core/reinstall-wp-corecannot run. The pin rewrites the update offer, so there is no offer for the running version to reinstall. Clear the pin first if you need to reinstall. - The target package must exist on WordPress.org. A version the directory does not publish is refused rather than pinned to nothing.
Related abilities
- Get Core Pin — read the current pin and whether it is doing anything
- Clear Core Pin — restore normal update behaviour
- Roll Back Plugin — the plugin and theme equivalent, which needs no pin
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category