pgAdmin Release Notes
20 release notes curated from 21 sources by the Releasebot Team. Last updated: Oct 13, 2026
- Sep 17, 2026
- Date parsed from source:Sep 17, 2026
- First seen by Releasebot:Oct 13, 2026
pgAdmin 4 9.18
pgAdmin releases version 9.18 with a collapsible Object Explorer, extensive Schema Diff and usability fixes, and important security hardening across authentication, backup, restore, and file handling.
Version 9.18
Release date: 2026-09-17
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.17.
Supported Database Servers
PostgreSQL: 14, 15, 16, 17 and 18
EDB Advanced Server: 14, 15, 16, 17 and 18Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.4
New features
- Issue #9631 - Collapse and restore the Object Explorer by re-clicking the current workspace icon, in the manner of the VS Code side bar, remembering the choice across refreshes. A keyboard shortcut, Ctrl+Alt+B by default, does the same thing and can be changed through the new toggle_object_explorer preference.
Housekeeping
- Issue #10221 - Skip importing and initialising the kerberos, ldap, mfa, oauth2 and webserver authentication providers unless SERVER_MODE is set, leaving desktop mode with internal authentication alone.
- Issue #10247 - Relax the azure-mgmt-resource pin to allow 24.0.0, and aggregate the third-party JavaScript and Python dependency bumps for this release.
- Issue #10293 - Make the Schema Diff regression test assert its own generated script, which it previously swallowed, so invalid generated SQL can no longer pass silently.
Bug fixes
- Issue #9226 - Accept SharedUsername when importing a shared server from a servers.json definition, instead of insisting on Username for every server.
- Issue #10155 - Share concurrent identical GET requests behind getNodeAjaxOptions() so a wide table’s Columns tab no longer fires one duplicate get_types request per column row.
- Issue #10179 - Fix inherited columns in the Table dialog being editable and deletable: a column already inherited from a parent carries inheritedfromtable while one fetched interactively through ‘Inherited from table(s)’ carries inheritedfrom and has no attnum yet, and only the latter was checked, after an isNew() short-circuit that treated the attnum-less rows as new.
- Issue #10180 - Fix the Data type dropdown on the expanded Definition tab of the Table dialog offering every type, ignoring the allowed-type restriction already applied to the inline editor.
- Issue #10214 - Fix the existingSecret path in the Helm deployment template.
- Issue #10235 - Remove a trailing quote from the Windows installer’s ProductVersion, which was stamped as e.g. 9.17".
- Issue #10236 - Fix Schema Diff reporting false differences for SERIAL/BIGSERIAL columns by ignoring the owned sequence’s oid, and fix the invalid ALTER COLUMN ... TYPE bigserial SQL generated when such a column genuinely differs.
- Issue #10237 - Fix a replace() argument 2 must be str, not None crash when a per-server Password Exec Command is used with a service-only (pg_service.conf) connection, which leaves host, port and username unset.
- Issue #10239 - Remove a redundant passlib pin that conflicts with the indirectly required libpass.
- Issue #10252 - Fix the argument grid on the Definition tab of a user-defined function or procedure refusing to delete, or add, a row in edit mode.
- Issue #10295 - Reinstate dependency ordering of the script Schema Diff generates, which had been lost since the React port left dependLevel unset.
- Issue #10297 - Fix Schema Diff duplicating any column that also differs when it recreates a foreign table.
- Issue #10298 - Fix Schema Diff generating SQL that PostgreSQL rejects when a sequence’s MINVALUE is raised above its current value.
- Issue #10300 - Fix a foreign table column added by Schema Diff losing its collation.
- Issue #10302 - Fix Schema Diff injecting whitespace into an applied function or procedure body, which left a whitespace-only difference behind.
- Issue #10303 - Report a Schema Diff comparison that fails part way through as a failure, rather than as a success.
- Issue #10309 - Reject an empty or null Username when importing a non-shared server, which previously imported cleanly and left a server libpq would silently authenticate as the OS account running pgAdmin.
- Issue #10311 - Fix login being impossible against Flask-Security-Too 5.8.2, which corrected a long-standing inversion in UserMixin.is_locked() that User.is_locked() had been written against.
- Issue #10341 - Omit the redundant TABLESPACE pg_default clause from generated index SQL, which was invalid on a partitioned table.
- Issue #10383 - Fix an authentication bypass in Webserver authentication mode, where get_user() fell back to reading the configured WEBSERVER_REMOTE_USER name from the request headers when it was absent from the WSGI environment, letting any client that could reach pgAdmin assert any identity, including an administrator’s (CVE-2026-86863). Header-asserted identity is now opt-in, restricted to a configured list of trusted proxies with an optional shared secret, and refused for accounts whose authentication source is not webserver. Reported by Sanghyeon Lee (@h9e0n).
- Issue #10384 - Fix argument and connection-string injection in the Backup tool, where the client-supplied database name was appended to the pg_dump argument vector as a bare positional argument: because getopt_long permutes arguments, a value beginning with a dash supplied further options such as --file, overriding the storage-confined output path, and because libpq expands a database name containing an equals sign into a full connection string, one could also redirect the connection to an attacker-controlled host and exfiltrate the stored password (CVE-2026-86864). The database name is now passed through the PGDATABASE environment variable instead. Reported by Sanghyeon Lee (@h9e0n) and Hitesh Jambhale.
- Issue #10385 - Fix a time-of-check to time-of-use flaw in the File Manager’s save_file endpoint, which backs saving from the Query Tool and ERD: the requested path was validated with check_access_permission() and then opened with a plain open(), so a symbolic link planted in between was followed, writing outside the storage directory. This is the sink CVE-2026-7819’s hardening of the separate upload path did not cover (CVE-2026-86861). Reported by sec-rex.
- Issue #10388 - Fix connection-string injection in the Restore and Maintenance tools, where the client-supplied database name was passed straight to --dbname: libpq expands a database name containing an equals sign into a full connection string, whose embedded keywords override the --host and --port pgAdmin supplies, so the connection - and the stored password exported in PGPASSWORD - could be redirected to a server of the caller’s choosing (CVE-2026-86862). The database name is now passed through the PGDATABASE environment variable, which libpq never expands. Found by Hitesh Jambhale.
- Issue #10393 - Render the Validate binary path dialog as HTML, instead of showing the raw markup.
- Issue #10420 - Refuse HTTP redirects on LLM API requests, rather than following a Location header on to a destination ALLOWED_LLM_API_URLS was never applied to. This is hardening rather than a fix for an exploitable flaw, since returning the redirect at all requires control of a host already on the allowlist. Reported by Ziya Abdullayev.
Dependencies
Non-breaking dependabot and audit-driven bumps aggregated for v9.18.
Python
- Authlib 1.7.* -> 1.8.*
- azure-mgmt-resource ==25.0.0 -> >=24.0.0,<26.0.0
- certifi 2026.6.17 -> 2026.7.22
- cryptography 49.0.* -> 50.0.*
- Flask-Security-Too 5.8.* -> >=5.8.2,<5.9
- google-auth-oauthlib 1.4.0 -> 1.4.1
- gssapi 1.11.* -> 1.12.*
- passlib 1.* pin removed (redundant, and conflicting with libpass)
- psycopg[c] 3.3.4 -> 3.3.5
- selenium (web/regression) 4.45.0 -> 4.48.0
- setuptools 83.* -> 84.*
- testscenarios (web/regression) 0.6.2 -> 0.7.0
- typer 0.26.* -> 0.27.*
- Skipped: paramiko 3 -> 5 (blocked on sshtunnel’s paramiko.DSSKey usage) and azure-mgmt-resource 26.0.0 (drops Python 3.9 support)
JavaScript (web/)
- @babel/* toolchain (core, eslint-parser, eslint-plugin, plugin-syntax-jsx, plugin-transform-class-properties, plugin-transform-object-rest-spread, plugin-transform-runtime, preset-env, preset-react, preset-typescript) -> 7.29.7
- @mui/icons-material/@mui/material 7.3.10 -> 7.3.11
- @mui/x-date-pickers 8.28.3 -> 8.29.3
- @tanstack/react-query 5.101.4 -> 5.102.8
- @tanstack/react-virtual 3.13.24 -> 3.14.10
- @testing-library/jest-dom 6.9.1 -> 6.10.0
- @testing-library/react 16.3.2 -> 16.3.3
- @testing-library/user-event 14.6.1 -> 14.6.3
- @types/react 19.2.17 -> 19.2.18
- @types/react-dom 19.2.3 -> 19.2.5
- anti-trojan-source 1.12.0 -> 1.12.2
- axios 1.18.1 -> 1.20.0
- codemirror 6.0.2 -> 6.65.7
- core-js 3.49.0 -> 3.50.0
- css-loader 7.1.4 -> 7.1.5
- diff-arrays-of-objects 1.1.10 -> 1.1.11
- dompurify 3.4.12 -> 3.4.14
- eslint 9.39.4 -> 9.39.5
- eslint-plugin-jest 29.15.5 -> 29.16.6
- globals 17.7.0 -> 17.12.0
- hotkeys-js 4.0.4 -> 4.0.7
- image-minimizer-webpack-plugin 4.1.4 -> 5.0.0
- ip-address 10.2.0 -> 10.7.0
- jest/jest-environment-jsdom 30.4.2 / 30.4.1 -> 30.5.1
- lossless-json 4.3.0 -> 4.3.1
- marked 18.0.7 -> 18.0.11
- papaparse 5.5.4 -> 5.7.0
- postcss 8.5.20 -> 8.5.26
- rc-dock 4.0.0-alpha.2 -> 4.0.0-alpha.3
- react/react-dom 19.2.7 -> 19.2.8
- react-arborist 3.5.0 -> 3.16.0
- react-draggable 4.7.0 -> 4.7.1
- sharp 0.35.3 -> 0.35.4
- svgo 4.0.2 -> 4.1.0
- svgo-loader 4.0.0 -> 5.0.0
- typescript-eslint 8.65.0 -> 8.69.0
- use-resize-observer 9.1.0 -> 10.0.0
- vanilla-jsoneditor 3.12.0 -> 3.13.0
- webpack-bundle-analyzer 5.3.1 -> 5.3.2
- zustand 5.0.14 -> 5.0.15
- Transitive advisory bumps: brace-expansion, fast-uri, js-yaml, shell-quote, socket.io-parser, tar
- Held back: @simonwep/pickr 1.10.x (webpack production-bundle interop break), Babel 8, and webpack 5.110.3 (npm-quarantined at bump time)
JavaScript (runtime/)
- axios 1.18.1 -> 1.19.0
- electron 43.1.1 -> 43.4.0
- eslint 10.7.0 -> 10.8.1
- globals 17.7.0 -> 17.11.0
- ip-address 10.2.0 -> 10.3.1
- postcss 8.5.20 -> 8.5.23
- Transitive advisory bumps: brace-expansion, fast-uri, undici
- Jul 30, 2026
- Date parsed from source:Jul 30, 2026
- First seen by Releasebot:Oct 13, 2026
Version 9.17
pgAdmin 4 v9.17 adds custom map tiles, configurable row limits for View Data, and Gateway API support, while fixing key usability issues and addressing serious security vulnerabilities across authentication, SQL handling, and command execution.
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.16.
Supported Database Servers
PostgreSQL: 14, 15, 16, 17 and 18
EDB Advanced Server: 14, 15, 16, 17 and 18
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.4
New features
- Include the authenticated user’s identity in the HTTP access log.
- Add an opt-in Gateway API HTTPRoute template to the Helm chart as an alternative to the existing Ingress.
- Add a preference to cap the row count fetched by the plain “View Data” action, so it is usable on large tables without always doing a full SELECT *.
- Add support for a custom XYZ tile provider (URL, name, CRS, attribution, max zoom) in the Geometry Viewer, alongside the existing built-in base layers.
Housekeeping
- Centralize shared-server-group visibility and access-control logic, and adjust the ServerGroup-to-Server/SharedServer model relationships.
- Add a basic starter contributing guide.
- Fail the macOS appbundle build if any bundled library links outside the bundle, and scan all Mach-O binaries for bundle linkage rather than only files named .so/.dylib.
- Pin the sonarqube-scan-action GitHub workflow to a full commit SHA instead of a mutable branch ref, to harden against supply-chain tampering.
- Update the Simplified Chinese (zh_Hans_CN) translation to match the wording used in the interface.
- Pin the Yarn version used by the build scripts to the packageManager field, rather than whatever Yarn happens to be on the builder’s PATH.
- Bump JavaScript and Python third-party dependencies, including axios, webpack, react, electron, and certifi.
Bug fixes
- Warn when OAuth2 provider settings are misplaced at the top level of the config instead of under OAUTH2_CONFIG.
- Fix Schema Diff’s “Generate Script” and the browser tree’s CREATE Script view emitting wrong SQL for SERIAL/identity columns, by detecting column-owned sequences via pg_depend instead of guessing the sequence name.
- Fix a Schema Diff result-status filter chip showing “No difference found” after being toggled off and back on, even when real differences exist.
- Fix the Object Explorer briefly showing the literal HTML markup instead of a greyed-out “[Disconnecting…]” label when disconnecting a server or database.
- Detect a selected-but-unusable OS keyring and fall back gracefully instead of failing.
- Fix ALT+F5 (“Execute query at cursor”) doing nothing when the cursor is on or near a statement that is not highlighted, in a Query Tool tab with multiple statements separated by blank lines.
- Stop the googleapiclient cloud-deployment dependency from pulling in the system oauth2client package.
- Fix a “‘Response’ object is not iterable” crash when expanding a Trigger node under a Table to view its trigger function, and report the correct error message on a node.sql failure in that flow.
- Honor the selected EOL sequence when copying query text to the clipboard.
- Fix the object browser’s extension UI breaking under PostgreSQL 19’s extension catalog changes.
- Fix a tool-permission bypass where a user denied the Query Tool, Grant Wizard, or Schema Diff permission could still drive that tool’s backend routes and Socket.IO handlers directly, since the permission check was applied only to a single “front door” route per tool. Also fixes a non-owner triggering an adhoc connection against another user’s shared server persisting a new server record still owned by that other user (CVE-2026-17350). Reported by LXY.
- Fix OS command injection in the MASTER_PASSWORD_HOOK feature, where an externally-sourced username (e.g. via OAuth2/OIDC, Kerberos, or webserver authentication) containing shell metacharacters could execute arbitrary commands as the pgAdmin service account when the configured hook string uses %u (CVE-2026-17347). Reported by Thiago Pereira.
- Fix a lexer-differential bypass of the AI Assistant’s read-only transaction guard, where sqlparse’s string-literal lexing disagreed with PostgreSQL’s own parser under standard_conforming_strings = on, letting a crafted multi-statement payload smuggle a COMMIT past the intended read-only wrapper, an incomplete fix for CVE-2026-12045 (CVE-2026-17351). Reported by Kai Aizen.
- Fix SQL injection in the Index Statistics all-indexes listing and the Publications/Subscriptions Dependencies views, where an apostrophe in a table, index, publication, or subscription name broke out of an unescaped template interpolation, an incomplete fix for CVE-2026-12044 (CVE-2026-17346). Reported by Hung Tran Quoc (@rampage0010).
- Fix several Constraints, Preferences, Debugger, and Schema Diff routes missing the @pga_login_required decorator, making them reachable without authentication in server mode, an incomplete fix for CVE-2026-12046 (CVE-2026-17348). Reported by Hung Tran Quoc (@rampage0010).
- Fix an adhoc server connection cloning another user’s stored database credentials (password, save password flag, tunnel password) alongside ownership, letting a non-owner who cloned another user’s shared server connect using that user’s saved database password (CVE-2026-17349).
- Fix OS command injection in the Import/Export Data tool, where a query-based export could pass a crafted query string past the \copy (...) parenthesis-balance guard by exploiting a backslash-escape mismatch with psql’s default standard_conforming_strings = on behaviour, exposing a live TO PROGRAM clause for arbitrary command execution (CVE-2026-17566). Reported by Arpit Jain.
Additional changes (no associated issue)
Dependencies
Non-breaking dependabot and audit-driven bumps aggregated for v9.17.
Python:
certifi 2026.5.20 -> 2026.6.17
JavaScript (web/):
@babel/core 7.29.0 -> 7.29.6
@date-io/date-fns 3.x -> 3.2.1
@szhsin/react-menu 4.5.1 -> 4.5.2
@tanstack/react-query 5.100.9 -> 5.101.4
@types/react 19.2.14 -> 19.2.17
ajv 8.18.0 -> 8.20.0
anti-trojan-source 1.8.1 -> 1.12.0
autoprefixer 10.5.0 -> 10.5.4
axios 1.16.0 -> 1.18.1
core-js added as an explicit direct dependency (3.49.0), previously relied on transitively via pickr
date-fns 4.1.0 -> 4.4.0
dompurify 3.4.1 -> 3.4.12
eslint-plugin-jest 29.15.2 -> 29.15.5
globals 17.5.0 -> 17.7.0
hotkeys-js 4.0.3 -> 4.0.4
html-to-image 1.11.11 -> 1.11.13
ip-address 10.1.1 -> 10.2.0
jest/jest-environment-jsdom 30.3.0 -> 30.4.2 / 30.4.1
marked 18.0.2 -> 18.0.7
moment-timezone 0.6.2 -> 0.6.3
papaparse 5.5.3 -> 5.5.4
postcss 8.5.10/8.5.14 -> 8.5.20
react/react-dom 19.2.5 -> 19.2.7
react-checkbox-tree 2.0.1 -> 2.0.2
react-draggable 4.5.0 -> 4.7.0
react-timer-hook 4.0.5 -> 4.0.6
sharp 0.34.4 -> 0.35.3
sql-formatter 15.7.3 -> 15.8.2
svgo 4.0.1 -> 4.0.2
terser-webpack-plugin 5.5.0 -> 5.6.1
typescript-eslint 8.59.0 -> 8.65.0
webpack 5.106.2 -> 5.108.4
webpack-bundle-analyzer 5.3.0 -> 5.3.1
zustand 5.0.12 -> 5.0.14
Transitive advisory bumps: brace-expansion, form-data, undici, js-yaml
Reverted azure-mgmt-resource to avoid a breaking import-path change in pgadmin/misc/cloud/azure
JavaScript (runtime/):
electron 42.3.3 -> 43.1.1
eslint 10.4.1 -> 10.7.0
globals 17.6.0 -> 17.7.0
axios 1.18.0 -> 1.18.1
ip-address 10.1.1 -> 10.2.0
postcss 8.5.10 -> 8.5.20
Pinned packageManager to [email protected]
Original source All of your release notes in one feed
Join Releasebot and get updates from pgAdmin and hundreds of other software products.
- Jun 18, 2026
- Date parsed from source:Jun 18, 2026
- First seen by Releasebot:Oct 13, 2026
Version 9.16
pgAdmin releases a major update with clearer server-tab cues, smoother login and database workflows, and extensive reliability, compatibility, and security fixes, including protections for AI-assisted SQL and web interfaces.
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.15.
WARNING
Starting with this release, when a server connection is configured with both an external password-exec command and a passfile, pgAdmin now uses the passfile and ignores the password-exec command. Previously the password-exec command took precedence. A warning is written to the log when the password-exec command is ignored in favour of the passfile.
Supported Database Servers
- PostgreSQL: 14, 15, 16, 17 and 18
- EDB Advanced Server: 14, 15, 16, 17 and 18
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.4
New features
- Issue #2431 - Added an option to colourize panel and tab headers based on the connected server’s colour, making it easier to tell which server a tab is connected to at a glance.
- Issue #7641 - Allow the OAuth2 login button icon to use any Font Awesome style (e.g. fas fa-key), not only brand icons.
- Issue #9301 - Added a “Back to login” link to the Forgot Password and Reset Password pages.
- Issue #9626 - Add support for the TOAST tuple target storage parameter in the Materialized View dialog.
- Issue #9646 - Make the init container security context in the Helm chart configurable via containerSecurityContext, consistent with the main container.
- Issue #9699 - Add support for closing a tab with a middle-click on its title.
Housekeeping
- Issue #9817 - Correct the macOS Replace keyboard shortcut documented in the Query Tool toolbar reference.
- Issue #9866 - Fix a typo in the PGPASS_FILE environment-variable documentation and clarify its behaviour.
- Issue #9917 - Update the Italian translation.
- Issue #9959 - Bump Electron in the desktop runtime from 41.5.0 to 42.1.0 and pin the packaged Electron version.
- Issue #9981 - Clarify the SSH tunnel “Prompt for identity file password?” switch label and help text to indicate it applies only to identity-file authentication.
- Issue #10014 - Document the Kubernetes init-container tag-mismatch and RollingUpdate hazards on shared data volumes.
- Issue #10018 - Remove the EDB BigAnimal cloud deployment support.
- Issue #10023 - Bump JavaScript and Python third-party dependencies, including cryptography, axios, shell-quote, and assorted dependabot lockfile updates.
- Issue #10049 - Bump vulnerable transitive dependencies (tar, flatted) to clear security advisories.
- Issue #10050 - Rebase the version-specific SQL templates so the default targets PostgreSQL 14, the oldest supported server version, dropping the obsolete sub-14 template buckets.
- Issue #10063 - Strip the foreign-architecture slice from the macOS bundle so single-arch builds no longer ship the universal2 Python framework’s unused arm64/x86_64 code.
- Issue #10094 - Update the Italian translation for v9.16.
Bug fixes
- Issue #6308 - Fix the infinite loading spinner after an idle database connection is silently dropped, by detecting stale connections and offering a reconnect dialog.
- Issue #7346 - Fixed an issue where preferences set via the CLI (setup.py set-prefs) were not validated, so invalid values were stored silently; CLI preference values are now validated against the preference type and rejected (and reported) if invalid.
- Issue #7596 - Fix the Query Tool turning into a blank white screen when the runtime has a malformed default locale, by guarding the Query History date/time formatting against the resulting RangeError.
- Issue #8318 - Fixed an error (“i.default.find(…) is undefined”) that prevented deleting a table or relationship link in the ERD tool when a foreign key referenced a column that had been renamed.
- Issue #9060 - Fixed an issue in the Create Table dialog where renaming a column did not update the column references in foreign key and unique constraint definitions for the new table.
- Issue #9091 - Fix the Query Tool re-prompting for an unsaved password in a loop and rejecting the re-entered password, by caching the entered password on the server manager when the primary connection is already established.
- Issue #9128 - Fixed an issue where the object breadcrumbs popup blocked clicks on the object explorer items beneath it.
- Issue #9595 - Fix missing ALTER … SET DEFAULT statements for inherited columns in the generated table SQL/EDIT script.
- Issue #9677 - Fix the Unlogged table toggle in table properties not generating any ALTER TABLE … SET LOGGED/UNLOGGED statement.
- Issue #9701 - Ensure pgAdmin uses psycopg3 rather than psycopg2 when connecting to the configuration database via PGADMIN_CONFIG_CONFIG_DATABASE_URI.
- Issue #9744 - Fix a View/Edit Data crash when the session contains a transaction object that is not filter-capable (e.g. left by the Query Tool or persisted by an older version), which could prevent the desktop application from loading after an upgrade.
- Issue #9762 - Fix the “Cannot read properties of undefined (reading ‘map’)” crash in the desktop runtime when a menu refresh is triggered before the application menus have been received.
- Issue #9766 - Fixed an issue where a server’s custom foreground colour was not applied to the object counts (children count) and column type labels shown in the object explorer.
- Issue #9782 - Optimise pgAdmin startup time by replacing the fixed server-ping interval with adaptive pinging that backs off when no servers are configured.
- Issue #9806 - Fixed an issue where generated font and image filenames contained a double dot (e.g. Roboto-Bold..ttf) due to the webpack asset filename template.
- Issue #9828 - Fix tool calls failing against OpenAI-compatible providers that emit empty/null name, arguments, or id fields in streaming continuation deltas.
- Issue #9829 - Fixed installation on Python 3.9 (e.g. RHEL/Rocky/AlmaLinux 8 and 9) failing with “No module named ‘pkg_resources’” by pinning setuptools below the version that dropped pkg_resources for Python 3.9.
- Issue #9854 - Fix the JSON editor stripping trailing fractional zeros (e.g. 10.00) and rewriting large integers in jsonb values, which corrupted unmodified numbers when saving.
- Issue #9864 - Fixed a regression where the rectangular (block/column) text selection in the code editor stopped working; restored the default Alt+drag selection without re-introducing the crosshair cursor on Alt+F5 (#9570).
- Issue #9868 - Warn before opening a very large JSON/JSONB value in the data grid cell editor, which could freeze pgAdmin, and let the user choose whether to proceed.
- Issue #9875 - Fixed an issue where EXPLAIN and EXPLAIN ANALYZE failed to execute when blank lines separated clauses in the SQL query.
- Issue #9810 - Use the ServerManager’s passfile for the credential gate in connect() so the check matches the passfile actually used for the connection, and warn on conflicting passfile/passexec settings.
- Issue #9892 - Fix blank difference counts on the top-level group rows in Schema Diff.
- Issue #9896 - Fix invalid DDL reconstruction for SERIAL columns in Schema Diff and the generated SQL/CREATE Script so the output round-trips on a clean target.
- Issue #9933 - Remove the administrator-role bypass from the server-access helpers so the access-control checks added in 9.15 (CVE-2026-7813) are enforced uniformly. The Administrator role manages pgAdmin itself, not other users’ database connections.
- Issue #9935 - Fix “Illegal instruction” crash on startup of the Linux DEB and RPM packages on older x86_64 CPUs by pinning the psycopg C extension build to the x86-64 baseline.
- Issue #9936 - Fix the AI panel silently falling back to the default provider when a custom LLM API URL or key file was set, and allow self-hosted LLM endpoints on any loopback port.
- Issue #9939 - Fix saving a newly-added row in the Query Tool failing when the result set includes expression or alias columns that are not real columns of the underlying table.
- Issue #9952 - Ship libpq-oauth-18.so and libcurl in the Docker image so PostgreSQL 18 OAuth connections work out of the box.
- Issue #9976 - Fix a startup migration crash (NoSuchTableError) when an old configuration database contains a stale foreign-key reference.
- Issue #9984 - Fix the Docker entrypoint mishandling a quoted PGADMIN_CONFIG_CONFIG_DATABASE_URI, which caused a SQLAlchemy parse error and silently skipped PGADMIN_DEFAULT_EMAIL/PASSWORD setup.
- Issue #9985 - Make CAP_NET_BIND_SERVICE optional in the Docker image so the container works on restricted runtimes that disable that capability.
- Issue #9987 - Fix “AttributeError: ‘PgAdmin’ object has no attribute ‘login_manager’” crash when running setup.py user-management commands (add-user, update-user) from the CLI.
- Issue #9988 - Provide an actionable error when ‘openid’ is in OAUTH2_SCOPE but OAUTH2_SERVER_METADATA_URL is not set, instead of a cryptic Authlib failure.
- Issue #10013 - Fix pg_attribute filtering by attname returning the wrong attnum when the same column name exists in multiple tables.
- Issue #10022 - Fix AI Assistant read-only transaction bypass that allowed prompt-injected multi-statement payloads to commit out of the READ ONLY wrapper and execute arbitrary SQL, chaining to RCE via COPY … TO PROGRAM on a superuser connection (CVE-2026-12045). Reported by Isaac Chen.
- Issue #10026 - Fix SQL injection in the named restore point endpoint where the user-supplied restore point name was interpolated into SQL via str.format() instead of being passed as a bound parameter (CVE-2026-12050). Reported by Geo.
- Issue #10027 - Fix the spurious “Crypt key is missing” error and logged traceback in the Query Tool new-connection endpoints after a backend restart, by surfacing it as the standard CRYPTKEY_MISSING response so the client recovers transparently.
- Issue #10028 - Fix open redirect in the multi-factor authentication flow via an unvalidated ‘next’ parameter that allowed a crafted link to redirect an authenticated victim to an attacker-controlled host (CVE-2026-12049). Reported by Mai Phạm Hiền.
- Issue #10029 - Fixed a regression where the rectangular (block/column) text selection in the code editor stopped working; restored the default Alt+drag selection without re-introducing the crosshair cursor on Alt+F5 (#9570).
- Issue #10030 - Accept prepare and binary keyword arguments in DictCursor.execute() so callers using the modern psycopg API no longer raise TypeError.
- Issue #10059 - Fix the generated SQL for editing a SQL-language function/procedure whose body contains the word “return” (e.g. a RETURNING clause), which was wrongly treated as a SQL-standard body and produced a statement without the AS $BODY$ wrapper.
- Issue #10068 - Fix critical stored cross-site scripting where PostgreSQL server error text and Explain plan-node content passed through html-react-parser across notifier toasts, form errors, modal alerts, and the Explain visualiser. Because pgAdmin’s default Content-Security-Policy allows inline script and an iframe srcdoc inherits the embedding origin, the injected JavaScript ran same-origin to the victim’s authenticated pgAdmin session and could read every saved server connection credential and issue arbitrary SQL against every server the victim was connected to (CVE-2026-12048). Reported by Fernando Bortotti.
- Issue #10069 - Fix HTML injection in the cloud deployment module (RDS, Azure, Google) where SDK exception text was forwarded to the browser unsanitised and rendered through html-react-parser in the Cloud Wizard (CVE-2026-12047). Reported by Fernando Bortotti.
- Issue #10072 - Fix two SQL Editor endpoints (close and update_connection) missing the @pga_login_required decorator, making them reachable without authentication in server mode and exposing a pickle deserialization sink (CVE-2026-12046). Reported by Fernando Bortotti.
- Issue #10078 - Fix SQL injection across sixteen dialog templates that rendered COMMENT ON ... IS '' and the related pgstattuple/pgstatindex stats sinks, where a low-privilege user could plant a table or index name containing an apostrophe and a superuser viewing statistics on the object would trigger SQL execution under the superuser role. The fix switches the affected templates to the qtLiteral escape filter and rewrites the pgstattuple/pgstatindex calls to address the relation via OID with a ::oid::regclass cast, eliminating the embedded string-literal call form entirely. Also hardens qtLiteral to raise instead of silently returning raw values when conn is falsy (CVE-2026-12044). Reported by Jasser Chebbi.
Additional changes (no associated issue)
Dependencies
Non-breaking dependabot updates aggregated for v9.16.
Python
- certifi 2026.4.22 -> 2026.5.20
- cryptography 47.0 -> 49.0
- Flask-Security-Too 5.4 -> 5.6 (python_version <= '3.9')
- google-auth-oauthlib 1.3.1 -> 1.4.0 (python_version > '3.9'; Python 3.9 stays on 1.3.1)
- requests >=2.33.1 -> >=2.34.2 (python_version > '3.9')
- safety >=3.7.0 -> >=3.8.1
- selenium 4.43.0 -> 4.44.0
- testscenarios 0.6.1 -> 0.6.2 (python_version > '3.9')
- typer 0.25 -> 0.26 (python_version > '3.9')
- urllib3 2.6 -> 2.7 (python_version > '3.9')
JavaScript (web/)
- @tanstack/react-query 5.100.5 -> 5.100.9
- ip-address 10.1.0 -> 10.1.1
- postcss 8.5.12 -> 8.5.14
JavaScript (runtime/)
- axios 1.16.0 -> 1.18.0
- electron 41.5.0 -> 42.3.3
- eslint 10.3.0 -> 10.4.1
- May 11, 2026
- Date parsed from source:May 11, 2026
- First seen by Releasebot:Oct 13, 2026
Version 9.15
pgAdmin releases v9.15 with a new option to run container images as non-default users and major security fixes for access control, injection, file handling, and session management, alongside bug fixes and dependency updates.
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.14.
Supported Database Servers
PostgreSQL: 13, 14, 15, 16, 17 and 18
EDB Advanced Server: 13, 14, 15, 16, 17 and 18Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.2
New features
- Issue #9657 - Allow the container image to run as a non-default user via the PUID and PGID environment variables.
Housekeeping
- Issue #9764 - Update the Swedish translation.
- Issue #9827 - Bump Python and JavaScript dependencies.
- Issue #9832 - Fix the Czech translation for ‘Refresh’.
- Issue #9834 - Bump runtime dependencies and upgrade ESLint to v10.
- Issue #9839 - Update the Russian translation.
- Issue #9870 - Bump runtime and development dependencies.
- Issue #9873 - Use an placeholder in resql tests instead of a hardcoded ‘postgres’ role to support non-default superuser names.
- Issue #9893 - Update the Spanish translation.
- Issue #9906 - Update the Italian translation.
Bug fixes
- Issue #9656 - Use absolute paths for a2enmod and a2enconf in the Debian setup script so it works when /usr/sbin is not on PATH.
- Issue #9830 - Fix cross-user data access and shared-server privilege escalation in server mode (CVE-2026-7813). Also applies the @with_object_filters access-control decorator to ServerNode.list.
- Issue #9835 - Tighten Shared Server feature parity, owner-only field handling, and write guards as a follow-up to the data-isolation hardening.
- Issue #9865 - Fix stored cross-site scripting (XSS) via crafted PostgreSQL object names rendered in the Browser Tree and Explain Visualizer (CVE-2026-7814). Reported by Fahar Abbas.
- Issue #9898 - Fix SQL injection in Maintenance tool option values (CVE-2026-7815). Reported by j3seer.
- Issue #9899 - Fix OS command injection in Import/Export query export (CVE-2026-7816). Reported by Chung Kim (chungkn), OneMount Group.
- Issue #9900 - Fix local-file inclusion and server-side request forgery in LLM API configuration endpoints (CVE-2026-7817). Reported by j3seer.
- Issue #9901 - Fix unsafe deserialization in the session manager that could lead to remote code execution (CVE-2026-7818). Also encrypts session files at rest using Fernet, restricts session-file permissions to 0o600, switches the session-digest default from SHA-1 to SHA-256, drops several non-roundtrippable live objects from the session (AuthSourceManager and the Azure, RDS, Google Cloud, and BigAnimal cloud-provider instances), tightens DATA_DIR file and directory permissions at creation, creates pgadmin4.log with mode 0o600, hardens EnhancedRotatingFileHandler._open against rotation failures, and bounds the user_info_server prompt retry loop so a non-interactive caller cannot spin forever. Reported by Fernando Bortotti.
- Issue #9902 - Fix symlink-based path traversal in the file manager (CVE-2026-7819). Reported by Fernando Bortotti.
- Issue #9904 - Fix account-lockout bypass on Flask-Security’s default /login view by overriding User.is_active and User.is_locked() so the locked field is honored on every authentication path (CVE-2026-7820). Reported by Fernando Bortotti.
Additional changes (no associated issue)
The commits below did not have a dedicated GitHub issue. They are listed here for transparency.
Bug fixes
- 1518b0828 - Restore the SERVER_MODE python-test path and fix two endpoint regressions surfaced by it.
- d57acce35 - Harden validation, preference, and connection-params paths against pre-existing edge cases.
Test-suite stability
- a11d289bd - Harden click_modal backdrop wait and open_query_tool stale-element retry in feature tests.
- a50a553b0 - Feature tests use sys.executable; sync yarn.lock to package.json.
- 0fad04de8 - PSQL socket tests use the authenticated tester; the role-dependencies test skips cleanly on auth failure.
- 1f7194924 - Harden six regression tests against environmental drift.
- dc61039e9 - Quote the username in the views/mview test helper for dotted local roles.
- 9b29bc203 - Quote the username in the types/compound-triggers test helpers for dotted local roles.
- 504775de8 - Quote the username in the user-mappings test helper for dotted local roles.
- 208541cc4 - ImportExportServersTestCase uses sys.executable instead of a bare python and surfaces subprocess errors instead of swallowing them as a misleading JSON-parse failure.
Refactoring
- 6f4f28def - Factor the WTForms-error-to-JSON conversion into a helper and drop a dead import.
Documentation
- 9923eefca - Clarify in login.rst and ldap.rst that MAX_LOGIN_ATTEMPTS applies only to the INTERNAL authentication source. Operators using LDAP, OAuth2, Kerberos, or Webserver auth should rely on the upstream identity provider’s lockout policy and reverse-proxy request rate-limiting.
Dependencies
Non-breaking dependabot updates aggregated for v9.15.
Python:
- boto3 1.42 -> 1.43 (python_version > '3.9'; Python 3.9 stays on 1.42)
- cryptography 46.0 -> 47.0
- psycopg 3.3.3 -> 3.3.4 (python_version >= '3.10')
- pycodestyle >=2.5.0 -> >=2.14.0
- requests >=2.21.0 -> >=2.33.1
- safety >=1.9.0 -> >=3.7.0
- testtools 2.8.7 -> 2.9.1
- typer 0.24 -> 0.25 (python > '3.9')
JavaScript (web/):
- @tanstack/react-query 5.90 -> 5.100.5
- axios 1.15.2 -> 1.16.0
- moment-timezone 0.6.0 -> 0.6.2
- postcss 8.5.6 -> 8.5.12
JavaScript (runtime/):
- axios 1.15.2 -> 1.16.0
- electron 41.3.0 -> 41.5.0
- eslint 10.2.1 -> 10.3.0
- globals 17.5.0 -> 17.6.0
- Apr 2, 2026
- Date parsed from source:Apr 2, 2026
- First seen by Releasebot:Oct 13, 2026
Version 9.14
pgAdmin releases version 9.14 with binary downloads from result grids and support for custom OpenAI and Anthropic-compatible LLM providers. The update also improves AI Assistant and reporting, while fixing issues across query tools, authentication, geometry viewing, and more.
Version 9.14
Release date: 2026-04-02
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.13.
Supported Database Servers
- PostgreSQL: 13, 14, 15, 16, 17 and 18
- EDB Advanced Server: 13, 14, 15, 16, 17 and 18
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.2
New features
- Issue #4011 - Added support to download binary data from result grid.
- Issue #9703 - Added support for custom LLM provider URLs for OpenAI and Anthropic, allowing use of OpenAI-compatible providers such as LM Studio, EXO, and LiteLLM.
- Issue #9709 - Fixed an issue where AI features (AI Assistant tab, AI Reports menus, and AI Preferences) were visible in the UI even when LLM_ENABLED is set to False.
- Issue #9738 - Allow copying of text from the AI Assistant chat panel.
Housekeeping
Bug fixes
- Issue #8992 - Fixed an issue where selecting all in the Query Tool’s Messages tab would select the entire page content.
- Issue #9279 - Fixed an issue where OAuth2 authentication fails with ‘object has no attribute’ if OAUTH2_AUTO_CREATE_USER is False.
- Issue #9392 - Ensure that the Geometry Viewer refreshes when re-running queries or switching geometry columns, preventing stale data from being displayed.
- Issue #9457 - Fixed Process Watcher garbled text on Windows with non-UTF-8 locales.
- Issue #9570 - Fixed an issue where ALT+F5 for executing a query in the Query Tool shows a crosshair cursor icon for rectangular selection.
- Issue #9648 - Fixed an issue where the default fillfactor value for B-tree indexes was incorrect.
- Issue #9694 - Fixed an issue where AI Reports are grayed out after setting an API key by auto-selecting the default provider.
- Issue #9696 - Fixed an issue where AI Assistant does not notify that No API Key or Provider is Set.
- Issue #9702 - Fixed misleading AI activity messages that could be mistaken for actual database operations.
- Issue #9719 - Fixed an issue where AI Reports fail with OpenAI models that do not support the temperature parameter.
- Issue #9721 - Fixed an issue where permissions page is not completely accessible on full scroll.
- Issue #9729 - Fixed an issue where some LLM models would not use database tools in the AI assistant, instead returning text descriptions of tool calls.
- Issue #9732 - Improve the AI Assistant user prompt to be more descriptive of the actual functionality.
- Issue #9734 - Fixed an issue where LLM responses are not streamed or rendered properly in the AI Assistant.
- Issue #9736 - Fix an issue where the AI Assistant was not retaining conversation context between messages, with chat history compaction to manage token budgets.
- Issue #9740 - Fixed an issue where the AI Assistant input textbox sometimes swallows the first character of input.
- Issue #9758 - Clarify where the LLM API key files should be.
- Issue #9789 - Fixed an issue where the Query tool kept prompting for a password when using a shared server.
- Issue #9795 - Support /v1/responses for OpenAI models.
Similar to pgAdmin with recent updates:
- Smokeball release notes147 release notes · Latest Oct 2, 2026
- Cosmolex release notes20 release notes · Latest Jul 30, 2025
- PracticePanther release notes36 release notes · Latest Aug 11, 2026
- Salesforce release notes77 release notes · Latest Oct 1, 2026
- Microsoft release notes950 release notes · Latest Oct 8, 2026
- Zoom release notes219 release notes · Latest Sep 24, 2026
- Mar 5, 2026
- Date parsed from source:Mar 5, 2026
- First seen by Releasebot:Oct 13, 2026
Version 9.13
pgAdmin releases version 9.13 with AI reports and chat for security, schema, performance, and query insights, plus expanded table and ERD tools. The update also fixes issues with result downloads, settings, server editing, and other workflows.
Version 9.13
Release date: 2026-03-05
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.12.
Supported Database Servers
PostgreSQL: 13, 14, 15, 16, 17 and 18
EDB Advanced Server: 13, 14, 15, 16, 17 and 18
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.0
New features
- Allow users to customize “OF TYPE” columns during table creation.
- No FK are shown in diagram created from existing tables in the ERD Tool.
- Add support for ‘ONLY’ in Index creation dialog.
- Allow “drag-n-drop” for only user chosen tables, and show relations between them.
- Load predefined users from a JSON file through command line.
- Core LLM integration infrastructure, AI reports for security, schema, and performance, AI chat for the Query Tool, and AI Insights for EXPLAIN.
Housekeeping
Bug fixes
- Fixed an issue where the ‘Quote strings only’ configuration was ignored when downloading the result set.
- Fixed an issue where tools settings changed by the users were not restored on application relaunch.
- Fixed an issue where modifying a shared server incorrectly updated the original server details.
- Fixed an issue where a long name in ERD table node was not breaking into multiple lines.
- Fixed an issue where column comments were not displayed in the SQL tab for materialised views.
- Fix an issue where deployment of helm chart crashing with operation not permitted.
- Fix translation compilation.
- Fix broken checkbox selection in backup dialog objects tree.
- Fixed an issue in file dialog where rename was not working.
- Feb 5, 2026
- Date parsed from source:Feb 5, 2026
- First seen by Releasebot:Oct 13, 2026
Version 9.12
pgAdmin releases version 9.12 with new role membership options, easier access to full query results, and improved OAuth2 and OIDC authentication. The update also fixes issues across data editing, backups, connections, dashboards, and security.
Version 9.12
Release date: 2026-02-05
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.11.
WARNING
Starting with this release, pgAdmin Windows installers are signed with a new code signing certificate. When installing or running pgAdmin on Windows, you should verify that the digital signature shows the certificate name as “Open Source Developer, David John Page”. This certificate will be used for this and future releases.
Supported Database Servers
- PostgreSQL: 13, 14, 15, 16, 17 and 18
- EDB Advanced Server: 13, 14, 15, 16, 17 and 18
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.0
New features
- Issue #6451 - Add new options like INHERIT and SET to the Role’s membership tab.
- Issue #8890 - Add a new button in the query tool data output toolbar to get entire range of data.
- Issue #9292 - Enhance OAUTH2 and OIDC authentication support with improved claims handling and configuration options.
Housekeeping
Bug fixes
- Issue #8916 - Warn user of unsaved data output edits before page navigation.
- Issue #8987 - Fix Query Tool state restoration for new connections and queries.
- Issue #9074 - Fix pg_restore logs to distinguish UI sync issues from actual failures.
- Issue #9110 - Optimize checkbox selection logic in backup dialog objects tree.
- Issue #9196 - Fixed an issue where double click to open a file in the file manager is not working.
- Issue #9223 - Upgrade ID column in the database table to BigInteger to support large OID values.
- Issue #9235 - Fixed an issue where “View/Edit Data” shortcut opened “First 100 rows” instead of “All Rows”.
- Issue #9258 - Ensure saved shared server passwords are re-encrypted on password change.
- Issue #9260 - Fixed an issue where data filter dialog removes newline character when sending SQL to the query tool.
- Issue #9285 - Fixed an issue where the dashboard freezes on initial render when there is a high number of locks.
- Issue #9293 - Fixed the SSL certificate issue while checking for the upgrade.
- Issue #9332 - Fixed a sorting issue in the system stats memory usage table.
- Issue #9350 - Disable Parameters and Membership fields when object is not new for Login and group roles.
- Issue #9380 - Fixed an issue where the Query History panel would auto-scroll to the top and did not preserve the scroll bar position for the selected entry.
- Issue #9402 - Fixed an issue where pgAdmin4 app on macOS cannot auto-update while running on a read-only volume even if present in the Applications folder.
- Issue #9500 - Fixed an issue where connection parameters were using localized values instead of literal values, causing connection failures.
- Issue #9518 - Mask the secret key for restrict option in the process watcher when restoring plain SQL file (CVE-2026-1707).
- Issue #9522 - Ensure the container deployment supports boolean values in yaml format.
- Issue #9552 - Ensure that the tooltip for the password cell is not visible.
- Issue #9553 - Fix pgAdmin fails when performing Backup/Restore on a PostgreSQL connection defined exclusively via pg_service.conf.
- Issue #9567 - Update menu bar documentation.
- Dec 11, 2025
- Date parsed from source:Dec 11, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.11
pgAdmin releases version 9.11 with extension-dependency controls for indexes and materialized views, column data types in the object explorer, and support for newer Linux distributions and conditional TLS in Helm. It also fixes Query Tool, connection, restore security, and other issues.
Version 9.11
Release date: 2025-12-11
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.10.
Supported Database Servers
- PostgreSQL: 13, 14, 15, 16, 17 and 18
- EDB Advanced Server: 13, 14, 15, 16, 17 and 18
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.0
New features
- Issue #6388 - Add support of DEPENDS/NO DEPENDS ON EXTENSION for INDEX.
- Issue #6390 - Add support of DEPENDS/NO DEPENDS ON EXTENSION for MATERIALIZED VIEW.
- Issue #8968 - Add support for showing the column data type beside column name in the object explorer.
- Issue #9263 - Added Ubuntu 25.10 and Fedora 43
- Issue #9345 - Add conditional TLS support for the Ingress in the Helm chart.
Housekeeping
Bug fixes
- Issue #9036 - Fixed an issue on type casting of default string function/procedure arguments in debugger tool.
- Issue #9155 - Fix pkg_resources deprecation warning by migrating Docker base image to python:3-alpine from alpine:latest.
- Issue #9297 - Fixed an issue where EXPLAIN should run on query under cursor if no text is selected.
- Issue #9351 - Fixed an issue where opening file in Query Tool does not retain file name in tab.
- Issue #9354 - Fixed an issue where connection is failing via Query Tool/PSQL Tool workspaces.
- Issue #9368 - Plain SQL restore runs with ‘restrict’ option to prevent harmful psql meta-commands (CVE-2025-13780).
- Issue #9372 - Fixed an issue where copying highlighted text in the query tool data output cell editor would copy the complete string.
- Issue #9373 - Fixed an issue where copying a single cell should not add quoting.
- Issue #9393 - Fix the Helm chart server definition and change the app version.
- Issue #9399 - Specify the correct hostname placeholder for the Password Exec command.
- Issue #9408 - Ensure the proper handling of extra volume mount configurations in the Helm deployment template by correcting the configuration value references.
- Nov 13, 2025
- Date parsed from source:Nov 13, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.10
pgAdmin releases an update with ERD search and image-resolution controls, expanded database and query-plan support, and a React 19 UI migration. It also fixes usability and authentication issues and addresses several security vulnerabilities.
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.9.
Supported Database Servers
PostgreSQL: 13, 14, 15, 16, 17 and 18
EDB Advanced Server: 13, 14, 15, 16, 17 and 18
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 18.0
New features
- Added the ability to search for tables and automatically bring them into view in the ERD tool.
- Add support of DEPENDS/NO DEPENDS ON EXTENSION for PROCEDURE.
- Add support for setting image download resolution in the ERD tool.
- Add support for displaying detailed Citus query plans instead of ‘Custom Scan’ placeholder.
- Add support for formatting .pgerd ERD project file.
Housekeeping
- Migrate pgAdmin UI to use React 19.
Bug fixes
- Fixed an issue where data output column resize is not sticking in Safari.
- Fixed an issue where Schema Diff does not ignore Tablespace for indexes.
- Fixed an issue where the 2FA window redirected to the login page after session expiration.
- Fixed an issue where the Select All option on the columns tab of import/export data was not working in languages other than English.
- Fixed an issue where the Debian build process failed with a “Sphinx module not found” error when using a Python virtual environment.
- Fixed an issue where the last used storage directory was reset to blank, leading to access denied errors during backup or restore operations.
- Fixed an issue that prevented assigning multiple users to an RLS policy.
- Fixed remote code execution vulnerability when restoring PLAIN-format SQL dumps in server mode (CVE-2025-12762).
- Fixed Command injection vulnerability allowing arbitrary command execution on Windows (CVE-2025-12763).
- Fixed LDAP authentication flow vulnerable to TLS certificate verification bypass (CVE-2025-12765).
- Fixed LDAP injection vulnerability in LDAP authentication flow (CVE-2025-12764).
- Oct 16, 2025
- Date parsed from source:Oct 16, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.9
pgAdmin adds PostgreSQL 17 subscription options, expanded type and function controls, identity-file login support, and Kubernetes Helm chart initialization, alongside fixes for query results, configuration setup, keyboard shortcuts, and preferences.
Release date: 2025-10-16
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.8.
Supported Database Servers
PostgreSQL: 13, 14, 15, 16, 17 and 18
EDB Advanced Server: 13, 14, 15, 16 and 17Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 17.5
New features
- Issue #6385 - Add support of DEPENDS/NO DEPENDS ON EXTENSION for ALTER FUNCTION.
- Issue #6394 - Added “MULTIRANGE_TYPE_NAME” option while creating a Range Type.
- Issue #6395 - Added “SUBSCRIPT” option while creating a External Type.
- Issue #6996 - Added option to skip the password dialog when using an identity file.
- Issue #8932 - Added ‘failover’ and ‘two_phase’ parameter support in CREATE/ALTER SUBSCRIPTION for PostgreSQL v17+.
- Issue #9225 - Add support for initializing the pgAdmin4 Kubernetes Helm chart.
Housekeeping
Bug fixes
- Issue #9098 - Fixed an issue where the query tool displayed ‘default’ instead of ‘null’ for null text data in the data output.
- Issue #9125 - Fixed an issue where the pgAdmin configuration database wasn’t being created on a fresh install when an external database was used for the configuration.
- Issue #9157 - Fixed an issue where shortcuts are not working as expected on multiple keyboard layouts.
- Issue #9158 - Fixed an issue where saving the newly changed preferences was not reflecting on the preferences tab.
- Sep 4, 2025
- Date parsed from source:Sep 4, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.8
pgAdmin releases version 9.8 with foreign-table truncation menu options, Debian Trixie support, configurable Gunicorn security settings, and a System theme by default. The update also fixes an OAuth security vulnerability and several upgrade and editor issues.
Version 9.8
Release date: 2025-09-04
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.7.
Supported Database Servers
- PostgreSQL: 13, 14, 15, 16 and 17
- EDB Advanced Server: 13, 14, 15, 16 and 17
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 17.5
New features
- Issue #6396 - Add menu items for truncating foreign tables.
- Issue #7928 - Added Debian Trixie as a supported platform for pgAdmin.
- Issue #8891 - Allow user to configure security related gunicorn parameters.
- Issue #9093 - Change the default pgAdmin theme to System.
Housekeeping
- Issue #7448 - Remove usage of BrowserFS as it is deprecated.
Bug fixes
- Issue #9090 - Pin Paramiko to version 3.5.1 to fix the DSSKey error introduced in the latest release.
- Issue #9095 - Fixed an issue where pgAdmin config migration was failing while upgrading to v9.7.
- Issue #9114 - Fixed Cross-Origin Opener Policy (COOP) vulnerability in the OAuth 2.0 authentication flow (CVE-2025-9636).
- Issue #9116 - Fixed an issue where editor shortcuts fail when using Option key combinations on macOS, due to macOS treating Option+Key as a different key input.
- Aug 21, 2025
- Date parsed from source:Aug 21, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.7
pgAdmin releases version 9.7 with macOS desktop automatic updates, expanded EXPLAIN options, cursor blink controls, and server tag filtering. The update also adds collation locale support and resolves issues across the Query Tool, Object Explorer, and other areas.
Version 9.7
Release date: 2025-08-21
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.6.
Supported Database Servers
- PostgreSQL: 13, 14, 15, 16 and 17
- EDB Advanced Server: 13, 14, 15, 16 and 17
Bundled PostgreSQL Utilities
- psql, pg_dump, pg_dumpall, pg_restore: 17.2
New features
- Issue #5766 - Add support for automatic updates in the pgAdmin 4 Desktop application on macOS.
- Issue #6456 - Added GENERIC_PLAN, MEMORY, SERIALIZE option to EXPLAIN/EXPLAIN ANALYZE command.
- Issue #8712 - Add support for changing cursor blink rate within the editors.
- Issue #8917 - Add support for server tag-based filtering in the Object Explorer.
- Issue #8931 - Added support for builtin locale provider while creating Collation.
Housekeeping
- Issue #6384 - Replace keyword PROCEDURE with FUNCTION while creating trigger and event trigger.
- Issue #8861 - Introduced an ‘Editor’ preferences category and migrated all editor related settings into it.
Bug fixes
- Issue #7057 - Fixed an issue where custom column widths in the result grid of Query Tool or View/Edit Data were reset after re-executing a query.
- Issue #7617 - Fixed the issue where updating the name of a table column does not reflect in the corresponding primary key constraint.
- Issue #8149 - Fixed an issue where pgAdmin failed to update the server connection status when the server was disconnected in the background and a refresh was performed on that server.
- Issue #8650 - Make Dashboard tables to be vertically resizable.
- Issue #8756 - Fixed an issue in Firefox where the query window would shift to the left after opening the history tab or selecting a column header in the results grid.
- Issue #8864 - Fixed an issue where CPU usage was very high on Windows when opening the psql tool.
- Issue #8867 - Ensure DB restriction type is preserved while import and export server.
- Issue #8969 - Fixed incorrect behaviour of the option deduplicate items after creating the index.
- Issue #8971 - Added PKEY index in the index statistics summary.
- Issue #9073 - Fixed an issue where adding breakpoints caused errors, and stepping out of a nested function removed breakpoints from the parent function.
- Issue #9007 - Ensure the scratch pad in the Query Tool is not restored after it is closed.
- Issue #9008 - Update the documentation for parameters that require file paths.
- Issue #9047 - Fixed an issue where downloading images on the ERD tool was not working in desktop mode.
- Issue #9067 - Ensure that disabling “Save Application State” in Preferences prevents tool data from being saved and stops it from being restored on application restart.
- Jul 25, 2025
- Date parsed from source:Jul 25, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.6
pgAdmin releases version 9.6 with faster large-dataset retrieval, improved OAuth 2 support through PKCE, and custom session digest settings for FIPS compliance. The update also adds clearer keyboard shortcuts and delivers compatibility and stability fixes.
Version 9.6
Release date: 2025-07-25
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.5.
Supported Database Servers
PostgreSQL: 13, 14, 15, 16 and 17
EDB Advanced Server: 13, 14, 15, 16 and 17Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 17.2
New features
- Issue #1923 - Ensure that keyboard shortcuts are displayed in tooltips, context menus, and the main menu.
- Issue #5797 - Implemented a server-side cursor to enhance performance when retrieving large datasets.
- Issue #7979 - Added support for setting a custom SESSION_DIGEST_METHOD in pgAdmin 4 to facilitate FIPS compliance.
- Issue #8941 - Enable the PKCE workflow for OAuth 2 authentication.
Housekeeping
- Issue #8828 - Ensure that pgAdmin 4 is compatible with PG/EPAS v18.
- Issue #8958 - Use ‘Drop’ instead of ‘Delete’ for object commands to make destructive actions more deliberate.
Bug fixes
- Issue #8420 - Fixed an issue where windows installer is not signing tmp files generated by InnoSetup.
- Issue #8675 - Fixed an issue in the Search Objects tool where selecting a node occasionally selected an incorrect node.
- Issue #8901 - Improved the application state restoration by leveraging rc-dock layout and ensure the order and layout of tabs is maintained on restore.
- Issue #8907 - Fixed an issue where json editor in result grid was crashing if null value is set in the json editor.
- Issue #8914 - Update zstd library link to 1.5.7 in Dockerfile.
- Jun 30, 2025
- Date parsed from source:Jun 30, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.5
pgAdmin releases an update with new role permissions, customizable Query Tool shortcuts, searchable preferences, and workspace recovery after interruptions. It also improves logging and fixes issues across SQL editing, data export, schema comparisons, and the interface.
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.4.
Supported Database Servers
PostgreSQL: 13, 14, 15, 16 and 17
EDB Advanced Server: 13, 14, 15, 16 and 17Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 17.2
New features
- Issue #1926 - Add a new permission to allow disabling “Change Password” feature for a pgAdmin role.
- Issue #1947 - Added role-based restrictions for editing server connections.
- Issue #2659 - Added support for customizing keyboard shortcuts in the Query Tool’s Edit menu.
- Issue #2864 - Add a search box to enable searching within the preferences tab.
- Issue #3319 - Added support to preserve the workspace, query windows, and pgAdmin state during an abrupt shutdown or restart.
- Issue #6743 - Open preferences in a new tab instead of a dialog for better user experience.
- Issue #8665 - Supports JSON logging for gunicorn process within Docker.
Housekeeping
Bug fixes
- Issue #6118 - Improved PL/pgSQL code folding and support nested blocks.
- Issue #7173 - Add a flag to allow access to system Python packages on recent Linux distributions.
- Issue #7466 - Fixed an issue where utilities such as pg_dump and pg_restore failed to log error messages when required dependency files were missing.
- Issue #8032 - Fixed an issue where the Schema Diff Tool incorrectly reported differences due to variations in the order of the privileges.
- Issue #8235 - Fixed an issue in SQL syntax highlighting where the same color was used for both variable names and datatypes.
- Issue #8691 - Fixed an issue in the query tool where using multiple cursors to copy text resulted in only the first line being copied.
- Issue #8803 - Ensure that Keyboard shortcuts for save and download actions should not called when their respective UI buttons are disabled.
- Issue #8808 - Fixed an issue where data export using a query opened the wrong dialog type.
- Issue #8809 - Fixed an issue where data export using a query failed when the query contained a newline character.
- Issue #8830 - Fixed a UI layout issue that occurred after upgrading from pgAdmin v9.2 when all tabs had been closed prior to the upgrade.
- Issue #8834 - Fixed an issue where the Columns node was not visible under Catalog Objects.
- May 29, 2025
- Date parsed from source:May 29, 2025
- First seen by Releasebot:Oct 13, 2026
Version 9.4
pgAdmin releases version 9.4 with large file downloads in the query tool, expanded import and export options, and custom-query table exports. It also improves result grid performance, accessibility, and reliability with a range of bug fixes.
Version 9.4
Release date: 2025-05-29
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v9.3.
Supported Database Servers
PostgreSQL: 13, 14, 15, 16 and 17
EDB Advanced Server: 13, 14, 15, 16 and 17
Bundled PostgreSQL Utilities
psql, pg_dump, pg_dumpall, pg_restore: 17.2
New features
- Enabled large file downloads for desktop users within the query tool.
- Add all missing options to the Import/Export Data functionality, and update the syntax of the COPY command to align with the latest standards.
- Add support for exporting table data based on a custom query.
Housekeeping
Bug fixes
- Fixed an issue where the result grid slowed down when any column contained a large amount of data.
- Fix the issue where an error is displayed when a table is dropped while a query is running.
- Fixed an issue where the options key was not working as expected in the PSQL tool.
- Fixed an issue where correct error message not displayed when sql statement contains Arabic letters.
- Enhance contrast for selected and hovered items in the Object Explorer to improve visibility and accessibility.
- Fixed an issue where the query tool returns “cannot unpack non-iterable Response object” when running any query with a database name change.
- Handle result grid data changes in View/Edit Data mode by automatically reconnecting to the server if a disconnection occurs.
- Implement API fetch error display for select dropdown.
- Fixed an issue where light theme briefly appears when pgAdmin loads or tools open, even when a dark or system UI theme is preferred.
- Fixed issues related to column range selection using shift + click.
- Fixed an issue where pgAdmin failed to focus when previously unfocused and then quit.
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.