Skip to content

Wmux

v3.0.0 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

Published 3d CLI & Terminal
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

agentic-ai ai-agent ai-agents ai-coding browser-automation claude
+12 more
claude-code coding-agent developer-tools electron gemini mcp-server multi-agent powershell terminal-multiplexer tmux tmux-alternative windows

Affected surfaces

auth

ReleasePort's take

Moderate signal
editorial:auto 3h

The release closes a cross-workspace terminal read/write spoofing vulnerability and adds several usability enhancements.

Why it matters: Closes a critical security flaw affecting terminal I/O across workspaces; upgrade to v3.0.0 immediately to mitigate risk.

Summary

AI summary

Broad release touches terminal, pty, https://github.com/openwong2kim/wmux/pull/177, and https://github.com/openwong2kim/wmux/issues/173.

Changes in this release

Security Critical

Closes cross-workspace terminal read/write spoofing vulnerability.

Closes cross-workspace terminal read/write spoofing vulnerability.

Source: llm_adapter@2026-06-13

Confidence: high

Feature Medium

Adds keyboard zoom shortcuts (Ctrl+=, Ctrl+-, Ctrl+0) for terminal font size.

Adds keyboard zoom shortcuts (Ctrl+=, Ctrl+-, Ctrl+0) for terminal font size.

Source: llm_adapter@2026-06-13

Confidence: high

Feature Medium

Adds configurable starting directory and split CWD inheritance for new panes.

Adds configurable starting directory and split CWD inheritance for new panes.

Source: llm_adapter@2026-06-13

Confidence: high

Feature Medium

Adds Rename workspace entry to right‑click context menu.

Adds Rename workspace entry to right‑click context menu.

Source: llm_adapter@2026-06-13

Confidence: high

Feature Medium

Adds reference MCP plugin and Diátaxis‑organized documentation.

Adds reference MCP plugin and Diátaxis‑organized documentation.

Source: llm_adapter@2026-06-13

Confidence: high

Feature Medium

Prefer PowerShell 7 over Windows PowerShell 5.1 as the default shell.

Prefer PowerShell 7 over Windows PowerShell 5.1 as the default shell.

Source: llm_adapter@2026-06-13

Confidence: high

Performance Low

Restores bench B3 drop‑tracking variables and refreshes performance numbers.

Restores bench B3 drop‑tracking variables and refreshes performance numbers.

Source: granite4.1:30b@2026-06-13-audit

Confidence: high

Bugfix Medium

Fixes Prefix‑mode Toggle Zoom to actually zoom the pane.

Fixes Prefix‑mode Toggle Zoom to actually zoom the pane.

Source: llm_adapter@2026-06-13

Confidence: high

Bugfix Medium

Fixes IME input from wiping the typed line.

Fixes IME input from wiping the typed line.

Source: llm_adapter@2026-06-13

Confidence: high

Bugfix Medium

Fixes garbled glyphs by triggering defensive repaints.

Fixes garbled glyphs by triggering defensive repaints.

Source: llm_adapter@2026-06-13

Confidence: low

Bugfix Low

Fixes sidebar hide/expand controls mirroring when docked on the right.

Fixes sidebar hide/expand controls mirroring when docked on the right.

Source: llm_adapter@2026-06-13

Confidence: high

Bugfix Low

Triggers defensive repaints to clear garbled terminal glyphs without manual resize.

Triggers defensive repaints to clear garbled terminal glyphs without manual resize.

Source: granite4.1:30b@2026-06-13-audit

Confidence: high

Bugfix Low

Drops @electron/asar header cache after postPackage repack to avoid stale asar files.

Drops @electron/asar header cache after postPackage repack to avoid stale asar files.

Source: granite4.1:30b@2026-06-13-audit

Confidence: high

Full changelog

Milestone release. Headline: a reference plugin and workflow-friendly APIs that make wmux a foundation external tools build on, PowerShell 7 chosen as the default shell wherever it's installed (including Store builds), a batch of terminal UX (font zoom, configurable start directory, split CWD inheritance), and the close of the cross-workspace terminal read/write isolation gap. No breaking changes — this is a milestone version bump, not a wire-format or config break; existing sessions, profiles, and configs carry over untouched. All dogfood-verified on a live build before tagging.

