---
title: "Platform Update — November 13, 2026"
slug: "platform-update-2026-11-13"
date: "2026-11-13"
tag: "Application"
summary: "Eleven services and packages moved in one week, led by a workflow classifier node that routes runs by model decision, an agent-chat MCP endpoint that runs a full agent turn as a Claude Desktop or claude.ai connector, agent channel identity linking with a Microsoft Teams connector, a credits-only billing flow with a plan picker, RBAC on the Create Agent form, a privacy audit log with PII and PHI filtering, and cross-organization agent copy."
author: "ibl.ai Engineering"
linkedin: |
  Your agents are now reachable from Claude Desktop and claude.ai as a connector that runs a full agent turn, and your workflows can branch on a model's decision.

  That is one week of platform releases, 1.399.0 to 1.448.0, across eleven services and packages:

  → A workflow classifier node routes runs by having a decision model choose among labelled branches, with placeholders filled at run time and If/Else and While conditions evaluated as real expressions
  → The agent-chat MCP tool lives at /mcp/agent-chat/<agent_id>/ and runs the agent's system prompt, tools, trained documents and memory, with a session id to continue the conversation
  → Agent channels gain identity linking with pairing codes and a Microsoft Teams connector with threaded replies
  → A credits-only billing flow with a plan picker, Add Credits through Stripe and plan changes, and top-up responses that say why a charge was refused
  → The Create Agent form enforces RBAC on every field, and sidebars in both apps respect it
  → A privacy audit log on the agent Privacy tab, with PII and PHI filtering cards in four languages
  → Agents copy across organizations from the auth app, and the organization list is searchable
  → Eval runs, support tickets and tasks render as cards on phones, and the CSV editor virtualizes rows so large reports open in place
  → The embed snippet shrinks from 500 lines to a few, and an embed host can open a specific session with ?session=<id>
  → OCI WAF access rules are enforced at the origin

  Every one of these lands as an image tag you pull on your own schedule. When you run the platform yourself, the maintenance window is yours.

  With ibl.ai you own all the code and the data: self-hosted inside your own perimeter, model-agnostic across any LLM, with no per-seat pricing, deployable anywhere from your own cloud to a fully air-gapped network.

  #iblai #AgenticAI #EnterpriseAI #AIAgents #MCP #SelfHosted
---

Covers releases from **2026-11-06** to **2026-11-13** across `iblai/iblai-prod-images` (platform pins 1.399.0 – 1.448.0) and `iblai/iblai-web-frontend` (SDK & app packages).

| Service / Package | Image / Pin | Version Span |
|---|---|---|
| dm | `iblai-dm-pro` | `4.476.0-ai` → `4.501.0-ai` |
| os | `iblai-os-spa` | `0.190.0` → `0.195.0` |
| lms | `iblai-lms-spa` | `0.102.0` → `0.103.0` |
| cli | `ibl-cli` | `7.39.0` → `7.41.0` |
| auth | `iblai-auth-spa` | `2.10.1` → `2.11.0` |
| web-containers | `@iblai/web-containers` | `1.65.3` → `1.73.1` |
| web-utils | `@iblai/web-utils` | `2.21.2` → `2.24.0` |
| data-layer | `@iblai/data-layer` | `1.39.0` → `1.44.1` |
| mcp | `@iblai/mcp` | `1.41.0` → `1.45.1` |
| agent-ai | `@iblai/agent-ai` | `2.13.4` → `2.14.0` |
| iblai-js | `@iblai/iblai-js` | `2.65.4` → `2.73.1` |

---

## iblai-dm-pro (`4.476.0-ai` → `4.501.0-ai`)

