AIDB 7.9.0 release notes v7

Released: 28 Oct 2026

AIDB 7.9.0 adds support for WarehousePG 7. Some AIDB features aren't supported or work differently on WarehousePG. See AIDB on WarehousePG.

This release also includes the following enhancements, changes, and bug fixes:

TypeDescription
EnhancementWarehousePG 7 support: AIDB runs on WarehousePG 7, installed on the coordinator and every segment host. Most features are supported. Table pipelines in Live or Background mode, agent memory, and OTel export and storage aren't. See AIDB on WarehousePG.
EnhancementExternal telemetry ingest: The aidb_otel.ingest_* functions store OTLP traces, logs, and metrics from agents outside AIDB, in JSON or binary protobuf. Only members of the new aidb_otel_writer role can run them. See Receiving telemetry from external agents.
EnhancementOTLP/HTTP receiver: The edb-endpoints server can accept OTLP/HTTP telemetry from external agents and store it in aidb_otel. It is off by default. See OTLP/HTTP receiver.
EnhancementOAuth for the MCP server and OTLP receiver: MCP clients can sign in through your identity provider, and OTLP senders can send a bearer token instead of a password. Requires PostgreSQL 18 and a validator module. See Authenticating with OAuth.
EnhancementTelemetry provenance: Every aidb_otel row records its source (internal or external) and the principal that wrote it. aidb_otel.traces also records span_start_time and span_end_time for externally sent spans. See Common columns.
EnhancementOAuth bearer tokens for the OTLP receiver: Senders can authenticate with a token from your identity provider instead of a password. See OAuth.
EnhancementMultiple databases for the MCP endpoint: One endpoint can serve several databases, each at /mcp/<database>. The first database listed stays the default at /mcp. See Serving multiple databases.
ChangeEndpoint settings: edb.endpoints_host, edb.endpoints_database, edb.endpoints_tls_cert, edb.endpoints_tls_key, edb.endpoints_command_path, edb.endpoints_restart_max, and edb.endpoints_restart_window_secs now apply to every server the endpoint process runs. The edb.endpoints_mcp_command_path and edb.endpoints_mcp_restart_* settings are deprecated and still take precedence when set. See Configuring the endpoint.
ChangeMCP endpoint password check: The endpoint refuses connections that pg_hba.conf admits without checking a password, such as trust or peer, and no longer runs on PostgreSQL 14 or 15. See Upgrading from 7.8.0.
ChangeMCP database setting: edb.endpoints_mcp_database is now an identifier list, so an unquoted name folds to lowercase. See Upgrading from 7.8.0.
ChangeEndpoint supervisor name: The supervisor background worker is now named aidb endpoints supervisor, which is its backend_type in pg_stat_activity and its log prefix. Update monitoring queries and log filters that match aidb mcp endpoint supervisor. See Operating the endpoint.
EnhancementTelemetry documentation: The observability reference is now a single page that documents every attribute AIDB sets, who can read the aidb_otel tables, and why AIDB reports through logs instead of span events. The OpenTelemetry conventions deprecated span events, so the events array of every span is empty. See Schemas.
ChangeAttribute version: Every signal now carries aidb.otel_schema_version = 2. Data without it uses version 1 attributes. Update consumers that match version 1 attributes. See Traced attributes.
ChangeDuplicate spans: aidb_otel.traces stores a span once per writer. A span sent again by the same writer is ignored.
ChangeExisting telemetry rows: Rows stored before the upgrade are labeled internal, even though earlier releases let any member of aidb_users write them directly. See Upgrading from 7.8.0.
Bug fixRemote MCP clients: A client that reaches the endpoint on a non-loopback host by its hostname no longer gets 403. See Serving remote clients.
Bug fixTLS certificate renewal: pg_reload_conf() now loads a renewed certificate and key at the same paths without restarting the endpoint, and a failed reload keeps the previous pair serving. See Serving remote clients.
EnhancementAgent plugins: aidb.create_agent_plugin(), aidb.update_agent_plugin(), and aidb.delete_agent_plugin() manage reusable plugins that are stored in aidb.agent_plugins_registry. aidb.create_agent() and aidb.update_agent() take a new plugins argument. See Agents.
EnhancementSemantic knowledge base context: aidb.update_semantic_kb_context() stores your own description of a knowledge base, and aidb.process_semantic_kb_context() distills it into relationship and column comment proposals that stay proposed until a person approves them. Background knowledge bases distill context in their worker. Set aidb.semkb_context_model and aidb.semkb_context_timeout_ms with ALTER DATABASE. See Semantic knowledge bases.
EnhancementSemantic knowledge base plugins: Each semantic knowledge base publishes a managed agent plugin named semkb_<kb_name> with three read-only SQL tools for search, join paths, and join suggestions. aidb.list_semantic_kbs() reports its plugin_name. See Semantic knowledge bases.
EnhancementSemantic knowledge base query history filter: aidb.update_semantic_kb_history_filter() excludes roles from a knowledge base's query history. AIDB skips statements from the listed roles and their members, and removes rows they already wrote. See Semantic knowledge bases.
ChangeAgent memory functions require a scope: aidb.memory_add(TEXT, TEXT) and aidb.memory_search(TEXT, INT) are removed. The new aidb.memory_add() and aidb.memory_search() require namespace and actor_id. Update callers. See Upgrading from 7.8.0.
EnhancementGovernance decision evidence: A purpose_decision span lists the relations that a governed statement named, in aidb.agent.decision.referenced_relations, and their total. When PostgreSQL raises a privilege denial (SQLSTATE 42501), the span also records aidb.agent.decision.denial_class, aidb.agent.decision.denial_funcname, aidb.agent.decision.denial_message, and db.response.status_code. See Decision records.
ChangePurpose functions run as the caller: aidb.create_purpose(), aidb.update_purpose(), and aidb.delete_purpose() are now SECURITY INVOKER. The aidb_governance role can read all columns of the purpose registry. See Purposes.
Bug fixAgent session compaction: Compaction caps the output of the summary model, treats a summary that the model cut off as a failure instead of saving it, and retries a limited number of times. If every retry fails, the session history stays as it was. A failed compaction attempt no longer appears in restored history.
Bug fixTool history after compaction or reload: For Anthropic models whose thinking mode is unset, disabled, or adaptive, agents keep the retained tool calls and results as native tool history after a compaction or a session reload. With manual extended thinking, AIDB still replays them as text.
Bug fixAnthropic tool_use ids: Agents keep the tool_use id when they replay earlier turns, because Anthropic uses it to pair a result with its call. If an adapter rejects a tool history before it sends a request, the task now fails at once instead of retrying.
Bug fixTool argument schemas: The input schema of native and SQL tools now sets additionalProperties to false, so it matches the arguments that tool validation accepts. Schemas of MCP tools are unchanged.
Bug fixTelemetry in read-only transactions: An instrumented call in a read-only transaction, such as BEGIN READ ONLY, a role pinned with default_transaction_read_only, or a hot standby, no longer fails with SQLSTATE 25006. AIDB doesn't store those spans. It logs one LOG line per batch with the signal, the record count, the operation names, and the trace and span ids, and never the payload. See Read-only transactions.

