github Devolutions/devolutions-gateway v2026.1.2

8 hours ago

Features

  • dgw,agent: agent self update and scheduled updates (#1726) (541abfeed2) (ARC-447) (DGW-371)

    • Devolutions Agent self-update using shim executable.
    • Scheduled updates.
    • /jet/update endpoint improvements (moved params to request body, deprecated query param).
    • New /jet/update/schedule endpoint for controlling on-machine update scheduling.
    • New GET endpoints for both /jet/update and /jet/update/schedule. Agent now provides new update_status.json for querying product update and schedule status.

Bug Fixes

  • jetsocat: --log-term was logging to stdout instead of stderr (48242abb7e)

    The --log-term flag was routing log output through stdout, polluting the MCP stdio JSON-RPC channel and any other stdout-based protocol. Fixed to use stderr, which is the correct descriptor for diagnostic output.

  • jetsocat: always send JSON-RPC message on MCP proxy backend disconnect (5a124c6c4b)

    When the backend MCP process disconnects, the proxy now always sends a protocol-level message to the client before exiting, instead of silently closing the stdio channel:

    • SendError::Fatal (write to broken backend): JSON-RPC error response (-32099) with the pending request id.
    • ReadError::Fatal with a pending request: JSON-RPC error response (-32099) so the client can correlate it with the outstanding request.
    • ReadError::Fatal with no pending request: a $/proxy/serverDisconnected notification so the client is informed even without an active request.
  • jetsocat: properly JSON-escape error details in MCP proxy JSON-RPC error responses (e4052b2709)

  • dgw: report disk space when recording dir does not exist yet (#1746) (10c9cd0d77) (DGW-372)

    When the recording folder has not been created yet, GetDiskFreeSpaceExW / statvfs failed with OS error 3 because the path did not exist, causing recording_storage_total_space and recording_storage_available_space to be absent from the heartbeat response. Fix by walking up to the nearest existing ancestor before querying disk space.

  • dgw: add warn logs to shadow recording error paths (#1749) (773104086f) (DGW-373)

    Added warn! logs to all 4 InternalError (close code 4002) branches in the shadow_recording handler. Previously, these error paths silently closed the WebSocket with no diagnostic output, making production debugging nearly impossible.

  • dgw: resolve WER APIs dynamically to support Windows Server 2016 (#1751) (7fe1038225) (DGW-368)

    WerRegisterExcludedMemoryBlock is absent from wer.dll on Windows Server 2016 RTM (NT 10.0.14393). The static import introduced in v2026.1.1 caused the Windows loader to refuse starting DevolutionsGateway.exe on those hosts. Replaced with runtime resolution via GetModuleHandleW / GetProcAddress, cached in a OnceLock. The binary now starts on any Windows 10/Server 2016 build and silently skips WER dump exclusion when the API is unavailable.

  • agent: configure features correctly during silent install by passing feature states via CustomActionData (108d2efdfb) (DGW-374)

  • agent: propagate registry open errors during agent install detection (14295159) (DGW-375)

  • dgw: overhaul Linux RPM/DEB packaging (#1747) (a18e6b92d2) (DGW-366)

    RPM: bundle the systemd unit file directly (eliminating the service register call), ship a systemd preset file so the service is enabled on fresh RHEL/Rocky install, use systemd-rpm-macros for correct lifecycle semantics, fix prerm/postrm scripts, harden config directory permissions to 750. DEB: mirror RPM service lifecycle semantics (enable on fresh install but do not start; try-restart on upgrade), harden config directory permissions to 750, add Description= to unit file. Both packages print a post-install message directing the admin to configure and start the service.

Don't miss a new devolutions-gateway release

NewReleases is sending notifications on new releases.