This page in other versions: Development
Navigation
Warning: This documentation is for a pre-release version of pgAdmin 4
Contents
- Getting Started
- External database for pgAdmin user settings
- Connecting To A Server
- Managing Cluster Objects
- Managing Database Objects
- Creating or Modifying a Table
- Management Basics
- Backup and Restore
- Developer Tools
- Processes
- pgAgent
- pgAdmin Project Contributions
- Release Notes
- Version 9.15
- Version 9.14
- Version 9.13
- Version 9.12
- Version 9.11
- Version 9.10
- Version 9.9
- Version 9.8
- Version 9.7
- Version 9.6
- Version 9.5
- Version 9.4
- Version 9.3
- Version 9.2
- Version 9.1
- Version 9.0
- Version 8.14
- Version 8.13
- Version 8.12
- Version 8.11
- Version 8.10
- Version 8.9
- Version 8.8
- Version 8.7
- Version 8.6
- Version 8.5
- Version 8.4
- Version 8.3
- Version 8.2
- Version 8.1
- Version 8.0
- Version 7.8
- Version 7.7
- Version 7.6
- Version 7.5
- Version 7.4
- Version 7.3
- Version 7.2
- Version 7.1
- Version 7.0
- Version 6.21
- Version 6.20
- Version 6.19
- Version 6.18
- Version 6.17
- Version 6.16
- Version 6.15
- Version 6.14
- Version 6.13
- Version 6.12
- Version 6.11
- Version 6.10
- Version 6.9
- Version 6.8
- Version 6.7
- Version 6.6
- Version 6.5
- Version 6.4
- Version 6.3
- Version 6.2
- Version 6.1
- Version 6.0
- Version 5.7
- Version 5.6
- Version 5.5
- Version 5.4
- Version 5.3
- Version 5.2
- Version 5.1
- Version 5.0
- Version 4.30
- Version 4.29
- Version 4.28
- Version 4.27
- Version 4.26
- Version 4.25
- Version 4.24
- Version 4.23
- Version 4.22
- Version 4.21
- Version 4.20
- Version 4.19
- Version 4.18
- Version 4.17
- Version 4.16
- Version 4.15
- Version 4.14
- Version 4.13
- Version 4.12
- Version 4.11
- Version 4.10
- Version 4.9
- Version 4.8
- Version 4.7
- Version 4.6
- Version 4.5
- Version 4.4
- Version 4.3
- Version 4.2
- Version 4.1
- Version 4.0
- Version 3.6
- Version 3.5
- Version 3.4
- Version 3.3
- Version 3.2
- Version 3.1
- Version 3.0
- Version 2.1
- Version 2.0
- Version 1.6
- Version 1.5
- Version 1.4
- Version 1.3
- Version 1.2
- Version 1.1
- Version 1.0
- Licence
Version 9.15¶
Release date: 2026-05-11
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 18
Bundled 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<OWNER>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 fora2enmodanda2enconfin the Debian setup script so it works when/usr/sbinis 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_filtersaccess-control decorator toServerNode.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 (AuthSourceManagerand the Azure, RDS, Google Cloud, and BigAnimal cloud-provider instances), tightens DATA_DIR file and directory permissions at creation, createspgadmin4.logwith mode 0o600, hardensEnhancedRotatingFileHandler._openagainst rotation failures, and bounds theuser_info_serverprompt 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/loginview by overridingUser.is_activeandUser.is_locked()so thelockedfield 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- Hardenclick_modalbackdrop wait andopen_query_toolstale-element retry in feature tests.a50a553b0- Feature tests usesys.executable; syncyarn.locktopackage.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-ImportExportServersTestCaseusessys.executableinstead of a barepythonand 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 inlogin.rstandldap.rstthatMAX_LOGIN_ATTEMPTSapplies only to theINTERNALauthentication 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:
boto31.42 -> 1.43 (python_version > '3.9'; Python 3.9 stays on 1.42)cryptography46.0 -> 47.0psycopg3.3.3 -> 3.3.4 (python_version >= '3.10')pycodestyle>=2.5.0 -> >=2.14.0requests>=2.21.0 -> >=2.33.1safety>=1.9.0 -> >=3.7.0testtools2.8.7 -> 2.9.1typer0.24 -> 0.25 (python > '3.9')
JavaScript (web/):
@tanstack/react-query5.90 -> 5.100.5axios1.15.2 -> 1.16.0moment-timezone0.6.0 -> 0.6.2postcss8.5.6 -> 8.5.12
JavaScript (runtime/):
axios1.15.2 -> 1.16.0electron41.3.0 -> 41.5.0eslint10.2.1 -> 10.3.0globals17.5.0 -> 17.6.0