Install
Works with Drupal: ^11Using Composer to manage Drupal site dependencies
Alternative installation files
Release notes
First alpha. From this release on, the entity field definitions are stable: a later release changes them only with an update path. Configuration and APIs may still change before beta.
Install
composer require 'drupal/ai_governance:^1.0@alpha' drush recipe modules/contrib/ai_governance/recipes/ai_governance
Upgrading from 1.0.x-dev
There is no update path from a 1.0.x-dev snapshot: audit correlations are now keyed per tool call, and earlier records are not converted. Export what you want to keep, delete the audit records (the module can't be uninstalled while any exist), uninstall, then install 1.0.0-alpha1 through its recipe.
drush entity:delete ai_governance_correlation drush entity:delete ai_governance_gateway_log drush entity:delete ai_governance_log drush pm:uninstall ai_governance composer require 'drupal/ai_governance:^1.0@alpha' drush recipe modules/contrib/ai_governance/recipes/ai_governance
Changed since the last 1.0.x-dev snapshot
- Correlation is per tool call, not per OAuth token: calls that reuse a token no longer collapse onto one record, in the audit log and in the
ai_governance_get_my_actionsMCP tool. ai_governance_mcp_serverreturns each call'stool_call_idin the tools/call result_meta(drupal.org/ai_governance.tool_call_id). A gateway that echoes it in its webhook report gets its leg joined to the governance leg of that call. JSON-RPC batches, input-required asks and, on mcp/sdk 0.7 and 0.8, results streamed over SSE get no id. Gateway plugins read it with the newMcpGatewayInterface::extractToolCallId(); plugins that extendMcpGatewayBasekeep working without it, and their legs stay unmatched. This binding is experimental: no gateway sends the key yet, and it may change before beta.- New correlation status
unmatched: cron marks a correlation that stayed pending forunmatched_after_days(default 2, on the settings page) as unmatched. Nothing is deleted. When retention is enabled, an unmatched correlation is purged one retention window later than other records, so never in the cron run that marked it. A leg that arrives later still completes the record. - The base recipe creates the AI Governance Log view, and the gateway, pipeline and demo recipes can be applied on top of it again.
- The base recipe no longer grants a permission to the
administratorrole. Admin roles already have it; on sites without that role the recipe failed. ai_governance_flowdropworks with FlowDrop 2.x as well as 1.6.- Works with MCP Server 2.0.0-beta6.
Tested with
Drupal 11.4.10, MCP Server 2.0.0-beta6, AI 1.5.1, FlowDrop 2.7.2, Midgard 1.0.0-alpha4.
Known issues
- Midgard exposes no guarded skill over MCP, so a Bifrost tool call never starts a Heimdall approval. Its governance leg comes from
ai_governance_mcp_server.
AI assistance
AI-Generated: Partially. Claude Code drafted parts of this release's code, tests and documentation under my direction; I reviewed every change and ran the tests and checks before tagging.