Added

  • Terminal starting directory + split CWD inheritance. New panes can inherit the active pane's working directory on split, with a global/per-profile setting for the default startup directory and a toggle for inheritance — a priority chain that leaves the main process and daemon untouched. (#177, resolves #173 / #174 / #175)
  • Keyboard zoom for terminal font size. Ctrl+= / Ctrl+- / Ctrl+0 grow, shrink, and reset the terminal font, resolved from the physical key code so it's IME-safe, clamped to 12–24px. (#172, resolves #171)
  • Rename a workspace from the right-click menu. A Rename entry on the workspace context menu, reusing the existing inline-rename flow (same as double-click). (#184)
  • Substrate reference plugin and restructured docs. A reference MCP plugin, Diátaxis-organized documentation, a drift fix, API codegen, and a performance characterization pass — closing the external-tooling API request and giving integrators a worked example to build against. (#165, closes #15)

Changed

  • PowerShell 7 is preferred over Windows PowerShell 5.1 as the default shell wherever it's installed — including Microsoft Store builds exposed only through the WindowsApps App Execution Alias. The alias is both detected (via reparse-point resolution; existsSync alone misses the 85-byte symlink stub) and actually launchable (the stub can't be spawned directly by node-pty, so wmux resolves it to the real package target). Shell resolution is now single-sourced between the main process and the daemon, so the two can't drift. (#178, #180, #181, #186; resolves #176, #179, #183, #185)

Security

  • Cross-workspace terminal read/write via spoofable workspace identity is closed. A token-holding external MCP client could spoof WMUX_WORKSPACE_ID to a victim workspace and, naming that workspace's ptyId, read or write its terminal — the main-side ownership assert only verified that the ptyId belonged to the (attacker-supplied) workspaceId, not that the caller was entitled to that workspace. Part 1 gave input.readScreen the assertWorkspaceOwnsPty check its sibling handlers already had (it was the one terminal-IO handler that skipped it). Part 2 removed the spoofable identity the assert trusts: terminal tools (terminal_read / terminal_read_events / terminal_send / terminal_send_key) now resolve their workspace from verified PID-mapped identity only, never the env hint — a genuine external caller gets a dedicated claimed workspace, an explicit foreign ptyId fails closed, and a boot-reconcile grace keeps a first-party caller from being misclassified during a daemon respawn. (#164 + #188, resolves #163)

Fixed

  • Prefix-mode Toggle Zoom now actually zooms. The tmux-style prefix Toggle Zoom toggled internal state but no rendering code read it, so the keystroke was consumed with no visible change. The zoomed pane is now rendered full-bleed (siblings hidden) and exactly restored on toggle-off, with split/close coherence and a ZOOM badge. (#187, resolves #182)
  • Garbled glyphs clear without a manual resize. Panes could render corrupted glyphs until a border drag forced a repaint; wmux now repaints defensively. (#168, resolves #166)
  • IME input no longer wipes the typed line. xterm's hidden IME textarea is cleared when idle, so a voice/IME input method (e.g. AutoGLM) no longer discards the already-typed line. (#170, resolves #167)
  • Sidebar hide/expand controls mirror correctly when docked on the right. (#160)
  • The @electron/asar header cache is dropped after the postPackage repack, so the packaged asar can't be stale. (#161)
  • Restored the bench B3 drop-tracking variables lost in an earlier refactor and refreshed the perf numbers. (#169)

Contributors

Thanks to the external contributors and reporters in this release:

What's Changed

  • fix(sidebar): mirror the hide/expand controls when docked on the right by @openwong2kim in https://github.com/openwong2kim/wmux/pull/160
  • fix(build): drop the @electron/asar header cache after the postPackage repack by @openwong2kim in https://github.com/openwong2kim/wmux/pull/161
  • docs: PROTOCOL §4 enforcement status + issue #113 identity design (defer) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/162
  • fix(security): assert workspace ownership on input.readScreen (#163 Part 1) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/164
  • fix(terminal): defensive repaints for garbled glyph corruption (#166) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/168
  • Close #15: substrate reference plugin, Diátaxis docs, perf characterization by @openwong2kim in https://github.com/openwong2kim/wmux/pull/165
  • Fix bench B3 crash from #165 and refresh perf numbers by @openwong2kim in https://github.com/openwong2kim/wmux/pull/169
  • fix(terminal): clear xterm's hidden IME textarea when idle by @openwong2kim in https://github.com/openwong2kim/wmux/pull/170
  • feat(terminal): keyboard zoom for terminal font size (Ctrl+= / Ctrl+- / Ctrl+0) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/172
  • feat(terminal): configurable starting directory + split CWD inheritance (#173, #174, #175) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/177
  • fix(pty): prefer PowerShell 7 over Windows PowerShell 5.1 as default shell by @zer0ken in https://github.com/openwong2kim/wmux/pull/178
  • fix(pty): detect AND launch Store-build PowerShell 7 App Execution Alias (#179) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/180
  • fix(daemon): prefer PowerShell 7 over Windows PowerShell 5.1 in default-shell fallback by @zer0ken in https://github.com/openwong2kim/wmux/pull/181
  • refactor(shell): single-source shell resolution shared by main + daemon (#183, #185) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/186
  • feat(workspace): add Rename to right-click context menu by @matdac6 in https://github.com/openwong2kim/wmux/pull/184
  • fix(pane): render prefix-mode Toggle Zoom (#182) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/187
  • fix(mcp): route terminal IO through verified identity, not the env hint (#163 Part 2) by @openwong2kim in https://github.com/openwong2kim/wmux/pull/188

New Contributors

  • @matdac6 made their first contribution in https://github.com/openwong2kim/wmux/pull/184

Full Changelog: https://github.com/openwong2kim/wmux/compare/v2.18.0...v3.0.0

Security Fixes

  • Cross‑workspace terminal read/write isolation gap closed: input.readScreen now asserts workspace ownership; terminal IO handlers resolve workspace from verified PID identity instead of spoofable env hint (addresses CVE‑style abuse vector).

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Wmux

Get notified when new releases ship.

Sign up free

Beta — feedback welcome: [email protected]