Install

Works with Drupal: ^11

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 183.39 KB
MD5: f9c00ec43c06963fb5d70f1ce77d90bc
SHA-1: 6ec23e1fa2f732cde68c3223c23bd6ac307b9fd1
SHA-256: bd59487893c3a8219e0f241b56bccc04e31f9b4592825f9c27daf579f36270bd
Download zip 288.34 KB
MD5: 403b3af96fc45dbd9b581b26c901b365
SHA-1: 50c6bc53b45d853ae7fbdd3c9574d14d163f9aa0
SHA-256: 5bd171632ffdb8d9a41232e17f2f1eb49e8f16ea9fa4cb1e794879e296c55765

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_actions MCP tool.
  • ai_governance_mcp_server returns each call's tool_call_id in 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 new McpGatewayInterface::extractToolCallId(); plugins that extend McpGatewayBase keep 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 for unmatched_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 administrator role. Admin roles already have it; on sites without that role the recipe failed.
  • ai_governance_flowdrop works 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.

Created by: manuel garcia
Created on: 20 Oct 2026 at 21:00 UTC
Last updated: 20 Oct 2026 at 21:00 UTC

Other releases