Upgrading from 7.8.0

  • MCP server connections must check a password. Before you upgrade, change the pg_hba.conf lines that match the endpoint's connections to a password method such as scram-sha-256, or every tool call fails. The endpoint also no longer runs on PostgreSQL 14 or 15. See Passwords are always checked.
  • edb.endpoints_mcp_database is now an identifier list. An unquoted name with uppercase letters folds to lowercase, a name with a space or a non-ASCII letter must be double-quoted, and a name with a comma splits into two. See Upgrading from 7.8.0.
  • The supervisor has a new name. Update monitoring queries and log filters that match aidb mcp endpoint supervisor to aidb endpoints supervisor. See Logging.
  • Three edb.endpoints_mcp_* settings are deprecated. Replace edb.endpoints_mcp_command_path, edb.endpoints_mcp_restart_max, and edb.endpoints_mcp_restart_window_secs with edb.endpoints_command_path, edb.endpoints_restart_max, and edb.endpoints_restart_window_secs. A value that's still set takes precedence, and the supervisor logs a warning. See Deprecated settings.
  • The MCP host and database settings now default to empty. They fall back to edb.endpoints_host and edb.endpoints_database. A value you already set keeps working. See MCP settings.
  • edb.endpoints_mcp_enabled now takes effect on reload. Turning the endpoint on from fully off still needs a restart, and the new master switch edb.endpoints_enabled disables every server when it's off. See Configuring the endpoint.
  • Telemetry rows written before the upgrade are labeled internal and have no principal. AIDB can't tell which of them members of aidb_users wrote directly, so don't treat source = 'internal' as proof for rows older than this upgrade.
  • Launching edb-endpoints yourself. The binary now serves the OTLP receiver by default, so a command that worked before, such as edb-endpoints --pg-host /tmp --pg-dbname aidb, fails without --otlp-pg-dbname. Add --no-otlp to keep it MCP-only, or --otlp-pg-dbname=<database> to serve telemetry too. Endpoints that the supervisor starts need no change. The unprefixed --listen-host, --listen-port, --tls-cert, --tls-key, and --pg-dbname flags are deprecated in favor of their --mcp-* forms. See Launching edb-endpoints yourself.
  • Agent memory function calls. aidb.memory_add(TEXT, TEXT) and aidb.memory_search(TEXT, INT) are dropped, and the upgrade doesn't keep a compatible overload. Update calls to pass namespace and actor_id, for example aidb.memory_search(namespace, actor_id, query). The upgrade doesn't cascade to objects that depend on the old functions, so update or drop those objects first.