v1.9.0

langflow-ai/langflowv1.9.0Apr 14, 2026by github-actions[bot]

AI Summary

A major release introducing Watsonx Orchestrate integration, a new MCP server, Flow Version Control, the Langflow SDK, and Python 3.14 support, alongside extensive security fixes.

Key Highlights

  • Watsonx Orchestrate integration (wxO)
  • MCP server for REST API operations
  • Flow version control
  • Langflow SDK and Flow DevOps API Toolkit
  • Python 3.14 support

New Features

  • Watsonx Orchestrate deployment UI
  • MCP server for operating Langflow
  • Flow version control
  • Deployment API surface
  • Python 3.14 support
  • DataFrame operations (Concatenate/Merge)
  • Langflow SDK

Full Release Notes

<!-- Release notes generated using configuration in .github/release.yml at main -->

## What's Changed
### โœจ New Features
* feat: traces v0 (#11689)
* feat: schemas for pluggable deployment service (#11979)
* feat: Add Concatenate and Merge operations to DataFrame Operations (#11601)
* feat: add secret key rotation script and documentation (#10978)
* feat: add flow version control (#11859)
* feat: Support the new ModelInput in Astra DB (#11203)
* feat(lfx): add adapter registries (#11990)
* feat: add basic types and database accessors for wxo integration (#12011)
* feat: generate requirements.txt from dependencies  (#11810) (#12087)
* feat: deployments api surface (#12041)
* feat: revise deployment schemas (#12150)
* feat(deployment): add list operations for configs and snapshots (#12162)
* feat(deployments): unify payload passthrough from api to adapter (#12190)
* feat: add wxO deployment adapter (#12079)
* feat: Add Windows Playwright testing to nightly builds (#12221)
* feat: add support for Langchain 1.0 (#11114)
* feat: Refactor and Unify the ModelInput Selector Across Components (#12025)
* feat: Add Windows Playwright test fixes to RC (#12265)
* feat(models): Add latest OpenAI GPT-5.3 and GPT-5.4 model families                                                                                    (#12304)
* feat: add session_metadata JSON column to message table (#12255)
* feat(playground): add bulk delete sessions with Select All functionality (#12119)
* feat(ui): Add custom build error message transform hook (#12208)
* feat: add core deployment implementation (#12108)
* feat(deployments): add environment variable overrides for IBM IAM URLs (wxO) (#12373)
* feat: MCP server for operating Langflow via REST API (#12237)
* feat(wxo): list / update (agents) directly from Langflow API (#12390)
* feat: Add Langflow Assistant chat panel for component generation (#11636)
* feat(deployments): add list (llms) endpoint and wxo implementation (#12389)
* feat: LE-374 token usage tracking for LLM and Agent components (#11891)
* feat: opensearch multimodal: support filters, adjust defaults (#12319)
* feat: MCP server UX improvements, batch, and spec-based flow creation (#12205)
* feat: Langflow SDK and Flow DevOps API Toolkit (#12245)
* feat(ui): Add "Connect other models" option for model-type handles (#12466)
* feat: add Langflow MCP Client settings page (#12321)
* feat: flow event polling for real-time MCP agent activity (#12340)
* feat: Remove deprecated Astra Assistants to support latest docling package versions (#12442)
* feat: add var to block custom component execution (#11893)
* feat: add LANGFLOW_MCP_BASE_URL config for MCP server URL override (#12523)
* feat: add telemetry service to lfx MCP server (#12422)
* feat(playground): Add auth gate, session persistence and token display to shareable playground (#12519)
* feat(agentics): Refactor bundle components to agenerate/amap/areduce pattern for Langflow 1.9 (#12518)
* feat: deployment page and stepper UI with watsonx Orchestrate integration (#12303)
* feat: hide advanced fields in InspectionPanel for File and SplitText components (#12473)
* feat: IBM Globalization Pipeline integration and i18n setup (#12226)
* feat: boazdavid policies component added (#12564)
* feat: expose api_key in InspectionPanel, hide from advanced settings edit mode (#12578)
* feat: add policies component for tool protection via ToolGuard (#12592)
* feat: watsonx Orchestrate deployment UI polish (#12621)
* feat: wxo api provider data url for provider accounts (#12607)
* feat: add project_id query param to list /deployments endpoint (#12574)
* feat(templates): replace AstraDB with native Knowledge Base in Vector Store RAG (#12629)
* feat: harden /variables/detections to return only global variables (#12650)
* feat: add SHA-256 hash-based API key lookup (#12597)
* feat: add langflow-sdk support to release workflow (#12679)
* feat: enforce unique snapshot to flow version relationship (#12680)
* feat: validate duplicate tool names at deployment review step (#12675)
* feat: rename deployment /executions endpoint to /runs  (#12685)
* feat(deployments): verify wxO credentials against instance API (#12449)
### ๐Ÿ› Bug Fixes
* fix(test): Fix superuser timeout test errors by replacing heavy client fixture                                                    (#11972)
* fix: Fixes Kubernetes deployment crash on runtime_port parsing (#11968)
* fix: Sanitize database credentials in error messages                                                                 (#11621)
* fix: Resolve ruff check failures in lfx deployment service (#11992)
* fix: update pydantic to 2.12.5 for fastapi-pagination compatibility (#11566)
* fix: coerce UUID session_id to string in ChatOutputResponse (#11958)
* fix: Custom Component Generator Template contains broken URLs returning 404 errors (#11866)
* fix: MCP Server Modal Improvements (#12017)
* fix: knowledge Base Table โ€” Row Icon Appears Clipped/Cut for Some Entries (#12009)
* fix: change loop description (#12018)
* fix: playground does not scroll down to the latest user message upon sending (Regression) (#12006)
* fix: Knowledge Base Improvements (#12023)
* fix: standardize "README" title and update API key configuration notes in 3 main flow templates (#12005)
* fix(test): Reduce response length assertions in flaky integration tests (#12057)
* fix: add ondelete flag to fk in flow version table (#12059)
* fix: Security/fix nltk CVE path traversal (#12109)
* fix: upgrade axios to ^1.12.0 to address PVR0686555 vulnerability (#11995)
* fix(ui): improve model provider modal layout and styling (#12112)
* fix: ReDoS vulnerability in mustache template validation (LE-505) (#12076)
* fix: Fix image preview for Windows paths in playground  (#12083)
* fix(core): Fix race condition in custom component tool invocations (#11994)
* fix: update openai api key prefix in fe (#12122)
* fix: gate PyPI publish jobs on CI completion in release workflow (#12168)
* fix: filter Docker Hub tag queries to prevent rc0 overwrite (LE-515) (#12173)
* fix: Cascading deletes to files when deleting users (#12155)
* fix: prevent RCE via data parameter in build_public_tmp endpoint (#12160)
* fix: Postgres JSON column fails with "Token NaN is invalid" when Agent stores message (psycopg InvalidTextRepresentation) (#11977)
* fix: use timezone=true on flow_version created_at field (#12180)
* fix: Proper refresh of Groq models (#12158)
* fix: make LANGFUSE_BASE_URL the preferred URL variable (#12154)
* fix: allow clearing Max Tokens field with Backspace/Delete (#12198)
* fix: Resolve CodeQL false positives for path injection and URL substring sanitization (#12201)
* fix: Add explicit left/right DataFrame inputs for merge operations (#12177)
* fix: add dict to allowlist preventing TableInput data loss (#12074)
* fix: 1.9.0 nightly (#12210)
* fix(mcp): Add schema-driven type conversion (#11796)
* fix: prevent overwriting user-selected global variables in provider cโ€ฆ (#12217)
* fix: Fixed CodeQL security scan about Incomplete URL substring sanitization on watsonx test suite (#12212)
* fix: remove ibm-watsonx extra from complete installation (#12230)
* fix: prevent arbitrary file write via path traversal in files endpoint (#12227)
* fix: Avoid foreign key violation on span table with topological sort (#12232)
* fix: use deepcopy to prevent shared reference mutation in component updates (#12252)
* fix: prevent CI injection via unsanitized GitHub context interpolation (#12224)
* fix: Wait for dynamic model fetch in Nvidia (#12229)
* fix: protect image downloads by flow ownership (#12234)
* fix: Sanitize folder names for CodeQL (#12263)
* fix(deps): pin tar-fs to >=2.1.4 to fix symlink following vulnerability (#12078)
* fix: Rebuild the embedding model in the nv template (#12275)
* fix: support ZIP file upload for flows and projects endpoints (#12253)
* fix(test): Fix Playwright E2E tests and backend compatibility on Windows (#12297)
* fix: resolve File Component 'no component context' error for non-ASCII files (#12286)
* fix: Handle multiple outputs in ComponentToolkit and clean edge logic (#12268)
* fix(docker): Remove broken npm self-upgrade from Docker images (#12309)
* fix: File Manager last item cut off in normal view (#12254)
* fix: prevent path traversal in knowledge base bulk delete (#12243)
* fix: disable dangerous deserialization by default in FAISS component (#11999)
* fix: Use plain axios for external GitHub and Discord API calls  (#12347)
* fix: Add ephemeral file upload support                                                                               (#12300)
* fix(core): Add environment variable fallback for provider API key resolution                                                                             (#12288)
* fix: prevent path traversal in knowledge base create endpoint  (#12337)
* fix: update PyTorch to 2.6.0+ to fix torch.load() RCE vulnerability (#12323)
* fix: prevent MCP command injection via allowlist validation (CWE-78) (#12290)
* fix: replace grep -oP with sed for Node.js version extraction in Docker builds (#12331)
* fix: enforce ownership check in build_flow endpoint (GHSA-qj98-rhf8-v93f) (#12305)
* fix: enforce message ownership in monitor endpoints (#12202)
* fix(test): Increase timeout and add waitFor on folder rename input (#12402)
* fix: Fix shareable playground build events and message rendering                                                                                                                (#12361)
* fix: Add platform markers to cuga extra for macOS x86_64 (#12416)
* fix: update npm dependencies (#12412)
* fix: Propagate error details to Playground chat on flow build    failure (#12366)
* fix: resolve code scanning alerts for URL sanitization and insecure randomness (#12362)
* fix: Improve the sub-process handling of the Docling Worker (#12296)
* fix(test): Add missing required `llm` field to Watsonx deployment mapper tests (#12434)
* fix(test): Add missing required `llm` field and fix flaky assertions in Watsonx tests (#12436)
* fix(mcp): Stop sending API key as Bearer token in MCP client  (#12349)
* fix: Address a dictionary comprehension ruff error (#12438)
* fix: Always resolve first dep for determinism (#12204)
* fix: Support self-referential MCP JSON schema (#12359)
* fix: redact sensitive information from log output (#12271)
* fix: restore langflow-logo-color-black-solid.svg removed in docs release (#12447)
* fix: Import and Statistics fixes for Knowledge Bases (#12446)
* fix: Close popup when navigating to MCP settings (#12358)
* fix: Build and install the langflow-sdk for lfx (fixes nightly) (#12481)
* fix: upgrade dependencies to address CVE vulnerabilities (#12470)
* fix: Properly grep for the langflow version (#12486)
* fix: add SSRF protection to URL component (PVR0699081) (#11996)
* fix(mcp): stop sending API key as Bearer token in MCP client (#12441)
* fix: upgrade fastmcp to 3.2.0 to fix SSRF vulnerability (CVE) (#12516)
* fix: Accept inputs for the URL component (#12474)
* fix: enforce IDOR protection on v2 workflow job endpoints   (#12398)
* fix(ci): add missing lfx build step to cross-platform workflow_dispatch (#12524)
* fix: upgrade vulnerable dependencies with override enforcement (#12526)
* fix(ci): add missing SDK build step to cross-platform workflow_dispatch (#12536)
* fix: preserve nested dictionaries in MCP tool parameters (#11970)
* fix: Search beyond the first page of users (#12203)
* fix: Display proper error messages and strip null params from tool calls (#12437)
* fix(ui): Fix update banner hidden behind canvas controls (#12527)
* fix: Preserve MCP tool selection on flow reload (#12363)
* fix: add trailing newline to component_index.json (#12545)
* fix: Restore MCP tool dropdown visibility when adding component from sidebar (#12550)
* fix: Replace aiofile with aiofiles to prevent caio context leak under concurrent execution (#12525)
* fix: Indefinitely loading KB page for errors (#12295)
* fix: Accept appropriate types in OpenSearch mm (#12547)
* fix: add missing ownership checks in projects API (GHSA-rpf3-3973-4gjr) (#12462)
* fix: frozen vertices crash with TypeError when no cache service available (#12409)
* fix: Added dependency updates for security and bug fixes (#12543)
* fix: hide header CTA buttons during empty/loading states (#12560)
* fix: Sort and check for Phase in migration (#12569)
* fix: show empty state message in deployment wizard model dropdown (#12561)
* fix: fixed concurrent tool usage error (#12548)
* fix: cache deployment LLMs query to avoid refetch between wizard steps (#12562)
* fix: remove retries on connection verification  (#12568)
* fix: Show the write file path in Write File Component (#12563)
* fix: include connection changes in deployment update payload (#12573)
* fix: ensure global vars load properly on first flow (#12538)
* fix: Change the order of deps for re parsing (#12581)
* fix: handle missing lfx package metadata in Docker (#12594)
* fix: Don't update the model selection when changing key (#12596)
* fix: enforce brace-expansion override (#12598)
* fix: deployment UX improvements โ€” error toast, tool name, refetch, runtime feature flag (#12593)
* fix: Added handlebars override to fix DepBot issue. (#12602)
* fix: add message table indexes for PostgreSQL to model (#12572)
* fix: Updated Pillow minimum version (#12609)
* fix: convert MCP image content to LangChain multimodal format (#12610)
* fix: Add os catch error to prevent windows failure installation on desktop on lfx lazy import (#12617)
* fix: Make sure we don't toggle models on hover (#12599)
* fix: allow spacebar in chat input textarea (#12612)
* fix: Remove ddl_if from session_metadata indexes in MessageTable (#12623)
* fix: use startswith for safe path traversal and parsing (#12559)
* fix(mcp): Preserve nested dict arguments sent to MCP tools  (#12601)
* fix(models): Stop returning 'Custom' for Azure and Watsonx LLMs (#12608)
* fix: handle read-only filesystem when updating starter project files (#12606)
* fix: Remove test that doesnt test anything (#12633)
* fix: Update WXO tests for handling none keys (#12636)
* fix(ui): Show welcome page for new users when AUTO_LOGIN is false (#12626)
* fix: MCP Tools loses optional field types (#12622)
* fix: Remove redundant api key field in KB Ingest (#12624)
* fix: Make sure flow upgrades work with Agent component and ModelInputs generally (#12620)
* fix: make logs and outputs visible for components in tool mode (#11923)
* fix: propagate resource-specific conflict error to api (#12580)
* fix: Raw input value leaks into Global Variables dropdown list (#12660)
* fix: allow booleans, numbers, etc. in root-level tweaks (#12605)
* fix: restore webhook SSE authentication using FastAPI dependency injection (#12661)
* fix(ui): refactor connection panel and fix search empty state (#12659)
* fix: Resolve relative path issues in bundled environment  (#12625)
* fix: Root path option in settings for reverse proxy (#12603)
* fix: Build the correct oauth callback URL for MCP Composer (#12662)
* fix(ui): show moved flow in destination project without page refresh                                                                                      (#12670)
* fix: resolve race condition in test_component_logging for Python 3.13 (#12676)
* fix: upgrade playwright to 1.58.0 to address Chromium CVEs (#12668)
* fix: fix base64 padding bug and empty Fernet error messages (#12595)
* fix: Allow >= specifications in dependencies (#12682)
* fix(frontend): auto-populate global variable key-value pairs (#12687)
* fix: Updates the CI workflow to handle known dependency conflicts. (#12691)
* fix(loop): iterate when only item is connected and render item as a table (#12669)
* fix(mcp): preserve category when loading component registry (#12694)
* fix: add uv sync step to SDK version determination job (#12695)
* fix(frontend): improve deployment stepper visibility in light mode (#12696)
* fix(mcp): expose layout tool as layout_flow to match batch dispatch (#12698)
* fix: remove fictional gpt-5.3 ids and surface helpful message on model_not_found                                                                  (#12693)
* fix: retry on flow execution failure and surface friendly message for weak models                                                              (#12699)
* fix(mcp): dedupe edges in connect_components (#12701)
* fix(mcp): validate_flow fast-fails and reports partial errors (#12697)
* fix: failing wxo list llm test (#12700)
* fix: add pydantic validation on component assistant (#12706)
* fix: Upgrade cuga to 0.2.20 to resolve playwright dependency conflict (#12703)
### โ™ป๏ธ Refactoring
* refactor: extract session management into dedicated store and hook (#12048)
* refactor(ui): Replace raw Tailwind color classes with project design tokens                              (#12033)
* refactor(types): Rename Data to JSON and DataFrame to Table                                                                                         (#11554)
* refactor: design sweep for 1.9.0 release   (#12684)
### ๐Ÿ›  Maintenance Tasks
* chore: remove CodeFlash integration (#11670)
* chore: clean up files created during testing (#11844)
* chore: fix model attribute accessor (#11976)
* chore: merge release 1.8.0 (#12088)
* chore: Added support for `space_id` scope in `WatsonxAIComponent` (#11732)
* chore: Added support for `space_id` scope in `WatsonxEmbeddingsComponent` (#11734)
* chore: clean up secrets.baseline (#12125)
* chore: fix safe biome issues (#12169)
* chore: merge branch release-1.8.1 into main (#12185)
* chore: remove hash history (#12183)
* chore: release nightlies from of release branch (#12181)
* chore: update deps due to security vulnerabilities (#12371)
* chore: remove mypy from CI (#12448)
* chore: merge main into release-1.9.0 (excluding Gemini tool_calling disable) (#12553)
* chore(i18n): disable automatic browser language detection (#12671)
* chore: update deps (#12657)
* chore: add default models to llm list result from wxo adapter (#12686)
### ๐Ÿ“š Documentation
* docs: docker uv install for MCP tools (#12089)
* docs: square up inline icons CSS (#12159)
* docs: OpenAPI spec content updated without version change (#12113)
* docs: uv included in 1.8.1 images (#12135)
* docs: replace the file upload utility (#12153)
* docs: lfx readme content (#11870)
* docs: add a copy to markdown button to docusaurus theme (#12189)
* docs: add versioning  (#12218)
* docs: replace api build automation (#12214)
* docs: Add AI coding agent skills for code review, testing, and refactoring (#12241)
* docs: cherry pick 1.8 changes from main to release (#12292)
* docs: CSS redesign (#12306)
* docs: rename data to JSON and dataframe to table (#12352)
* docs: point security reports to hackerone (#12368)
* docs: block custom components with env var (#12413)
* docs: add CI optimization analysis for pre-release builds (#12207)
* docs: test harness for api reference code samples (#12338)
* docs: increase padding for sidebars icons (#12480)
* docs: Flow DevOps Toolkit SDK (#12472)
* docs: enhance Agentics documentation with embedded video (#12272)
* docs: investigate PyTorch macOS AMD64 + Python 3.13 CI failure (LE-172) (#12469)
* docs: investigate deprecated macOS support and impact on Langflow (LE-265) (#12477)
* docs: langflow assistant feature (#12439)
* docs: flow devops toolkit SDK manage multiple environments (#12479)
* docs: policies component (#12628)
* docs: components index path env var (#12630)
* docs: generate and bump open API spec to 1.9.0 (#12638)
* docs: add flow versioning (#12634)
* docs: mcp client and other changes (#12627)
* docs: update wxo signup link (#12683)
* docs: cut version 1.9.0 (#12681)
* docs: release note typo (#12690)
### ๐Ÿงช Tests
* tests: Add soft content on flaky test (#12081)
* tests: Prevent session deletion data leakage in playground chat                                                                                     (#12099)
* test: add upgrade migration check to ci (#12061)
* test: add playwright code coverage (#12294)
* test: add PostgreSQL to migration CI tests (#12257)
### ๐Ÿ”ง CI/CD
* ci: add lfx paths to CI path filters (#11212)
* ci: allow docs-only pull requests to skip tests (#12174)
* ci: upgrade runtime to python:3.14.3-slim-trixie (#12369)
* ci: add component index sync on label addition (#12590)
### โšก Performance
* perf(test): Optimize CI tests causing timeout on Windows and Python 3.12 (#12405)
* perf: enable Gunicorn preload_app to reduce memory per worker (#12364)
### ๐Ÿ”’ Security
* security: update NLTK to 3.9.3 to fix path traversal vulnerability (#12090)
### Others
* Docs: 1.8 release (#11295)
* ref: architectural renames for deployment api, service, persistence layer (#12106)
* improvement: graceful error when PostgreSQL version is less than 15 (#11811)
* Fix: session metadata migration consistency (#12328)
* ref: add feature flag around BE wxo deployments (#12365)
* deps: add official wxo client package to langflow-base complete (#12383)
* Revert "fix(mcp): Stop sending API key as Bearer token in MCP client  (#12349)"
* ref: update wxo language (#12571)
* Feat: Playground - Need to accept File uploading (#12326)
* Fix: Build Output for Table and Dataframes (#12450)
* Revert: policies component (#12564) (#12585)


**Full Changelog**: https://github.com/langflow-ai/langflow/compare/v1.8.0...v1.9.0