As the Abilities API is developed for inclusion in WordPress Core, we need to define a default set of abilities that will be bundled with it. This proposal outlines a foundational set of abilities intended to be safe, useful for the majority of use cases, and non-destructive by default.
All ability names below follow the established namespace/ability-name convention enforced by the API. The core namespace is used to designate that they are part of the WordPress Core set.
Proposed Core Abilities
Site and Settings
Users
Posts and Pages
Media
core/find-media-items
core/get-media-item
core/upload-media-item
core/update-media-item
Taxonomy
core/find-categories
core/get-category
core/find-tags
core/get-tag
Comments
core/find-comments
core/get-comment
Menus
core/get-menu-locations
core/get-menu
Themes
core/get-active-theme
core/list-themes
Plugins
core/list-plugins
core/get-plugin
core/activate-plugin
core/deactivate-plugin
core/update-plugin
Out of Scope for this Proposal
- Deleting content, users, or media.
- Installing or uninstalling plugins and themes.
- Theme switching.
- Creating or modifying menus.
- Any actions that cannot be easily reversed.
Open Questions
-
Plugin Management: This proposal includes abilities to activate, deactivate, and update plugins. Given the potential for site instability, what guardrails are essential? Should these actions be limited to an allowlist of specific plugins by default to prevent unintended changes?
-
Destructive Actions: This initial set deliberately excludes destructive actions like deleting posts or users. Should a future version include them? If so, what additional security measures, like a 'trash' or 'undo' ability, would be required to maintain a high degree of safety?
As the Abilities API is developed for inclusion in WordPress Core, we need to define a default set of abilities that will be bundled with it. This proposal outlines a foundational set of abilities intended to be safe, useful for the majority of use cases, and non-destructive by default.
All ability names below follow the established
namespace/ability-nameconvention enforced by the API. Thecorenamespace is used to designate that they are part of the WordPress Core set.Proposed Core Abilities
Site and Settings
core/get-site-info(WordPress 6.9)core/get-environment-info(WordPress 6.9)core/read-settings(AI Plugin 1.1, Add a core/settings ability #691)core/manage-settings(Add a core/manage-settings ability #764)Users
core/get-user-info(WordPress 6.9)core/read-users(AI Plugin 1.2, New Ability: core/read-users #774)core/get-usercore/find-userscore/update-user-infoPosts and Pages
core/read-content(AI Plugin 1.2, Add core/read-content ability #739)core/find-postscore/get-postcore/find-pagescore/get-pagecore/create-postcore/update-postcore/create-pagecore/update-pageMedia
core/find-media-itemscore/get-media-itemcore/upload-media-itemcore/update-media-itemTaxonomy
core/find-categoriescore/get-categorycore/find-tagscore/get-tagComments
core/find-commentscore/get-commentMenus
core/get-menu-locationscore/get-menuThemes
core/get-active-themecore/list-themesPlugins
core/list-pluginscore/get-plugincore/activate-plugincore/deactivate-plugincore/update-pluginOut of Scope for this Proposal
Open Questions
Plugin Management: This proposal includes abilities to activate, deactivate, and update plugins. Given the potential for site instability, what guardrails are essential? Should these actions be limited to an allowlist of specific plugins by default to prevent unintended changes?
Destructive Actions: This initial set deliberately excludes destructive actions like deleting posts or users. Should a future version include them? If so, what additional security measures, like a 'trash' or 'undo' ability, would be required to maintain a high degree of safety?