DreamFactory v7.6.0 Release Notes
Release Date: 2026-05-28 // 21 days ago-
DreamFactory v7.6.0
π DreamFactory v7.6.0 launches governed AI/LLM connectivity as a first-class platform capability β a new AI Connection service type (df-ai), an AI chat experience over your own data (df-ai-chat), and an AI Gateway analytics dashboard backed by per-tool-call MCP audit logging. It also extends the security hardening pass to the full connector, authentication, and integration surface (SQL injection, SSRF, LDAP/SOQL/JS injection, zip-slip, JWKS/JWT validation, secret redaction, and more across ~20 packages), modernizes the MongoDB stack off the abandoned jenssegers/mongodb driver, and forward-ports every package to Laravel 13 compatibility. The admin interface gains AI management screens, a reusable RBAC role-scope control, overview landing pages, portable config-package export, and GitHub-linked server scripts.
π New Features
AI Connection Service (df-ai) β COMMERCIAL
A new
ai_connectionservice type providing unified, governed REST access to LLM providers, exposed as DreamFactory endpoints with role-based access control and identity passthrough.- Providers: Anthropic (Claude), OpenAI (GPT), xAI (Grok), Ollama (local), and any OpenAI-compatible endpoint
Resources per service:
POST /{service}/completionβ single-turn text completionPOST /{service}/chatβ multi-turn conversationPOST /{service}/embeddingsβ vector embeddingsGET /{service}/modelsβ list available modelsGET /{service}/healthβ provider health checkGET /{service}/usageβ usage statistics and token counts
df-core adds an
AI_CHATservice-type group so AI services slot into the standard service taxonomy
AI Chat Over Your Data (df-ai-chat) β COMMERCIAL
π¦ A new package to chat with your DreamFactory-governed data using AI together with MCP tools β combining the AI Connection service and the MCP server so agents reason over live data through existing role-based access controls.
π AI Gateway Analytics Dashboard (Admin UI + df-mcp-server)
- New AI Gateway dashboard in the admin interface: cost tracking, per-application attribution, multi-dimensional cost charts, most-expensive-call drill-downs, latency percentiles with deltas and sparklines, budget UI, and a dedicated MCP section
- π² Backed by new per-tool-call request logging and a Gateway aggregator endpoint in df-mcp-server, with an
mcp:prune-request-logscommand and configurable retention - AI usage analytics surface through
/_internal/ai/usage, reading theai_usage_log
π» Admin UI: AI Management
- π Full configuration screens for AI Connection services β model picker, "test connection" with saved-key fallback, chip-style picker for allowed roles, and inline code-block rendering
- π» Browser-based AI chat UI at
/ai/chat("Conversations") with a prerequisites picker panel above the chat-service config form - AI navigation split into Connections / Chat / MCP sub-routes
π» Admin UI: RBAC Role Scope
- π New reusable
df-role-scopecomponent and scope route, wired into the RBAC navigation, for scoping role access (includingservice_id=0wildcard handling) β embedded directly in the AI chat-service config form
π¦ Admin UI: Overview Landing Pages & Config Package Export
- π New overview landing pages with service-category tiles and config-package tooling
- π¦ df-system adds portable config-package export , surfaced through the new admin UI config-package tools
GitHub-Linked Server Scripts
- π» df-script + admin UI: scripts can now be linked to GitHub with a repository explorer, live fetch, and webhook-based cache invalidation
- π df-script adds an
_eventmetadata object (pre/post, service, script name) accessible inside scripts, plus a recursion guard for file-script services whose trigger path matches the file service
Snowflake Enhancements (df-snowflake)
- Snowflake key-pair authentication
- π° Stored-function handlers, including cross-database/cross-schema function calls, with a dedicated
SnowflakeFunctionSchemaand payload-driven parameter filtering
π Security
π This release extends DreamFactory's security hardening to the full connector, auth, and integration surface.
Authentication & Identity
- df-user: hardened AlternateAuth against filter injection and plaintext/MD5 handling
- df-oauth: strict redirect-host matching, rejection of credentials embedded in URLs, and constant-time comparison (
hash_equals) - df-oidc: never trust
id_tokenclaims without signature validation; JWKS algorithm allowlist (RS256/RS384/RS512 only) - df-saml: JWT requirement for metadata-endpoint access; bumped
onelogin/php-samlto^4.3.1 - df-adldap:
ldap_escapeon user-supplied values and sanitized LDAP group-filter fragments - df-mcp-server: hardened OAuth flow, daemon shared-secret, and Referrer-Policy
SQL & Query Injection
- df-database: validate relationship-filter PK values; quote identifiers in DDL helpers; validate
CREATE TABLEoptions append; harden single-id relationship upsert filter - df-sqldb: parameterized MySQL + PostgreSQL
getTableConstraintsschema lookups and routine/schema metadata lookups - df-sqlsrv: quote INOUT parameter values in T-SQL
SETstatements (dblib/FreeTDS path); parameterize schema-name interpolation; quote identifiers indropColumns - df-oracledb: parameterize OracleSchema lookups; quote
dropColumnsidentifiers - df-snowflake: removed
eval()fromloadParameters; parameterized routine lookups - df-salesforce: validate SOQL identifiers before concatenation
- df-mongodb: reject MongoDB filter operators that execute server-side JavaScript
SSRF, File & Transport Safety
- df-soap: SSRF, TLS-bypass, and symlink-traversal hardening
- df-file: refuse zip entries that escape the extraction target (zip-slip); refuse
asFullPath()results that escape the storage root - df-email: validate URL imports; configurable, hardened allowlist for the Local mailer executable
- β± df-scheduler: gate crontab install to CLI only, lock it, and escape the path
π² Secrets & Logging
- df-logger: redact credentials before shipping log payloads to a remote aggregator
- df-cache: unit-separator delimiter in cache keys to prevent key collisions
- df-limits: bucket numeric/UUID/hash path segments in the rate-limit endpoint key (prevents key explosion)
Data Layer
MongoDB Driver Modernization
- df-mongodb (0.22.1) and df-mongo-logs (1.3.1) migrated from the abandoned
jenssegers/mongodbto the maintainedmongodb/laravel-mongodb ^5.7. Themongodbconnection driver name andLOGSDB_*variables are unchanged β existing Mongo services and logging keep working without configuration changes. - df-mongodb: preserved nested field paths (no longer rewrites
_id.Idβ_id), maintaining correct dot notation
π Connector Fixes
- df-sqlsrv: fixed null values in Additional SQL Statements causing service errors at startup
- df-sqldb (pgsql): correctly detect primary keys when loading columns
- df-databricks: fixed connector creation; removed a dead reserved-keyword class (
Function) that could trigger a PHP parse error - df-dremio: fixed connector installation issues
- df-azure-ad: fixed get/set inheritance for role-per-app fields
- df-email: allow the default sendmail transport
- df-logger: correct Monolog v3 log-level integer conversion
π» Admin UI Fixes
- π Event Scripts: fixed the "Add path to file" radial not saving state and not clearing service details in the event-script service config screen
- βͺ API Docs: pinned swagger-ui to 4.15.5 to restore the API Docs UI
- Overview tiles navigate on first click and remain stable across dashboard pages; category pages render before data loads; clicks no longer blocked by the loading overlay
- AI UI: corrected camelCase form-key handling, hid
ai_service_id/ai_role_idwhen type isai_chat, stopped sending the maskedapi_key, improved light-mode legibility, and aligned font sizing - π Performance: reduced navigation churn and cached AI usage lookup datasets
Platform & Compatibility
Laravel 13 Forward-Compatibility
- β‘οΈ Every package was updated for Laravel 13 compatibility (e.g., replacing the removed
Connection::withTablePrefix()with the L13Grammar($this)constructor in df-sqlsrv, anddispatchNow()βBus::dispatchSync()in df-script) - π df-core adds PHP 8.5 readiness fixes (autoload preloading and incomplete-class guards around cached schema/CORS reads)
β¬οΈ Upgrade Notes
- π Security fixes are cumulative β upgrading is recommended for all deployments. This release hardens SQL injection, SSRF, LDAP/SOQL injection, server-side-JS injection, zip-slip, JWT/JWKS validation, secret logging, and crontab handling across ~20 packages.
- Platform baseline is unchanged from 7.5.0 (PHP 8.3 / Laravel 11). No host-level upgrade is required β this is an in-place upgrade. All packages are now Laravel 13-ready, but 7.6.0 ships on the validated L11 stack.
- MongoDB driver swap: df-mongodb and df-mongo-logs now use
mongodb/laravel-mongodbinstead of the deprecatedjenssegers/mongodb. Themongodbconnection driver name andLOGSDB_*variables are unchanged; ensure themongodbPHP extension is present (already included in the official Docker images). - MongoDB field paths: nested
_idfield paths are now preserved in dot notation. If you built downstream logic around the previous_id.Idβ_idrewrite, re-verify those queries. - OIDC/SAML hardening: OIDC now enforces
id_tokensignature validation and an RS256/384/512 JWKS allowlist; SAML requires a JWT for metadata-endpoint access and bumpsonelogin/php-saml. Verify identity-provider configurations after upgrading. - β¬οΈ Standard upgrade process applies for all other changes. Existing services, roles, and API keys a...
Previous changes from v7.5.0
-
DreamFactory v7.5.0
π DreamFactory v7.5.0 delivers a platform-wide 2026-04 security hardening pass (auth bypass, SQL injection, SSRF, unsafe deserialization, and timing-attack fixes across most packages), introduces GitHub as a first-class MCP utility service , adds a custom-tool lookup picker and unsaved-changes save guard to the admin UI, switches the MCP server from SSE streams to JSON responses with stale-stream eviction to prevent PHP worker lockups, and ships a new Jest + Playwright CI test harness for the admin interface.
π New Features
GitHub MCP Utility Service
- π New DreamFactory utility-service integration for GitHub β custom MCP tooling can call GitHub as a first-class service so AI agents reach repositories, issues, and pull requests without custom auth plumbing
- π§ Admin UI elements for configuring the GitHub integration end-to-end
Custom MCP Tool Lookup Picker
- β Added a lookup picker for custom MCP tools β admins can insert DreamFactory lookup values into custom-tool configuration through the UI instead of hand-typing keys
- π Inline JSON/JS lint-error display for custom tool bodies, with error notifications on static-header JSON
Unsaved-Changes Guard for MCP Custom Tools
- β Added a save guard that detects unsaved custom-tool changes when saving an MCP service and surfaces a contextual popup with persist/discard options (replaces the previous silent-drop behavior)
- π Fixed a related issue where custom tools were not persisted on first service creation or on re-save without IDs
MCP OAuth Direct Redirect Workflow
- π» MCP services can now declare an OAuth service for direct redirect β the MCP client is sent straight through the OAuth flow, skipping the DreamFactory UI login and removing a step from the desktop MCP connect experience
π Security
Authentication & Authorization
- df-core : Fixed auth bypass, widened the OAuth filter blocklist, removed token logging; reverted an earlier change that had narrowed OAuth method coverage so all meth
ods are now protected again - df-core : Replaced
rand()withrandom_int()ingenerateConfirmationCode() - df-core : Added
/auth/prefix to password-reset and email-invite URLs so they route through the authenticated handler - df-system : Removed the admin flag from password-reset email URLs
- df-script : Replaced
uniqid()withrandom_bytes(32)for script auth tokens - df-oauth : Fixed unsafe deserialization, a timing-attack vector, an open-redirect, and a name-field bug
SQL Injection Hardening
- df-sqldb : Fixed SQL injection in MySQL INOUT stored-procedure parameters (regression test added)
- df-sqldb : Fixed SQL injection in ORDER BY, GROUP BY, filter, and expression handling; widened expression/filter checks from allowlist to blocklist
- df-database :
db_functiontemplate value substitution now usesquoteValue()to prevent injection via template expansion
SSRF & Request Integrity
- df-system : Added SSRF validation to
import_urlendpoints on Package, Import, and App resources - df-mcp-server : Fixed host-header injection, OAuth-redirect issues, and session leaks; CORS posture re-widened explicitly for MCP's inherently-external clients after
being tightened in the scan
π» Admin UI
- df-admin-interface : Added a same-origin check to
handleRedirectIfPresent - df-admin-interface : Updated npm dependencies to eliminate critical CVEs surfaced by the scan
MCP Server
Transport & Stability
- π· Switched MCP responses from SSE streams to JSON, with guards around remaining SSE streams to prevent PHP worker lockups when multiple MCP session connections arrive concurrently
- Stale-SSE-stream eviction on reconnect β resolves 409 errors clients previously saw when reconnecting to an MCP session
Custom Tools
- π Fixed order-of-operations for custom-tool role checks against services β role rules now evaluate consistently with other service-level authorization
- Custom tools persist correctly on first service creation and on re-save without IDs
π» Admin UI
Event Scripts
- Script Type dropdown now populates for services whose names contain underscores
- π Fixed
scriptMethodwiring and added fallback behavior when the method name is empty - Event-script services are fetched lazily on open (events on service selection), cutting initial page load on large instances
/system/eventresponses exempted from the snakeβcamelCase interceptor so event identifiers are returned raw
Editor & Loading States
- π Permitted top-level
awaitin the Ace JavaScript lint worker undermodule:true - π Fixed a stuck loading spinner that could persist after rapid concurrent requests
SQL Databases
- df-sqldb : Fixed a regression where null values in additional SQL init statements caused service errors at startup
- π Blocklist-based filter/expression validation (from the security hardening above) now applies uniformly across all SQL connectors
π Performance
- df-system : Added a
services_onlyfast path to thesystem/eventresource, avoiding a full event walk when callers only need the service enumeration - df-admin-interface : Deferred event-script fetching until the user opens the section, with a secondary fetch on service selection
β Testing & CI
- df-admin-interface : Jest wired into CI with regression specs covering the 2026-04 fixes
- df-admin-interface : Playwright scaffold with smoke specs and a dedicated CI workflow, scoped to manual/nightly to keep PR CI fast
- df-admin-interface : UI automation affordances added and a discovery spec reporting navigation automation limits
- df-admin-interface : Dropped the pre-existing lint gate from default CI (lint still runs, just non-blocking)
- Test-suite hardening across df-sqldb (PHPUnit 9 compatibility, driver/host config, reliable cleanup), df-database (
voidreturn type ontearDown()), df-syst
em(explicit admin auth, order-independent assertions, stronger fixture passwords), and*df-user* (fixture passwords updated for stronger strength policy)
β¬οΈ Upgrade Notes
- π Security fixes are cumulative β upgrading is recommended for all deployments. The 2026-04 security scan covers auth bypass, SQL injection, SSRF, unsafe deserializati
π¦ on, and timing-attack vectors across multiple packages. - Password-reset / invite URLs now include an
/auth/prefix. Update any external tooling that parses or constructs DreamFactory reset URLs. - MCP transport : The MCP server now returns JSON instead of SSE for most flows. Compliant MCP clients require no changes β the switch is server-side and transparent.
- MCP custom tool persistence : Tools that previously appeared to be "lost" on service creation in 7.4.x will now persist correctly; re-verify any that were affected.
- Password strength policy : The df-user fixture-password hardening reflects a stronger strength policy. Deployments relying on weak programmatic passwords (e.g., old C
β‘οΈ I fixtures or seeded test accounts) may need to update them. - Platform baseline is unchanged from 7.4.x (PHP 8.3 / Laravel 11). No host-level upgrade is required.
- β¬οΈ Standard upgrade process applies for all other changes.
Full Changelog : 7.4.5...7.5.0