# What changed in jupyter-server

> 16 changes in jupyter-server 2 from its official release notes, upgrade guides and advisories: 8 security, 2 new APIs and options. Each one cited. Sources checked 2026-10-31. HTML: https://unstale.sh/pypi/jupyter-server/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## jupyter-server 2

### Security

- Jupyter Server: 5xx request logging leaks token-bearing Referer header values (2.21.0) — [security advisory](https://github.com/advisories/GHSA-C3MW-737P-C7G2), [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0)
- Jupyter Server: Stored XSS in `NbconvertFileHandler` / `NbconvertPostHandler` via missing `sandbox` CSP (2.20.0) — [security advisory](https://github.com/advisories/GHSA-FCW5-X6J4-CCMP)
- A security fix addresses CVE-2026-44727. (2.20.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.20.0)
- Jupyter Server vulnerable to Path Traversal via incorrect root directory boundary check in _get_os_path() (2.18.2) — [security advisory](https://github.com/advisories/GHSA-GF7Q-Q4J7-HP7C)
- Jupyter Server has a CORS Origin Validation Bypass via `re.match()` in `allow_origin_pat` (2.18.0) — [security advisory](https://github.com/advisories/GHSA-24QX-W28J-9M6P)
- Jupyter Server has an open redirection vulnerability in `next` query parameter (2.18.0) — [security advisory](https://github.com/advisories/GHSA-QH7Q-6QM3-653W)
- Jupyter Server: Path Traversal via incorrect startswith() root directory check allows access to sibling directories (2.18.0) — [security advisory](https://github.com/advisories/GHSA-5789-5FC7-67V3)
- Jupyter Server's Authentication Cookies Remain Valid After Password Reset and Server Restart (2.18.0) — [security advisory](https://github.com/advisories/GHSA-5MRQ-X3X5-8V8F)

### New APIs and options

- Clients can supply a kernel_id when creating a kernel or session. (2.21.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0)
- A toggle was added to enable curve encryption for all kernels that support it. (2.20.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.20.0)

### Behavior and default changes

- A connectable URL is shown for password authentication. (2.21.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0)

### Fixes and other changes

- Fixes compatibility with Tornado v6.5.9 and later. (2.21.1) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.1)
- Fixes resolvePath handling for home-relative paths. (2.21.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0)
- Wildcard browser redirect files now use the hostname. (2.21.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.21.0)
- The port is now taken from bind_sockets when its port differs. (2.20.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.20.0)
- Terminal output is clarified when ServerApp.ip is set to 0.0.0.0. (2.20.0) — [release notes](https://github.com/jupyter-server/jupyter_server/releases/tag/v2.20.0)
