{"id":368761,"date":"2026-09-16T05:16:48","date_gmt":"2026-09-16T05:16:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/controlpact-governance\/"},"modified":"2026-09-16T05:16:35","modified_gmt":"2026-09-16T05:16:35","slug":"controlpact-governance","status":"publish","type":"plugin","link":"https:\/\/ru.wordpress.org\/plugins\/controlpact-governance\/","author":23566081,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"ControlPact Governance","header_author":"ControlPact","header_description":"Connects WordPress to ControlPact for governed AI and automation decisions.","assets_banners_color":"0f1a3b","last_updated":"2026-09-16 05:16:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"ctrlpact","date":"2026-09-16 05:16:35","revision":3697927}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3697944,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3697944,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3697944,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3697944,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,569,258885,5654,600],"plugin_category":[54],"plugin_contributors":[280993],"plugin_business_model":[],"class_list":["post-368761","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-automation","plugin_tags-governance","plugin_tags-policy","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-ctrlpact","plugin_committers-ctrlpact"],"banners":{"banner":"https:\/\/ps.w.org\/controlpact-governance\/assets\/banner-772x250.png?rev=3697944","banner_2x":"https:\/\/ps.w.org\/controlpact-governance\/assets\/banner-1544x500.png?rev=3697944","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/controlpact-governance\/assets\/icon-128x128.png?rev=3697944","icon_2x":"https:\/\/ps.w.org\/controlpact-governance\/assets\/icon-256x256.png?rev=3697944","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>ControlPact Governance connects WordPress to the external ControlPact AI-agent governance service.<\/p>\n\n<p>Each WordPress administrator supplies their own scoped ControlPact API credential. No shared or developer-owned production credential is bundled with the plugin.<\/p>\n\n<p>ControlPact evaluates governed actions and returns one of three decisions:<\/p>\n\n<ul>\n<li>ALLOW<\/li>\n<li>APPROVE<\/li>\n<li>BLOCK<\/li>\n<\/ul>\n\n<p>Version 0.1.0 includes a real governed WordPress operation for REST-based automation: an authenticated client can request publication of an existing draft post through the ControlPact endpoint. The post is published only when ControlPact returns ALLOW. APPROVE and BLOCK leave the post unpublished.<\/p>\n\n<p>Governed endpoint:<\/p>\n\n<pre><code>POST \/wp-json\/controlpact\/v1\/posts\/{id}\/publish\n<\/code><\/pre>\n\n<p>The endpoint uses normal WordPress REST authentication and WordPress capability checks. The ControlPact API key remains stored server-side.<\/p>\n\n<h3>External Service<\/h3>\n\n<p>This plugin connects to the external ControlPact governance service.<\/p>\n\n<p>ControlPact service website:\nhttps:\/\/ctrlpact.com<\/p>\n\n<p>Privacy Policy:\nhttps:\/\/ctrlpact.com\/privacy<\/p>\n\n<p>Terms of Service:\nhttps:\/\/ctrlpact.com\/terms<\/p>\n\n<p>Current API service endpoint:\nhttps:\/\/controlpact-backend.onrender.com<\/p>\n\n<p>The external service is required for governance evaluations. The plugin does not perform ControlPact policy evaluation locally.<\/p>\n\n<p>When a governance evaluation is requested, the plugin may send:<\/p>\n\n<ul>\n<li>The requested action name.<\/li>\n<li>The governed resource.<\/li>\n<li>A unique reference ID.<\/li>\n<li>Context associated with the request.<\/li>\n<li>The WordPress site URL.<\/li>\n<li>For governed post publication: the post ID, post type, requested status and current WordPress user ID.<\/li>\n<li>The configured ControlPact API credential in the HTTP Authorization header.<\/li>\n<\/ul>\n\n<p>The governed post-publish endpoint does not send the post title or post content to ControlPact.<\/p>\n\n<p>The API credential is used only to authenticate requests to ControlPact.<\/p>\n\n<p>No governance request is sent until a WordPress administrator has configured the plugin with a ControlPact API credential and uses functionality that requires a ControlPact decision.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The ControlPact API key is stored server-side in the WordPress options database and is not printed back into the administration interface after it has been saved.<\/p>\n\n<p>The option is configured not to autoload with ordinary WordPress requests.<\/p>\n\n<p>ControlPact Governance does not include advertising or unrelated tracking.<\/p>\n\n<p>When governance functionality is used, information necessary to evaluate the requested action is transmitted to the external ControlPact service as described in the External Service section above.<\/p>\n\n<p>Site administrators are responsible for ensuring that the contextual data they send through governed actions is appropriate for their organisation and applicable privacy requirements.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate ControlPact Governance.<\/li>\n<li>Open Settings &gt; ControlPact.<\/li>\n<li>Enter your own scoped ControlPact API key.<\/li>\n<li>Click Save Connection.<\/li>\n<li>Click Test ControlPact Connection.<\/li>\n<li>An ALLOW, APPROVE or BLOCK response confirms that ControlPact evaluated the request.<\/li>\n<li>For governed automation, create or edit a draft using the normal WordPress REST API, then POST to <code>\/wp-json\/controlpact\/v1\/posts\/{id}\/publish<\/code> using normal WordPress REST authentication.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20include%20a%20controlpact%20api%20key%3F\"><h3>Does the plugin include a ControlPact API key?<\/h3><\/dt>\n<dd><p>No. Every installation uses the customer's own scoped ControlPact API key.<\/p><\/dd>\n<dt id=\"what%20wordpress%20action%20is%20governed%20in%20version%200.1.0%3F\"><h3>What WordPress action is governed in version 0.1.0?<\/h3><\/dt>\n<dd><p>The plugin provides a governed REST endpoint for publishing an existing WordPress post. ControlPact evaluates the <code>wordpress.post.publish<\/code> action before publication.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20controlpact%20returns%20allow%3F\"><h3>What happens when ControlPact returns ALLOW?<\/h3><\/dt>\n<dd><p>The requested post is published and the endpoint returns the ControlPact decision and receipt ID.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20controlpact%20returns%20approve%20or%20block%3F\"><h3>What happens when ControlPact returns APPROVE or BLOCK?<\/h3><\/dt>\n<dd><p>The post remains unpublished. APPROVE returns an approval-required response and BLOCK returns a blocked response.<\/p><\/dd>\n<dt id=\"does%20installing%20the%20plugin%20automatically%20provide%20production%20access%3F\"><h3>Does installing the plugin automatically provide Production access?<\/h3><\/dt>\n<dd><p>No. Access is determined by the customer's ControlPact account, organisation, entitlement and API credential.<\/p><\/dd>\n<dt id=\"is%20controlpact%20required%3F\"><h3>Is ControlPact required?<\/h3><\/dt>\n<dd><p>Yes. This plugin is an integration with the external ControlPact governance service.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Added server-side ControlPact connection.<\/li>\n<li>Added administrator-only API credential configuration.<\/li>\n<li>Added real governance connection testing.<\/li>\n<li>Added a governed REST endpoint for publishing WordPress posts.<\/li>\n<li>Added ALLOW, APPROVE and BLOCK enforcement for governed publication.<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to ControlPact and govern automated post publication with ALLOW, APPROVE or BLOCK decisions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/368761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=368761"}],"author":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ctrlpact"}],"wp:attachment":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=368761"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=368761"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=368761"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=368761"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=368761"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=368761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}