Self-hosted Retool Edge release 4.40
Release notes for the Self-hosted Retool 4.40 edge release.
Releases on the Edge channel occur weekly. Each release occurs one week after the equivalent release for cloud-hosted Retool.
Edge releases are available for organizations that want the latest features or to use closed beta functionality. Retool recommends most organizations use Stable releases unless you have a specific need for Edge releases and can keep your deployment up-to-date.
Retool supports only the most recent release on the Edge channel. As Edge releases are weekly, bug fixes and improvements are included in the next release. All previous releases are then considered deprecated.
Retool's main documentation site reflects the latest Edge release. Since Edge updates weekly and only the most recent release is supported, the docs you're already browsing apply to this release — there's no separate version to switch to.
Self-hosted Retool 4.40
Latest releaseCurrently supported
Edge release notes
Bug fixes, improvements, and changes in this release.
| Type | Description |
|---|---|
| 4.40.0105 changes↑ | |
| added | Added support for a common class of recursive CTEs against row-protected tables. [#81656] |
| added | Added a visible keyboard focus state to the top navigation tabs. [#81888] |
| added | Added a footer to the Version history panel for managing which release is pinned. [#82258] |
| added | Added Japan region routing for the Bedrock Claude Haiku 4.5 model so ap-northeast-1 and ap-northeast-3 requests use the JP inference profile. [#82343] |
| added | Added GitLab support for detecting merged pull requests in the new app builder's Publish modal, switching the action button between Open merge request and Push changes. [#82368] |
| added | Added a queue panel to the composer in the new app builder that lets you view, edit, reorder, and clear queued prompts while the agent is running. [#82465] |
| added | Added a Beta badge to the Access tab in the resource editor for resources with data access enforcement enabled. [#82596] |
| added | Added the ability to view and remove file attachments on queued prompts in the new app builder's chat panel. [#82720] |
| added | Added an edit-app footer to apps served through the iframe-embedded path in the new app builder. [#82807] |
| added | Added support for custom headers on AWS Bedrock AI provider resources. [#82955] |
| fixed | Fixed an error in the provider scope modal for AI provider resources when the user has read-only access. [#79775] |
| fixed | Fixed migrated Retool AI queries persisting unused image and multimodal model fields onto provider resources. [#80919] |
| fixed | Fixed the legacy serverless function runner failing to detect missing per-user authentication for connectors such as Google Sheets. [#81776] |
| fixed | Fixed serverless function signatures that declare no params being rejected instead of generating a hook. [#82114] |
| fixed | Fixed oversized center-mode images in Retool Mobile on iOS's new architecture. [#82240] |
| fixed | Surfaced grid backend errors in the table creation and edit paths in the UI. [#82254] |
| fixed | Fixed stepped spinner icons animating out of alignment with their 8-slot design. [#82291] |
| fixed | Fixed the Publish dialog showing a stale app protection status after another user changed it while the dialog was open. [#82306] |
| fixed | Fixed offline Retool Storage uploads failing after re-authentication by refreshing session credentials and enforcing per-user ownership on queued uploads. [#82312] |
| fixed | Fixed the app preview in the new app builder getting stuck on a loading screen during live edits by upgrading the underlying dev server and its hot-reload handling. [#82318] |
| fixed | Fixed the Markdown component dropping the last word of a line on Android due to a text measurement mismatch. [#82334] |
| fixed | Fixed the Layout Compiler resizing a component's parent grid unexpectedly when hovering over nested droppables during a resize. [#82350] |
| fixed | Fixed the data access enforcement engine failing to load on self-hosted instances due to a missing libpg-query runtime dependency. [#82388] |
| fixed | Fixed generated TypeScript resource type declarations for DynamoDB and Google Sheets so backend code type-checking catches invalid usage instead of silently passing. [#82394] |
| fixed | Fixed AI agent thread snapshots failing to restore in the new app builder after switching threads. [#82400] |
| fixed | Fixed a regression that blocked the Opus model for managed keys in the new app builder. [#82448] |
| fixed | Fixed an issue where preview builds in the new app builder could fail to upload because of incorrect branch identification. [#82450] |
| fixed | Fixed an issue where users without edit permission on a resource could still see an active Delete option in the resource menu. [#82452] |
| fixed | Fixed a confusing error message shown when trying to protect or unprotect an app that was already in the target protection state. [#82463] |
| fixed | Fixed a build issue that prevented Python custom libraries requiring native extensions, such as psycopg2, from building in the self-hosted Code Executor image. [#82464] |
| fixed | Fixed the Publish button staying stuck in a saving state after switching threads in the new app builder. [#82511] |
| fixed | Fixed native Python library builds, such as psycopg2 and cryptography, in the self-hosted Code Executor image. [#82519] |
| fixed | Fixed a missing drag preview when dragging a component into a ListView, and fixed resized component previews overflowing their parent width. [#82527] |
| fixed | Fixed a bug where submitting a chat message before threads finished loading could send it to the wrong AI resource. [#82540] |
| fixed | Fixed personal folder permission checks that could throw an error and return HTTP 422 instead of resolving ownership. [#82566] |
| fixed | Fixed a bug that blocked users with write access from loading an OpenAPI spec in the guided REST query editor. [#82575] |
| fixed | Fixed empty subfolders that had access only through an ancestor folder grant disappearing from the folder list and search. [#82595] |
| fixed | Fixed an intermittent bug that could return an empty type stub file when generating typesheds for the googletrans library in backend functions. [#82611] |
| fixed | Fixed a workflow error message that exposed internal security implementation details to users. [#82673] |
| fixed | Fixed a race condition on Android that could cause Google Sheets streaming queries to return unusable raw data instead of transformed rows. [#82679] |
| fixed | Fixed a bug where publishing a new app builder app with no publishable backend files failed to write a publish manifest, incorrectly prompting some organizations to republish for a custom domain. [#82682] |
| fixed | Fixed the app builder's save-error dialog so long error text scrolls instead of pushing action buttons off screen. [#82745] |
| fixed | Fixed branch description auto-naming so it keeps updating on every message until a non-default name is generated. [#82748] |
| fixed | Fixed the settings sidebar so the Advanced Settings link is no longer obscured by the browser tooltip at the scroll edge. [#82749] |
| fixed | Fixed the source control test_deploy endpoint to validate that commit_sha is non-empty instead of returning a generic server error. [#82763] |
| fixed | Corrected outdated wording in the sandbox save-error and custom domain messages about starting new threads and republishing. [#82764] |
| fixed | Fixed preview link generation to stay hidden for apps with no commits, since there is nothing to preview. [#82792] |
| fixed | Fixed a canvas crash caused by plugin models stored as plain objects instead of Immutable maps in the app model. [#82844] |
| fixed | Fixed the sandbox launcher so it no longer silently discards sandbox stderr output during restore. [#82878] |
| fixed | Fixed the missing AI credits pricing alert to report the actual model id instead of a generic message. [#82885] |
| fixed | Fixed the app builder to capture a thread snapshot after the sandbox resets following a publish. [#82887] |
| fixed | Fixed the workflow code executor bundle to resolve compiled JavaScript files at runtime. [#82933] |
| fixed | Fixed the Query Library to retain the in-progress query body when switching between resources of the same type. [#82936] |
| fixed | Fixed self-hosted Helm deployments with a separate git-server pod so the backend correctly proxies git v2 requests using the RR_GIT_SERVER_HOST setting. [#82965] |
| changed | Renamed the app builder's app-local theme file from orgTheme.css to theme.css, with automatic migration for existing apps. [#81387] |
| changed | Capped the executeJS response body at 100MB. [#82211] |
| changed | Updated the Tag commit modal for app builder apps, including tag button behavior and tooltips. [#82221] |
| changed | Removed the Beta label from the Google Drive integration. [#82437] |
| changed | Made the admin settings overview, Day-1 setup wizard, and Action Center generally available for admin and enterprise organizations. [#82588] |
| changed | Updated the Google Workspace resource icons for Calendar, Docs, Sheets, Slides, Gmail, and Drive to match Google's refreshed brand identity. [#82706] |
| improved | Improved permission check performance by parallelizing independent phases within access-level resolution. [#82030] |
| improved | Reported Content Security Policy violations from the app builder preview as console errors. [#82197] |
| improved | Improved app builder agent guidance for discovering resources that belong to a generic resource type. [#82269] |
| improved | Improved the visual styling of info badges and menu item typography in the new app builder. [#82516] |
| improved | Improved the new app builder's backend hook regeneration to only rewrite and broadcast changed hook files instead of the full set. [#82705] |
| improved | Improved the publish and releases modal in the app builder with several small UX refinements. [#82823] |
| improved | Improved sandbox warm restore so the server-side branch tip is authoritative instead of relying on a websocket-delivered realignment. [#82888] |
| removed | Removed the promotional banner, video, and button from the form submission success screen. [#82447] |
| security fix | Patched the ws package to version 8.21.2 in the code executor workflows environment. Resolves CVE-2026-48779. [#81022] |
| security fix | Patched the websocket-driver dependency. Resolves CVE-2026-54466 and CVE-2026-54490. [#81175] |
| security fix | Patched the dd-trace dependency. Resolves CVE-2026-50272. [#81176] |
| security fix | Bumped the PostgreSQL JDBC driver to 42.7.12. Resolves CVE-2026-54291. [#81503] |
| security fix | Bumped the sharp image library to 0.35.3. Resolves GHSA-f88m-g3jw-g9cj. [#81606] |
| security fix | Bumped the svgo dependency to patch a cross-site scripting vulnerability in its script-removal plugin. Resolves GHSA-2p49-hgcm-8545. [#81609] |
| security fix | Bumped the dompurify dependency to 3.4.12. Resolves GHSA-c2j3-45gr-mqc4. [#81610] |
| security fix | Bumped the Java DB connector's jackson dependency to 2.21.5. Resolves CVE-2026-59889 and CVE-2026-54515. [#81612] |
| security fix | Fixed a data access enforcement vulnerability that could allow unauthorized access to restricted rows under certain SQL query conditions. [#82080] |
| security fix | Fixed a data access enforcement vulnerability that could allow row-level security filters to be bypassed under certain query conditions. [#82178] |
| security fix | Fixed a security vulnerability that allowed AI agent thread snapshots in the new app builder to be created or restored across users and organizations. [#82317] |
| security fix | Fixed a data access enforcement vulnerability that could incorrectly authorize access to restricted tables under certain conditions. [#82373] |
| security fix | Fixed a data access enforcement vulnerability that could allow unauthorized access to column data under certain query conditions. [#82376] |
| security fix | Fixed a security vulnerability that allowed a user with write access to an app to start an agent sandbox on another user's thread, exposing that user's working tree, uploads, and agent state. [#82481] |
| security fix | Patched the tar dependency. Resolves GHSA-r292-9mhp-454m. [#82482] |
| security fix | Patched the undici dependency to address multiple vulnerabilities. Resolves CVE-2026-13697, CVE-2026-14643, CVE-2026-15157, CVE-2026-16728, and CVE-2026-16729. [#82483] |
| security fix | Patched the body-parser dependency, which could silently disable body-size-limit enforcement. Resolves CVE-2026-12590. [#82484] |
| security fix | Patched a denial-of-service vulnerability in the linkify-it dependency. Resolves CVE-2026-59887. [#82485] |
| security fix | Patched the ip-address dependency, which allowed IP address parsing bypasses. Resolves CVE-2026-69192, CVE-2026-54272, and CVE-2026-69198. [#82486] |
| security fix | Patched the adm-zip dependency, which could cause out-of-memory errors from a crafted archive. Resolves CVE-2026-39244. [#82495] |
| security fix | Patched the postcss dependency to address multiple vulnerabilities, including an arbitrary file read issue. Resolves CVE-2026-45623, CVE-2026-69153, and GHSA-r28c-9q8g-f849. [#82498] |
| security fix | Patched 16 security vulnerabilities in the Spring Framework dependency used by the JDBC connector by upgrading to version 6.2.19. [#82499] |
| security fix | Patched an authentication bypass vulnerability in the spring-ldap-core dependency used by the JDBC connector. Resolves CVE-2026-41720. [#82500] |
| security fix | Patched denial-of-service vulnerabilities in the brace-expansion dependency. Resolves CVE-2026-14257 and CVE-2026-69152. [#82502] |
| security fix | Patched host-confusion vulnerabilities in the fast-uri dependency. Resolves CVE-2026-13676, CVE-2026-16221, and CVE-2026-18446. [#82504] |
| security fix | Redacted secrets from Postgres connector error logs so values echoed back in error messages are no longer written to logs. [#82798] |
| security fix | Updated the micrometer dependency in the Java database connector. Resolves CVE-2026-40983 and CVE-2026-40984. [#82799] |
| security fix | Patched the js-yaml dependency. Resolves GHSA-5p4m-2wfm-xmqj. [#82801] |
| security fix | Fixed a race condition that let a single passwordless login token be redeemed more than once concurrently. [#82822] |
| security fix | Fixed a data access enforcement vulnerability that could allow restricted rows to be read under certain query conditions. [#82856] |
| fixed | Fixed the new app builder and Services Debugging page incorrectly reporting Temporal as missing on self-hosted instances using Retool-managed Temporal. [#81811] |
| fixed | Fixed non-idempotent database migrations that could break replaying an upgrade to Retool 4.0. [#82251] |
| fixed | Fixed leaked connections caused by concurrent Temporal client creation. [#82473] |
| fixed | Fixed app identifier collisions when syncing apps built with the new app builder across instances via source control. [#82581] |
| fixed | Fixed the new app builder writing the wrong source control identifier to package.json on push, causing naming conflicts on sync. [#82589] |
| fixed | Fixed Bitbucket source control sync deleting files beyond the first page of paginated results. [#82899] |
| security fix | Disabled COPY LOCAL for Vertica JDBC connections to prevent local file access. [#82987] |
| 105 changes | |