**Workflow classifier node and drafts.** A new classifier node routes workflow runs by having an OpenRouter decision model choose among labelled branches. Decision models are registered in the model registry (daily sync, manual check, optional auto-enable), with an `iblai` classifier default per tenant and a try endpoint for testing. Mentor steps now fill `{{placeholders}}` in their `instructions` at run time (not the builder's pre-filled text), store their output with `output_variable`, and expressions can index lists. Drafts are behind `WORKFLOW_DRAFTS_ENABLED`. Stricter publish checks and run limits; entry mentor as a step refused; REST and MCP workflow execution off by default. Builder validation messages name steps and use builder words; the ` at <context> (field: ...)` suffix is gone. Deploy: no migration.

**Workflow agent step tracing and expression evaluation.** Workflow agent steps and periodic agents pass a Langfuse trace id as their generation id, so tracing no longer fails them. If/Else and While conditions are evaluated as Set-state expressions are (arithmetic, lists, computed keys, grouping), and publish refuses any condition or Transform or Set-state expression the evaluator cannot handle, by name. Publish also refuses an If/Else route with no connection and warns about connections that never run.

**Agent-chat MCP endpoint.** The agent-chat MCP tool is now reachable at `/mcp/agent-chat/<agent_id>/`, so it works as a Claude Desktop or claude.ai custom connector with only an `Authorization` header. The `X-Agent-Unique-Id` header still works.

**Agent-chat MCP runs a full chat turn.** The `get_mentor_response` MCP tool now runs a full agent chat turn — using the agent's system prompt, tools, trained documents and memory — instead of calling the model directly. Turns pass disclaimers, payment access, credits, spend caps and moderation, and are tracked and billed to the API key's owner. An optional `session_id` parameter and return value let a client continue a conversation with follow-up questions.

**Edge proxy for chat tools.** `utils/edge_proxy` is a shared circuit breaker and search client that routes chat-tool calls through the edge fetch proxy, with a local fallback so chat never depends on the proxy being up. Off by default: `ENABLE_EDGE_PROXY_CHAT_TOOLS`.

**Resource metadata crawler on fetch proxy.** With `ENABLE_TRAINING_FETCH_PROXY` on, the resource metadata crawler loads pages on the fetch proxy and no longer launches a browser on the DM host. YouTube descriptions come from the page's meta description. Deploy: upgrade the fetch proxy to **1.6.0 or later** before (or with) this release wherever `ENABLE_TRAINING_FETCH_PROXY` is on. Verify: save a website resource and a YouTube resource, check their scraped title/thumbnail, and look for `POST /api/v1/fetch/page` 200 in the proxy logs.

**Google Drive training credentials.** Drive training reads `client_id` and `client_secret` from the server-side `drive` integration credential instead of expecting them from the browser. Each training job uses its own temporary token file. No migration, no new settings; retrain Drive documents that failed.

**Guided prompt model fallback.** Guided prompts try the provider's next model when a small model fails (`iblai-fast` moves to `iblai-pro`) and log responses that cannot be parsed instead of returning an error.

**Top-up billing diagnostics.** The billing top-up endpoint now returns a `code` and `error_type` explaining why a charge was refused, so the UI can show a specific reason.

**Certificate public lookup.** The public certificate lookup returns only the fields needed to render and verify a certificate (ID, issue date, recipient display name, course, title override, signatories). Revoked and unknown certificate IDs return the same 404.

**Mentor summary reliability.** Summaries use small-model fallback and queue one task per mentor. `./manage.py refresh_mentor_summaries` (`--missing-only`, `--platform`, `--mentor`, `--limit`, `--stagger-seconds`, `--dry-run`) queues summaries on demand.

**Memory extraction reliability.** Memory extraction uses model fallback (fast → pro) with configurable time limits (90 s soft / 120 s hard) for reliable extraction across providers.

**Agent channel identity linking.** Pairing codes, identity linking and per-message access for agent channels. `GET, POST /v1/channels/identities` and `DELETE …/{identity_id}` manage a user's linked chat accounts; `POST /v1/channels/identities/preview` confirms what a code would link before redeeming it. Redemption is capped at 10 attempts/hour. Unlinking removes the allowlist entries that pairing added. A `CHANNEL_ACCOUNT_LINKED` email is sent when a chat account is linked.

**Microsoft Teams connector.** The Teams connector for agent channels validates Bot Connector JWTs, uses Pydantic validation at the boundary, supports threaded replies and roster email lookup, and limits outbound calls to Bot Connector hosts on the commercial cloud. An `msteams` credential's `tenantId` must be the tenant GUID. Deploy: no migration, no new settings.

**edX proxy opens user metadata.** `GET /v1/lms/api/ibl/users/manage/metadata/?username=<self>` and `POST /v1/lms/api/ibl/users/manage/metadata/` read and write the full user profile (edX account fields plus DM-only `title`, `about`, `public_metadata`, `social_links`, `enable_*` flags) in one request through the edX proxy under a DM token. Deploy: `./manage.py sync_edx_proxy_rules`.

**Deploy summary (DM):** Post-migration commands where applicable: `sync_edx_proxy_rules`. No schema migrations in this window.

---

## iblai-os-spa (`0.190.0` → `0.195.0`)

**RBAC on Create Agent.** The Create Agent form enforces RBAC permissions on each field, and the form itself now uses the SDK's `CreateAgent` component.

**Embed session parameter.** An embed host can open a specific chat session with `?session=<id>`.

**Secrets and API sidebar pages.** Secrets and API open as their own pages from the sidebar instead of nested tabs.

**Embed snippet.** The Embed tab generates an `agent-ai` snippet (a few lines) instead of a custom 500-line embed block. Desktop app **v0.95.32**.

**Workflow builder improvements.** New workflow nodes and interaction improvements, including keyboard shortcuts.

**Privacy Log.** The View Privacy Log button is shown to users who have permission to view privacy flags.

---

## iblai-lms-spa (`0.102.0` → `0.103.0`)

**Secrets, APIs and Networks.** The Secrets, APIs and Networks page is now available in the LMS SPA.

**Sidebar RBAC.** Sidebar items respect RBAC permissions.

---

## ibl-cli (`7.39.0` → `7.41.0`)

**OCI WAF access rules.** WAF access rules are now enforced at the OCI origin.

---

## iblai-auth-spa (`2.10.1` → `2.11.0`)

**Organization search.** The organization list is now searchable.

**Cross-org agent copy.** An agent can be copied into another organization from the auth app.

---

## @iblai/web-containers (`1.65.3` → `1.73.1`)

**Activity tabs on mobile.** Eval runs, support tickets and tasks are rendered as cards on phones with dedicated screens and sheets, and the table compacts below 1440 px. Pagination supports a compact mode.

**CSV editor virtualization.** The CSV editor virtualizes rows with `@tanstack/react-virtual` so large reports open in the editor instead of forcing a download.

**Retrieved Documents links.** Web sources in the Retrieved Documents panel show an Open Page link; web pages open in a new tab and YouTube previews play inline.

**Privacy audit log.** A privacy audit log component is available from the agent Privacy tab, gated by `CapabilityGate`. PII and PHI Filtering cards (in four languages) let admins configure filtering directly on the Privacy tab.

**Workflow nodes and keyboard shortcuts.** Additional workflow node types and keyboard shortcuts for the builder.

**Attachment gating.** The composer gates paste and drag-and-drop on the agent's attachments setting, so files are refused before upload when the agent does not accept them.

**Welcome greeting clamp.** Long new-chat greetings clamp to three lines with a Show More / Show Less toggle.

**Credits-only billing.** A plan picker with a credits-only billing flow: Standard plan, Add Credits with Stripe, and plan changes. The trial gate sends an out-of-credits admin to the Billing tab.

**Workflow banner linking.** Workflow banner validation lines now link to their step by `node_id`.

---

## @iblai/web-utils (`2.21.2` → `2.24.0`)

**Stale session guard.** Chat history that arrives for a replaced session is ignored, preventing stale messages in a new session.

**Subscription trial gate.** An admin who runs out of credits is routed to the Billing tab from the trial gate, with a contact-admin modal flag for non-admin users.

---

## @iblai/data-layer (`1.39.0` → `1.44.1`)

**Privacy flags.** Typed queries and filter constants for privacy-flags list and retrieve endpoints. PHI filtering fields on agent privacy settings.

**Workflow and billing types.** Typed endpoints for the workflow classifier and credits-only billing flows.

---

## @iblai/mcp (`1.41.0` → `1.45.1`)

Rolls up the `web-containers`, `data-layer`, and `web-utils` changes above — privacy audit log, workflow nodes, billing flow, attachment gating, and Secrets & API tab exports.

---

## @iblai/agent-ai (`2.13.4` → `2.14.0`)

**Custom SSO backend forwarding.** The embed forwards a custom SSO backend attribute so the host page's SSO provider is available inside the iframe.

---

## @iblai/iblai-js (`2.65.4` → `2.73.1`)

Umbrella SDK package. Rolls up all `agent-ai`, `web-containers`, `web-utils`, `data-layer`, `mcp`, and `auth` changes listed above.
