- cmux no longer trusts four leaked emSign (eMudhra) root certificates for its own network connections; it checks certificates against the macOS trust store (#25452)
Changelog
Reliable Agent Restores
Agent sessions come back after a relaunch: Codex retries a busy lock, Claude Code resumes in the right directory, agy and OpenCode auto-resume, and Running/Idle stays accurate when a Stop hook never arrives. Codex no longer asks to review cmux's own hooks.
Steadier Cloud
Cloud recovers frozen machines and wedged terminal links, shows a new split's terminal sooner, and explains a full resource pool instead of reporting a missing plan. Shared team members can enable Cloud, and the upgrade offer shows your next plan tier.
Calmer Sign-In
Sign-in refreshes its token only near expiry, retries when the sign-in service is busy instead of failing, and shows the error details when it does fail.
- A new Cloud split shows its terminal sooner (#20016)
- Cloud machine actions answer within the app's request budget and keep running in the background (#19982)
- Fixes a Cloud workspace layout that kept rebuilding the pane it had just reused (#20198)
- Fn-Left and Fn-Right send Home and End in the terminal (#18671) -- thanks @theoklitosBam7 for the report!
- The terminal reports its real color scheme to CSI 996 queries (#20024) -- thanks @teamleaderleo, and thanks @sebushi113 for the report!
- Fixes invisible terminal text on light themes when
minimum-contrastis set (#19921) -- thanks @teamleaderleo, and thanks @travisp for the report! - Canvas mode shows the translucent window backdrop when
background-opacityis below 1 (#17548) -- thanks @csyio, and thanks @CinnamonRolls1 for the report! - The Cloud CLI bridge keeps its owner across remote reconnects (#16213) -- thanks @teamleaderleo!
cmux browserrejects invalid automation arguments instead of running them (#18838) -- thanks @soyeladice-svg, and thanks @teamleaderleo for the report!- Sign-in refreshes its token only when it is close to expiring, retries when the sign-in service is busy instead of failing, and shows the error details when sign-in fails (#20237, #20270)
- Cmd-N and the controls that share it run a custom
ui.newWorkspace.actionagain (#20287) -- thanks @nebullii, and thanks @clain23 for the report! - Restored
cmux sshworkspaces keep connecting instead of showing SSH errors, and cmux's private route marker no longer leaks intoscpandssh(#20586, #20279) -- thanks @nebullii, and thanks @dericknwq for the report! - Agent Running/Idle status stays accurate when a Stop hook never arrives, and Claude stays idle after a helper's PreToolUse follows Stop (#20564, #20262) -- thanks @BMeyendriesch for the report!
- Acknowledged agent notifications stay dismissed (#20547)
- Agent sessions restore more reliably after a relaunch: Codex lock contention is retried, a Claude session that never wrote a transcript is not restored, Claude Code resumes in the right directory, and agy and OpenCode auto-resume (#20246, #20499, #20498, #20249, #20226, #20441)
- OpenCode lifecycle notifications work again (#20444)
- Codex no longer asks to review cmux's own hooks, locally or on Cloud machines (#20482, #20524)
- Backspace no longer drops text an input method commits on the same keypress (#20466) -- thanks @vjintageboy!
- Return reaches forms in browser panes (#20449)
- Windows stay on their own Space after a display reconnects (#20428) -- thanks @MinsehKim for the report!
- Remote tmux split shortcuts go to the projected panes (#18333) -- thanks @Mirksen, and thanks @dev-fennek for the report!
- Surfaces created through the control API no longer replay inherited startup work (#20312) -- thanks @SeanPedersen for the report!
- A custom upload command gets the right remote paths (#20260)
- Fixes hangs from per-render tab-strip work (#20238)
- Shared team members can enable Cloud, a failed team or plan fetch is no longer read as no team or the free plan, a full Cloud resource pool is explained instead of reported as a missing plan, and the first upgrade click opens checkout (#20425, #20056, #20066, #20252)
- Cloud machines recover when frozen, machine stats and pause no longer hang on an unresponsive machine, wedged terminal links recover, and
cmux vm restartprints OK like pause and resume (#20361, #20345, #20376, #20526)
- Claude Code and Codex terminals no longer draw the agent turn rail or the restoring-session banner, so their text lines up with plain terminals again after a relaunch; the Previous/Next Agent Turn shortcuts (Cmd-Shift-Up/Down) and their command palette entries are gone with it (#20060)
- Terminal panes no longer show a Jump to Bottom button (#20180)
Move Around From the Keyboard
Ctrl-Cmd-E focuses the sidebar, Ctrl-Cmd-1 through 9 focuses a pane by number, and Cmd-Shift-B jumps back to the pane where you last sent a prompt.
⌃⌘1 to focus the first pane.Find Agent Sessions by What Was Said
Global search finds open Claude Code and Codex sessions by the text of their conversations.
⌘⌥F and type something you remember from the session.Smarter Cmd-Click on Paths
Cmd-click opens relative paths as files, folders in Finder, and notes.md:12 in the Markdown viewer. Cmd-hover underlines only paths that exist.
⌘ over a file path in a terminal and click it.Program Status in the Sidebar
Programs can report idle, working, blocked, done, or error with OSC 7501, and the workspace sidebar shows it. Scripts can follow program_status.changed on the cmux-events stream.
printf '\e]7501;state=working\e\\'; sleep 5 and watch the workspace in the sidebar.Smaller Download
Stable ships thin arm64 and x86_64 builds in a smaller DMG with a one-hop update path.
- Ctrl-Cmd-E focuses the workspace sidebar, and Ctrl-Cmd-1…9 focuses a pane by number; all are rebindable (#19324, #19263)
- Cmd-Shift-B jumps back to the pane where you last sent a prompt (#18951) -- thanks @lucasr1b!
- Cmd-Option-F global search finds open Claude Code and Codex sessions by what was said in them (#18962) -- thanks @lucasr1b!
- Programs can report idle, working, blocked, done, or error status with OSC 7501, shown in the workspace sidebar and published as
program_status.changedon thecmux-eventsstream (#18742, #19091) cmux ssh-tmux <destination> listandcmux ssh-tmux <destination> attach <session>list and attach remote tmux sessions (#18645) -- thanks @dev-fennek for the report!- Browser panes show a link's URL at the bottom-left on hover or keyboard focus (
browser.showLinkHoverURL) (#17258) -- thanks @jfexyz! - My Devices finds your Macs on the same account even when they have different teams selected (#17394, #17390)
workspaceColors.brightenInDarkModecan be turned off to show workspace colors exactly as chosen in dark mode (#17308) -- thanks @csyio, and thanks @jalnanco for the report!- Settings has a separate Warn Before Closing Active Agent Session option (
app.warnBeforeClosingAgentSession) (#17430) cmux.jsoncovers classic font sizes, Sleepy Mode, and more settings sections, and edits apply live without a restart (#17467, #17466, #17446, #17442)- Settings > Sidebar > Show Cloud and Device Icons in Sidebar shows or hides the Cloud and device icons in the sidebar (#18630)
- A one-time Cloud welcome shows what's new in 0.65.1, and Cmd-Y and Cmd-Shift-Y introduce Cloud when it is off (#17243, #18886, #19093, #19689, #19876) -- thanks @lucasr1b!
- Claude Code and Codex terminals have an agent turn rail: one tick per prompt, hover for a preview, click to jump, and Cmd-Shift-Up/Down for the previous or next turn (#15398) -- thanks @Arktomson for the report!
- Drag a sidebar workspace onto a pane to merge its tabs into that pane (#18837)
- Click by Hint (beta): with Beta Features > Click by Hint on, Cmd-J labels sidebar rows, the sidebar footer, titlebar buttons, and browser page elements so you can click them from the keyboard (#19338, #19577, #19520, #19523, #19496, #19484)
- Go to Workspace can list workspaces by most recent focus with
app.goToWorkspaceOrder: "recent"(opt-in) (#18646) -- thanks @s4ff0x for the report! - Remote tmux (beta):
cmux ssh-tmux --transport etconnects over EternalTerminal, and hosts can share one connection so you approve sign-in once (#8721) -- thanks @ejc3! - Agent chat panes (beta) notify when a turn finishes or fails, and OpenCode events stream again (#19617, #19684)
- Cmd-N always creates a local workspace, Cmd-Y creates a Cloud workspace, and Cmd-Shift-Y opens New Cloud Machine (#18895)
- Cmd-click on a path opens relative paths as files, opens folders in Finder, opens
notes.md:12in the Markdown viewer, and does nothing for missing paths; Cmd-hover underlines only paths that exist (#19376, #19397, #19443, #19452) - cmux downloads are smaller: stable ships thin arm64 and x86_64 builds in an LZMA-compressed DMG with a one-hop update path, and the app drops duplicate binaries and unused libraries (#19255, #19211, #19386, #19356, #19428, #19379, #19355)
- SSH helper payloads for Linux and macOS hosts download on demand instead of shipping inside the app (#19305, #19361)
- When the
cmuxCLI and the app are different versions, the CLI explains the mismatch instead of printingmethod_not_found, and strips terminal control characters from printed errors (#17561, #18171, #18190) - Agent auto-resume waits for the retry time the error gives, plus jitter, and clears its marker after recovery (#18096)
- Collaborators who have a workspace open but not focused stay in the sidebar as dimmed avatars, and focused collaborators get the visible slots first (#18501)
cmux welcomelists the default shortcuts again (#18110)- Cloud and the Upgrade badge are available to everyone without a rollout gate, Pro accounts no longer see the Upgrade badge, and the in-app Upgrade page shows your signed-in plan (#18279, #18292, #19865) -- thanks @azooz2003-bit for the report!
- A dragged tab settles smoothly into its slot in the tab bar (#19593)
- The OpenCode Go provider in the Cloud sidebar's CodeRouter section is labeled Opencode, and
cmuxsuggests your Claude Code login email as the account label (#18499, #18538, #19231) -- thanks @samuelpatro! - cmux Cloud (beta): Cloud machine create and resize options follow your plan's limits, and the Cloud sidebar gets hover, copy, refresh, empty-row, and tab-switch polish (#18481, #18303, #18693, #19085) -- thanks @lucasr1b, @azooz2003-bit!
- The Cloud VM limit header names the machines it counts and no longer counts paused ones (#19968)
- Fixes dragging a sidebar workspace to reorder it, and a crash when the drag ends (#20015, #20018)
- Cloud connects on the first try, re-enrolls a dead tunnel instead of timing out on every machine, and scopes sign-out to its own build (#19961, #19977)
- Account-owned Macs stay in My Devices across team switches (#18518) -- thanks @azooz2003-bit!
- Fixes the terminal mode reset after a hibernated agent is reaped (#19806) -- thanks @russell7 for the report!
- Agent status is reported in
cmux ssh-tmuxmirrors (#19104) - Cloud workspaces are selected in the window that owns them, and a window closed during Cloud workspace creation is released (#19970, #20001)
- New Machine is created in process (#18700)
- Fixes a startup exception crash in CmuxMain (#18452)
- Fixes a crash from a stack overflow while the Settings window is built (#18457)
- Fixes a crash on Edit > Undo after a text editor was closed (#18467)
- Fixes a crash when a focused SwiftUI view outlives its hosting view, and makes Quick Look teardown reentrant-safe (#18250)
- Fixes a crash from the terminal display callback firing after a surface was freed (#17524, #17547)
- Fixes crashes when two error reports were built at once and in the right sidebar mode bar (#18315, #18299)
- Fixes a browser crash when pasting as plain text, and reduces browser pane crashes from WebKit callbacks (#18790, #18318) -- thanks @monmacllc for the report!
- Fixes a crash on macOS 14 when opening a Cloud terminal pane (#18300)
- Reduces long main-thread hangs from repeated workspace layout work (#18879)
- Deep split chains no longer freeze the main thread when they first appear (#19606, #19672)
- The control socket no longer serializes on the main thread or hangs on disconnect under heavy agent load (#17216) -- thanks @matellis!
- Settings search and Keyboard Shortcuts search stay responsive while typing (#17517, #17603, #18134, #18118)
- Removes a startup delay from CJK font fallback (#18679)
- Cmd-Q skips an unneeded synchronous scan for unsaved work (#18644)
- Browser TLS challenges no longer evaluate trust on the main thread (#19731) -- thanks @AdamDureyAtWillship for the report!
- Typing in the browser address bar stays responsive with large history (#19098)
- Dropping a screenshot into a browser pane no longer freezes cmux (#18643) -- thanks @alinbui for the report!
- Text pastes no longer wait behind slow image or file pastes, and the image paste deadline starts only once its worker is running (#18650, #19164) -- thanks @pengqun for the report!
- Fixes memory growth in idle Claude inbox-wait hooks (#18632) -- thanks @RuslanTar for the report!
- A blocking
feed.pushno longer holds a control-socket slot (#19680) -- thanks @zelig81 for the report! - Terminal panes no longer stay black after switching back to a workspace (#18432) -- thanks @Hoyass for the report!
- Terminal text stays crisp on external displays (#18163)
- Chinese and Japanese text renders correctly: punctuation no longer overlaps the next character, and fallback glyphs keep the expected size (#18469, #17562) -- thanks @AlainOUYANG, @hiromasa-hayashi for the reports!
- The prompt resets mouse reporting, bracketed paste, and screen modes left on by a killed program (#19786)
- View menu zoom changes the focused terminal's font size (#19632) -- thanks @DaikiHayata for the report!
- Cmd-C and Edit > Copy reach TUIs that capture the mouse or run in the alternate screen (#19604) -- thanks @azooz2003-bit!
- Escape in a find field closes only its own find bar (#19563)
- Command palette text fields can select to the start and end of the line (#17369) -- thanks @jacob-carlborg, and thanks @jacob-carlborg-apoex for the report!
- New terminals honor Ghostty's inherit-working-directory keys (#19685) -- thanks @dansisan for the report!
- Deferred focus no longer pulls cmux in front of another app (#19814) -- thanks @apoorvdarshan for the report!
- The global show/hide hotkey leaves minimized windows in the Dock (#18533) -- thanks @jacob-carlborg, and thanks @jacob-carlborg-apoex for the report!
- No more spurious startup config errors for cmux-owned Ghostty keys such as
surface-tab-bar-font-size(#18272) -- thanks @ernotuovinen for the report! cmux sshbrowser panes load pages, forward localhost to the SSH host, and stop their forward when cmux exits (#18956, #19808) -- thanks @lucasr1b, and thanks @dericknwq for the report!cmux sshpanes restore copy-on-select, and mirror panes copy with Cmd-C and Edit > Copy (#19099, #19630) -- thanks @kj648, @f1shb0n3 for the reports!- Pasting or dropping images and files into SSH terminals uploads them and inserts absolute remote paths (#18160, #18280) -- thanks @hpasic, @jeremywhelchel for the reports!
cmux sshpasses the full local environment to ProxyCommand, fixes agent environment and relay auth errors, and retries the recovery read before failing an open (#18285, #18662, #19330) -- thanks @xybio, @ataraxiat for the reports!- Codex agent status shows in remote SSH workspaces (#18792)
- Local tmux detached-session recovery is reliable, and remote tmux mirrored panes no longer race during grid resize (#18654, #18663)
- Restored agent sessions reattach their live views after relaunch, take their status from live evidence, and keep a running
cmux restore(#17435, #17475, #17521) - Panes showing a Claude Code background session reattach after relaunch, including Dock panes (#18599, #18651)
- The sidebar shows the running state right after agent input, and Claude questions and plan approvals show Needs input immediately (#17456, #17454)
- Claude sessions that completed normally auto-resume, recovered StopFailure states are retired, and late idle reminders no longer revive completed agents (#18668, #18970, #18631) -- thanks @PEKEW, @T-Necat for the reports!
- Restoring an agent keeps its original executable, including OMP behind a Bun shim, and Copilot sessions launched with value flags restore (#18658, #18660, #18470) -- thanks @BlueRaddish, @bbeirouti1990, and thanks @Junyeopp for the report!
- OpenCode V2 restore, Feed events, and replies go to the TUI that owns the session (#18659) -- thanks @swarajban for the report!
- Pi is found in PATH directories containing wildcard characters, and Pi one-shot flags no longer skip the cmux wrapper (#17567, #18269) -- thanks @tizerluo for the report!
- Queued agent messages are kept in hooks, and Claude user-settings hooks route inside tmux on macOS hosts (#19105, #19163) -- thanks @marcioaltoe for the report!
- Claude sessions can reach the cmux Computer Use MCP again (#18288) -- thanks @jfearnside for the report!
- Codex completion hooks keep working when Codex's notify is set to Computer Use, and Codex Computer Use clicks blocked by another window retry in the foreground (#18666, #18629) -- thanks @bigbrainw for the report!
cmux claude-teamslaunches when Claude Code integration is off, and Codex Teams remote resume and fork keep prompt text after--and drop the bypass-sandbox flag (#18276, #18167) -- thanks @globalsecurepayments for the report!- Claude background-session settings are no longer written to TMPDIR, and Claude managed policies keep their per-key defaults (#18284, #18982) -- thanks @busyagent for the report!
- Codex sessions are no longer blank after being dragged between panes (#18283)
- Hermes install and uninstall keep hook entries other tools added, and skip source venvs built for another Python version (#19068, #19160) -- thanks @nebullii, and thanks @cavemanriju, @counterposition for the reports!
- The OMX HUD pane is recognized by how it was launched, not by text that mentions omx and hud (#18576) -- thanks @nebullii, and thanks @STRML for the report!
- tmux compatibility renders
#{socket_path}and#{pid}, so OMC 5.6+ team startup works, andtmux list-panesno longer lists Dock panes (#18396, #18623) -- thanks @aidaodedjl, and thanks @maschenborn for the report! - Markdown panel links follow your browser link settings, and local file URLs open in cmux preview (#19159, #19097) -- thanks @pipitmart, @zhechenzhu for the reports!
- The browser REPL runtime is bundled again (#18373) -- thanks @tarsis-viana for the report!
- CLI browser dialog accept and dismiss complete the right dialog, even while the page is blocked (#19753) -- thanks @FabianSperrle for the report!
- Browser automation clears the selected frame and element refs when the page navigates, and
cmux browser storage getkeeps__proto__keys (#18577, #18527) -- thanks @nebullii, @scs0209! - Automated input reaches browser panes in a background workspace during workspace switches (#18479)
- Middle-click closes pane tabs again, and minimal-mode pane tab clicks no longer start a window drag (#17688, #19100) -- thanks @knpwrs, and thanks @bengry, @ANRlm for the reports!
- Surface commands such as
close-surfacereach a moved pane by its surface ID (#19073) -- thanks @nebullii, and thanks @roypadina for the report! - A rejected confirmed tab close no longer leaves a force-close bypass behind (#18414) -- thanks @tk1475!
cmux vault forkrejects--checkpointand--turnused together (#18415) -- thanks @tk1475!- Workspace color swatches, Design Mode composer card clicks, and aggregate memory coverage work on macOS 27 (#18884, #19190, #19095) -- thanks @nilbus, and thanks @myeolinmalchi for the report!
- The shortcut discovery popover and Settings in a small window lay out correctly (#18513, #18784)
- The cmux accent color shows again in the titlebar and update notification views (#17382)
- Team role changes in Settings > Account > Members show right away and revert if the save fails, and Members no longer says unreachable right after sign-in (#18475, #18703)
- Launching cmux a second time no longer terminates the running instance (#18520)
- Install and Relaunch no longer stops at the quit confirmation, and the control socket stays up while an automatic update prepares to relaunch (#17459, #18161) -- thanks @benjaminbelaga for the report!
- Restore falls back to session history instead of starting with no workspaces when snapshots are unreadable (#18857)
- Typing from an iPhone makes that phone the Follow Latest owner (#18766) -- thanks @azooz2003-bit!
- cmux Cloud (beta): Cloud workspace browsers route to the remote machine, New Cloud Machine keeps reconnecting until its deadline, Cloud activation no longer waits for the local WireGuard hub, imported Claude accounts are visible to the team, and Cmd-Y Cloud creation no longer retains a closed window (#19032, #13981, #18585, #18672, #18656, #19153)
- cmux Cloud (beta): CodeRouter accounts belong to the selected team, removed accounts stay hidden, refresh stops after the CLI exits, account setup opens in a new terminal, and the help guide opens as a pane (#18946, #18948) -- thanks @azooz2003-bit!
cmux vpnrejects invalid or trailing arguments before connecting (#19253, #18704) -- thanks @soyeladice-svg!- Remote tmux (beta): New Workspace can be routed to the host, origin colors and host suffixes are repaired, and detach no longer adds a second replacement terminal (#19112, #19096, #19148)
- Custom sidebars (beta) autofocus only after a user gesture, and
clipboard.writeis gesture-gated and write-only (#19372, #19333)
Agents on SSH Hosts
Claude Code and Codex on a cmux ssh host show Running, Needs input, or Idle in the sidebar, like local agents. A stopped Claude Code session can move between your Mac and a host with its transcript and git working tree.
cmux session move <session-id> --to user@host.Predictive Local Echo
Over a slow remote link, the characters you type appear right away, underlined until the remote shell confirms them. It is on by default for remote terminals.
Crash-Proof Sessions
Terminal scrollback is checkpointed, and interrupted Claude sessions can be recovered after a crash. Agents whose turn ends on a retryable error, such as model capacity or a dropped connection, are told to continue automatically.
cmux session restore to bring back interrupted agent sessions.Redesigned Settings
Settings shows one categorized section at a time, with a theme gallery and controls for Ghostty fonts, cursor, and opacity.
⌘, and pick a section from the sidebar.Bring Your Terminal Setup
Import settings from iTerm2, Terminal, Alacritty, Kitty, WezTerm, or Warp, and pick a Base Keymap preset that matches the shortcuts you already know.
cmux import, or open Settings > Keyboard Shortcuts.Jump to Your Prompts
Each prompt you submit to an agent leaves a marker on the terminal scrollbar. Click a marker to jump back to that prompt in scrollback.
Search Terminal Scrollback
Global Search finds text in the scrollback of open terminals. Return on a terminal hit opens that pane's find bar on the match.
⌥⌘F and type text from any open terminal.Password Input Indicator
A lock badge shows while a program such as sudo or ssh reads a password with echo off, so you can tell it is waiting for one.
read -s at a shell prompt, or turn it off in Settings > Terminal > Password Input Indicator.cmux session move <session-id> --to <ssh-destination|local>moves a stopped Claude Code session, its transcript, memory and git working tree, between this Mac and an SSH host and resumes it there (#14959)- Claude Code and Codex agents on a
cmux sshhost show Running, Needs input, or Idle in the sidebar; cmux installs their hooks on the host when the Integrations toggles are on, including under proxy or account-switching launchers (#14902, #14908) - Settings > Terminal > Reflow Hard-Wrapped Text on Copy (
terminal.reflowHardWrapOnCopy, off by default) rejoins lines a program wrapped at exactly the terminal width when you copy (#6923) -- thanks @mvanhorn! - Pi is offered in the Machines Open Cloud Agent menu,
vm.cloud_agent_open, andcmux vm prompt --open pi(#14819) -- thanks @aliyansajid! cmux resize-window --window <handle> --width <w> --height <h>resizes a window from the CLI or socket, keeping its top-left corner in place (#9826) -- thanks @ejc3!- Global search finds text in the scrollback of open terminals, and Return on a terminal hit opens that pane's find bar on the match (#11665) -- thanks @smoreg, and thanks @azooz2003-bit for the report!
- Open Folder dialogs have a New Folder button, so you can create a directory and open it as a workspace without going to Finder (#5559) -- thanks @bcharleson!
cmux sessions --jsonshowslaunch_rejection_reason, explaining why a captured agent launch command was rejected for restore (#10347, #10440) -- thanks @smoreg, and thanks @WTF-Am-ID for the report!agents.launchersincmux.jsondeclares an external wrapper (such as a multi-account router) so session restore resumes the agent through it instead of dropping it (#10503) -- thanks @smoreg!- My Devices can discover your other Macs on the same account (opt-in) and open their workspaces as mirrors that keep splits, tab order, and scrollback (#12105, #13472)
- Option-Z toggles word wrap in the focused file editor, with the state shown in the View menu (rebindable as
shortcuts.bindings.toggleFileEditorWordWrap) (#12814) - A managed
SocketControlModeprofile key (com.cmuxterm.app) forces the automation socket tocmuxOnlyoroff, andcmux socket-status --jsonreports the effective mode (#12955) cmux config doctor(alsocheckandvalidate) checks cmux.json values against the settings schema, and invalid setting writes from the CLI or Settings leave the file unchanged (#13146)- The Command Palette can launch Claude Code Teams and Codex Teams in a new terminal tab when those agents are installed (#13147)
- Headless OMP and Pi subagents appear as children of their parent session in custom sidebars (#13161) -- thanks @BedirT!
cmux docs workflows(orcmux docs templates) lists the bundled workflow examples, what each creates and needs, and the commands for saved layouts (#13189)- Vault's Sessions sidebar has a Reload Vault button again (#13203) -- thanks @takuhirokosa, and thanks @mensa23 for the report!
- Settings > Terminal > Keep Local Sessions Alive lists local tmux sessions with Start and Attach actions for
cmux local-tmux(#13210) - The sidebar Help menu has a Settings item (#13211)
- Settings > Automation shows an Automation Rules card with rule counts and Edit Rules and Reload buttons (#13223)
- Settings > Terminal > Theme has a Choose button that opens the interactive
cmux themespicker with live preview (#13224) - Settings > Custom Sidebars can create a starter sidebar, install a bundled example, open the sidebars folder, and edit discovered sidebars (#13230)
- Surface catalog reads include
stable_surface_idandstable_workspace_id, so scripts can find a surface again after restore (#13247) cmux current [--json] [--limit <n>]and Find Work in the Command Palette list your current workspaces, agents, attention and PRs, local and Cloud (#13269, #13274)cmux ssh-tmux --name <title>sets the local workspace title without renaming the remote tmux session (#13287) -- thanks @iamcobolt!cmux.jsoncan list local config packs underpacks(directories resolve throughcmux.pack.json), adding their actions, commands, workspaces, and buttons; direct config still wins (#13356)- The terminal scrollbar shows a marker for each submitted agent prompt; click a marker to jump to that prompt in scrollback (#13595) -- thanks @hamaney for the report!
- Settings > Sidebar > Workspace Description Color (
sidebar.workspaceDescriptionColor) sets the sidebar workspace description color; unset, it follows the theme (#13597) -- thanks @godfreyponce for the report! - Swap With Session… in the terminal context menu and command palette lets you click another pane to swap places with; Escape cancels (#13601) -- thanks @moonfruit for the report!
- Custom JavaScript sidebars can show drop-target feedback while a row is dragged, via
Reorderable({ onDragChange })(#13841, #14117) terminal.pastereturnsdelivery: deliveredorqueued, so scripts can tell whether text reached a live terminal or was queued (#13849) -- thanks @chriskr7 for the report!- After relaunch, restored zsh and Bash terminals recall their own commands first in shell history; new terminals keep global history (#13851)
- Cmd-clicking a file path printed in a
cmux sshterminal downloads the remote file and opens it in cmux's preview, instead of doing nothing or opening a same-named local file (#13866) - Settings > Terminal > Text Editing Gestures (
terminal.textEditingGestures, off by default) makes Cmd/Option arrows and deletes move and delete by line and word at the shell prompt (#13921) - Settings > Terminal > Predictive Local Echo (on by default, opt out with
terminal.predictiveLocalEcho: false) shows characters typed over a slow remote link immediately, underlined until the remote confirms them (#13967, #14860, #15217) agent.hook.UserPromptSubmitevents incmux eventsincludeprompt_length, the submitted prompt's length in characters (#14045) -- thanks @jtsternberg for the report!app.defaultWorkspacePathin cmux.json sets the folder Open Folder starts in, from both the File menu and the command palette (#14455) -- thanks @su-record for the report!- Right-clicking a file path in a terminal offers Reveal in Finder, which selects that file in Finder (#14697) -- thanks @masterleopold for the report!
- Focus Last (History menu,
focusHistoryLast, no default shortcut) jumps back to where focus just was; pressing it again toggles between the last two positions (#14700) -- thanks @idr4n for the report! - Settings > App > Equalize Splits on Create (
app.equalizeSplitsOnCreate, off by default) gives each new split equal-sized panes in that row or column (#14703) -- thanks @aibakun for the report! - The command palette lists fourteen actions that were only reachable by shortcut, including Toggle Terminal Copy Mode, workspace font size, pane focus moves and Group Selected Workspaces (#14815, #14848)
cmux paste --surface <ref>sends text from an argument or stdin as a Cmd+V paste, keeping multi-line prompts intact;--submitpresses the agent's submit key (#14837)- Settings > Terminal > Password Input Indicator (
terminal.showPasswordInputIndicator, on by default) shows a lock badge while a program reads a password with echo off; Show Typed Password Dots adds one dot per key (#14867, #14905) - Claude Code agents in
cmux sshpanes report their Claude session id to the Mac, so cmux can resume them (#14906) - cmux appears in Finder's Open With menu for Markdown, source code, JSON, YAML and plain text files, and opens them in its viewer without running executable scripts (#14968) -- thanks @Jamie-z-Jianmin for the report!
- With more tabs than fit, a mouse wheel over a pane's tab strip scrolls it sideways; trackpad scrolling is unchanged (#14985) -- thanks @NestDream for the report!
- cmux TUI: short aliases (
ws,p,ls,rm) and tmux-style commands (splitw,selectp,neww,send-keysand more);cmux help shorthandslists them (#12863) - cmux TUI: move a tab to another workspace by dragging it onto a sidebar workspace or + new workspace, or with Move tab to workspace in its context menu (#12864)
- cmux Cloud (beta): Links in Cloud terminals open the VM's private address in a browser pane, with a separate origin per VM and no system VPN (#12669)
- cmux Cloud (beta): Cloud machines have an expandable Resources section showing CPU, RAM, Disk, and token usage (#12740, #13084)
- cmux Cloud (beta): Browser sign-in URLs opened by CLI tools inside a Cloud VM open on your Mac instead of in the VM's hidden browser (#12741)
- cmux Cloud (beta): The Cloud panel has a team picker for switching and creating teams, which scopes Cloud;
cmux auth team list|use|createdoes the same from the CLI (#13051, #14337) - cmux Cloud (beta): Cloud machines can be dragged to reorder them in the Cloud sidebar, within their pinned or unpinned section, or moved from the context menu and workspace-reorder shortcuts (#13090)
- cmux Cloud (beta): Double-clicking a Cloud machine or remote workspace row in the Cloud sidebar renames it (#13164)
- cmux Cloud (beta): A New Display action on Cloud machines opens additional independent remote desktops, and each display shows its own connection progress and errors (#13196)
- cmux Cloud (beta): Cloud workspace rows in the right sidebar show profile heads for the people currently viewing that workspace, with names on hover (#13307)
- iOS (beta): Push notifications and replies sent from the iPhone are end-to-end encrypted (#12384) -- thanks @azooz2003-bit!
- iOS (beta): Full-screen terminal apps fit the visible area above the keyboard and toolbar; Settings > Terminal > Use Full Terminal Height restores the old sizing (#12844) -- thanks @azooz2003-bit!
- iOS (beta): Settings > Diagnostics > Copy Debug Information copies account, build, device, and connection details for support (#13007)
- iOS (beta): Settings > About has a Support Information action that copies your account, install, and device IDs plus app version for support requests (#13448) -- thanks @azooz2003-bit!
- iOS (beta): Version 1.0.6 shows a one-time notice with the minimum Mac versions it needs, then opens the Mac pairing guide (#14112) -- thanks @azooz2003-bit!
- iOS (beta): Settings > Reset > Erase All Data on This Device signs out and returns the app to a fresh-install state (#14140)
- Settings > App > Warn Before Closing Workspace (
app.warnBeforeClosingWorkspace, on by default) turns off the "Close workspace?" prompts; pinned workspaces still ask (#14979) - Close confirmation dialogs for tabs, panes and workspaces have a "Don’t ask again" checkbox that turns off the warning behind that dialog; "Close pinned workspace?" still always asks (#15052)
cmux.copyWorkingDirectory,cmux.copyProjectRoot, andcmux.copyScreenbuilt-in actions copy a terminal's working directory, its git project root, or its visible screen from a tab bar button, shortcut, or the Command Palette (#14858)cmux pr <url-or-number>attaches, replaces, or clears a workspace's pull request link without changing app focus (#12809)- Actions · cmux.json lists configured actions and their placements; setting actions, presets, and
cmux config setapply validated settings through the shared config writer (#13232, #14868, #16222, #16223) - Setting changes can return an undo receipt that restores the previous value only while the changed setting still holds its installed value; unrelated existing config issues no longer prevent Computer Use toggles from saving (#13254, #14183)
- Conversations sidebar (beta): The opt-in Conversations sidebar lists live agent sessions and searchable history across providers, with provider filters and normal workspace routing for reopening sessions (#13322)
- Import Browser Data recognizes Aside and its Chromium profiles (#13379) -- thanks @gurbaaz27!
notifications.suppressWhenAppFocusedcan suppress notifications while cmux is the active app (off by default) (#14701)- Settings > Sidebar > Compact Agent Status (
sidebar.compactAgentStatus, off by default) combines agent, PR, and branch state into a compact status glyph with tooltip and VoiceOver details (#14838) - Terminal scrollback is checkpointed, and interrupted Claude sessions can be recovered from the agent journal after a crash or through
cmux session restore; recovery preserves account routing and avoids duplicate launches (#14852, #14870, #15324, #15375) - Ghostty config and theme files reload when saved, including under
XDG_CONFIG_HOME, and invalid config appears in a visible error card (#14859, #15191) cmux restore-session --fromimports another cmux install's saved windows, and--exportwrites a portable session snapshot (#14861)- Settings > Sidebar offers an opt-in subtle selection highlight (#14890)
cmux send --pastesends multi-line text through bracketed paste, and large multi-line sends explain when to use it (#14937)terminal.confirmUnsafePastecan require confirmation in a window sheet before an unsafe paste (#14951)- Paste Last Screenshot inserts the most recent screenshot into the terminal, with an editable shortcut that is unbound by default (#14955)
- Settings > Appearance has preset and custom accent colors, shared by cmux chrome (#14988, #15510)
- Settings > Terminal has a native theme gallery with searchable previews and live theme selection (#14996)
- Settings > Keyboard Shortcuts has Base Keymap presets for users coming from other terminals, with matching Command Palette actions (#15003)
cmux importdiscovers and imports terminal settings from iTerm2, Terminal, Alacritty, Kitty, WezTerm, and Warp through the shared Ghostty config writers (#15004, #15055)- Settings > Terminal edits Ghostty font, size, cursor, padding, opacity, blur, Option as Alt, and scrollback options without hand-editing config (#15005)
- Directional pane focus remembers the previously focused pane, and New Pane (Auto Layout), bound to Ctrl-Cmd-N by default, picks a split automatically (#15125)
- Workspace auto-reordering has an Agent Activity mode that surfaces finished turns and requests for attention without reordering on every tool event (#15216, #15362)
- Paste as One Line in the terminal context menu removes line breaks before pasting (#15230)
- Cloud machine lists and sidebar rows show who created each machine (#15261, #16001)
cmux agent messagedelivers messages through a separate agent inbox instead of inserting them into a person's prompt draft; owned remote sessions can use it through the SSH relay (#15279, #15863)app.tabBarVisibilitycan hide a pane's tab bar when it has only one tab (#15294)cmux agent hibernateandwakecontrol an individual agent, preserving safety checks and verifying that a resumed agent came back (#15308, #15312)- The web dashboard and Mac app support team invitations and member management, the dashboard has a Settings hub and in-app plan changes, and Pro teams support three members (#15348, #16006, #16219, #16265)
- Agents whose turn ends on a retryable error, such as model capacity or a dropped connection, are told to continue automatically; authentication, billing, usage-limit, and invalid-request failures stay visible for you to resolve. Turn this off in Settings > Automation > Auto-Resume Agents After Errors (#15373)
- A bundled btop-style custom sidebar shows recent agent activity, status, and progress per workspace (#15393)
- Opt-in
automation.canonicalAgentScratchgives native Claude, Codex, and OpenCode sessions an owned per-session temporary directory, with ownership metadata in session listings (#15610, #15615) - A Codex
/goalresume action is clickable (#15639) - Agent state distinguishes pending background work from an idle completed turn, keeping those sessions protected from hibernation (#15666)
- View > Focus TextBox Input focuses an editable text field through a configurable action (#15730)
- Custom Sidebars has a gallery of six bundled templates with live previews and editable installed copies (#15931)
- Cloud browser and display rows can be named and renamed (#15999)
- Custom sidebars support a pointer cursor modifier (#16263)
- The Cloud team menu includes Sign Out (#16363) -- thanks @lucasr1b!
- iOS (beta): Feed combines agent activity and notification history across paired Macs, with replies and a full-text Markdown reader (#10218) -- thanks @azooz2003-bit!
- iOS (beta): Direct SSH connects to computers without a paired Mac or cmux account, with host-key pinning, keys, jump hosts, SFTP, and local port forwarding (#14149) -- thanks @azooz2003-bit!
- iOS (beta): The On iPhone browser can load paired-Mac workspace services through the Mac (#14301) -- thanks @azooz2003-bit!
- iOS (beta): Connected Devices is available from the app's navigation (#15883)
- Browser file-input uploads are available through the CLI (#14550)
- Cloud is available to everyone: the Cloud tab appears in Settings and the right sidebar, where you can enable Cloud Machines
- Dock is now enabled by default for new and existing users, and its former Beta Features toggle has been removed; hide or reorder it under Settings > Sidebar > Right Sidebar Tabs (#15453, #15456)
- Each Settings toggle and picker row shows one fixed subtitle instead of text that changes with the selected value, and localized Settings titles and Feed, Dock, and Cloud Machines labels use corrected wording (#14883) -- thanks @agoodkind!
- The Settings > Mobile pairing row says Open Pairing and no longer promises a Tailscale QR code, which pairing does not use (#14817) -- thanks @aliyansajid!
cmux browser snapshotnames form fields by their<label>text, so plain HTML form inputs are no longer nameless (#10231) -- thanks @thingnoy!agent.resolve_delivery_targetsocket responses echo the requested PID (#11166) -- thanks @danielraffel!- OMP integration reads
OMP_AGENT_DIRbeforePI_CODING_AGENT_DIR, so OMP and Pi can use separate directories (#11483) -- thanks @STRML! - Persistent
cmux sshsessions run on cmux-tui, keeping reconnect, restore, splits, and tabs on the same remote session (#12956) - Settings shows one section at a time instead of one long scrolling page (#12993) -- thanks @agoodkind and @scarere for the reports!
- Socket and RPC requests that spell a target as
surfaceIdor another camelCase alias are rejected with an error naming the snake_case key, instead of acting on the focused terminal (#13214) -- thanks @jtsternberg for the report! - The Settings sidebar groups its sections into categories such as General, Workspace, Sidebar & Dock, and Agents & Automation (#13222)
cmux --helpgroups commands by task, andcmux help <topic>shows one group (#13233)- Diff viewer window titles include the repository name, and the repo selector tooltip shows the repository's full path (#13587) -- thanks @xhqing for the report!
cmux last-windowand the tmux-window target toggle between the two most recent workspaces, like Focus Last in the History menu, instead of walking further back (#14760)- The first-launch welcome banner prints from shell startup instead of typing
cmux welcome, so it no longer lands in your shell history (#14809, #14857) cmux welcomepoints to the command palette and Settings > Keyboard Shortcuts (orcmux shortcuts) instead of listing fixed default shortcuts (#14810)cmux set-bufferstores text exactly as given (keeping leading spaces and trailing newlines) and reads from stdin when no text or-is passed (#14836)- Unfocused terminal panes redraw at about 30 FPS, so agents streaming into background panes cost less; scrolling an unfocused pane is also paced until it takes focus (#14843)
- Shortcut hint pills, titlebar controls and button hover highlights appear instantly and only fade out, the pane drop-zone overlay no longer slides between zones, and canvas focus moves pan only when the target pane is off screen (#14984)
- cmux Cloud (beta): Cmd-Y creates a new Cloud machine and Cmd-N creates a workspace on the selected Cloud machine; Cmd-Shift-Y stays New Cloud Workspace (#12604)
- cmux Cloud (beta): Cloud terminal creation failures show in a card centered in the failed terminal, with Retry and a right-click Copy Error (#12609)
- cmux Cloud (beta): Cloud machine pins appear immediately and are saved per account and team, Cloud tree rows are more compact, and workspace renames and deletes show right away (#12743)
- cmux Cloud (beta): New Machine in Cloud shows the new workspace and a pending machine row right away while the machine is created (#12919)
- cmux Cloud (beta): New Cloud terminals opened with Cmd-D or Cmd-T show
terminalwithout a tab spinner (#12979) - cmux Cloud (beta): Cloud workspace rows in the sidebar show the machine's friendly name once, and Show Branch + Directory in Sidebar and Hide All Sidebar Details hide Cloud badges and directories too (#13082)
- cmux Cloud (beta): In Cloud VMs,
cmux coderouter,cmux cr,coderouterandcrall run the full CodeRouter CLI, including interactiveadd(#13100) - cmux Cloud (beta): Creating a Cloud workspace shows the new workspace with a loading pane in both sidebars right away, instead of waiting for the remote terminal (#13152, #13155)
- cmux Cloud (beta): New Cloud Workspace (⇧⌘Y) opens on the machine of your most recent Cloud workspace, or the first machine in the Cloud sidebar; the default machine star is removed (#13193)
- cmux Cloud (beta): Tab and Cloud sidebar agent icons follow the detected agent instead of guessing from the tab title, and new Cloud machines connect faster after creation (#13299)
- cmux Cloud (beta): New Cloud machines boot with their first terminal's shell already running, so the first prompt appears sooner (#14125)
- iOS (beta): The "No workspaces yet" screen offers Retry and Set Up cmux iOS actions (#12926) -- thanks @azooz2003-bit!
- iOS (beta): Task Composer's Photo Library attachment accepts videos and other media, not just images (#13441) -- thanks @azooz2003-bit!
- iOS (beta): The pairing onboarding page shows a Mac Settings screenshot pointing to the Enable iOS pairing row (#13457) -- thanks @azooz2003-bit!
- iOS (beta): Retry on the empty computer picker keeps its button in place and shows progress in the Reconnecting status line, and See Docs opens in an in-app browser (#13469) -- thanks @azooz2003-bit!
- iOS (beta): Bursts of terminal output render in larger batches, so the terminal keeps up with fast agent output (#13487)
- iOS (beta): The Files filter chips scroll with an edge fade, and the sort control stays fixed at the trailing edge (#13584) -- thanks @azooz2003-bit!
- iOS (beta): The empty workspace list hides its Retry and See Docs buttons while the app is reconnecting (#13719) -- thanks @azooz2003-bit!
- iOS (beta): Tapping a notification while the Mac is disconnected no longer shows a blocking "Connection unavailable" alert; it waits and retries on its own (#13746) -- thanks @azooz2003-bit!
- iOS (beta): The team picker shows your selection right away instead of waiting for the server (#13762) -- thanks @azooz2003-bit!
- iOS (beta): The computer picker remembers your selection across launches (#13772) -- thanks @azooz2003-bit!
- iOS (beta): Busy agent terminals send fewer screen updates (about 11 per second, slower on a congested link) while your keystrokes still echo immediately (#14031) -- thanks @azooz2003-bit!
- iOS (beta): Pairing onboarding shows a still photo of the Mac Mobile settings in light or dark appearance instead of a zooming animation (#14266) -- thanks @azooz2003-bit!
- Local port discovery and zsh watchers avoid repeatedly launching
lsof,ps, andsleep; local port scans stop when port details are hidden (#6032, #10277, #15353) -- thanks @jsamuel1, @hyzyla! - Sidebar notification previews strip inline Markdown formatting into readable plain text (#12030) -- thanks @kate-jiang!
- Mobile devices has a clearer dashboard with connection state and device cards in its own Settings section under Remote & Devices (#13156, #13286, #13428, #14772) -- thanks @azooz2003-bit!
- Max pricing clarifies that up to 50 Cloud VMs share 64 GB RAM and 16 vCPUs (#13159)
- Cloud Ports lists services by port and filters internal listeners; Cloud section headers use hover actions, New Machine, and plan usage without misleading resource counts or zero-cap fractions (#13239, #13555, #14773, #15180, #16012)
- Profile and team menus use native opening animations, and the Cloud team picker opens as an anchored dropdown (#13295, #13311, #15078)
- Cloud rows, pane indicators, and file headers use consistent spacing and shared chrome metrics, with more room for machine and team names (#13306, #14982, #15149, #15150, #16004)
- Workspace todos (beta): Todo edits and mutations save immediately instead of waiting for focus loss or the autosave timer (#13429) -- thanks @azooz2003-bit!
- Dashboard team selection changes immediately and rolls back if the server rejects the switch (#13570) -- thanks @azooz2003-bit!
- Cloud API-equivalent usage estimates include GPT-6 models and their long-context pricing (#13892)
new-windowaccepts a name when creating a window (#14500)- OpenCode v2 plugins and Pi have fuller native agent integration (#14509, #14522)
- Team members can reach shared Cloud VMs concurrently, keep surfaces from several teams open, and lose access promptly when removed from a team (#14818, #15869, #16169)
- JavaScript custom sidebars support
fixedSizeand reactive frame specifications (#14845) -- thanks @bquigley1! - Renaming edits inline or in the Command Palette instead of opening an alert (#14986)
- cmux honors macOS Differentiate Without Color, Increase Contrast, and Reduce Transparency preferences (#14991)
- Closing a window or tab asks for confirmation when work would be lost, and close controls stay usable in narrow tabs (#15041, #15613, #15957)
cmux sshopens faster, avoids typing lag, restores after relaunch, and opens splits in the focused remote location (#15079)- Browser Memory Saver preserves hidden page state, and browser state restores in the correct order (#15154, #16204)
- Deleting a Cloud machine updates the sidebar immediately and reconciles with the server result (#15190)
- Terminal scrollbars use the macOS overlay style unless Show scroll bars is set to Always (#15214)
- Ghostty config errors appear below the tab bar instead of covering its controls (#15218)
- Claude sessions stopped by an API error show their failure instead of remaining Running (#15232)
- Focused-pane notifications remain silent unless enabled, and a pending banner becomes quiet once its pane is focused (#15233, #15357)
- Cloud machine and CLI tree failures explain sleeping or unavailable machines instead of showing a generic connection error (#15236, #15895, #16003, #16149)
- Agent- and script-opened workspaces and panes stay in the background (#15281)
- CodeRouter holds and retries capacity failures on the requested model instead of failing immediately (#15310)
- Splits refuse layouts that would leave a pane below its minimum size, including after sidebar pane changes (#15392, #15422)
- In-app dialogs use the Ghostty theme's colors (#15515)
- The diff viewer tracks viewed files, filters files, collapses generated and large diffs, and loads syntax grammars only when needed (#15536, #15576)
- Making this Mac discoverable requires an explicit confirmation (#15677)
- On macOS 26, holding Cmd shows Liquid Glass shortcut hints (#15821)
- The workspace close button is exposed to accessibility tools (#15965) -- thanks @soyeladice-svg!
- iOS (beta): Pinned group members stay above unpinned workspace rows (#16104) -- thanks @azooz2003-bit!
- iOS (beta): The terminal arrow pad has an accessible label and explains that directional drags send arrow keys (#10685)
- iOS (beta): Read notifications clear when the app returns to the foreground (#14725) -- thanks @azooz2003-bit!
- iOS (beta): Adding a computer leaves the active Mac connection undisturbed (#15102) -- thanks @azooz2003-bit!
- iOS (beta): Task Composer prefetches and remembers picker choices (#15797) -- thanks @azooz2003-bit!
- Settings > Members shows a plain member list with progress on the row being changed (#15806)
- VoiceOver no longer reads a symbol name such as "gearshape" or "Mostly Cloudy" before each Settings sidebar entry (#14989)
- VoiceOver now names the browser toolbar's Back, Forward, Reload/Stop, Developer Tools, Profile, and Theme buttons and the notification clear buttons, no longer reads internal command ids on command palette rows, and the Xcode project panel's reload, dismiss, picker, and status text is localized (#14926).
- The Settings notification sound preview button has a tooltip and VoiceOver label, and German, French, Spanish, Arabic, Korean, and Chinese menus and buttons no longer show the wrong sense of Clear, Open, Back, Refresh, Preview, Rename, Stop, or Fork (for example German "Klar" instead of "Löschen", or Spanish "Abierto" instead of "Abrir") (#14983).
- In canvas mode, panes an agent or the CLI creates no longer scroll the canvas away from what you're watching, socket canvas commands apply without animation, and canvas pans and the overview toggle respect Reduce Motion (#14939)
- Hovering a command palette or session index row no longer looks as strong as (or erases) the selection; terminal and browser find fields show a focus stroke; group header unread badges follow the Notification Badge color; and the feed's Deny and Allow Once buttons stay visible in both light and dark mode (#14941).
- Hovering a sidebar workspace swaps its unread badge for the close button in the same frame, feed selection with j/k no longer eases between rows, clearing a notification closes the gap at once, and holding Command no longer animates unrelated right sidebar changes (#14927).
- In a split, a pane you switch to no longer shows a dimmed frame before it brightens; the unfocused-pane dim now changes in the same frame as focus (#14892).
- Clicking a sidebar workspace keeps its highlight steady while the selection lands, instead of flickering off when the pointer moves away, and rapid clicks never show two rows selected (#14871).
- Closing a workspace no longer briefly flashes the close (X) button on every sidebar row, and the X no longer appears on the row that slides under a context menu's old position (#14826).
- Closing or creating a workspace no longer rebuilds every sidebar row, so a rename, checklist edit, or popover open on another row survives it (#14866).
- In pane tab bars, the tab that slides under the pointer after a close shows its hover and close button without moving the mouse, and VoiceOver can close any tab with a Close Tab action (manaflow-ai/bonsplit#253, #14885).
- Context-menu submenus built with
Menuin custom sidebars appear instead of being dropped (#14808) -- thanks @aliyansajid! - Closing the last workspace no longer unfolds a collapsed sidebar group above it (#10169) -- thanks @AvoChang!
- The focused pane border follows a zoomed terminal or browser pane instead of remaining at its pre-zoom split size, including when window chrome changes the overlay reference coordinates (#14646) -- thanks @classicluna!
- Reopening an agent pane no longer tries to resume through the pane's shell (for example
bash --resume <id>) when the captured launch command was the shell bootstrap (#5848) -- thanks @STRML! - Edits to a symlinked
~/.config/cmux/cmux.jsonapply on reload instead of needing an app restart (#8562) -- thanks @lucidash! cmux ssh-tmux <host> --new-windowworks in release builds instead of failing withmethod_not_found(#8608) -- thanks @thejiajun!- Agent hook commands no longer leave idle cmux app processes running when CLI forwarding loops back to the app binary (#8788) -- thanks @kunsanglee!
- Signing in with a YubiKey or other hardware security key in the browser no longer crashes cmux when the key returns no user handle (#9060) -- thanks @marius-jacobs!
- The Files pane shows files added or removed inside an expanded folder, keeping expanded folders and the selection (#9589) -- thanks @jiancui-research!
- Remote PTY sessions report
TERM_PROGRAM=ghosttyandCOLORTERM=truecolorinstead of inheriting the remote host's terminal identity (#9610) -- thanks @hdimer! - cmux no longer crashes when a
cmuxcommand (for example from a shell rc file) arrives while the previous session is still restoring at launch (#9627) -- thanks @hdimer, and thanks @bondijois for the report! - Double-clicking the empty sidebar area runs your
ui.newWorkspace.action, like the+button and File > New Workspace (#10248) -- thanks @smoreg, and thanks @CarlRodabaugh for the report! - A finished Claude subagent no longer marks the pane as needing input while the main agent is still working (#10343) -- thanks @smoreg, and thanks @Daniel-Brestoiu for the report!
- Agent spinner titles keep animating in the tab without waking the sidebar and titlebar on every frame (#10351) -- thanks @STRML!
- Shell prompts keep a block cursor instead of switching to a bar cursor after each command (#10670) -- thanks @sabinm677 for the report!
cmux --json list-panesandlist-pane-surfacesinclude pane and surface UUIDs alongside refs, fixing oh-my-claudecode worker pane splits (#10674) -- thanks @basselalsayed for the report!- A terminal editor such as
nvimset as the preferred editor no longer leaves hidden editor processes running; cmux opens the file with the system default app instead (#10681) -- thanks @josonchou for the report! cmux eventsrun from outside cmux shows a clear access-denied message instead of a JSON parse error (#10712) -- thanks @taiseii for the report!- Remote tmux (beta):
cmux ssh-tmuxmirrored splits keep pane titles set in tmux (for example withselect-pane -T) instead of showing only the window name and index (#10714) - The native resize cursor appears at the main window's edges instead of being covered by the terminal cursor (#10835) -- thanks @ctopherwilliams for the report!
- The sidebar edge, tab bar underline, and pane borders are visible in light mode (#10967) -- thanks @lrytz!
- Shell PR and git watchers exit when their pane closes even after macOS reuses the shell's PID, so they no longer pile up and spawn many
ghprocesses (#11035) -- thanks @geonguk for the report! - Remote tmux (beta): A mirrored tmux window with one pane no longer shows a second tab bar repeating the workspace tab above it (#11248) -- thanks @ejc3!
- A failed file upload to a remote host shows a notification with the reason instead of only beeping (#11476) -- thanks @ejc3!
terminal.uploadCommandsrules match on the sshHostNamefor hosts reached through a ProxyCommand or jump host (#11477) -- thanks @ejc3!- Windows no longer end up off-screen or smaller than the display after display changes, and zoomed windows stay zoomed after a titlebar click (#12053) -- thanks @aparente for the report!
- Ghostty's
split-divider-color(including named colors likeorange) sets the pane divider color, unless a cmux pane border color is set (#12066) -- thanks @wooters for the report! - Custom upload commands and notification hooks no longer stall until their own timeouts because of signals blocked in cmux (#12383) -- thanks @ejc3!
goto_splitleft and right move to the adjacent column in nested layouts instead of skipping to the far pane (#12397) -- thanks @brodynies, and thanks @geodimm for the report!goto_splitat the edge of the layout reports that focus did not move, matching Ghostty (#12401) -- thanks @brodynies, and thanks @geodimm for the report!- Trackpad scrolling and system-wide multi-finger gestures stay responsive with many workspaces open (#12607)
- cmux no longer crashes when a session snapshot reads text from a terminal that just closed (#12623) -- thanks @ejc3!
- The Computer Use cursor follows pane divider drags instead of jumping to the end when released (#12665)
- Relay connections trust certificate authorities in the macOS System keychain (enterprise TLS), and Settings shows the certificate error when trust fails (#12723)
- Resizing or splitting terminals no longer hangs cmux in nested geometry updates (#12725)
- A cancelled or timed-out paste no longer lets a clipboard write run while the paste is still reading the clipboard (#12727)
- Workspace todos (beta): Checklist remove buttons show an X instead of a solid gray dot, and appear when a row is already under the pointer (#12783) -- thanks @azooz2003-bit!
- Copy Mode scrolls scrollback with the wheel and Page Up/Page Down in programs that use mouse reporting or the alternate screen (#12817)
- Quitting cmux waits for Codex to exit, so restored Codex sessions no longer open read-only (#12822)
- Korean filenames with decomposed Hangul render correctly with fonts like D2Coding instead of showing unrelated symbols (#12826) -- thanks @bigtruth for the report!
- tmux-compatible commands such as
display-message -tand Claude Code teammatesplit-windowno longer fail withrate_limited(#12832) -- thanks @jonahscohen for the report! - Creating and closing many workspaces no longer grows sidebar memory, and browser discovery and file watching no longer block the main thread (#12834)
- Closing a tab in a zoomed pane keeps the pane zoomed when it has other tabs (#12853) -- thanks @kugesh-Rajasekaran!
- Pi extensions that wake an idle agent show its running status and completion notification, including after Pi reloads (#12861) -- thanks @jayjanssen!
- Minimal Mode sidebar and titlebar no longer break when an overlay appears (#12929) -- thanks @jaeyongjaykim for the report!
- cmux no longer keeps the macOS
lsdprocess at high CPU, even when cmux is not running (#12990) -- thanks @Bug-Proof for the report! - The Hermes gateway works when the venv Python is a symlink (uv or Homebrew installs) (#12996) -- thanks @tizerluo for the report!
- Option dead keys (for example Option-E on a US layout) compose accented characters in the terminal (#12997) -- thanks @imTHAI for the report!
- Reloading a page after a failed form submission resends the original request instead of turning it into a GET (#13003)
- Very long or multiline automatic terminal titles are trimmed to 256 characters, keeping saved sessions small (#13009)
- On Command-swapped layouts such as Dvorak - QWERTY ⌘, Cmd-C with no selection no longer types a stray character and Cmd-I is no longer swallowed (#13015) -- thanks @aliyansajid, and thanks @jimmy623 for the report!
- With the browser disabled in Settings, the Dock's New Browser button and File > New Browser Workspace are hidden (#13023) -- thanks @aliyansajid, and thanks @hemingtsai for the report!
- Computer Use no longer stays blocked on "onboarding is still in progress" after permissions are granted, and Settings offers Finish Setup to complete it (#13055, #13599) -- thanks @jdereg for the report!
- The Codex monitor helper no longer grows in memory as a long session's transcript updates (#13057, #13606) -- thanks @napaholic for the report!
- Plain-text paste into a terminal no longer takes over a second on a fresh clipboard (#13110) -- thanks @ChenYunerer and @stormjing for the reports!
- SSH retry notices read correctly in every language, including immediate retries, and SSH connection sharing respects your OpenSSH config defaults (#13190)
- Changing a setting from Settings or
cmux-settingskeeps the comments, ordering and formatting in your cmux.json (#13218) - The Resume Commands menu no longer offers to override a Dock terminal whose resume command an agent manages (#13219)
- With several windows open, the sidebar's new workspace button creates the workspace in its own window (#13228)
- The control socket recovers when its socket file is deleted or replaced while starting up (#13229)
cmux --json ping,capabilitiesandlist-workspaceswork again from an SSH or Mosh session through the relay (#13237) -- thanks @poof86 for the report!cmux-settings validatein the bundled skill accepts every supported setting path, such assidebar.showPorts(#13250)- Grok hooks run again when cmux socket environment variables are not set (#13271)
- Browser automation commands no longer time out waiting for a page that already loaded after the web view is rebuilt or its content process restarts (#13288)
- cmux no longer crashes when a control socket connection closes while it is being read or written (#13292) -- thanks @attrip for the report!
- Running
openinside a cmux terminal with a multibyte argument, such as a Japanese filename, no longer crashes with a segmentation fault (#13301) -- thanks @aerosmooth! - Mouse clicks in browser panes work again, including after a Finder drag ends over the pane (#13376)
- Splitting a pane no longer briefly shows the source terminal's content under the new pane's tab bar (#13404)
- Local panes running a noninteractive
ssh -Thelper are no longer treated as remote SSH panes for image transfer (#13509) -- thanks @cameronsjo for the report! - A window resized by an accessibility tool or window manager no longer snaps back to its zoomed size when you switch back to cmux (#13574) -- thanks @artisticmedic for the report!
- Backspace during Japanese IME conversion deletes only the requested character instead of the whole composition (#13581) -- thanks @ShotaNagafuchi for the report!
- Exiting the last terminal with
exitor Ctrl-D honors the quit confirmation setting, including "Don't warn again" (#13583) -- thanks @mykelscappin for the report! - After
/clear, a Claude session shows as idle instead of running until you submit the next prompt (#13586) -- thanks @ddarbyson for the report! - Turning off the Claude Code integration setting also stops cmux from wrapping the
claudecommand in new terminals (#13590) -- thanks @gorosun for the report! - An empty Dock pane no longer breaks Claude Teams pane discovery through the tmux shim (#13604) -- thanks @Idan-Or for the report!
- The tmux shim expands short format aliases such as
#S,#I,#Pand#W, in local and SSH sessions (#13608) -- thanks @hohoShin and @hongmono for the reports! - cmux no longer crashes on Intel Macs shortly after waking from sleep (#13611)
- A short ref such as
surface:7saved before an app restart fails as unknown instead of targeting a different terminal (#13633) - Codex hooks no longer create a stray
~/.cmuxtermfolder inside the project directory (#13635) -- thanks @bobguo for the report! - Moving the anchor workspace of a pinned sidebar group no longer crashes cmux (#13688)
surface.resume.setfrom the socket or CLI no longer hangs the socket behind an approval dialog; its reply includesapproval_required(#13704)workspace.prompt.submittedevents report the full prompt length inmessage_lengthinstead of capping it at 240 (#13728) -- thanks @jtsternberg for the report!- Gatekeeper no longer asks to open "cmux Computer Use" again after each cmux update, Homebrew upgrade, or quarantined download (#13819, #13602) -- thanks @ptntp for the report!
- Claude Code subcommands run in a cmux terminal reach Claude unchanged instead of starting a session with the command as the prompt, including commands added in newer Claude releases (#13826) -- thanks @mtnjwr for the report!
- Workspace auto-naming with OMP generates titles again instead of failing on Pi-only flags (#13840) -- thanks @enterprisetrapper for the report!
cmux reorder-workspacewith an unknown--before,--after, or--workspaceref fails with an error naming that ref, instead of "Specify exactly one target" or naming the wrong workspace (#13843, #13961, #13964)- cmux no longer quits unrelated helper apps (such as Expo's) that register under cmux's bundle identifier (#13845) -- thanks @alechemy for the report!
cmux events --reconnectno longer exits with "Failed to configure socket receive timeout" when replaying a backlog of events (#13888) -- thanks @LuckVd, and thanks @sebikoux for the report!- Restoring a Codex session no longer types a
printfnotice into a shell that is not ready yet, and keeps the saved conversation when the ownership check times out (#13891) CMUX_SSH_RECONNECT_LIMITvalues above 20 (up to 86400) are honored for SSH terminals, and an unusable value prints a warning naming the fallback (#13959)- A terminal pane focused while its shell is still starting comes up focused instead of waiting for a keystroke or window switch (#13968)
- The Computer Use helper no longer shows a Finder alert every few seconds when it fails to launch in the background (#14028) -- thanks @azooz2003-bit!
- Switching to a connected
cmux sshworkspace no longer stalls on a redundant terminal refresh when its screen is already drawn (#14044) - Changing a setting or resizing a pane no longer re-renders the whole window and sidebar, reducing lag (#14058)
- Terminals no longer flicker when a display is connected or disconnected (#14116)
- Cmd-V paste is fast again when copied text also carries HTML or RTF formatting (#14121)
- cmux no longer hangs in a layout loop when displays are reconfigured (#14122)
- Remote tmux (beta): Native tmux mirrors report the pane's real foreground and background colors, so apps that query terminal colors no longer see black on black (#14175) -- thanks @ArtixZ!
- With Settings > App > Dock Badge on, the unread count shows on the Dock icon once you enable Badge application icon for cmux in System Settings > Notifications (#14242) -- thanks @sergeykaplich, and thanks @gilsiun and @tuzisang for the reports!
- A terminal no longer takes keyboard focus while it is hidden or zero-sized; focus is applied once it becomes visible (#14276)
- Clicking a custom sidebar tab that targets a surface in another workspace focuses it on the first click instead of the second (#14284) -- thanks @matheusslg for the report!
cmux restore codex <session>no longer fails when the Codex session database is briefly unreadable (#14291)- Dragging a split or Dock divider no longer resizes terminals as if no drag were happening when another window handled the previous event (#14355)
- Updating the Computer Use helper from a read-only app location no longer fills the disk with repeated helper copies (#14371) -- thanks @levonk for the report!
- A URL in a workspace description no longer crashes cmux when an accessibility client such as VoiceOver reads the sidebar (#14382) -- thanks @yann-lauwers for the report!
- The "Hold Shift to open as split" hint no longer stays on screen after a file drag ends or its window loses focus (#14384)
- A deferred agent restore resumes once the old agent process exits instead of leaving a plain shell (#14392)
- Concurrent workspace-create requests from the iOS app can no longer crash cmux (#14395)
- Claude sessions started through a routed launcher's proxy resume through that proxy again when a workspace is restored (#14412) -- thanks @danielraffel!
- Installing cmux from the Homebrew tap no longer prints a deprecation warning about
depends_on macos(#14424) -- thanks @jacula for the report! cmux sshsessions see your ownZDOTDIR, so zsh setups like zimfw and oh-my-zsh load your prompt and stop reinstalling modules on every connect (#14441) -- thanks @nguyenlc1993 for the report!- Pasting text that contains a few separate question marks, like two questions or two URLs with query strings, takes the fast plain-text path again (#14442) -- thanks @thehaffk for the report!
- Ctrl-clicking a row in the Files sidebar no longer crashes cmux (#14451) -- thanks @atsukanrock for the report!
- Edit > Copy and Cmd+C work again on agent TUI panes like Claude Code and Codex when text is selected (#14557)
- Korean characters drawn from a fallback font no longer show extra spacing between them (#14653) -- thanks @itsinseong for the report!
- The tmux compatibility shim accepts a whole command in one argument, so Claude Code agent teammate spawns no longer fail with "Could not determine current tmux pane/window" (#14670) -- thanks @Y72253 for the report!
surface.read_textandread_screenwork on a terminal in a background workspace that has never been shown, instead of failing (#14673) -- thanks @EtanHey for the report!cmux close-surfacereports the ref of the surface it closed instead of a new, unknown ref (#14698)- Closing a surface whose tab mapping was lost no longer closes a different tab;
surface.closereturns an error instead (#14704) cmux close-surfacewith a blank--workspaceor--windowfails with an error instead of closing the focused surface (#14706)- The Cancel button in close-tab, close-workspace and Dock split confirmation dialogs is translated in all supported languages (#14780)
- opencode notifications target the pane the agent runs in instead of falling back to the focused pane (#14781)
- Session autosave no longer hangs the app when a terminal renderer is stuck (#14784)
- A very deep chain of child processes no longer crashes cmux while it builds the process tree (#14785)
- Typing Japanese or other IME input at the end of the text box no longer crashes cmux (#14786)
- A deeply nested split layout no longer crashes cmux during session autosave (#14787)
- Restoring a session that holds only empty windows (for example after a power loss) no longer wedges WindowServer; those windows are dropped (#14788)
- The fork conversation option no longer drops out right after cmux checks a freshly installed or updated agent executable (#14799)
cmux hooks opencode installno longer escapes/inopencode.json, so{file:./AGENTS.md}references keep loading, and a config it already broke is repaired on the next install (#14805) -- thanks @praxstack for the report!- With the native Claude Code install, cmux no longer leaks its injected
NODE_OPTIONSto programs Claude starts, which could crash-loop sandboxed apps (#14812) -- thanks @aliyansajid, and thanks @kensenzhao for the report! - Node tools started from a long-running Claude session no longer fail with
MODULE_NOT_FOUNDafter macOS purges the temp directory, locally and overcmux ssh(#14814, #14851) -- thanks @dmsdc-ai for the report! automation.codexIntegrationin cmux.json turns Codex hooks on or off, andcmux config validateaccepts several keys cmux already reads (#14816)- Two quick restarts after a crash no longer wipe the saved layout; cmux keeps recent session snapshots and holds back a poorer early save (#14824)
- With several agent sessions running, cmux uses less idle CPU writing its event log (#14828, #14829)
- An open sidebar checklist popover no longer disappears when its workspace row is moved or redrawn (#14830, #14895)
- Launching another cmux bundle with the same bundle id no longer force-quits the running cmux; it activates the running app instead (#14831)
- Sidebar agent spinners animate at their own step rate and stop while hidden, so they no longer keep WindowServer busy at full display refresh (#14832)
- Shell prompts in cmux zsh, bash and fish no longer spawn tmux on every command when tmux is installed but no server is running (#14833)
- Codex launched through cmux starts faster, since the wrapper checks the Computer Use helper path with one process instead of dozens (#14835)
- With the app set to Light and a dark terminal theme, a separate left sidebar draws dark text on its light background instead of white (#14841) -- thanks @stoptypingnow!
- New terminals open faster: shell integration no longer spawns processes for disabled git and PR watching before and between prompts (#14847)
- The menu bar Global Search palette opens reliably, even when the menu bar is full or hidden or a previous close never finished (#14881)
cmux omoresolves relative file references in your OpenCode config, such as{file:./prompts/chief.md}, without loading agents or commands twice (#14935) -- thanks @aliyansajid!- Settings panes open at their top, section clicks no longer land partway down, and the App pane no longer grows after a search hit scrolls to it (#14950)
- Agent sessions keep their resume bindings across an update relaunch and other background saves, so they resume afterwards (#14971)
- The Files sidebar in SSH workspaces lists and opens files with non-ASCII names, such as Japanese or accented names, on Linux hosts (#14978) -- thanks @hiromasa-hayashi for the report!
- Agent turns in repositories with huge untracked trees no longer make cmux hang, and
cmux diff --last-turnstays bounded (#14980) -- thanks @Crosery for the report! - Remote tmux (beta): Files dropped onto a remote tmux mirror pane upload to that pane instead of being rejected (#14981) -- thanks @jeremywhelchel for the report!
- cmux Cloud (beta): Cloud VM loading and error panel text stays readable on a dark terminal theme under a light system appearance, and the reverse (#7538)
- cmux Cloud (beta): Opening a new Cloud machine no longer fails while its tunnel is starting, and dropping onto a Cloud terminal focuses its pane (#12612)
- cmux Cloud (beta): Cloud machine lists and stats no longer stall when a sign-in token refresh hangs, and a late refresh after sign-out no longer brings back old credentials (#12628)
- cmux Cloud (beta): A Cloud machine is no longer marked destroyed when the provider returns a temporary 502 error that mentions a missing VM (#12634)
- cmux Cloud (beta): Closing the last Cloud browser or Desktop view in a workspace no longer opens an unrelated terminal, and reopening it restores the split layout (#12675)
- cmux Cloud (beta): Cloud VM file watch uploads no longer fail with
Broken pipeafter sitting idle, and Cloud Diagnostics shows transfer failures with Copy Error (#12759) - cmux Cloud (beta): Cancelling and reconnecting cmux Cloud VPN no longer fails, or shows Connected while private traffic goes nowhere (#12886)
- cmux Cloud (beta): Cloud terminals no longer garble and flicker after a pane resize when macOS shows legacy scroll bars (#12903, #12918)
- cmux Cloud (beta): Cloud port and desktop previews stay open when their workspace refreshes, show the pane background instead of a white page while loading, and connect page WebSockets (#12912)
- cmux Cloud (beta): Cloud workspace rows update their directory after a remote
cd, and the Cloud icon shows the machine's name (#12978) - cmux Cloud (beta): Renaming a Cloud workspace shows the new name in the sidebar row, title bar, and Cloud tree (#13002)
- cmux Cloud (beta): Dismissing a Cloud notification also clears its dot in the Cloud tree (#13004)
- cmux Cloud (beta): The sidebar
+menu's New Workspace creates a local workspace even when a Cloud workspace is selected (#13020) - cmux Cloud (beta): Cloud machine headers in the Cloud sidebar use the same icon-to-name spacing as folder and terminal rows (#13081)
- cmux Cloud (beta): Using Cloud for the first time no longer triggers a macOS Local Network permission prompt, and the first Cloud terminal opens faster after sign-in (#13085)
- cmux Cloud (beta): Rapid splits or new terminals in a Cloud workspace no longer open some panes as local terminals (#13098)
- cmux Cloud (beta): Disabling Cloud, switching teams, or deleting a machine cancels terminal creates still waiting on that machine (#13150)
- cmux Cloud (beta): Cloud shows a retryable offline state when the network changes during the first machine list load, and overlapping Cloud reads no longer pile up (#13151)
- cmux Cloud (beta): cmux no longer crashes on macOS 14 during Cloud operations (#13200)
- cmux Cloud (beta): Cloud no longer briefly shows a new terminal in the wrong pane or blanks the desktop view while it connects, and stays responsive with many machines (#13202)
- cmux Cloud (beta): In a Cloud workspace, the Files and Find sidebar tools browse and search the workspace's VM instead of the local Mac (#13302)
- cmux Cloud (beta): Dragging a single-tab pane to a split edge in a Cloud workspace creates the new terminal on the Cloud machine instead of a local shell (#13331)
- cmux Cloud (beta): Cloud terminals no longer print repeated "No such file or directory" errors from ble.sh after the desktop session that created them closes (#13351)
- cmux Cloud (beta): In the Cloud sidebar, the unread dot sits on the left before the pin, icon, and title, and read rows no longer reserve space for it (#13367)
- cmux Cloud (beta): A Cloud tunnel that drops while still connecting fails right away instead of waiting out the full connect timeout (#13433)
- cmux Cloud (beta): Cloud sidebar icons no longer intermittently render blank on Intel Macs (#13713)
- cmux Cloud (beta): Opening a Cloud Desktop view from the Cloud sidebar goes to the workspace you clicked from and loads reliably, even if the selection changes while it opens (#13897, #13938)
- cmux Cloud (beta): The delete, close, and add buttons on a Cloud sidebar machine row act instead of expanding or collapsing the row (#13982)
- cmux Cloud (beta): A restored Cloud terminal no longer shows stale or duplicated rows after a hidden pane is revealed at a different size (#14090)
- cmux Cloud (beta): Cloud terminal rows keep showing their last known working directory while the machine is refreshing or reconnecting (#14293)
- cmux Cloud (beta): A new Cloud machine's first workspace takes the remote workspace name instead of staying titled "Cloud VM" (#14459)
- cmux Cloud (beta): Renaming a Cloud workspace no longer fails with "Couldn't update the machine workspace" while its terminal is producing output (#14512)
- cmux Cloud (beta): Agent names such as Codex and OpenCode in the Machines Open Cloud Agent menu are no longer machine-translated (#14922)
- iOS (beta): Signing out stops push notifications, including ones already being delivered (#12924) -- thanks @azooz2003-bit!
- iOS (beta): Active terminal accessory buttons are legible in Dark and Light Mode (#12995)
- iOS (beta): The workspace list no longer stays clipped at the keyboard's top edge after you return from a terminal or task composer (#13318) -- thanks @azooz2003-bit!
- iOS (beta): Typing in a terminal no longer freezes for seconds while an agent streams heavy output (#13432) -- thanks @azooz2003-bit!
- iOS (beta): The composer bar no longer drops into the home-indicator area after the Mac disconnects while the keyboard is up (#13471) -- thanks @azooz2003-bit!
- iOS (beta): Viewing a terminal on iPhone no longer makes the Mac terminal resize over and over (#13498, #13548) -- thanks @azooz2003-bit for the report!
- iOS (beta): Tapping a push notification while the Mac is reconnecting opens the right tab once the connection is ready, or shows an alert if the tab is gone (#13542) -- thanks @azooz2003-bit!
- iOS (beta): A transient model discovery failure no longer marks a healthy Mac unavailable in the task composer; it retries with backoff (#13544) -- thanks @azooz2003-bit!
- iOS (beta): Saved computers use their own connection method at startup instead of the app-wide Tailscale setting, and every visible computer gets a connection (#13561) -- thanks @azooz2003-bit!
- iOS (beta): Forgetting a computer no longer leaves an online Mac unavailable; the Mac re-registers and its row comes back (#13565) -- thanks @azooz2003-bit!
- iOS (beta): Encrypted push notifications appear on the official TestFlight build instead of being silently dropped (#13610) -- thanks @azooz2003-bit!
- iOS (beta): Terminals on the phone no longer resize and redraw the whole screen over and over while agent output streams (#13734, #13761) -- thanks @azooz2003-bit!
- iOS (beta): A Mac paired with more than one iOS app build sends notifications to every build, not just one (#13741) -- thanks @azooz2003-bit!
- iOS (beta): Reconnecting at launch waits for paired Macs to load instead of treating them as missing (#13750) -- thanks @azooz2003-bit!
- iOS (beta): A Mac paired before build tags existed picks up its new address when it changes networks (#14012)
- iOS (beta): Files filter chips no longer fade out and disappear before reaching the sheet edge when you swipe them (#14038) -- thanks @azooz2003-bit!
- iOS (beta): Push notifications show the agent's title and message instead of "An agent needs your attention" (#14039, #14110) -- thanks @azooz2003-bit!
- iOS (beta): The workspace list keeps the rows you are reading in place when rows above change, and no longer shows a stale order after scrolling (#14040) -- thanks @azooz2003-bit!
- iOS (beta): The app no longer shows Not Connected at launch and waits about 10 seconds to connect to a reachable Mac (#14124) -- thanks @azooz2003-bit!
- iOS (beta): On an empty workspace list, the Retry and See Docs buttons show their labels at normal size instead of blank capsules over the tab bar (#14377) -- thanks @azooz2003-bit!
- iOS (beta): A control connection that goes quiet is repaired in place instead of dropping every terminal and reconnecting from scratch (#14695) -- thanks @azooz2003-bit!
- iOS (beta): Heavy output in one terminal no longer delays typed characters appearing in another terminal (#14699) -- thanks @azooz2003-bit!
- iOS (beta): The terminal composer dock stays at the bottom of the screen when you open a workspace instead of floating partway up (#14702) -- thanks @azooz2003-bit!
- iOS (beta): When the phone leaves Wi-Fi or changes network, terminal output moves to a working path right away instead of stalling for several seconds (#14720) -- thanks @azooz2003-bit!
- Detached workspaces keep process-derived titles updateable while preserving manually named tabs and explicit workspace names (#4947) -- thanks @gigio1023!
- Restored remote terminals keep trusted remote working directories, and local terminals no longer inherit another workspace's directory (#8634, #16248) -- thanks @ejc3!
- Relay connections and persistent Cloud requests honor their deadlines and cancellation, including when the app or socket reader was suspended (#11029, #12631)
- Sidebar reopening and custom context menus avoid repeated expensive workspace projections and eager menu construction (#11037, #11837, #13931, #15445)
- New windows honor the configured minimum sidebar width when no width has been saved (#11539)
- Notification hooks stop inheriting unrelated pipes that could make them time out or show false approval banners (#11649) -- thanks @chapati23!
- A completion notification that reorders another workspace no longer tears down the selected terminal and leaves it blank (#11954)
- Focusing a workspace or answering an agent clears the matching unread notifications and attention rings, including notifications without a pane ID (#12427, #15974, #16044) -- thanks @hemster!
- Restored sessions discard stale listening-port snapshots and repopulate them from live processes (#12436) -- thanks @seanperkins!
- Cloud usage failures use bounded retries instead of repeatedly requesting usage during an authorization outage (#12869)
- Cmd-Q allows deferred termination cleanup to finish (#13018) -- thanks @aliyansajid!
- Socket requests bound their main-thread waits, answer rejected clients, and expire stale jobs instead of leaving callers hanging (#13397)
- The file editor highlights Elixir and Erlang files, opens
.exsas text, and preserves SQL highlighting in Jinja templates (#13732, #15634) -- thanks @camilohollanda! - New mosh-tmux panes use the current shell integration after relay reconnects instead of an expired shell directory (#13835)
- Workspace group color and icon commands accept their documented value keys, validate colors, and retain valid generated anchors (#13877, #15000, #15892) -- thanks @LuckVd!
- Cloud mirror tabs honor the requested insertion index (#13998)
- Cloud stops redialing a refused address family and skips connection preparation while signed out (#14059)
- Restored agents lose their tab marks when they exit back to the shell (#14062)
- Legacy SSH configurations and file-preview restores preserve their original session ownership instead of being treated as new cmux-tui sessions (#14119, #14216)
- Nushell exposes the Claude integration wrapper when its toggle is enabled (#14263)
- A Pi feed with an unresolved explicit workspace fails instead of leaking another workspace's events (#14277)
- Codex and organization discovery in Cloud VMs accept signed VM authorization without database type errors or falling into the browser login path (#14286, #14328)
- Authentication-service failures no longer replace the entire website with an error after it has loaded (#14316)
- My Devices discovery, consent, live mirror resizing, restored offline status, and retry badges recover consistently; blank hibernated agents wake correctly (#14335, #14363, #14420, #15440, #15474)
- Team members can manage shared model accounts, transfer errors name the right team, and organization API keys stay scoped to team-shared accounts (#14372, #15085, #15086)
- Agent restore keeps unknown liveness unknown and retains idle Claude sessions through transient process-census changes (#14419, #15467)
- Codex fork and restore bind the right session, serialize validation handoffs, and stop waiting indefinitely on live restore leases (#13960, #14494, #15120, #15133)
- The browser renders local UTF-8 text correctly (#14502)
- Ghostty tab and window keybindings work again, and legacy Ctrl-Tab ignores Caps Lock (#14508, #15981) -- thanks @soyeladice-svg!
- Diff toolbar controls remain clickable and typed diff-session patches load correctly (#14525, #14538)
- SSH launch acknowledgement failures retry visibly, OpenSSH errors retain their SSH context, password-only hosts keep their authentication policy, and configured commands rerun after a missing remote session (#14540, #14756, #15713, #15764)
- Dictation and dropped-path insertion work through the terminal input path without clipboard-restore races, main-thread paste freezes, or unrelated-process checks (#14549, #15113, #15183, #15262)
- Cmd-I anchors the notification popover correctly (#14582)
- Claude and Codex hook completion survives reentry, transient ownership loss, teardown, and queue saturation, without repeatedly launching the CLI for queued hooks (#14715, #14931, #15567, #15603, #15612, #16122, #16244)
- Permission refresh no longer opens Computer Use onboarding on its own (#14752)
- Cloud machine lists recover when the app returns to the foreground, and a user's Open action can retry immediately after a background link failure (#14777, #15104, #15291)
- Feedback attachment filenames discard control characters (#14783)
- Custom sidebar functions return correctly and preserve file-scope bindings (#14806)
- Queued agent hooks receive their reply within the agent's own hook timeout (#14834)
- The Claude wrapper avoids redundant settings validation and overlaps startup work to reduce launch delay (#14872)
- Current Work retains remote machine kinds instead of labeling them as local (#14914)
- Password badge actions remain bound to the runtime that displayed them (#14921)
- Surface listings redact custom Codex paths for each surface (#14923)
- SSH workspaces using the v0.64.25 tmux profile reattach after an upgrade; update saves retain reattach bindings, and restored remote terminals keep replay and clipboard isolation (#14938, #15116, #15187)
- Failed image pastes show a brief notice for oversized images and timeouts (#14953)
- Sidebar popovers finish closing even when their delegate never reports completion (#14958, #16029)
- Close actions show one dialog, Feed banner clicks open the owning agent, and sidebar or Computer Use activity no longer interrupts focused work (#14960, #14961, #15311)
- Remote Claude hooks and late sidebar observers reconcile current agent status, and Cloud terminal icons follow agent lifecycle changes (#14974, #15829, #15831, #15887, #16337)
- SSH workspace names survive remote workspace creation (#14976)
- The selected sidebar row stays clear of the footer (#15013)
- Cloud Machines disclosure and recovered projections refresh without hangs or observation mutations during reads (#15077, #15126, #16335)
- Cloud tab drags, tool drag-to-split, pane drop highlights, and machine reorder insertion lines target the correct destination without stale hints (#15082, #15123, #15160, #15171, #15447, #15550, #16295) -- thanks @azooz2003-bit!
- Mac pairing recovers a missing team scope instead of failing (#15083)
- Model-account requests wait for an in-progress credential refresh instead of racing it (#15087)
read_textreports an unavailable terminal with its reason and how to wake it (#15101, #15159)- Codex team watchers and auto-naming keep socket passwords and provider credentials out of process arguments (#15140, #16201, #16233)
- Ghostty's config error card ignores cmux-owned keys, and restored scrollback ends on a new line (#15152)
- Deciding a Claude permission in the terminal clears the stale Needs input badge (#15170)
- Late tool results and delayed reminders do not make a finished Claude turn appear Running again (#15173, #16257)
- New and active Cloud workspaces are revealed and selected in the sidebar (#15186, #16370)
- My Devices notifications synchronize into the local sidebar, and Cloud notification reads retain the right unread state and pane attribution (#15198, #15933, #15972)
- An exited terminal's tab edge stays consistent with its current state (#15205)
- Predictive echo applies only to remote terminals, withdraws on pasted or sent input, and preserves terminal control replies (#15211, #15848, #15849)
- Bash preserves
$?for laterPROMPT_COMMANDhooks (#15255) -- thanks @tk1475! - When panes share an agent key, the sidebar shows the most urgent pane's status (#15260)
cmux terminal screen waitexits with status 1 on timeout (#15282)- Cloud graphs recover from missing cursors, equal-cursor conflicts, and overlapping forced refreshes instead of freezing (#15283, #15328, #15830)
- Explicit SSH control options reach an existing idle carrier (#15285)
- Cloud prompt names keep a machine's chosen name instead of changing to its slug (#15288)
cmux sendrefuses to overwrite an agent prompt draft or send through an open dialog (#15302)- Cloud machine accessibility and rename prompts use readable machine labels, preserving row identity at narrow widths (#15326, #16202, #16287)
- SSH exit prompts no longer block draining terminal output (#15337)
- A failed Cloud owner-network lookup rolls back the machine creation (#15358)
- Cloud machine deletion finishes and durably retries its cleanup when the machine is first found gone (#15359, #15423)
- Animated window resizing respects the minimum window size and preserves the terminal area when side panels cannot fit (#15368, #15369)
- CLI authorization asks signed-out browsers to sign in and completes Cloud sign-in handoffs (#15502, #16059)
- The browser passkey bridge uses the browser's WebAuthn input limits (#15525)
- Claude remote-control names survive session restore (#15619)
- Cloud displays start their connection automatically, and workspace reconciliation settles without repeatedly placing already visible panes or losing membership-less previews (#15744, #16025, #16030, #16109, #16158)
- CLI commands reject extra VM remove or send-key operands and malformed VM snapshot, clone, and tmux compatibility options instead of silently accepting them (#15839, #15963, #15980, #16373) -- thanks @soyeladice-svg!
- A full private network returns a clear conflict response, and replaced stale tunnels are removed (#15890)
- The Codex transcript monitor starts watching before its initial read so it cannot miss a completion (#15913)
- Codex TUI approval prompts appear as Needs input (#15926)
send-keyCtrl-letter input works with the Kitty keyboard protocol (#15928)- Paused Cloud machines stay asleep while cmux is open (#15934)
- Lost or malformed machine-create replies preserve idempotency instead of creating duplicate VMs (#15946, #16240)
- Codex auto-naming preserves messages containing HTML-like text (#15984) -- thanks @soyeladice-svg!
- Idle Cloud row clicks remain available (#15996)
- Stripping the cmux Node preload preserves quoted
NODE_OPTIONSvalues (#16031) - Cloud link failures retain the last relevant stderr lines while keeping diagnostics isolated to their link (#16057, #16303)
- New Cloud devbox images include the terminal replay fix for blank cells (#16072)
cmux vm pushretries transient watch failures (#16130)- Cloud port publishing refuses the VM daemon's private control port (#16144)
- OpenCode requests retain the provider address they started with (#16165)
- Session restore ignores duplicate panel IDs instead of failing the restore (#16182)
- Valid Claude hook sessions survive decoding changes (#16196)
- OpenCode auto-naming is isolated to its workspace and honors XDG and database path overrides (#16210, #16229)
- Cloud manual input follows the active pane's focus (#16271)
- Files roots resolve on the correct local or remote workspace host (#16301)
- The local terminal sizing overlay no longer flickers (#16315)
- Cloud opening status no longer claims success before the open completes (#16316)
- Codex hook edits preserve multiline TOML strings and recognize closing delimiters after comments (#16371, #16378)
- Socket capability discovery advertises the Cloud methods the dispatcher actually supports (#16460)
- iOS (beta): Computers uses the current workspace alias color (#10695)
- iOS (beta): Startup and notification recovery keep the reconnecting state, dial available Macs without waiting on unresponsive ones, retain newer admitted connections, and start restored terminals when attached (#13856, #15127, #15141, #15197, #15345, #15442, #15465, #15471) -- thanks @azooz2003-bit!
- iOS (beta): PureScript artifacts use the bundled Haskell syntax grammar instead of generic detection (#14202) -- thanks @i-am-the-slime!
- iOS (beta): Encrypted push notifications accept the paired Mac's key exchange and use the correct push environment for development installs (#14267, #14292, #14296) -- thanks @azooz2003-bit!
- iOS (beta): Local Mac connections wait for acknowledged NAT authorization so direct routes can form instead of remaining on the relay (#14295) -- thanks @azooz2003-bit!
- iOS (beta): Missing app identity or simulator support directories use a recoverable in-memory token store instead of crashing (#14302, #16032)
- iOS (beta): Terminal input reaches its named terminal exactly once (#15432) -- thanks @azooz2003-bit!
- iOS (beta): Background updates preserve tab-menu scroll position (#15486) -- thanks @azooz2003-bit!
- iOS (beta): Computer picker status text does not clip (#15799) -- thanks @azooz2003-bit!
- iOS (beta): Cloud workspaces gain the same open, focus, and split behavior as the other workspace hosts (#15935) -- thanks @azooz2003-bit!
- iOS (beta): Terminal composer input stays literal (#15991) -- thanks @soyeladice-svg!
- iOS (beta): The composer shortcut strip stops snapping at its edges (#16128) -- thanks @azooz2003-bit!
- Live terminal resize flushes its coalesced geometry update promptly (#14297)
- Persistent SSH resumes stop attaching an unverified relay authentication value (#14694)
- Mosh sessions discard the unused SSH launcher when Mosh takes over (#15896)
- Agent product names remain unchanged across translations (#15903)
SSH Workspaces Connect Again
Released builds ship a checksum-verified cmuxd-remote again, so SSH workspaces bootstrap on macOS and Linux hosts. A session that cannot become ready reports an actionable error within 60 seconds instead of sitting at Last login, terminals keep raw input across reconnects, and new splits open in the remote directory.
cmux ssh user@host to open a workspace on the remote machine.Steady Agent Layouts
Agents resumed with cmux restore or cmux fork receive terminal resizes again, so their layout no longer garbles after a restore. Images dropped or pasted into a terminal stay on disk long enough for Claude Code and Codex to read them.
cmux restore --surface <ref> or cmux fork --surface <ref> on a saved agent session, then resize its pane.Light Mode Terminals
A terminal no longer reloads its dark theme after macOS switches to light, and Light applies the light palette when the Ghostty config sets only a font, keybinding, or opacity.
- The persistent "Terminal is not rendering" banner no longer covers terminal panes; render-health recovery, logs, and socket fields are unchanged (#12738).
- SSH workspaces connect again in released builds: the app ships a checksum-verified
cmuxd-remotefor macOS and Linux, and the release pipeline rejects a build whose daemon manifest and assets disagree (#12720) -- thanks @john-agi for the report! - An SSH terminal no longer sits at
Last loginforever when its remote session cannot become ready: the session parks within 60 seconds, the pane and sidebar show the same actionable error, and Reconnect works afterwards (#12851). - SSH terminals stay in raw input mode across attach and reconnect instead of falling back to echoing, line-buffered input, and a remote daemon whose version does not match the app is rejected before it touches the terminal (#12726).
- Splits and new terminals in an SSH workspace open in the focused pane's remote directory instead of the remote home directory (#12054) -- thanks @zhiyuanzhai for the report!
- Agents resumed with
cmux restoreorcmux forkreceive terminal resizes again, so their layout no longer garbles after a restore or pane resize (#12796) -- thanks @rizkidarmawan21 for the report! - Images dropped or pasted into a terminal stay on disk until cmux quits so Claude Code and Codex can read them, and a copied image that also carries a source URL pastes as an image (#12752) -- thanks @mgayaud-meridian for the report!
- With System appearance, a terminal no longer reloads its dark theme after macOS switches to light (#12811), and Light applies the light palette when the Ghostty config sets only non-color options such as a font, keybinding, or opacity (#12812).
Reliable Codex Resumes
Codex --yolo no longer calls a missing helper or replays a restore command after repeated resume cycles, keeping the active session identity attached to the right terminal.
Switch CLI Accounts
The CLI authorization page can sign out the current browser account and return to sign-in with the original confirmation code intact.
Cloud CLI Compatibility
Cloud terminal sessions accept the workspace-close syntax used by the in-terminal CLI while preserving routing, JSON output, revision fences, and idempotency.
- IROH v2 Cloud connectivity now uses the Cloudflare control plane with durable pairing, relay renewal, direct-only routes, and recovery that stays alive through stalls and traffic bursts (#12326, #12411) -- thanks @azooz2003-bit!
- Cloud file transfers use private SCP, and iOS Computer details can delete non-IROH routes without losing the computer (`5f0ce77`, #12691) -- thanks @azooz2003-bit!
- Cloud Desktop restores authenticated transport, saved splits, and noVNC recovery; Cloud folder drags use the sidebar insertion line and persist across refreshes (#12633, #12589).
- Browser feature-flag evaluations reuse complete results for five minutes, while Computer Use onboarding and preference notifications avoid startup deadlocks (#12611, `3a617be`).
- The Cloud guest CLI accepts
workspace close --workspace ... --focus false, and CLI authorization can switch browser accounts without losing the login code (#12470, #12679).
- Codex
--yolono longer calls a missing resume helper or recursively injects restore commands after repeated resumes (#12659, #12697). - Terminal panes publish their final size after pane and window geometry settles, preventing transient dimensions from corrupting TUI output (#12662).
- Runaway memory guardrails default to off for new configurations, and internal memory-pressure diagnostics no longer create user notifications (#12658, #12667).
Vault Search, Checkpoints, and Fork
Every agent session lands in a recency-first Vault with day sections and filters, search with agent:, repo:, ws:, before:, and after: operators, and checkpoints you can fork from for Claude Code, Codex, Pi, and Grok, in the app or through cmux vault and cmux fork.
Reply to Agents from Notifications
Answer an agent straight from the macOS banner or the iPhone Lock Screen: type a reply on turn-complete and idle notifications, pick an option on AskUserQuestion banners, or send a revision on exit-plan banners. Automations, agent-event context for notification hooks, and per-agent sounds round out the pipeline.
cmux in Nine Languages
The macOS app is fully localized in German, French, Spanish, Arabic, Korean, Simplified and Traditional Chinese, and Japanese alongside English.
More Agents, More Shells
Amp and Hermes join Claude Code, Codex, Pi, and Grok as first-class agents with auto-resume, notifications, and Vault history, Cursor approvals show up as Needs input, and Nushell gets shell integration and session resume.
Stability and Performance
Workspace switching no longer ghosts or hangs, idle CPU burn from logging and git watchers is gone, terminals in hidden windows release about 40 MB each, persistent SSH reconnects survive sleep and network changes, and Google Sheets no longer pins a core.
cmux on iPhone (beta)
Each Computer picks its own connection method with an honest Tailscale Only mode, Simulator panes stream as low-latency video with touch forwarding, the Task Composer keeps drafts and attachments, and workspaces sort, group, and reconnect quietly. Current iOS builds need cmux 0.64.23 on the Mac.
- Vault: recency-first All Sessions view with day sections and filters, session search with
agent:,repo:,ws:,before:, andafter:operators, and checkpoints with fork-from-checkpoint for Claude Code, Codex, Pi, and Grok, pluscmux vault sessions|search|checkpoints|checkpoint|forkandcmux fork <kind> <checkpoint>(#10215, #11324); session status dots and a native search field shared with Find (#11915, #12146, #12036, #12109) - Reply to agent notifications inline from the macOS banner: typed replies on turn-complete and idle notifications, one button per option on AskUserQuestion banners, and Revise… on exit-plan banners;
cmux notify --replymarks a notification replyable (#8670, #10511) -- thanks @azooz2003-bit! - cmux is now fully localized in German, French, Spanish, Arabic, Korean, and Simplified and Traditional Chinese alongside English and Japanese (#12169, #12171) -- thanks @mengyang0007-dev for the Simplified Chinese translations! -- and 95 Japanese strings that sat outside the catalog now apply (#12100)
- First-class Amp support with auto-resume, completion notifications, Vault history, and a managed
ampshim (#9803, #12150, #12166); first-class Hermes Agent restore and notifications (#9540); Antigravity (agy) sessions restore and auto-resume (#12151) - Nushell support: shell integration, wrapper shim routing, and nushell-safe resume commands (#8104) -- thanks @RemiKalbe!
- Automations: a rule engine in
~/.cmuxterm/automations.jsonwith notify, RPC, run, and webhook actions, rate limits, dry-run matching, andcmux automation list|show|test|enable|disable|logs|reload(#10654) notifications.hooksreceive agent-event context (agent, category, subagent), so a hook can silence subagent completions or route events to a custom notifier (#10212); per-agent and per-alert notification sound overrides with custom sound files, in Settings and asnotifications.soundOverrides(#10157)- Notifications open as a pane tab that matches the Ghostty background (#9721, `5223a46`) -- thanks @azooz2003-bit! -- with Copy in row context menus (#11677) and rebindable Dismiss All and Mark All Read actions (#10337)
- Keep Mac Awake from the cmux menu and the menu bar item, and per computer from the iPhone (#7564, #11092, #11334) -- thanks @azooz2003-bit!
- Resize the focused pane from the keyboard with Ctrl+Shift+H/J/K/L, rebindable and also in the View menu and command palette, with an
app.paneResizeStepPixelsstep setting (#4025) -- thanks @SerkanSipahi for the report! - Next/Previous Workspace in Group actions, bindable in Settings and
cmux.json(#9352) -- thanks @zelig81 for the report! -- and Cmd+Shift+R renames the focused workspace group (#9428, #12410) - Show, hide, and reorder right-sidebar tabs from Settings > Sidebar or the tab context menu; Ctrl+1…9 follow the visible order (#11950)
notifications.paneFlashColorsets the pane attention flash and unread ring color under Settings > Workspace Colors (#8563) -- thanks @mcorcelle!- Empty sidebar space below the workspace list drags the window (#12162) -- thanks @kenifxyz for the report!
- Cursor approval waits surface as Needs input (#9349) -- thanks @PreziosiRaffaele for the report! -- and Codex's own conversation title mirrors onto the terminal tab (#12062) -- thanks @cassiexflowceo for the report!
- CLI:
--commandonnew-split,new-pane, andnew-surface(#9614);cmux read-selectionandsurface.read_selectionfor terminal, file, Markdown, and browser panes (#10022) -- thanks @hummer98 for the report!;cmux --json treereports split-layout geometry (#7459) -- thanks @owenjohnson!;cmux comments listreads diff review comments (#9604) -- thanks @haung921209!;cmux notifyreturns notification ids and supports--clear(#10336);cmux guideandcmux --skillprint agent-oriented usage guides (#12468);cmux sessionsappears in--help(#10438) - Browser: an MDM-enforceable URL allowlist, also available as
browser.urlAllowlist(#10540, #10947) -- thanks @artisticmedic for the report!;cmux browser <surface> download list, and completed downloads drag from the Downloads popover into terminals as file paths (#12461, #12566); a configurable default zoom (browser.defaultZoomLevel, Settings > Browser) andcmux browser zoom <factor>(#10207); chromeless Dock browsers with"chrome": false(#9870) -- thanks @keyserfaty for the report! - Managed device policies for MDM:
DisableEmbeddedBrowserandDisableRemoteControl(#10377),DisableRemoteConnections,DisableFileTransfer, andDisableIrohNetworking(#12035) - File Preview code view with syntax colors, a line-number gutter, current-line highlight, indent guides, and
fileEditor.*settings (#10599) -- thanks @justincrich! - Cmd+F find in the Markdown viewer and the diff viewer, with Cmd+G and Shift+Cmd+G to step through matches (#11039)
- CLI tools running inside cmux can request Calendar, Contacts, Reminders, Location, and Photos access, and macOS prompts instead of silently denying (#1816, #10901, #10903) -- thanks @DonaldoDes! -- thanks @vystrcild, @omarshahine, @SimonAB, @joelt4n, and @fbartho for the reports!
- Settings > Networking gains a connection check and a Never Use Relays policy on Mac and iPhone (`4c05363`) -- thanks @azooz2003-bit!
- ssh-tmux mirrors deliver OSC 777/9 notifications from remote agents with no remote daemon or tmux config (#10048) -- thanks @alloevil! -- and Claude Code Agent Teams teammate panes in SSH workspaces run on the remote PTY (#11231) -- thanks @acllm for the report!
- Per-version changelog pages at cmux.com/docs/changelog/<version> (#9543, #9579)
- cmux TUI: a plain
cmuxstarts or reuses a detached headless session owner and attaches as a client, so detaching never ends the session;cmux server ensure|start|status|stop|reload-configandcmux session <name> reset-statemanage it, and new terminals start in the launch directory (#10734, #9840, #9733, #10404, #10757, #11856) - cmux TUI: named sidebar profiles, user commands bound to key chords, border styles, pane padding, dim-inactive panes, powerline separators and chip styles, and headerless rails with action rows (#9447, #10383, #10469, #10522); attach restores your last focus per client (#10331);
workspace|pane run --on-exit close|keep,terminal <id> output read,terminal process showwith the live cwd, andcmux server stats(#10839, #10855, #10704, #11772); durable terminal input succeeds only after the PTY owner acknowledges it (#12142) -- thanks @teamleaderleo! - cmux Cloud (beta): persistent Linux dev machines with preinstalled Claude Code and Codex, attached as native terminal panes from a Cloud sidebar tab (#10478, #10887, #11523, #11773). Cloud is in beta and launches in the next major release.
- iOS (beta): each Computer picks its own connection method (Iroh, Tailscale Only, or direct addresses), Tailscale Only never falls back to relays, and Settings > Networking gains Never Use Relays, a connection check, and Reset to Defaults (#10437, #11267, #11961, #9497, #10294, #10184) -- thanks @azooz2003-bit!
- iOS (beta): Task Composer drafts, image and file attachments by paste, a workspace-group picker, and New Task always visible with an offline warning (#10588, #10536, #10123, #10476, #9892, #10291) -- thanks @azooz2003-bit!
- iOS (beta): Sort By for All Computers, Move to Group, groups preserved under Recent Activity and across reconnects, exact unread counts, and reopening a workspace restores its last tab (#9828, #10709, #9779, #9960, #9509, #10791, #11018, #11188, #11279) -- thanks @azooz2003-bit!
- iOS (beta): grouped notifications with expandable history (#11997, #12010), and onboarding runs after sign-in with a push-notification page and fits every viewport (#10789, #11310, #11564, #9489, #11963, #9891) -- thanks @azooz2003-bit!
- iOS (beta): Markdown documents render with the Mac's viewer, with syntax highlighting, tables, task lists, images, and Mermaid (#10638); workspace and group action menus, synced custom icons, and more Mac surface types listed per workspace (#9326, `04ff18e`) -- thanks @azooz2003-bit!
- iOS (beta): the phone-to-Mac transport is rebuilt on Iroh and is now the default on both devices; existing pairings carry over, and current iOS builds require cmux 0.64.23 or newer on the Mac, which the Computers list now says outright (#10782, #10889, #11163, #11874, #11341, #12275, `a9d7d4e`, `f8d17c0`) -- thanks @azooz2003-bit!
- iOS (beta): Simulator panes stream to the iPhone as a low-latency video lane with raw touch forwarding, quality presets, simulator switching, and Refresh and Recover (#9401, #9886, #10563, #10574, #10595, #11089) -- thanks @azooz2003-bit!
- iOS (beta): New Browser creates and streams a real Mac browser pane; streamed pages get a first frame without reload, focus fields under taps, and stop stray backspace navigation (#9577, #9498, #9729) -- thanks @azooz2003-bit!
- iOS (beta): reconnecting is quiet (title-bar spinner, terminal stays interactive), and workspace state, selection, artifacts, and open terminals survive reconnects and Mac switches (#10821, #11879, #12000, #9979, #10121, #10010, #11328, `a028ba2`) -- thanks @azooz2003-bit!
- The Mac pairing window becomes Tailscale Pairing with a QR-first layout and an Iroh tab (#9493, #10498, #10499, #10502), and the Settings > Mobile Pairing Port row describes both listeners (#10659) -- thanks @azooz2003-bit!
- Sidebar agent status (Running, Needs input, Idle, Error) is derived from a durable agent event journal instead of text heuristics (#10490)
- Configured Ghostty colors no longer flip with app light/dark mode; only an untouched Ghostty config uses cmux's adaptive palette (
terminal.adaptiveDefaultTheme), and surface-scoped theme reloads no longer leave white text on a light background (#10205, #9764) -- thanks @CodeMarr for the report! - Terminals in minimized, covered, or inactive-Space windows pause rendering and release their Metal swap chains, about 40 MB per surface (#10815, #10922)
- Ctrl+D on the last terminal always asks before quitting, and Cancel restarts a fresh shell in place (#9492)
- Terminals honor the macOS Show scroll bars setting (#10632) -- thanks @mgol for the report!
- The browser toolbar keeps Design Mode, profile, theme, and Inspect in the row and moves Focus Mode and screenshots into a More menu (#10460)
- Every Vault resume entry point uses the shell-free
cmux restorepath, and Vault rows drop onto terminal and browser panes through one router (#9924, #9964, #10032) - The inherited file-descriptor limit is raised at launch so shells and agents can open more than 256 files (#12364) -- thanks @sanshengai for the report!
- The updater moves to Sparkle 2.9.5 and explains when security software delays the updater helper (`93cb0a8`)
- The main window keeps a 400pt minimum height on every resize path (#11321) -- thanks @azooz2003-bit!
- cmux TUI: child PTYs advertise
COLORTERM=truecolorand defaultTERMtoxterm-ghosttywhen its terminfo resolves, scrollback capacity inherits your Ghosttyscrollback-limit, and startup no longer spawnsghostty +show-config(#10429, #10465, #11173, #11196, #9738, #10986)
- Fix workspace-switch latency (#9244), stale pane layers ghosting over the selected workspace (#12414), flicker and mis-sized nested splits on switch (#12310), transient PTY resizes during reveal (#11528), and sidebar-switch layout faults on macOS 15 (#9854) -- thanks @crizCraig, @zacplansky, and @ngsgh for the reports!
- Fix main-thread hangs from SwiftUI relayout during workspace and portal churn (#12521), sidebar drag validation (#10552), selectable-text rows (#12056), terminal teardown (#9358), large screenshot pastes (#8838), device-identity disk I/O on notification dismissal (#12459, #12513), and title churn freezing Dock and Spaces (#10510) -- thanks @RobotZQ, @dazebug, and @AlanSyue for the reports!
- Fix idle CPU burn from uncached Ghostty logging setup (#9368), blank opener stderr bursts (#9486), the sidebar git-status watcher on large worktrees (#10133), and idle History menu rebuilds (#10661) -- thanks @jtsternberg, @bningdd, and @STRML for the reports!
- Fix crashes: SIGKILL from a freed inherited terminal surface (#8656) -- thanks @ejc3!; a Preferences crash on macOS 27 beta (#12235); cold PTY spawns wedging the app after CLI bursts (#9796); stale socket surface bindings (#9333); a main-thread stack overflow on long uptimes (#9921); CLI SIGPIPE and SIGABRT on closed pipes (#12503); an NSColor launch crash (#10627); a Cmd+Z stale undo target (#12570); a session snapshot restored after a crash instead of rotating away (#10846) -- thanks @thiagolopes-dev, @Morkeeth, @mekaser, and @Ccheng2729111 for the reports!
- Fix beachballs and freezes: Settings on Intel Macs (#12155), a wedged usernotificationsd (#9630), a diff viewer deadlock (#9759), a 4s reload-config freeze (#10564), Settings load rewriting UserDefaults on every launch (#8631) -- thanks @ejc3!, blank Vault and sidebar icons on Intel and macOS 15 (#10764, #12145), and 8s+ hangs materializing SF Symbols (#10591) -- thanks @timothygray, @AlexDemzz, and @RaviTharuma for the reports!
- Fix pane tab drags: wide tabs (#10035), drags never starting (#10038), between-tab insertion (#9765), middle-index reorder (`2141de5`), tabs opened from the file explorer (#12164, #12167), stale drag sessions (#10804), and CLI tab reorder by index silently no-oping (#8600) -- thanks @ejc3!
- Fix sidebar workspace reorder wedging Mission Control and Spaces (#9807, #11186) -- thanks @qyhfrank! -- thanks @1045245078 and @yonnee-kim for the reports! -- and opt main windows out of Full Screen Tile so WindowServer cannot freeze (#12298) -- thanks @adigunners for the report!
- Workspace groups: release on a collapsed group's header to drop into it (#9992) -- thanks @AvoChang!; pinned groups survive their last workspace closing (#10662); selecting a group header focuses its live anchor (#10755); pin tint (#9519) and stale row alignment (`3f3748a`) -- thanks @azooz2003-bit! -- thanks @addisonlynch for the report!
- Fix focus: closing an unfocused pane no longer steals focus (#10021), drag-to-split reconciliation (#9754), Copy Mode selection bleeding across panes (#10363), viewer find fields releasing keyboard input (#11512), and right-sidebar file drops taking focus (#11059) -- thanks @ytkimirti and @Grisu1963 for the reports!
- Dock panes: new terminals and browsers accept typing immediately (#10340), live tab titles (#9340), file drag-and-drop (#9778), mixed light/dark chrome (#10149),
background-opacity(#10562), and every surface shortcut routes through the focused Dock (#9566); Dock agents resume across owner rotation (#9266) and Dock notifications clear on keyboard focus (#9427) -- thanks @jimmyliao for the report! - Terminal input: SGR mouse events on the click that focuses a pane (#11349), Option-only shortcut bindings (#10452), bracketed paste framing that desynced Claude Code's input parser (#9875), phantom selection stuck to the cursor (#1235), double-click word selection during drag (`46223d8`), and Cmd+C honoring
copy_to_clipboard(#11515) -- thanks @majormedical8-coder, @kevin-beaulieu-zocdoc, @kellerriedel-cyber, and @Jeff31UK for the reports! - Scroll position survives pane resize in scrollback (#10489), Korean NFC and NFD text uses one font (#9808), literal
~in inserted paths (#9734), corruptedPATHbytes are dropped (#12057), bashPROMPT_COMMANDis no longer exported to child shells (#11290), trailing-slash URL detection (#9874), Cmd-click on a GitHub link no longer also reveals the repo in Finder (#10454), andopen <url>routes to the built-in browser again (#9781) -- thanks @ddotz, @juliogc, @nikhilgarg-origin, @eattker, and @kojitakemoto for the reports! - Sidebar rows: port badges retire when listeners exit (#9324, #10633) -- thanks @mykmelez!; description links are clickable (#8612); double-click inline rename (#9798); clipped or overlapping rows after close, rename, resize, or reorder (#10089, #10396, #10583, #11242, #10074); missing Sign In and avatar icons on Intel Macs (#12126); white-on-white toolbar icons with translucent themes (#10492); unreadable links on the selected row (#9613) -- thanks @aloysbr, @grandmasteri, @XueyanZhang, @tleruitte, @WKRachel, and @grant-davidson for the reports!
- Windows and restore: closed windows no longer linger as ghosts that respawn shells (#8567), recovered windows persist in session snapshots (#9749),
cmux restoreno longer overwrites restored titles (#9621), native fullscreen refits after display changes (#12178), background attention no longer raises cmux under Stage Manager (#9776), invisible accessibility dialog windows no longer accumulate (#9777), and closing a workspace owned by another window (#8753) -- thanks @ejc3! -- thanks @dhruv-anand-aintech, @cjprescott, @nrhys2005, @artisticmedic, and @isseeeeey55 for the reports! - Fix Google Sheets panes hanging at 100% CPU with the unsupported-browser banner (#9482, #9483, #9536) -- thanks @lintanghui! -- thanks @ajunge for the report!
- Fix browser crashes: WebContent attach on macOS 26 (#12519), a dropped navigation decision handler (#10567), the Copy Image callback (#10665), duplicate Google query parameters on context-menu download (#10480), DOMRect results in
browser.evalon macOS 15 (#12237), and reentrant layout during automation (#9773, #9774); restored browser tabs stay lightweight until shown (#11006) -- thanks @spiky02plateau, @yishu-ziyu, @lmy20160829-hash, and @WangRouna for the reports! - Browser: honor
browser.urlsToAlwaysOpenExternallyfor in-page links and popups (#10634) and scopecookies clear --urlto the URL (#10626) -- thanks @grandmasteri for the reports!; trusted arrow keys frombrowser.press(#11931) -- thanks @LanceOlsen for the report!; absolute local paths in the omnibar open as files (#10177) -- thanks @gazzua for the report!; Cmd+Z and Cmd+Shift+Z in web page inputs (#9794) -- thanks @kimdane0115 for the report!; Downloads popover contrast (#9744), white toolbar controls on light chrome (#10224), the Dock divider next to a browser pane (#10902), and a new browser landing one slot short of the end (#8705) -- thanks @ejc3! - Persistent SSH reconnect: wake and network-change reconnects no longer abort permanently (#9966), one PTY-channel fault no longer yields a false host-died verdict (#9971), disconnect-then-reconnect wedges (#10328), error floods replaced by bounded backoff (#10327), replayed terminal queries polluting the remote shell (#10332), input typed during an outage discarded instead of replayed garbled (#10624), stale tunnel callbacks tearing down a healthy replacement (#12424) -- thanks @teamleaderleo!, and the persistent daemon no longer kills live remote PTYs when its relay lease lapses (#9760) -- thanks @alloevil, @smoreg, and @oliver-mee for the reports!
- Remote daemon bootstrap verifies uploads instead of promoting a 0-byte
cmuxd-remote(#10555, #10590), works on slow links and past a wedged ControlMaster (#10140), skips a ~7.5sssh -Gwait (#10361), keeps the devcontainer-tflag in place (#9772), andcmux moshreports the real bootstrap stage (#10101) -- thanks @zy-jordan and @AshotVantsyan for the reports! - SSH sessions get
TERM=xterm-256colorinstead ofxterm-ghostty(#12059), remote tmux output no longer deadlocks the main thread (#10441), tmux 3.7b no longer spins at 100% CPU from redundant resizes (#10142), ssh-tmux sizing recovers after a peer detaches (#9530) -- thanks @HRXWEB!, CRLF session lists parse (#8704) -- thanks @ejc3!, stale SSH and daemon error lines retract after recovery (#9472, #10652), unknownssh-session-attachids are rejected (#10445), the file explorer no longer lists the old local path through a new SSH connection (#8595) -- thanks @ejc3!, concurrent tmuxset-buffercalls keep their buffers (#11291), anddisplay-messagefan-out no longer trips the rate limiter (#12061) -- thanks @fpigeonjr, @benfinklea, @T0mSIlver, @limoragni, @EtanHey, and @robinhur for the reports! - Agent hooks: Claude's UserPromptSubmit and SessionEnd hooks no longer time out on every prompt (#8537) -- thanks @ShuntaH for the report!; Pi hook timeouts are configurable via
CMUX_PI_HOOK_TIMEOUT_MSand failures no longer print JSON into the prompt (#10130); Grok session-start hooks resolve their target (#10551) - Claude: forked tabs keep their own session id (#10175), a custom Claude binary path no longer loops the wrapper at 100% CPU (#10293), no false needs-attention on SubagentStop (#10335), resume bindings survive Agent Hibernation (#12176), stale session summaries clear at prompt boundaries (#11529), and workspace auto-naming works with Claude Code 2.1.220 (#9473); Claude Teams teammate panes keep the login PATH, resume after relaunch, and are named from
--agent-name(#9731, #10198, #10356, #10193) -- thanks @theunderdark, @Daniel-Brestoiu, @evanjcosgrove, @debedb, @rocjay1, and @navidemad for the reports! - Codex: duplicate hook channels and orphaned watchdogs (#9780), nested
codex execoverwriting the parent resume binding (#10100, #10823), premature completion notifications while a reviewer subagent runs (#10838), Codex Teams app-server leaks (#10448), hook injection with spaces in the home path (#11968), user~/.codex/hooks.jsonhooks keep running (#12140), and PermissionRequest raises the permission notification (#9804) -- thanks @smomen, @dhruvja, @robinhur, @dustingelegonya, and @MysterioGhub for the reports! - Pi: notifications carry the session title (#9452) and stay quiet after interrupted turns (#9451), Fork Conversation appears for Bun and Nix launchers (#9549), reload replies no longer corrupt typing (#11527), resume bindings survive relaunch (#12115), and OMP subagents no longer mark the pane idle, so Agent Hibernation stops SIGHUPing live sessions (#9800) -- thanks @daniel-ospina, @ykessler, and @turygo for the reports!
- Kimi Code CLI hooks install in the config the CLI reads (#10344) -- thanks @smoreg!; OpenCode completion notifications accept both idle forms (#12190);
claude attachpasses through (#10117) -- thanks @sjiang647!; Escape in the TextBox interrupts a running agent (#10959) -- thanks @rudidev08 and @kiankyars for the reports! - Autoresume no longer launches a second agent on a still-running session (#11358), scheduled Agent Hibernation reclaims idle live agents (#10658), aggregate child memory pressure warns and hibernates before compressor exhaustion (#10773), notification rings fail closed instead of landing on the focused pane (#11224), and repeated stops no longer re-ring after dismissal (#11976) -- thanks @KyleOps and @Carbrex for the reports!
- Updater: "no update available" shows as success in Attempt Update (#9435), cancelling a delayed update no longer strands Sparkle (#12283), and the passive update pill appears (#12473)
- CLI: stale sockets rebind after an unclean exit (#10058), socket work runs off the main thread (#10558), CLI exit no longer blocks 2s on Sentry (#10553), the listener falls back to
/tmpwhen the state directory is uncreatable (#11050) -- thanks @azooz2003-bit!,surface resume setrejects unknown flags (#9477), and the command palette finds branch short names (#8578) -- thanks @ejc3! -- thanks @nengqi, @MaciejCaputa, and @WTF-Am-ID for the reports! - The file explorer shows git status for repos reached through a symlink (#8577) -- thanks @ejc3!, Markdown preview refreshes when the file is saved in an editor (#10623), blank Markdown viewers after resize (#10474), file drops ghosted after pane teardown (#10359), and file drags lagging with many workspaces (#10783)
- iOS (beta): terminal typing latency (#12001, #12007), row corruption in long sessions (#10809, #12485, `65eee0e`), intermittent freezes (#10125), main-thread hangs from replay decoding (#11076), scrolling stays responsive during streaming output (`90bdd12`), send progress and failure states (#9723), Dynamic Island clearance in landscape (#10578), photo-picker keyboard focus (#9371), diff-viewer fling momentum (#9257), and startup crashes in Ghostty init (#10824, #9252) -- thanks @azooz2003-bit!
- iOS (beta): end-to-end push notification reliability (#9319), inline replies from push notifications reach the terminal (`6720b98`), rows hidden for deleted workspaces (#10055), the workspace list keeps its scroll position (#10488) and stays smooth during agent updates (#11956), search results open inside the search tab (#9820, #11275), email-code sign-in recovers unverified accounts (#10029), Files viewer errors name the real cause (#9961), What's New preloads before presenting (#11333), and bounded relay retries during outages (`9b98fb0`) -- thanks @azooz2003-bit! -- thanks @ismael-joffroy-chandoutis for the report!
- cmux TUI: status lines and diagnostics persist to a rolling
client.loginstead of painting over the screen (#10486, #10606, #10954); self-spawns survive in-place upgrades (#10483); failed reconnect checkpoints degrade gracefully (#10484, #10485, #10501); transport loss is reported instead of exiting 0 (#11045, #10937); concurrent attaches no longer duplicate workspaces (#11412); durable exit receipts, cancellable reconnect waits, and snapshot-stable journal paging (#11723, #11673, #11112, #11711, #11886); dimensionless clients report as passive (#11260) -- thanks @eggpeat!; layout is derived from the rendered frame with immediate redraws (#10958, #10962, #10984) and lock-free resource selectors roughly double hook throughput (#11630); owner-only config and state, secret scrubbing, and bounded CDP queues (#10990, #10935, #11396, #11722, #10983)
- Fix a crash seconds after launch on Intel Macs; cmux is now the only process-wide crash handler, and embedded GhosttyKit no longer links Ghostty's native Sentry initializer (#9436)
- Fix
cmux ssh <host>failing immediately with a shell syntax error from the generated startup script (#9425) -- thanks @KousukeUchiyama for the report! - Clear Dock notifications when you focus the pane that raised them (#9418)
- Keep a restored Claude agent on its own account instead of falling back to the ambient one (#9419) -- thanks @seanyoungberg for the report!
- Stop bash shell integration printing
cannot overwrite existing fileon every prompt underset -o noclobber(#9420) -- thanks @8bit-void for the report! - Fail closed when
closeorrespawn-paneis given an explicit--surfacethat no longer exists, instead of acting on a different live surface (#9422) -- thanks @PhilipPinckaers for the report!
Native Simulator Panes
Run iPhone and iPad Simulators as first-class cmux panes, rendered crisply at real size, with their own commands and automation so an agent can drive the simulator next to the terminal that built it.
Mosh for Remote Workspaces
Remote workspaces can use Mosh instead of plain SSH, so a laptop that sleeps, changes networks, or loses Wi-Fi picks the session back up instead of dropping it.
Idle CPU and Memory Reclaimed
Leaked openThread loops that burned about 90% of cmux idle CPU are gone, hidden Ghostty renderers release their memory, workspace switching no longer freezes the renderer, and idle background agents hibernate under critical memory pressure.
Navigation and Restore
Cmd+Shift+T reopens the last closed item, Cmd+[ and Cmd+] walk global workspace focus history, surfaces move between panes with automatic directional splits, and Dock panes, workspace IDs, and per-tab terminal zoom all survive a restart.
cmux on iPhone (beta)
Stream Mac browser panes to the phone interactively, follow a chronological notification feed, launch agent workspaces from the task composer, and scroll terminals locally on screen-anchored render grids over a rebuilt peer-to-peer transport.
- Native iPhone and iPad Simulator panes, with their own commands and automation (#7857)
- First-class Mosh transport for remote workspaces (#8442)
- Workspace-wide terminal font zoom on Cmd+Ctrl+= / Cmd+Ctrl+- / Cmd+Ctrl+0 (#8791), and per-tab zoom now persists across restarts (#8543)
- Cmd+Shift+T reopens the last closed item (#9132)
- Cmd+[ and Cmd+] traverse global workspace focus history, and pane cycling becomes rebindable (#9329) -- thanks @azooz2003-bit! -- alongside a workspace-only focus history setting (#8654)
- Move active surfaces between panes with automatic directional splits (#8764);
goto_split:previousandgoto_split:nextcycle through every pane with wrapping (#2639) -- thanks @mykmelez! - Dock panes persist across session restore (#8690), with full Dock surface runtime parity (#8782)
- Reopen closed workspaces with sticky repo identity (#8841)
- Target browser profiles from the CLI (#8874), and Command-clicked HTML files render in browser panes (#9096)
- Sidebar account and mobile pairing controls (#8354); sidebar metadata renders Markdown links (#8663) -- thanks @djova!
- Notification feed read state is a leading swipe with mark-unread (#8868) -- thanks @azooz2003-bit!
- Idle background agents hibernate under critical memory pressure even when routine Agent Hibernation is off (#9090)
cmux restoreruns without a shell (#9265)- iOS (beta): stream Mac browser panes to the phone, interactive and pixel-perfect, with dialogs mirrored (#8298) -- thanks @azooz2003-bit!
- iOS (beta): chronological notification feed (#8210) -- thanks @azooz2003-bit!
- iOS (beta): launch agent workspaces straight from the task composer (#7670)
- iOS (beta): Tailscale connection method opt-in with QR-authorized pairing (#9247) -- thanks @azooz2003-bit!
- iOS (beta): haptic feedback setting (#8797), Open Folders on Tap (#8524), unified animated toasts (#8376), and workspace identity customization (#8636) -- thanks @azooz2003-bit!
- Workspace initial commands launch through your login shell (#8801) -- thanks @azooz2003-bit! -- and auto-resume uses the normal terminal shell (#8837)
- iOS (beta): the phone-to-Mac transport is rebuilt on one connectivity authority, with authenticated discovery, named disconnect reasons, and relay-credential rollover (#9284, #8840, #8716, #8494) -- thanks @azooz2003-bit!
- iOS (beta): terminal scrolling is local and smooth on screen-anchored render grids (#8860) -- thanks @azooz2003-bit!
- iOS (beta): state sync v2 replaces the invalidate-and-refetch loop with per-record deltas (#8284) -- thanks @azooz2003-bit!
- iOS (beta): onboarding is rebuilt around a live agent handoff (#8418), as a swipeable tour (#9158) with a Game of Life backdrop on every page (#8880) -- thanks @azooz2003-bit!
- iOS (beta): removing a Mac from a phone hides it for that phone only, instead of deleting it everywhere (#8760, #8778) -- thanks @azooz2003-bit!
- Fix leaked
openThreadloops burning ~90% of cmux idle CPU (#8851) - Fix workspace-switch renderer freezes (#8793), reclaim hidden Ghostty renderer memory (#8998), and fix the Vault sidebar beachball at large session counts (#8680)
- Fix Vim Mode cursor and selection rendering (#8995)
- Fix TextBox IME composition rendering (#8688)
- Fix zsh prompt wrap spacer lines by letting Ghostty own prompt layout (#8964)
- Fix Settings and main window zombies under AeroSpace (#8513) -- thanks @fml09!
- Fix a Debug-build crash on macOS 26.5 from non-finite sidebar divider coordinates (#9156) -- thanks @oscarbrey!
- Fix Mermaid diagrams double-scaling under viewer zoom (#8914), restore the focused-read indicator after a surface-scoped mark-read (#8927), keep Pi launch arguments when resuming a restored session (#8912), and import appearance at Settings store init instead of live-applying it (#8913) -- thanks @ejc3!
- Notify only after the Pi agent settles (#8574) -- thanks @mrohan-sq!
- Tear down remote daemon PTY sessions once (#8643) -- thanks @ejc3! -- and support
respawn-panein the Go relay tmux compatibility layer (#8660) -- thanks @bencollins2! - Exclude
.attribfrom watched filesystem events (#8659) -- thanks @varomorf! - Preserve surface IDs in workstream events (#8703) -- thanks @revanthreddy-hai!
- Stop the sidebar PR poller from re-downloading every repo's full PR list on each poll (#8521) -- thanks @joshfree!
- Restore Codex (#9370), Kimi Code (#8584), Grok (#9382), and Pi (#9399) sessions across relaunch, and stop duplicate agent resumes (#8619)
- ssh-tmux: fix focus after single-pane promotion (#9020), named-key encoding for the remote
TERM(#9273), and terminal replies leaking into reattached panes (#9272); fix workspace shortcuts from hosted tmux terminals (#8621) - Fix SSH relay deadlock after app restart (#9105), stale SSH workspace connection status (#9085), remote PTY
PATHinherited from cmuxd (#8677), and login-shell resolution before terminal spawn (#8681) - Fix sidebar reopen cutoff render (#8626), row clipping during height-changing reorder (#9189), idle layout livelock (#8532), and status URL clicks (#8528)
- Fix Dock paste routing to the selected terminal (#9112), Dock terminal working-directory inheritance (#8691), and Cmd-click link opening in Dock terminals (#8594)
- Browser: fix navigation for terminal-wrapped URL pastes (#8601), automation recovery after load failures (#8548), partial blank screenshots (#9281), and blurred Google Sheets canvas rendering (#8697)
- Fix inline code escaping in the Markdown viewer (#9274) and composer attachment thumbnail re-rasterization (#8817)
- Fix renderer presentation for background-created surfaces (#8540) and stale semantic prompts duplicating inline TUI frames (#9275)
- Fix workspace group anchor numbering (#9176); closing a group's anchor keeps the group instead of scattering its members to the root (#8925)
- Preserve workspace IDs across session restore (#8695) and restored resume workspace titles (#8687); fit same-display restored windows to visible bounds (#8675)
- Fix a
DispatchWorkItemchain stack overflow (#8615) and subprocess pipe descriptor leaks (#9187) - iOS (beta): preserve terminal input ordering under fast typing (#8682), scroll position across mid-stream verified replays (#9032), and keyboard focus after the photo picker (#9287) -- thanks @azooz2003-bit!
- iOS (beta): fix a startup crash from sentry-init racing environ mutation (#9238) and TestFlight crash paths (#9034)
- iOS (beta): fix workspace-list scroll stutter from live updates (#9139), and make the notification feed scroll fast with thousands of items (#9141) -- thanks @azooz2003-bit!
Native AppKit Sidebar
The workspace sidebar is rebuilt on native AppKit rows and is now on by default: faster scrolling in large workspace lists, precise hover and selection, and full fidelity with your sidebar settings.
Browser Design Mode
Visually edit pages inside the browser pane, annotate elements, and hand the annotated changes straight to an agent to implement.
Mouse Input for TUI Apps
cmux now forwards mouse input to TUI applications running in the terminal, so tools that own the pointer respond to clicks, drags, and scrolls as expected.
Stability and Performance
Codex YOLO mode and Pi sessions survive restore, typing latency from title churn is fixed, sidebar scroll livelocks and popover resize crashes are gone, and remote ssh-tmux panes size and focus correctly.
- Native AppKit workspace sidebar, now on by default: faster scrolling, precise hover and selection, and full settings fidelity (#8270, #8433, #8366, #8390, #8415, #8432, #8450) -- thanks @azooz2003-bit!
- Browser Design Mode: visually edit pages in the browser pane, annotate elements, and hand the changes to an agent (#8034, #8393)
- Forward mouse input to TUI applications running in the terminal (#7759)
- Surface and workspace reorder shortcuts (#8080)
- Session content width setting, and the previous width ceiling is removed (#8222, #8338)
- Attach images to todos (#8117) -- thanks @azooz2003-bit!
- OpenCode: Fork Conversation from the tab context menu (#8140)
- Resize browser pane viewports (#8072)
- CLI:
cmux sshaccepts an initial remote command (#8439) - Share native SSH connections per host (#8308)
- Notify on fatal Codex turn errors (#8170)
- iOS (beta): files gallery with folders, previews, and a streaming viewer (#8287) -- thanks @azooz2003-bit!
- Preserve Codex YOLO mode across session restore and resume repair (#8133, #8045)
- Preserve Pi sessions after workspace restore (#7628) -- thanks @silouanwright!
- Fix Pi and OMP fork actions in tab context menus (#8173)
- Fix Cmd-click for soft-wrapped URLs (#8110)
- Fix typing latency from title churn (#8084, #8155)
- Fix a sidebar scroll layout livelock (#8211) and sidebar GitHub polling regressions (#8226, #8190)
- Replace per-row sidebar hover reconcilers with a single pointer owner (#8067) -- thanks @azooz2003-bit!
- Fix Dock split rendering and shortcut routing (#8142)
- Fix tmux mirror pane sizing and divider drag synchronization (#7996) -- thanks @ejc3!
- Fix new-surface targeting and tab rename for remote tmux panes (#8403, #8404); fix ssh-tmux lifecycle and window-focus routing (#8405, #8402)
- SSH: clear the auth marker after successful startup (#8410); fix the Ghostty SSH wrapper path in embedded app bundles (#8109)
- Coalesce terminal resizes during split-divider drags (#8240)
- Fix interaction paths in capped session panes (#8250)
- Fix automatic terminal top inset (#8168)
- Fix Files panel contrast across appearances (#8290)
- Fix inconsistent table border thickness (#8193)
- Fix a visible popover resize crash (#8115) -- thanks @azooz2003-bit! -- and update-popover resize reentrancy (#8195)
- Bound overflowing confirmation dialog content (#8296)
- Fix Settings shortcut display for legacy overrides (#8091)
- Browser: fix Space key handling (#8079), numeric eval formatting (#8077), and wedged automation recovery (#8094)
- iOS (beta): authenticated Iroh transport with cold-start retries and stale-session recovery (#7908, #8181, #8286, #8196, #8424) -- thanks @azooz2003-bit!
- iOS (beta): match terminal themes across chrome and live reloads (#7919)
- iOS (beta): smooth workspace-list scrolling with exact row heights (#8186); fix reconnect and build isolation (#8299) -- thanks @azooz2003-bit!
- Fix overflowed tab bar scrolling to the wrong place, right-edge tabs hiding their close buttons, and a misaligned active-tab indicator (#8071)
- Preserve the Claude Code permission mode when restoring, resuming, or forking a session, including interactively chosen auto-accept/plan/bypass modes; stop a one-word prompt after a boolean flag from being replayed on resume (#8070)
Saved Workspace Layouts
Capture the current split arrangement as a named layout, reopen it from the new-workspace menu anytime, and set a default layout that every new workspace starts from.
Fork Conversation
Right-click an agent terminal to fork the conversation into a new split, tab, or workspace, so you can explore a tangent without losing the original session.
Per-Monitor Window Memory
cmux remembers window position and size per monitor configuration and refits windows when displays change, so docking and undocking a laptop no longer scrambles your setup.
Stability and Performance
A coordinated memory-pressure response with automatic scrollback compression, fixes for macOS 27 launch crashes and SSH panes dying after sleep, runaway scrolling with high-resolution mice, and a Sparkle update that no longer kills running agents on macOS 26.
- Saved workspace layouts: capture the current split arrangement as a named layout, reopen it from the + menu, and set a default layout for new workspaces (#7414, #7354) -- thanks @azooz2003-bit!
- Fork Conversation from an agent terminal's context menu into a new split, tab, or workspace (#7259)
- Manual SSH reconnect: press Enter in a disconnected pane, or use the Reconnect Pane menu (#7250) -- thanks @0xJord4n!
- Remember and restore window position and size per monitor configuration (#7477) -- thanks @mxschmitt, and @kojitakemoto for the report!
- Rename workspaces inline by double-clicking their sidebar row (#7395)
- Per-pane Full Width Tab mode via the command palette or tab context menu (#7425) -- thanks @azooz2003-bit!
- Pane border color settings, including a distinct color for the active pane (#7239)
- Sleepy Mode: a menubar screensaver that keeps your Mac awake (#6740)
- Native Translate Selection in the terminal context menu (#7510) -- thanks @timothyliu!
- Automatic compression of cold terminal scrollback to reduce memory use (#7758)
- A coordinated memory-pressure response that reclaims hidden terminal renderers (#7496, #7050)
- Campfire agent support (#5813) -- thanks @NishantJoshi00!
- Ollama agent support: detection, turn notifications, and relaunch resume (#7907)
- Kimi Code hook integration via
cmux hooks setup(#7201) -- thanks @liruifengv! - Updated Pi hook integration and closed oh-my-pi (omp) gaps (#7008, #7568)
- Per-category agent notification settings, gated on genuinely background work (#7129)
- Workspace notification submenu (#7263) and a
notifications.suppressOnlyFocusedSurfacesetting (#6893) - Bridge Claude Code's PushNotification tool into cmux notifications (#7385)
- Durable tab deep links that survive app restarts (#5769)
- Terminal tabs show the active agent's brand icon in a static slot (#7607)
- Browser: HTTP basic-auth prompt (#2500) -- thanks @lucaspiritogit!
- Browser: proceed-anyway option on invalid TLS certificates (#3711) -- thanks @deftdawg!
- Browser: Arc cookie import (#7224)
- TextBox (beta): configurable submit actions, and the last-used mode is remembered (#6656, #8008)
- Smooth Vim and Emacs navigation in file viewers (#7921)
- Zoom shortcuts for text file previews (#7157) -- thanks @Nauxie!
- Open
file://links from the terminal in the OS default app (#7122) - Entrypoints to create empty workspace groups (#7061) -- thanks @azooz2003-bit!
- CLI:
cmux ssh-session-attach --splitanchors in the target workspace (#7376); shorter unknown-command errors with suggestions (#7329)
- Settings opens in a reliable AppKit-owned window with modern chrome and a restored sidebar toggle (#7783, #8015, #8047)
- Remote tmux mirroring (beta) mirrors into the current window by default;
--new-windowkeeps a dedicated window (#7264) -- thanks @0xJord4n! - Remote tmux mirroring (beta): mirror sessions as native workspaces (#7406); exact feed-forward pane sizing, live pane headers, and an active-pane indicator (#7315) -- thanks @ejc3!
- Remote tmux mirroring (beta): a friendly install hint when the remote has no tmux (#7368), and a clear error below the tmux 3.2 minimum (#6755) -- thanks @mxschmitt!
- Follow live macOS light/dark switches in system appearance mode (#7206) -- thanks @Diabl0269, and @gupsammy for the report!
- Updates now install the newest available version at install time (#6853); Sparkle 2.9.3 stops auto-update from killing running agents on macOS 26 (#6678)
- The new-workspace (+) dropdown is reorganized into explicit sections (#7709)
- Notification popover leads with workspace names (#7769); the sidebar shows more notification content (#7965)
- Suppress codex's blocking startup update prompt on cmux-driven resumes (#7222)
- Continue a handed-off Safari sign-in in the default browser (#7805); allow account switching after native sign-in (#7146)
- Move CLI socket command handling off the main thread (#7357)
- Open local HTML previews without stealing focus (#6717)
- Preserve plain
ANTHROPIC_MODELinside cmux so Opus keeps the Max-plan 1M window (#7059)
- Fix runaway scrolling with high-resolution mice (#6449) -- thanks @samuelpatro!
- Forward right/middle mouse drags to the terminal so tmux menus work (#7319); honor OSC 22 mouse-cursor-shape requests (#7318)
- Fix light-theme white-on-white terminal text (#6896)
- Fix malformed
LC_ALLcollapsing the spawned-shell locale to C (#7183) -- thanks @artisticmedic for the report! - Fix zsh shell integration printing
file existsunder noclobber (#6815) -- thanks @boolafish for the report! - Emit a fish-safe resume cwd-guard (#6328); pin BSD
ncfor shell-integration socket sends (#7789) - Allow Cmd-Space IME switching in the workspace description editor (#6956)
- Rescue split/new-tab cwd inheritance while a resumed agent holds the pane (#7165)
- Prevent hibernation from reaping live agent processes (#6576)
- Fix agent hooks misrouting notifications to the focused tab (#7228) -- thanks @wowpotato!
- Keep Claude hooks authorized after socket rebinds (#7953) -- thanks @belliedmonkey for the report!
- Claude hook acks are silent JSON instead of a visible OK block in Claude Code (#7963) -- thanks @cameronsjo!
- Resolve agent notification targets from live identity at delivery time (#7946)
- Fix the Claude shim mutual exec loop (#7010); fix oh-my-zsh agent auto-resume (#7089)
- Fix garbled Claude Code TUI in
cmux sshremote workspaces (#6831) - Persist Claude transcript lookups across agent-index reloads (#7350); keep forkable sessions with stale pids (#6803)
- Fix SSH workspaces not reattaching after the Mac sleeps (#7987) -- thanks @petrcernansky for the report!
- Preserve one-shot SSH output after disconnect (#7914)
- Fix
cmux sshagainst hosts configured with RemoteCommand/RequestTTY (#7359) - Fix SSH PTY input loss and reordering at reconnect seams (#7717); stop the reattach loop aborting after one retry (#7711); fix a cleanup reconnect storm (#7741)
- Fix the stale "Connected" badge on dead remote SSH workspaces (#7828); fix remote SSH workspace cwd tracking (#6747)
- Remote tmux: open the shared ControlMaster before the attach burst so all sessions mirror (#6839)
- Fix macOS 27 launch crashes from SF Symbol rasterization (#6890, #6728) -- thanks @azooz2003-bit, and @vk1356 for the report!
- Fix blank app icon rendering on macOS 15 (#7729); restore titlebar icon sizing (#8039)
- Fix native fullscreen being unreachable on multi-monitor setups (#6830) -- thanks @xoxouser00 for the report!
- Fix notification-list layout thrash on launch (#6886) -- thanks @sedghi for the report!
- Guard the workspace sidebar against layout re-livelock (#6870) -- thanks @angelobruv for the report!
- Never park the main thread waiting on a socket callback (#6860)
- Bound app termination with a force-exit watchdog (#6837) -- thanks @spaceshipmike for the report!
- Fix a tab bar relayout feedback loop (#7997) -- thanks @nkbai for the report!
- Fix workspace switch latency from hibernation portal reconcile (#7236, #7231)
- Fix the minimal mode toggle relayout hang (#7076)
- Fix sidebar hangs from sustained process-title churn and hover lifecycle reentry (#7754, #8007)
- Fix the sidebar scroll render storm and decouple scrolling from full-window relayout (#7117, #6801)
- Preserve sidebar scroll when closing workspaces (#7594) -- thanks @azooz2003-bit!
- Fix notification scroll restoration (#7901)
- Fix tab icon shift during pane resize (#7637); fix stale terminal agent tab icons (#7740); restore terminal-only tab icons (#7824)
- Fix workspace color picker hue drift (#6762); fix diff viewer transparency (#6671)
- Fix Cmd+I breaking italics in browser text editors (#6862); fix Canvas keyboard shortcut routing (#6704) -- thanks @azooz2003-bit!
- Fix workspace number shortcut rebinding (#5616)
- Make pane-divider resize cursors easier to hit and stop cursor bleed-through from occluded windows (#7816)
- Fit main windows after display topology changes (#7308)
- Reassert Ghostty focus before physical input (#7278)
- Fix workspace group drag-drop intent (#6724)
- Run file explorer git status without optional locks (#7173); cache git dirty snapshots between watcher events (#6795); cut steady-state sysctl burn from process snapshots (#7349)
- Stabilize sidebar ports across transient scan misses (#7952)
- Route browser-pane file drops by intent so they never silently become previews (#7634)
- Fix browser downloads from subframes (#6756); fix mTLS client certificate challenges (#7040)
- Wire PDF preview download and print toolbar actions (#4266)
- Fix omnibar suggestion clicks falling through to the page (#7468); don't let an unfocused omnibar submit on physical Enter (#6818) -- thanks @LanceOlsen for the report!
- Fix browser panes stuck black after a failed discard-restore (#7533)
- Keep loopback bypass for
*.localhostunder "Exclude simple hostnames" (#6827) - Fix Traditional Chinese (zh-Hant) showing as Simplified (#7698)
- iOS (beta): view artifacts referenced in agent sessions (#7674) -- thanks @azooz2003-bit!
- iOS (beta): GitHub sign-in (#7493); account deletion and legal links (#7645) -- thanks @azooz2003-bit!
- iOS (beta): arbitrary terminal themes (#6664)
- iOS (beta): native drag & drop in the workspace list and create-workspace-in-group (#7384) -- thanks @azooz2003-bit!
- iOS (beta): show which features a Mac update unlocks when the connected Mac is older (#7960) -- thanks @azooz2003-bit!
- iOS (beta): full-height terminal output and render/viewport fixes (#7071, #7150, #7172, #7175) -- thanks @azooz2003-bit!
- iOS (beta): optimistically scroll to bottom when typing while scrolled up (#7196)
- iOS (beta):
cmux mobile set-fontlive-resizes the mirrored terminal (#6674)
Global Font Magnification
Scale the entire cmux interface up or down with a single magnification control, not just the terminal font.
Remote tmux Mirroring (Beta)
Mirror a remote tmux session over SSH using -CC control mode, so remote windows show up as native cmux tabs that stay in sync with renames and reorders.
Browser and Diff Viewer Polish
Browser panes get a Chrome-style audio-playing indicator and a hard-refresh shortcut. The diff viewer adds a searchable, uncapped branch-base picker with smart defaults and a toolbar that never overlaps at small widths.
Stability and Performance
Fixes for a sidebar lag regression, a vertical-sidebar tab-switch crash, a ~100% CPU re-render loop on bundled extension sidebars, blank SF Symbol controls on macOS 27, terminal content duplication on resize, and quit hangs from analytics flushing.
- Remote tmux mirroring over SSH using
-CCcontrol mode, in beta (#5553) -- thanks @robertnisipeanu! - Global font magnification to scale the whole interface (#6554)
- Right-sidebar custom sidebar tabs (#6430)
- Chrome-style audio-playing indicator on browser panes (#6517)
- Browser hard-refresh shortcut (#6256)
- Clear Screen (Keep Scrollback) command, bound to Cmd+Shift+K (#6139)
- Configurable terminal scroll-speed multiplier via
terminal.scrollSpeed(#5671) -- thanks @RubiconPerform! - Open the selected file from the keyboard in the file explorer (#6001)
- One-step grouped workspace creation (#6657)
- Searchable, uncapped diff viewer branch-base picker with smart defaults (#6484) -- thanks @azooz2003-bit!
- Mark workspaces read/unread and clear notifications from the workspace group menu (#6535) -- thanks @azooz2003-bit!
- Profiling capture action with a live progress window (#6433, #6440)
cmux remotesCLI to manage device-registry routes (#6096)- Flag "Needs input" for blocked AskUserQuestion and ExitPlanMode prompts under
--dangerously-skip-permissions(#6608) - iOS (beta): on-device voice dictation in the composer (#6197)
- iOS (beta): image attachments in the composer (#6102)
- iOS (beta): Return key on the terminal accessory bar (#6101)
- iOS (beta): mark workspaces read/unread from the terminal menu, with an unread-count badge on the back button (#6362, #6350)
- Terminal and browser surface tabs hug their content instead of stretching to a fixed width (#6653)
- Prioritize full command-palette title matches over partial ones (#6498)
- Reduce UI lag from Settings, sidebar, git, and browser churn (#6260) -- thanks @azooz2003-bit!
- Evict hidden browser WebViews under memory pressure and defer restored WebViews until visible (#6585, #6508)
- Gate idle pollers to the active workspace (#6583)
- Diff viewer toolbar stays responsive and never overlaps at small widths (#6550) -- thanks @azooz2003-bit!
- Allow
.m4rfiles as notification sounds (#6635) - iOS (beta): collapse workspace folders per device (#6666)
- Fix a sidebar lag regression from v0.64.16 by cutting per-row font-modifier and pin-state work (#6613)
- Fix the Codex sidebar status lifecycle and stale Claude notification sidebar status (#6609, #6473)
- Fix sidebar tab selection highlight timing (#6627)
- Fix Cmd+T opening in home after an agent-resume session restore (#6621)
- Fix explicit surface routing for read-screen and send (#6605)
- Fix stale surface-to-panel rebinding and stale agent-resume executable paths (#6581, #6582)
- Fix terminal input after a window key restore (#6518)
- Fix the Cmd+grave show/hide global hotkey (#6477)
- Fix vim copy-mode cursor, V/Y selection, and pasteboard (#6221)
- Fix copy-on-select parity with Ghostty (#6200)
- Fix the crash-diagnostic window restore (#6596)
- Fix a tab-switch crash in the vertical sidebar (#6340)
- Fix a ~100% CPU re-render loop when selecting a bundled extension sidebar (#6341)
- Fix blank SF Symbol controls on macOS 27 (#6396)
- Fix the audio indicator audibility signal (#6566)
- Fix browser download trigger parity (#6258)
- Recover Settings opened from offscreen frames, and stop a closed Settings window from reappearing (#5806, #6193)
- Fix title-churn beachball in transcript adoption and sidebar rows (#6460)
- Restore the pane header title after a terminal restart (#6333)
- Recover a blank Markdown viewer pane after dragging it to another column (#6331)
- Vault sidebar always offers "Show more" so capped folder sections stay reachable (#6327)
- Fix the working directory after session-restore resume for Claude and other agents (#6458, #6205)
- Fix Claude Code 2.1.183 agent-team teammates opening split panes again (#6499)
- Preserve Claude Teams restore flags (#6242)
- Fix right-sidebar surface shortcut spam routing (#6472)
- Fix Dia browser import profile detection (#6478)
- Fix zsh aliases after the agent return shell (#6515)
- Fix settings search for auto-naming and broaden fuzzy settings-search matching (#6201, #6196)
- Fix terminal focus retry after a tiny responder handoff (#6359)
- Avoid DevTools teardown during redock (#6559)
- Fix hidden popover relayout and reduce hit-test CPU during SwiftUI updates and pointer movement (#6589, #6592)
- Cache the settings search index per runtime (#6591)
- Move the open-diff baseline lookup off the main thread (#6497)
- Fix the macOS notification fallback identity (#6000)
- Fix a remote PTY restore probe reply leak (#6070)
- Fix OpenCode bunfs worker autoresume and OpenCode resume after a TUI-settings capture (#6680, #6397)
- Fix notification jump-focus for nested tabs (#6416)
- Remove a sidebar rows measurement that re-livelocked layout at scale (#6188)
- Prevent quit hangs from analytics flushing (#6232, #6417) -- thanks @azooz2003-bit!
- Reduce Sentry CLI broken-pipe crashes and hangs (#6254) -- thanks @azooz2003-bit!
- Release closed macOS helper windows (#6368) -- thanks @azooz2003-bit!
- Fix canvas tab hover hit-testing, focus canvas panes from terminal body clicks, and fix canvas zoom-animation snap at low zoom (#6555, #6456, #6538) -- thanks @azooz2003-bit!
- Avoid nested quit-confirmation modal loops (#6461) -- thanks @azooz2003-bit!
- Reduce redundant panel title update work (#6552) -- thanks @Eridanus117!
- Fix a QuickLook preview crash on a deactivated QLPreviewView (#6402) -- thanks @thiveeiyan!
- Fix terminal content duplication on window resize (#6386) -- thanks @mvanhorn!
- Stop the main window drifting down on sleep/wake (#6305) -- thanks @sergej-koscejev!
- Fix stale cmux ssh pane resize by reconciling remote PTY size after arming SIGWINCH, and fix resize with SSH ControlMaster (#5989, #6432) -- thanks @kylejcaron!
- Sync remote tmux session renames to the mirror workspace title, and fix session discovery under a non-UTF-8 remote locale (#6602, #6568) -- thanks @mxschmitt!
- Fix the cmux ssh-tmux socket path being too long for AF_UNIX (#6465) -- thanks @mxschmitt!
- Fix remote-tmux mirror buffer truncation on a cross-DPI display move, and restore the bonsplit pointer so ssh-tmux tab reorders sync to tmux (#6393, #6438) -- thanks @robertnisipeanu!
- Merge user
--settingsinto injected hook settings in the claude wrapper (#5388) -- thanks @choi88andys! - Bound iOS pairing attempts and fix the Pair iPhone window (Cmd+W, sizing, layout, QR padding, failure copy) (#6495, #6038)
- iOS (beta): fix native pairing sign-in failures (#6457) -- thanks @azooz2003-bit!
- iOS (beta): fix the unread count badge contrast, stop pausing background music on text submit, and sustain hold-to-repeat Backspace (#6524, #6290, #6299)
- Fix the changelog title clipping (#6425)
- Remove the high-memory pane warning UI (the triangle indicator and popover); the underlying guardrail engine stays (#6619)
AI Auto-Naming for Workspaces and Tabs
Opt in to have cmux name your workspaces and tabs from the agent conversation running inside them, so a wall of sessions stays readable at a glance.
Per-Workspace Environment Variables
Set environment variables on a workspace and every shell it spawns inherits them, so per-project configuration no longer has to live in your shell profile.
Left and Right Option as Alt
macos-option-as-alt now distinguishes the left and right Option keys, sending sided modifier bits to the terminal. One of our most-requested terminal fixes.
iOS Beta Polish
A redesigned workspace list with groups, unread dots, and last-activity previews; smoother terminal scrolling; cross-device notification dismiss-sync with an authoritative unread badge; and a TestFlight push-notification fix.
- Opt-in AI auto-naming of workspaces and tabs from your agent conversations (#5547) -- thanks @mvanhorn!
- Per-workspace environment variables inherited by every shell in the workspace (#6116)
- Configurable file explorer double-click action: preview, default editor, or preferred editor (#5827)
- Setting to hide modifier shortcut hints (#6071)
- Configurable Dock max width (#4385) -- thanks @sort2f for the report!
- Customizable stable window title templates (#6059) -- thanks @digijoebz for the report!
- Diff language highlighting aliases (#6076)
- Expose each workspace's custom title to the control socket for scripting (#6013)
- iOS (beta): workspace list with groups, unread dots, last-activity previews, and a shared Unread filter (#5726)
- iOS (beta): workspace row actions (#6022) -- thanks @azooz2003-bit!
- iOS (beta): Shift key on the terminal keyboard toolbar (#6104)
- Experimental freeform 2D canvas layout for workspace panes, still in progress (#5987) -- thanks @azooz2003-bit!
- macos-option-as-alt now honors left and right Option independently, sending sided modifier bits to the terminal (#6007) -- thanks @1nto5, @ucan-lab, @MrSpock, @Sancerro, @dreasan, @alceal, @lejahmie, and @tofunori for the reports!
- Gate remote SSH port scanning on the sidebar ports setting (#6136) -- thanks @Fail-Safe for the report!
- Polish the experimental canvas minimap navigation (#6105) -- thanks @azooz2003-bit!
- Make Codex agent hooks fire-and-forget so they never block the session (#6110)
- Detect live claude/codex processes so hook-less agent sessions stay fork-able (#6133)
- Stagger restored terminal surface spawns to smooth session restore (#6149)
- Reclaim offscreen terminal renderer GPU memory (IOSurface) non-destructively (#5857)
- iOS (beta): smoother terminal scrolling with local scrollback prefetch and faster scroll rendering (#6067, #6035) -- thanks @azooz2003-bit!
- iOS (beta): cross-device notification dismiss-sync and an authoritative unread badge (#5916)
- iOS (beta): local-first, offline-safe sign-out (#5776)
- iOS (beta): require a matching email for pairing (#6028)
- Fix terminal top-row mouse event routing, including minimal-UI hit testing (#4391, #6073) -- thanks @colangelo and @edouardp for the reports!
- Restore OSC 11 pane-local backgrounds (#5997) -- thanks @fkchang for the report!
- Fix the macOS 27 SF Symbol rasterization crash (#5999) -- thanks @matheustimbo and @joseluislucio for the reports!
- Fix a stale Metal drawable after terminal layer realization (#6057) -- thanks @robertnisipeanu for the report!
- Fix terminal arrow key routing for TUI model selection (#6002) -- thanks @wo4wangle for the report!
- Fix the Cmd+T working directory after session restore (#6055) -- thanks @WangRouna for the report!
- Preserve Pi sessions across workspace restore (#5607) -- thanks @bjesuiter for the report!
- Fix top-right titlebar drag chrome (#6003) -- thanks @dbachelder for the report!
- Fix the OpenWrt BusyBox remote platform probe (#6056) -- thanks @Fail-Safe for the report!
- Fix stale remote connected state after a proxy disconnect (#4513)
- Surface a browser fallback when Safari sign-in hangs (#6113)
- Fix the browser omnibar Return submitting stale text during fast typing (#5923)
- Avoid mirroring web proxies as CONNECT (#5959)
- Fall back to SSH when the Cloud VM attach endpoint is unavailable (#6079)
- Fix sidebar row-height layout feedback (#6111)
- Kill a sidebar LazyVStack layout livelock (#6033) -- thanks @azooz2003-bit!
- Fix unexpected menu-bar-only activation policy (#6068)
- Fix Mermaid diagrams scaling in the markdown viewer zoom (#6072)
- Honor Focus / Do Not Disturb for the fallback notification sound (#5651) -- thanks @Reebz!
- iOS (beta): fix compact workspace row navigation by removing redundant tap gestures (#6124) -- thanks @azooz2003-bit!
- iOS (beta): reduce workspace row swipe contention (#6064) -- thanks @azooz2003-bit!
- iOS (beta): fix a workspace swipe-delete confirmation crash (#6051) -- thanks @azooz2003-bit!
- iOS (beta): preserve the email code sign-in nonce (#6097)
- iOS (beta): fix TestFlight push notifications by exporting the production APNs entitlement (#6131)
Review Comments in the Diff Viewer
Comment on changed lines in the diff viewer, persisted per repo. Attach the comment set to a terminal TextBox to hand structured review feedback straight to an agent.
Rebindable Shortcuts with When-Clauses
The Select Workspace and Surface 1…9 shortcuts (⌘1-9) can finally be rebound, and every shortcut supports VS Code-style `when` context clauses so a binding only applies where you want it.
Custom Sidebars, In-Process by Default
Custom sidebars now render in-process by default with a dedicated Settings section, instant toggling, live-resize repaint, and example sidebars to start from.
iOS Beta: Composer, Toolbar, Multi-Mac
An iMessage-style terminal composer with per-terminal drafts, a customizable terminal toolbar, a multi-Mac host switcher, clipboard image paste, and notification forwarding only while you're away from the Mac.
Stability Under Load
Fixes for the macOS 26 launch hang, a macOS 27 beta launch crash, SSH typing lag, sidebar livelocks with many workspaces, white-on-white light themes, and a UI freeze when closing tabs.
- Review comments in the diff viewer: comment on changed lines, persisted per repo, and attach the comment set to a terminal TextBox to hand to an agent (#5768)
whencontext clauses for keyboard shortcuts with VS Code-style context keys and operators, and the Select Workspace/Surface 1…9 shortcuts (⌘1–9) are now rebindable (#5196)- New Browser Workspace command (Option+Cmd+N) (#5926)
- Browser view actions in the CLI (react-grab, devtools, console, focus-mode, zoom, history) with a more reliable automation lane (#5766, #5778)
cmux window displayto place a window on a named display (#5804) -- thanks @azooz2003-bit!- Workspace group commands in the cloud CLI relay (#5856) -- thanks @azooz2003-bit!
- Fish shell integration (#5678)
- React and Solid agent session panels (#4429)
- iOS (beta): iMessage-style terminal composer with inline send and per-terminal drafts, plus a View as Text sheet for copying terminal output (#5876, #5875)
- iOS (beta): customizable terminal toolbar with custom actions and reorderable built-ins, on a redesigned default layout (#5510, #5579, #5532)
- iOS (beta): multi-Mac host switcher with a hierarchical device tree, workspaces from all Mac windows, and rename/pin from the phone (#5513, #5648, #5565, #5512)
- iOS (beta): paste images from the phone clipboard into the terminal (#5546)
- iOS (beta): first-run onboarding, Tailscale-off detection, actionable pairing failures, cancellable sign-in, and pull-to-refresh on the workspace list (#5655, #5714, #5722, #5713, #5728, #5654)
- iOS (beta): early browser panes (WKWebView) and a Send Feedback flow (#5652, #5653)
- Custom sidebars render in-process by default, get a dedicated Settings section, remount instantly on toggle, and repaint live during resize, with new example sidebars to start from (#5867, #5864, #5895) -- thanks @azooz2003-bit!
- Terminal notifications forward to the iPhone only while you're away from the Mac (#5912)
- Slimmer pairing QR codes that scan faster, with Copy IP/Port and no expiry (#5727, #5872)
- The Mac pairing window shows a connected state when the iPhone attaches (#5542, #5795)
- Crash reports scrub file paths, PII, and secrets before sending (#5598)
- Webview assets are split per surface so panes load less JavaScript (#5613)
- Fix the app hanging at 100% CPU on launch on macOS 26 from a FileExplorer SwiftUI update loop (#5786, #4937) -- thanks @kevinsslin, and @haoranaaa for the report!
- Fix a launch crash on the macOS 27 beta and unblock Xcode 27 builds (#5670) -- thanks @matheustimbo!
- Fix SSH typing lag with async PTY writes (#5594) -- thanks @lleewwiiss!
- Fix light themes rendering white-on-white terminals (#5826) -- thanks @abdullahnauman2 for the report!
- Hide the sidebar scrollbar when content fits and fade the overlay knob when idle (#4767, #5846, #5955) -- thanks @yigitkonur for the report!
- Fix recurring main-thread livelocks with many workspaces and agent sessions, and a UI freeze when closing tabs (#5708, #5859, #5673, #5669)
- Cmd-click links inside fullscreen TUIs (Claude, Codex) now open in cmux's browser instead of the system default (#5406) -- thanks @denysshnurenko for the report!
- Fix OSC 8 Cmd-click hyperlinks in terminal panes (#3580)
- Surface needs-input attention (sidebar status, bell, tab elevation) for blocking PermissionRequest hook decisions (#5313) -- thanks @Dukeman330 for the report!
- Fix resumed Claude sessions dropping cmux hooks when
claudedoesn't resolve to the wrapper (#5721) -- thanks @Lipdog for the report! - Preserve user Claude settings on resume (#5661)
- Fix forked Claude sessions restoring the parent session after a cmux restart, and restore missing Fork Conversation entries (#5910, #5937)
- Recover session restore from a corrupt snapshot via the rolling backup (#5914)
- Keep Codex permission hooks non-blocking (#5507)
- Browser: fix the context menu opening the wrong link, wrong image download filenames, and loopback URLs hitting the system proxy on local workspaces (#5780, #5938, #5915)
- Fix a browser keyDown stack-overflow crash (#5899) -- thanks @azooz2003-bit!
- Fix crashes from key-routing replay loops in the find overlay and browser (#5755, #5891)
- Fix the Find pane for same-directory workspaces (#5956)
- Stop SSH auto-reconnect when the host is unreachable and add a manual Reconnect control (#5767)
- Keep remote shell startup responsive (#5695)
- Stop titlebar elements shifting when toggling the sidebar (#5707) -- thanks @azooz2003-bit!
- Localize package display strings missing from the app catalogs (#5829) -- thanks @azooz2003-bit!
- Clearer updater errors when the launchd agent install fails, with a manual-download fallback (#5760) -- thanks @azooz2003-bit!
- Retain the Settings window so it reliably reopens (#5801) -- thanks @azooz2003-bit!
- Fix the diff viewer loading state showing gray instead of the terminal theme (#5631)
- Fix the inline VS Code command palette and WebSocket startup (#5595)
- Fix sidebar Shift-click range selection after a no-op drag (#5601)
- Keep pinned workspaces inside their group, and fix dragging grouped workspaces above their group (#5541, #5612)
- Fix sidebar status pills for newly created workspaces (#5662)
- Don't hijack ZDOTDIR when the bundled shell-integration bootstrap is missing (#5773)
- Fix memory growth from retained publish responses and event-stream allocations (#5664)
- Reduce background CPU from process polling and browser-availability checks (#5759, #5744)
- iOS (beta): park notification-tap deep links until the workspace can be opened, fix a false-fire render watchdog replay loop, cap the restoring-session wait for stale Macs, and localize push notification strings (#5927, #5869, #5564, #5519)
iPhone Companion App (Beta)
Pair an iPhone with your Mac from the new Mobile Connect window and attach to your terminals from your phone, with opt-in forwarding of terminal notifications. The iOS beta ships on TestFlight as cmux BETA.
Cross-Window Workspace Drag
Drag a workspace out of one window's sidebar and drop it into another window's sidebar to move it, including grouped workspaces.
Out-of-Process Custom Sidebars
Custom sidebar extensions now run in their own process with an isolated interpreter, so a broken sidebar can't hang or crash cmux, and the interpreter covers a broader set of SwiftUI primitives.
Browser Polish
The omnibar selects the whole URL on the first focusing click (Chrome parity), browser chrome scales with the tab bar font size, a typing beachball with large histories is fixed, and hidden panes no longer stop actively-playing audio or video.
Agent Session Fixes
Claude resume keeps cmux hooks attached so notifications and status tracking survive resumes, Agent Hibernation works for node-backed Claude sessions, and Codex resume preserves CODEX_HOME and pane order.
- iPhone companion app (beta): pair an iPhone from the new Mobile Connect window (also in the command palette) and attach to your Mac's terminals from your phone, with a configurable pairing port and opt-in forwarding of terminal notifications; the iOS beta ships on TestFlight as cmux BETA (#5079, #5493, #5489, #5518)
- Drag a workspace into another window's sidebar to move it between windows, including grouped workspaces (#5399)
- Sign In and Sign Out commands in the command palette (#5529)
- OMP agent hook integration with notifications and session restore via
cmux hooks omp(#5413) -- thanks @joshrzemien!
- Custom sidebar extensions now run out-of-process with an isolated interpreter, so a broken sidebar can't hang or crash the app (#5294, #5382) -- thanks @azooz2003-bit!
- Broader SwiftUI primitive coverage in the custom sidebar interpreter (#5275) -- thanks @azooz2003-bit!
- Browser omnibar: the first click that focuses the address bar selects the whole URL, later clicks place the caret (Chrome parity) (#5462, #5352)
- Browser chrome (omnibar font and toolbar icons) scales with the tab bar font size (#5464)
- Sidebar workspace group headers scale with the sidebar font size (#5401)
- Agent Hibernation defaults to a 5-second idle window when enabled (#5449)
- Tighter fuzzy filtering for skill suggestions in the terminal textbox (#5348)
- Keep actively-playing audio and video in browser panes alive when the pane is hidden (#5412, #5441)
- Fix a typing beachball in the browser omnibar with large browsing histories (#5397)
- Fix the main window refusing to resize narrower than its current width (#5474)
- Fix the sidebar close button hidden under wrapped workspace titles (#5488)
- Fix notification sound selection so the picker previews the selected sound and notifications play it (#5480)
- Restore the menu bar icon dropdown menu on click (#5451)
- Fix OSC control sequences (e.g. terminal background color) printed as literal text when sent via
cmux send(#5509) - Fix native Claude resume dropping cmux hooks, so notifications and status tracking keep working on resumed sessions (#5430)
- Fix Agent Hibernation for node-backed Claude sessions (#5433)
- Codex resume hardening: keep restored surfaces from jumbling and preserve
CODEX_HOMEso non-default Codex homes resume correctly (#5351) - Fix Cmd +/- zoom in the browser and Markdown viewer on non-US keyboard layouts (#5394)
- Preserve syntax highlighting on changed lines in the diff viewer (#5415)
- Fix a stale group name in the window title bar after renaming a workspace group (#5408)
- Fix the Dock sidebar not rendering after closing and reopening it (#5437)
- Fix OMO subagent pane respawn through the tmux compatibility shim (#5465) -- thanks @leodiegoo for the report!
- Reduce sidebar git activity by coalescing repeated metadata probes (#5402)
Browser Focus Mode
Browser panes get a focus mode that strips away the surrounding chrome so a single page can take over the pane while you read or work in it.
SSH Agent Forwarding
`cmux ssh` now forwards your local SSH agent, so remote sessions can use your local keys for git pushes and further hops without copying private keys onto the remote.
Vibe-Codable Custom Sidebars (Beta)
Build your own sidebar with a runtime Swift interpreter, behind the Beta Features flag. Edit the sidebar source, validate it from the CLI, and reload it live without rebuilding the app.
Browser Mouse Back & Forward
The browser now responds to the dedicated back and forward buttons on a mouse, so side-button navigation works the way it does in a normal browser.
Major Stability & Performance Fixes
Fixed a settings-observation leak that grew the app to 4.4 GB over a day, a browser render loop burning ~39% of the main thread on every CoreAnimation commit, a WebKit crash after sleep/wake, a 100% CPU hang in the Markdown and file-preview editor, and child processes launching under Rosetta on Apple Silicon.
- Browser focus mode (#4573)
- SSH agent forwarding for
cmux ssh, so remote sessions can use your local SSH keys (#5301) - Vibe-codable custom sidebars: a runtime Swift interpreter for building your own sidebar, behind a Beta Features flag, with CLI validation and live reload (#5254, #5327) -- thanks @azooz2003-bit!
- Browser mouse back and forward button support (#5197)
- Persisted word-wrap setting for the file editor (#5247)
- "Open Current Directory in Devin" command (#5288) -- thanks @MaxiAschenbrenner!
- Live status reporting in the Amp Neo session plugin, driving the cmux tab status bar (#5235) -- thanks @HamptonMakes!
- Anchor the textbox autocomplete to the cursor (#5021)
- Add a font-size popover to the Markdown viewer controls (#5168)
- Open group config files in your configured editor (#5250)
- Isolate browser WebKit process pools so one browser pane crashing no longer takes down the others (#4987)
- Move large scrollback read-text work off the main actor to reduce UI hangs (#5243) -- thanks @azooz2003-bit!
- Fix a settings-observation task leak that grew the app process to 4.4 GB over ~23h (#5310)
- Fix a browser pane render loop that re-navigated the WebView on every CoreAnimation commit (~39% main-thread CPU) (#5311)
- Fix a WebKit post-wake crash with sleep/wake-aware hidden-webview discard scheduling (#5315) -- thanks @azooz2003-bit!
- Fix the Markdown and file-preview text editor hanging at 100% CPU on click or drag-select by forcing a TextKit 1 stack (#5257)
- Stop cmux from launching child processes under Rosetta on Apple Silicon (#5306) -- thanks @CharlesWiltgen for the report!
- Recover terminal focus when the first responder is stranded in another window (#5296)
- Fix the browser address bar so a single click places a caret instead of selecting the whole URL (#5270)
- Fix copy-mode vim keys (j/k/h/l) swallowed under non-ASCII input sources (Korean, Japanese Kana, Zhuyin) (#5292) -- thanks @pstanton237!
- Fix terminal copy-mode cursor navigation (#5328)
- Fix terminal selection on mouse-up while the find overlay is open (#5335)
- Fix TextBox IME and input-source handling (#5340)
- Fix the macOS "wants to access data from other apps" prompt on agent session start and quit by moving the control socket out of Application Support (#5176)
- Fix Codex auto-resume emitting an invalid
-s disabledsandbox flag (#5276) -- thanks @taonetm7 for the report! - Fix agent session resume cd-ing into the wrong directory after a cwd drift, plus post-kill cwd handling (#5300, #5312)
- Fix restored cwd bindings after a reboot (#5307)
- Fix a stale sidebar git branch after cd-ing out of a repo into a non-git directory (#5279)
- Fix a TextBox teardown crash when toggling the sidebar background (#5317)
- Fix a workspace-close teardown hang (#5316) -- thanks @azooz2003-bit!
- Fix the workspace-group "Delete Group" context-menu action being a no-op (#5253)
- Fix the diff viewer showing a raw CLI error and beeping when there is no diff (#5252)
- Fix sidebar drag-and-drop frame collection with the lazy (virtualized) sidebar (#5325)
- Lazy-load file explorer roots to speed up opening the file tree (#5342)
- Fix Claude workflow resume transcript resolution (#5242) -- thanks @azooz2003-bit!
- Fix opening the remote SSH file browser (#5241) -- thanks @azooz2003-bit!
- Fix custom-sidebar extension discovery for tagged builds (#5267) -- thanks @azooz2003-bit!
- Fix Sparkle update packaging and Claude hook transcript scaling (#5202)
Diff Viewer Shortcut
Open the diff viewer with a keyboard shortcut, configurable and editable in Settings alongside every other cmux shortcut.
Markdown Viewer Zoom
The Markdown viewer gains font size and zoom controls, so you can scale rendered docs up or down without leaving the pane.
Feed Behind Beta Features
The Feed is now gated behind Beta Features and off by default, mirroring how the Dock is gated, so it only appears when you opt in.
Prompt & Remote SSH Fixes
Starship and other custom bash prompts no longer go static: the prompt bootstrap composes with your existing PROMPT_COMMAND instead of overwriting it. And `cmux ssh` now reports remote PTY allocation failures loudly instead of failing silently when a plain ssh would have worked.
Restored Sidebar Views & Scrollback Colors
The right-click sidebar view switcher and built-in views (Default Workspaces, Project Worktrees, and others) are back after a 0.64.11 regression. Restored session scrollback no longer keeps a previous theme's colors, fixing white-on-white history after a theme change.
- Fix Starship and other custom prompts going static in bash by composing the prompt bootstrap with the user's existing
PROMPT_COMMAND(#5187) -- thanks @xzjncu for the report! - Report remote PTY allocation failures loudly so
cmux sshno longer fails silently when remote PTY attach fails (#5186) -- thanks @windyslow for the report! - Fix a main-thread hang from focus-surface broadcast re-entrancy triggered by custom shortcuts (#5108) -- thanks @wzh4464 for the report!
- Restore the right-click sidebar view switcher and built-in views (Default Workspaces, Project Worktrees, and others) (#5182)
- Strip terminal-color OSC sequences from restored scrollback so old sessions no longer keep a previous theme's colors (white-on-white after a theme change) (#5175)
- Fix the browser Web Inspector reopening by itself after manual close and navigation (#5180)
- Honor the Settings rebinding of Global Search by parsing package object-form
cmux.jsonshortcut bindings (#5143) - Fix Claude fork and resume failing when the session had changed directories (#5154)
- Fix titlebar shortcut-hint pills clipped at the bottom on macOS 26.5 (#5145)
- Fall back to the default sidebar when extensions are disabled (#5127) -- thanks @azooz2003-bit!
- Stabilize the git metadata FSEvents watcher to stop an event storm (#5131) -- thanks @azooz2003-bit! and @randybias for the report!
- Avoid E2BIG when the SSH startup script exceeds
MAX_ARG_STRLEN(#5133) -- thanks @lauzierj!
Workspace Groups
Select sidebar workspaces and press ⌘⇧G to gather them under a collapsible header. Each group has an anchor workspace, its own color and icon, and an unread badge on the header. Drag workspaces in and out, reorder inside a group, and control where new workspaces land per group or via cmux.json. A full `cmux workspace-group` CLI namespace creates, colors, moves, focuses, and deletes groups from scripts.
Focus & Recently Closed History
Navigate back and forward through recently focused workspaces and windows straight from the titlebar, with shortcut hints inline. A searchable Recently Closed history pane reopens surfaces you closed, restoring them to their original anchor.
Agent Hibernation
Idle agent sessions hibernate to cut background CPU and memory, then restore on demand with their state intact, so a sidebar full of agents stops competing for resources while you work in one.
Detachable SSH PTY Daemon
Remote SSH sessions now run behind a detachable PTY daemon that keeps the session alive across reconnects, so a dropped network connection no longer kills your remote workspace.
Font Size Controls & Notifications Redesign
The sidebar workspace font size and the workspace tab bar font size (capped at 14pt) are both configurable. The notifications popover was redesigned bigger and more minimal with swipe-to-dismiss, and now uses Hermes hook payloads for richer agent notifications.
Fork Conversation, Browser Mute, Diff Viewer
Fork Conversation moves into the tab right-click menu with configurable destinations, browser tabs gain an audio mute toggle, and `cmux diff` opens a CodeView diff viewer that streams large git diffs before full render.
- Workspace groups: select sidebar workspaces and press ⌘⇧G to group them under a collapsible header, with an anchor workspace, drag-to-group, in-group reorder, per-group color and icon, unread badges on the header, and a Delete Group action that closes all members (#4815)
cmux workspace-groupCLI namespace to create, remove, set-color, set-icon, move, and focus groups, with new-workspace placement configurable per group and viacmux.json(#5018)- Focus history and Recently Closed history: navigate back and forward through recently focused workspaces and windows from the titlebar, and reopen recently closed surfaces from a searchable history pane (#4160)
- Agent Hibernation pauses idle agent sessions and restores them on demand to cut background resource use (#4165)
- Detachable SSH PTY daemon keeps remote sessions alive across reconnects so SSH workspaces survive a dropped connection (#4807)
- Configurable sidebar workspace font size, plus a workspace tab bar font size control capped at 14pt (#4798)
- Browser tab audio mute toggle in the tab right-click menu, kept in sync with WebKit playback state (#4911)
- Fork Conversation action in the tab right-click menu, with configurable fork destinations (#4888, #4986 -- thanks @lawrence703!)
- Xcode-style project visualizer pane (#4996)
cmux diffcommand opens a CodeView diff viewer, with large git diffs streamed into the viewer before full render (#4451, #5016)- Send Ctrl-F to Terminal passthrough action to force-stop Claude Code agents (#5011)
- Native Kiro CLI hook integration with notifications, task manager attribution, and session restore (#4831)
- Default terminal registration so the system terminal preference resolves to cmux (#4935)
- Configurable browser search providers (#4849)
- Terminal textbox input with beta TextBox defaults settings (#4333, #4773)
- Viewport-aware workspace path display truncates sidebar paths to fit the available width (#3730) -- thanks @gonzaloserrano!
- Wrap long workspace titles in the sidebar instead of truncating (#4848)
- Open cmd-clicked Markdown paths in the Markdown viewer (#4864)
- Beta Features toggle gates the in-progress extension sidebar UI (#5092)
- Notifications popover redesigned: bigger, minimal layout with swipe-to-dismiss (#4778)
- Use Hermes hook payloads for richer agent notifications (#4851)
- Settings is now a top-level peer window instead of a floating child window (#5081)
- Launch restored agent sessions through their saved startup commands (#4777)
- Reduce browser WebView input latency (#4863)
- Make the workspace sidebar lazy with
@Observabledrag state and batch sidebar actions for faster reorders on large sidebars (#4736, #4865) - Make session index backfill linear so large session histories load faster (#4868)
- Resolve TypeScript
.tsfiles as text previews instead of routing them through QuickLook media (#4924) - Forward CLI subcommands from the GUI binary to the bundled CLI (#4679) -- thanks @tiffanysun1!
- Fix File Preview hang when drag-selecting large files (#4962)
- Fix the File Preview Open With menu (#4932)
- Stop stale closed-browser snapshots from reappearing in unrelated workspaces (#4961)
- Fix zsh hook errors when the job table is saturated (#4959)
- Fix bash job notification spam (#4934)
- Fix Claude hooks-disabled environment passthrough (#4418)
- Fix
NSFileHandleprocess pipe read crashes (#4800) - Fix cmux terminal environment injection (#4728)
- Recognize Eternal Terminal for remote file drops (#4712)
- Fix Vault resume for non-ASCII paths (#4683)
- Fix Markdown files with trailing punctuation being detected as URLs (#4594) -- thanks @jasonko!
- Fix the Reload Configuration menu action (#4534)
- Fix OMO tmux compatibility session ids (#4468)
- Fix equalize split span weighting so 3+ pane rows distribute evenly (#4787)
- Fix matched sidebar terminal background (#4780)
- Fix restore-previous-launch crash and preserve current work on restore (#4982)
- Fix agent resume when the saved cwd was deleted (#4859)
- Fix hidden Settings window burning CPU during Codex output (#4661)
- Fix embedded Ghostty split theme resolution so split panes inherit the active theme (#4795)
- Fix titlebar controls intercepting window drags and right-sidebar button clicks (#5005, #5102)
- Fix split zoom not clearing when the maximized tab is closed (#5076)
- Fix spurious "Terminal needs approval" prompts from the Hermes pre-tool-call hook (#5010)
- Fix Hermes session restore so a per-turn session-end is treated as a turn boundary, not a teardown (#5009)
- Fix the JSONC comment skipper for CRLF line endings (#4869)
- Fix Bonsplit tab indicator drift (#4873)
- Open bare relative path arguments externally without requiring socket access (#4812)
- Keep Cmd-Tab app switching off the session snapshot path (#4613)
- Restore the sidebar minimum width and keep the titlebar stable at minimum width (#5062, #5089)
Copy on Select
Highlighting text in the terminal now copies it to the clipboard the instant the mouse is released. The setting is off by default and toggles from Settings so existing selection behavior stays untouched for anyone who relies on it.
CmuxExtensionKit Sidebar Prototypes
An in-tree preview of the upcoming extension API for custom workspace sidebars. Sample sidebars cover an attention queue, browser stack, dev server status, last prompt, and project worktree views, each rendered through the same provider/reducer surface a third-party extension will use.
TaskManager 0.64.8 Memory Leak Fix
The TaskManager panel had a snapshot-boundary violation that retained pane store references inside a lazy list subtree, keeping every entry's `@Published` updates wired to every row. 0.64.10 lifts that state above the list and passes immutable snapshots, so reopening the manager no longer accumulates retained state across sessions.
Browser Polish
The browser loading spinner now runs on Core Animation so it stays smooth during heavy rendering, Cmd+Up and Cmd+Down forward into the browser pane (Google Docs jump-to-top/bottom works), the URL bar no longer steals focus on tab switch, and the markdown viewer renders remote SVG images correctly.
Workspace Reorder CLI
`cmux reorder-workspaces` accepts batch input, supports `--dry-run`, and emits reorder events so scripted layouts can plan a full sidebar reshuffle in one call and react to the changes via the socket.
Tab Close Guards
Tab close buttons can now warn before closing or be hidden entirely from Settings, so a stray click on the X stops dropping the surface without confirmation.
- Copy on Select setting copies the active terminal selection to the clipboard as soon as the mouse is released (#4011) -- thanks @kallioaleksi for the report!
- CmuxExtensionKit sidebar prototypes showcase the upcoming extension API for custom workspace sidebars (#4309)
- Ghostty Settings command palette action opens the embedded Ghostty configuration directly (#4654)
- Warn before, or hide, the tab close button to prevent stray accidental closes (#4632)
- Skip the quit-confirm dialog on DEV builds and honor
app.confirmQuiton stable/nightly (db267718) - Keep Codex notifications after interrupted turns so the badge survives a ctrl-c mid-stream (#4583)
- Move resume command approvals into
cmux.jsonso per-repo configuration can preapprove agent resume invocations (#4538) cmux reorder-workspacesaccepts batch input, supports--dry-run, and emits reorder events (#4507)
- Fix the TaskManager snapshot-boundary violation that caused the 0.64.8 memory leak by keeping pane store references out of the lazy list subtree (#4555)
- Fix the
runProcesspipe teardown crash hit when a process exits during stdout drain (#4568) - Fix key repeat rendering lag in the terminal under sustained input (#3986)
- Fix asymmetric equalize splits so a 3+ pane row distributes evenly even when one pane started larger (#4381)
- Fix
cmux.jsonsplit ratios so persisted ratios apply to restored splits (#3980) - Fix browser URL bar stealing focus on tab switch (#4623)
- Forward Cmd+Up / Cmd+Down to the browser pane so Google Docs and other web apps can jump to top/bottom (#4637)
- Fix close shortcuts targeting the original window when the user has moved focus to a different one (#4615)
- Fix Ghostty split theme appearance resolution so a freshly split pane inherits the active theme (#4567)
- Fix theme picker chrome preview sync so the swatch matches the applied chrome (#4652)
- Fix sidebar edge fade background so the gradient blends with the active surface (#4610)
- Fix markdown remote SVG image loading inside the markdown viewer (#4533)
- Fix restored panel unread sidebar badges so badge state survives session restore (6f1ecc9f)
- Prevent DEV builds from stealing the stable CLI socket when both run side-by-side (5ab642a3)
Fix 8GB RSS Growth on Non-Git Workspaces
Git repository search now stops at filesystem root instead of walking forever into `/..`. On older Foundation builds, `deletingLastPathComponent()` could yield `/..` and keep climbing, allocating ever-longer parent paths until the OS OOM killer fired. Non-Git workspaces no longer grow RSS from ~450MB to 8GB within minutes on 0.64.8.
Restore Browser Memory Saver Default
Hidden browser webview renderers discard by default again, reverting the 0.64.8 keep-alive default that exposed the memory regression. The keep-alive behavior remains available as an opt-in setting for workflows that need to preserve DOM state across workspace switches.
- Stop unbounded Git repository search past filesystem root so non-Git workspaces no longer grow RSS from ~450MB to 8GB and trigger the OOM killer (#4557) -- thanks @Luciferxie for the report!
- Restore the Browser Memory Saver default to on (discards hidden browser webview renderers after the discard delay) to mitigate the 0.64.8 memory regression (#4545) -- thanks @Luciferxie for the report!
Antigravity CLI Integration
Antigravity joins the supported coding-agent lineup with hook notifications, task manager attribution, and Vault session restore, the same way Claude, Codex, Gemini, and Grok already work in cmux.
Native Grok Vault Resume
Grok sessions can now be resumed natively from Vault. cmux parses registered Grok transcripts by layout, deduplicates sessions across shell-Grok homes, and quotes built-in resume commands so they round-trip cleanly.
CLI Window Targeting
cmux CLI commands now accept `--window` to scope workspace, pane, surface, SSH, VM, notifications, tree, and top flows to a specific window. Refs resolve inside the targeted window, and cross-window pane handles are rejected before they mutate state.
Browser Screenshot Clipboard Actions
Capture a screenshot of the current browser pane and copy it straight to the clipboard, ready to paste into an agent conversation or notes.
Browser Webviews Kept Alive
Reverts the 0.64.7 default of discarding hidden browser webview renderers. Switching back to a hidden browser pane now resumes instantly without reloading. The discard behavior remains available as an opt-in setting.
Bug Fixes
Fixes for minimal-mode pane tabs moving the window when dragged, Option dead-key accent composition (Option+n then a now commits "ã"), equalize splits with 3+ panes, Quick Look preview crashes, git index.lock polling, theme override paths leaking from channel builds, sidebar overlay contrast, terminal scheme synchronization on theme reload, restored unread badges, transparent terminal hosting, browser navigation race conditions, and session search ripgrep cancellation crashes.
- Antigravity CLI integration with hook notifications, task manager attribution, and session restore (bd4a31c0)
- Native Grok Vault resume support (5708d67b)
--windowrouting for window-scoped CLI commands (workspace, pane, surface, SSH, VM, notifications, tree, top) (#4211)- Browser screenshot clipboard actions (#4479)
- Attribute notifications to their source panel (20691adb)
- Prevent minimal-mode pane tabs from moving the window when dragged (e7941740)
- Fix Option dead-key accent composition so Option+n then a commits "ã" (#4382) -- thanks @moskoweb for the report!
- Route keyboard/menu equalize_splits through v2ProportionalEqualize so 3+ panes split evenly (#4400) -- thanks @mvanhorn!
- Fix Quick Look preview deactivation crash (#4459)
- Fix QuickLook crash after proxy icon split close (#4460)
- Fix git index.lock polling in sidebar metadata watcher (#2797)
- Fix theme override path for channel builds (Nightly/Staging no longer retheme Release) (#4484)
- Fix minimal-mode sidebar titlebar icon alignment (#4481)
- Fix notification Settings open path (#4456)
- Suppress nested agent hook notifications (#4334)
- Fix Antigravity presentation and resume (0f67df81)
- Fix Antigravity Vault resume indexing (9fa5d1d8)
- Fix Antigravity fallback session build (80fe38d6)
- Fix Antigravity conversation sanitizer width (8bd285a9)
- Fix Grok agent-scoped Vault filtering (12ae177f)
- Fix Grok Vault titles and icon (84373476)
- Deduplicate Grok Vault sessions (9f66dffd)
- Honor shell Grok homes in Vault, including custom hook state directories (be8c37c4, f95b25b9)
- Restore compact pane tab width (f0370709)
- Fix session search ripgrep cancellation crash (fa623368)
- Preserve right sidebar remembered mode (aac80054)
- Persist restored pane notifications and resync restored notification badges (e4856922, 9ffdb45a)
- Preserve workspace cwd metadata for registered agents (9b1e186d)
- Preserve transparent terminal hosting (1ca56296)
- Keep browser URL tied to committed navigation and harden provisional navigation state (40863609, e240c302)
- Fix sidebar overlay contrast scheme and keep sidebar chrome readable across themes (452745b6, 4223df74)
- Synchronize theme contrast on reload and align terminal scheme with live theme (228f3abd, b6d34706)
- Reload themes through the cmux socket so theme changes propagate to running instances (1be9d26c)
- Foreground and reload after interactive theme picker (b0f58e47, 8a4e57cf)
- Ignore inherited socket context from other cmux bundles (b361e9a2)
- Preserve numbered shortcut stale-menu routing and remapped close defaults (d198a962, f2b257fb)
- Clear restored unread on workspace resume and defer dismissal to focused panel (b24cf548, f594d5a8)
- Update Bonsplit minimal tab drag hit testing and keep titlebar drag handle out of pane tabs (36fc880f, 735dde1d)
- Gate process termination until launch succeeds and handle deferred cancellation edge cases (a14ca57c, 227305d5)
- Deduplicate shell wrapper installer (a21a21c5)
Grok Build CLI Integration
Grok Build joins the supported coding-agent lineup with notifications, task manager attribution, and session restore, the same way Claude, Codex, and Gemini already work in cmux.
Browser Memory Reclaim and Background Preload
Hidden browser webviews can now discard their renderer process to release memory and reappear instantly when you switch back. CLI-created browser panes preload offscreen so the page is ready the moment the workspace becomes visible. Thanks @lidge-jun for the community contributions.
Agent Conversation Forks
New socket commands let you fork an agent conversation off its current turn, so you can branch into a what-if without losing the original thread.
Crash Diagnostics from Notifications
When cmux logs a crash, the notification now opens directly into the crash diagnostics view so you can inspect the breadcrumb trail without digging through state.
Bug Fixes
Fixes for browser deep-link popups (slack://, discord://, zoom://), Cmd-click reload duplicating browser tabs, omnibar arrow key focus races, light-theme foreground rendering with conditional themes, Cmd-hover bounds for spaced file paths, markdown viewer image rendering, surface tab bar action button clipping, task manager attribution, SSH pane sibling kills, background workspace PTY startup, browser IME candidate windows for Japanese / Zhuyin, ripgrep resolution on Nix installs, and Claude sidebar resume config dir overrides.
- Grok Build CLI integration with notifications, task manager, and session restore (#4225)
- Surface resume bindings (#4237)
- Allow tab header double-click to zoom panes (#3892) -- thanks @Litee for the report!
- Open crash diagnostics from notifications (#4296)
- Toggle Unread shortcut (#4231)
- Command palette toggle for file opening (#4208)
- Agent conversation fork commands (#4198)
- Let terminal tabs move into existing workspaces (#3890)
- Browser: hidden webview discard settings (#4245) -- thanks @lidge-jun!
- Browser: expose webview lifecycle state in
top(#4243) -- thanks @lidge-jun! - Show
cmux openin CLI help (#4206)
- Preload CLI-created browser panes offscreen so they're ready when the workspace becomes visible (#4345)
- Discard hidden browser webviews to reclaim memory (#4244) -- thanks @lidge-jun!
- Avoid idle background terminal surface priming (#4184)
- Reduce Cloud VM create overhead (#4202)
- Optimize command palette search (#4043)
- Drop runtime-only flags from agent resume commands (#4196) -- thanks @dangaogit for the report!
- Open markdown files through the shared markdown viewer path (#4285)
- Mark workspace unread when any tab inside it is marked unread (#4169)
- Preserve unread indicators across session restore (#4130)
- Reconcile provider-deleted Cloud VMs before applying active VM limits (94c0b709)
- Skip the approval prompt for CLI resume commands (1b5bc76b)
- Fix NIGHTLY update bundle icon metadata (#4353)
- Fix ripgrep resolution for Nix installs (#3946) -- thanks @afterthought for the report!
- Prevent omo plugin warning infinite loop (#3960) -- thanks @liyue2008 for the report!
- Don't auto-resume an agent that already exited before the snapshot (#4269) -- thanks @wowpotato!
- Fix markdown viewer image rendering (#4288)
- Fix task manager process accounting accuracy (#4132)
- Fix browser omnibar IME candidate window for Japanese / Zhuyin (#4268)
- Fix Cmd-hover bounds for spaced file paths (#4291)
- Fix light theme foreground rendering when using conditional
dark:X,light:Ythemes (#4278) - Suppress browser editing shortcut replay (#4186)
- Discover cmux user themes so the light theme palette applies as expected (#3956) -- thanks @abdullahnauman2 for the report!
- Fix Web Inspector blank restore and close crash (#4182)
- Fix variant-aware CLI socket fallback (#3543)
- Cmd-click reload now duplicates the browser tab (Chrome parity) (#4284)
- Fix surface tab bar action button clipping on window resize (#4121) -- thanks @jmoses26 for the report!
- Fix Claude sidebar resume so it no longer overrides
CLAUDE_CONFIG_DIRand triggers first-run prompts (#4116) -- thanks @hexalellogram for the report! - Keep SSH pane close from killing sibling panes (#3995) -- thanks @kylejcaron for the report!
- Fix background workspace PTY startup for socket-created surfaces (#3876) -- thanks @hummer98 for the report!
- Preserve Codex plugin config during hook setup (#4270)
- Fix browser deep-link popups (slack://, discord://, zoom://, etc.) (#4226)
- Fix offscreen terminal helper PTY startup (#4233)
- Fix Cmd-N routing from the browser omnibar (#4038)
- Fix omnibar arrow key focus races (#4183)
- Fix browser
window.showOpenFilePickersupport (#4122) -- thanks @ZhuYichuan for the report! - Fix task manager attribution for launchd-parented helpers (#4190)
- Fix background
new-workspacecommands (#4137) - Fix Slack composer Cmd+C in browser panes (#4126)
- Fix permission notifications after auto-allow (274128ec)
- Fix markdown and file preview panel session reuse (838ad59f)
- Fix nightly startup crash (76ba2bfd)
SSH Typing Restored
Fixes a critical regression in 0.64.5 where cmux ssh sessions would connect and render the remote prompt but drop every keystroke. The backgrounded ssh inside the startup wrapper now inherits the wrapper's stdin via <&0, so typing reaches the remote shell again. Thanks @kays0x for the community fix.
Command Palette Settings Toggles
Boolean Settings rows are now reachable from the command palette, including iMessage Mode. Toggle features without opening Settings.
Sidebar Reorder Stays in View
Reordering a selected workspace now keeps it visible — the sidebar scrolls along so the selected item never disappears off-screen after a move.
Cloud VM Error Guidance
cmux vm errors now include actionable next steps: sign-in instructions when not authenticated, suggested fixes for unknown flags, and usage examples for missing arguments.
- Command palette toggles for boolean Settings rows, including iMessage Mode (f85cc56a)
- Fix
cmux sshdropping keystrokes after connecting — the backgrounded ssh inside the startup wrapper now inherits the wrapper's stdin so typing reaches the remote shell (#4135) -- thanks @kays0x for the fix, @kenfdev and @liudp1988 for the reports! - Keep the selected workspace visible after sidebar reorders (#4083)
- Fix Pi Vault icon and JSONL session titles (#4120)
Codex Teams Subagent Panes
cmux codex-teams now maps Codex's subagent sessions into native cmux panes, the same way claude-teams does for Claude Code. Spawned subagents stack in a right column with sidebar metadata and notifications routed through cmux.
Menubar Global Search
A new global search command surfaces windows, workspaces, panes, surfaces, and right-sidebar tools from the menu bar so you can jump anywhere without reaching for the sidebar.
Rewritten Markdown Viewer
The Markdown viewer now uses a webview-based renderer with richer formatting, better selection, and faster scrolling. Thanks @tobi for the contribution.
Feed on by Default
The Feed is now enabled by default for new and existing users, surfacing notifications, agent events, and workspace activity in one chronological stream.
Quality-of-life Polish
Open right sidebar tools as panes, workspace cwd inheritance, an unread defer shortcut, iMessage workspace ordering and previews, and right-sidebar CLI parity. Bug fixes for Korean IME arrows, garbled Chinese paste, Metal renderer crashes, terminal portal resize lag, multi-monitor sleep/wake window position, and Cloud VM SSH attach.
- Codex Teams subagent panes that map
codex-teamssessions into native cmux panes (#4056) - Task Manager column sorting and Program Totals that aggregate repeated processes by name (#4066)
- Amp built-in restore and session plugin with hook installer (be769af3) -- thanks @comp615!
- Menubar global search across windows, workspaces, panes, and surfaces (#3908)
- Open right sidebar tools as panes (#4065)
- Workspace cwd inheritance setting (#3921)
- Right-sidebar CLI command parity (#3810)
- Bring notification CLI to panel parity with dismiss, mark-read, open, and jump-to-unread (#3811)
- Open supported files in cmux on cmd-click (#4041)
- Unread defer shortcut (#4086)
- Pi agent icon (#4057)
- iMessage workspace ordering and live message previews (#4062)
- Enable Feed by default (#3854)
- Keep manually marked workspace and tab unread state sticky until you interact with the terminal, so navigation and focus don't clear it (#4104)
- Route markdown paths from
cmux openandfile.openinto markdown preview panels instead of generic file preview panels (#4085) - Rewritten Markdown viewer with a webview-based renderer (#3664) -- thanks @tobi!
- Auto-preserve Vertex/Bedrock auth env when launching the Claude wrapper inside cmux (#3714) -- thanks @psh4607!
- Approve installed Codex hooks during initial setup (#4075)
- Hide sidebar descriptions in title-only mode (#4040)
- Limit Cloud VMs by active provider state (#4046)
- Save crash diagnostics under cmux state (#4077)
- Reset Kitty keyboard mode at shell prompt boundaries (#3870)
- Narrow IME candidate key suppression (#3867)
- Keep Claude running after
/clear(#3631) - Clarify in
cmux --helpthatreload-configcovers Ghostty config too (#4060)
- Fix Korean 2-Set IME left/right terminal arrows (#4095)
- Fix terminal portal resize lag (#4102)
- Fix Settings search synonyms (#4082)
- Fix sidebar unread badge after re-marking notifications (#4084)
- Close browser panels when pages request window close (#4070)
- Fix new-workspace caller window routing (#4042)
- Prevent display-link crash from terminal portal layout reentry (#3885)
- Fix shared WebView task manager attribution
- Fix stale SSH ControlPath cleanup before pane launch (#3894)
- Prevent Metal renderer row rebuild crash (#3916)
- Fix garbled Chinese paste text (#3929)
- Fix cmux frontmost state without keyboard focus (#3907)
- Reject unsupported durable Claude cron requests (#3905)
- Use absolute remote path for cmuxd-remote scp upload (#3880) -- thanks @bcb225 for the report!
- Fix browser Return beep during sign-in (#3843)
- Honor focusPaneOnFirstClick for minimal-mode chrome and workspace sidebar (#3881) -- thanks @rursache for the report!
- Preserve window position across sleep/wake with multiple monitors (#3882) -- thanks @al3kaz for the report!
- Fix terminal TUI background seam (#3903)
- Pass Claude subcommands through the cmux wrapper (#3871) -- thanks @abdelibrahim-hh for the report!
- Open bare
window.open(_blank)without features as a tab instead of a popup (#3245) -- thanks @azu for the report! - Clear sidebar freeze after color/reorder so workspace rows keep updating (#3874) -- thanks @michaellopez for the report!
- Keep update pill polling current after the first update (#3833)
- Redraw cmux window on focus regain even when the cursor is over the sidebar resize handle (#3879) -- thanks @mikesmitty for the report!
- Fix Cloud VM SSH attach and baked tooling (#3786)
- Fix multi-image terminal drops (#3769)
- Cover right sidebar tool panel in search
- Skip unrestorable Claude startup sessions (#4079)
- Fix repeated assistant iMessage completions
- Sanitize Claude Agent View passthrough env
SSH Files Polish
The Files sidebar now follows SSH workspaces and shows the remote root instead of the local macOS path. SSH workspace descriptors restore on relaunch, and new guarded cmux://ssh deep links prompt before launching ssh so unfamiliar links can't run arbitrary commands.
Vault Pi and Hermes
Pi sessions now restore across relaunch via Vault, and Hermes Agent hooks pipe into the sidebar like Claude, Codex, OpenCode, Gemini, and Rovo Dev. Per-agent toggles let you hide individual agent session restores from Vault.
Browser Cookie Import
A new cmux browser cookies import CLI brings cookies from other browsers into cmux's browser panes so logged-in sessions follow you over.
Quality-of-life Polish
Welcome sidebar toggle shortcuts, Insert Path and Insert Relative Path in the file explorer right-click menu, a warnBeforeClosingTab toggle to opt back into the close confirmation prompt, plus fixes for IME, command palette Escape, modified Backspace in the omnibar, and stale terminal colors after theme switches.
- Add
warnBeforeClosingTabclose-warning toggle to opt back into the close confirmation prompt (#2808) -- thanks @dandaka for the report! - Add
cmux browser cookies importCLI for bringing cookies into cmux browser panes (#3770) - Add guarded
cmux://sshdeep links that prompt before launching SSH (#3677) - Restore Vault Pi agent sessions across relaunch (#3582, #3636) -- thanks @garizs for the report!
- Add Hermes Agent hook support (#3585)
- Per-agent toggles for hiding Claude, Codex, OpenCode, Gemini, and Rovo Dev session restore (#3616)
- Add Insert Path and Insert Relative Path context menu items in the file explorer (#3620)
- Restore SSH workspace descriptors on relaunch (#3576)
- Follow SSH workspaces in the Files sidebar so the remote root replaces the local macOS path (#3721) -- thanks @Lots-ninety-nine for the report!
- Add Welcome sidebar toggle shortcuts (#3748)
- File drop routing now defaults to text with Shift used as the split override.
- Allow HTTP localhost subdomains in browser panes (#3764)
- Make browser find shortcuts respect remaps (#3728)
- Make Close Tab remaps own browser popup close (#3830)
- Alias top-level auth commands so
cmux signinandcmux signoutwork without theauthprefix.
- Fix stale terminal foreground after theme switch leaving white-on-white text in running sessions (#3852)
- Fix managed defaults replay overriding user changes after every
cmux.jsonreload (#3847) - Preserve the Claude wrapper dev channel resume flag (#3752) -- thanks @Clean-Cole!
- Fix SSH browser loopback fetches reaching backends on second forwarded ports (#3820)
- Fix modified Backspace deleting more than one character when an omnibar inline completion is showing (#3842)
- Close Web Inspector before browser host teardown to prevent a UAF crash on pane close (#3835)
- Fix Files sidebar find result aggregation (#3818)
- Fix Escape dismissing the command palette (#3823)
- Resume Claude, Codex, and OpenCode sessions from the session's original cwd.
- Fix Close Other Tabs targeting all tabs in the pane right-click menu (#3628) -- thanks @flatsponge for the report!
- Clear surface notifications during pane teardown so workspace badges don't stay stuck (#3744)
- Fix folder proxy icon drag (#3804) -- thanks @lederniermagicien!
- Fix right sidebar shortcut defaults (#3784)
- Fix right sidebar titlebar double-click (#3750)
- Fix right sidebar Find typing lag (#3739)
- Route SSH image drops through the terminal text path.
- Fix terminal top-row click routing (#3720)
- Fix Mark Workspace as Unread enablement (#3727) -- thanks @mfn for the report!
- Fix Cmd-W to close Task Manager and auxiliary windows.
- Fix command palette arrow keys and no-match flash.
- Restore Zhuyin IME candidate marked-text handling (#3574) -- thanks @yuanganai for the report!
- Fix Task Manager CPU sampling (#3588)
- Fix Cmd+N window size after the last window closes (#3611) -- thanks @bigtruth for the report!
- Fix Match Terminal Background sidebar toggle snapping back on (#3635)
- Count cmux app RSS in Task Manager totals (#3587)
- Keep Settings layered above the main window (#3612)
- Forward Left/Right arrow keys to the browser surface (#3663) -- thanks @kimdane0115 for the report!
- Fix Rovo Dev transcript previews (#3666)
- Added Show in Finder to the workspace sidebar right-click menu.
cmux configCLI withcmux config doctorfor validatingcmux.jsonwithout a socket, pluscmux config path,cmux config docs, andcmux config reloadaliases (#3454)
- Fix launch crash on v0.64.1 caused by the bundled CLI failing to load the Sentry framework (#3565) -- thanks @hyi1233 for the report!
- Keep SSH sessions alive when closing a pane (#3566) -- thanks @kylejcaron for the report!
- Restore sidebar scroller visibility to reflect real overflow state (#3570) -- thanks @ibagur for the report!
- Fix Finder image drops into Claude Code terminals (#3567) -- thanks @streeyt for the report!
- Open links in the Markdown panel via an explicit OpenURLAction (#3558) -- thanks @psh4607!
- Prevent recursive lock crash on cmd-clicked Markdown viewer route and stop dropping fragment/query URLs (#3559) -- thanks @psh4607! Reported by @addisonlynch.
- Stop the Claude wrapper from auto-adding bypass-permissions flags and preserve user-provided
ANTHROPIC_BASE_URLandANTHROPIC_AUTH_TOKENthrough terminal startup (#3564)
- Fix sidebar workspace close (×) button intermittently failing to appear on hover (#3546)
Session Restore on Quit
Closing the last window with the red X no longer drops your work. cmux restores prior panes on relaunch and resumes Claude Code, Codex, OpenCode, Gemini, and Rovo Dev sessions where you left off.
Passkeys, WebAuthn, and FIDO2
Sign in to passkey-protected sites directly inside cmux browser panes. Reworked inside-out signing keeps the notarized Developer ID build compatible with macOS authentication services.
File Explorer
A Finder-like file explorer sidebar with full SSH support so remote workspaces get the same tree view as local ones.
Task Manager
A built-in Task Manager window plus cmux top CLI shows a live snapshot of windows, workspaces, panes, surfaces, and browser webviews, with jumps from the manager into the matching surface.
- Restore prior panes and resume Claude Code, Codex, OpenCode, Gemini, and Rovo Dev sessions across relaunch, including when you close the last window with the red X (#2936, #2978, #3259, #3419, #3429, #3487, #3528, #3530, #3535)
- Passkey, WebAuthn, and FIDO2 support in browser panes (#2660, #2727, #2905, #2908)
- Task Manager window and
cmux topCLI for window, workspace, pane, surface, and browser webview snapshots (#3290, #3471) - Finder-like file explorer sidebar with SSH support (#1963)
- File preview panels in the sidebar (#3139)
- Menu bar only mode (#3181)
- System-wide hotkey to show and hide cmux windows (#2389)
- Cursor and Gemini CLI agent integrations with
setup-hooks(#2717) - iMessage mode for agent prompts (#3252)
- Settings sidebar shell and unified config utility window with cmux, Ghostty, and synced tabs (#3024, #3244, #3400)
- Make
cmux.jsonthe canonical settings file with JSONC parsing and legacysettings.jsonfallback (#3409, #3424) - Configurable
cmux.jsonworkspace and tab bar plus-button actions (#3084, #3348) - Configurable surface tab bar font size (#2645)
- Configurable workspace recoloring actions, default-bound to Ctrl+Option+0 through Ctrl+Option+9 (#3327)
- Allow space as a bindable key, allow keyboard shortcuts to be unbound, and make reload and rename shortcuts context-aware (#3333, #3334, #3468)
- Inline recorder messages explaining shortcut rejections and offering localized Reassign for conflicts (#3035)
- Help menu with cmux docs nav, Skills, Agent Integrations submenu, and
skills.shinstall flow (#3402) - Find in directory shortcut (#3208)
- Move tabs into new workspaces (#3285)
- Hover tooltips on workspace and pane tabs (#3329)
- Command palette ID copy actions and copy ID context menu actions (#3183, #3247)
- Command palette actions for right sidebar modes (#3408)
- macOS clear glass background blur support (#3313)
- Focus-neutral split-off layout command (#3484)
--layoutparameter onworkspace.createfor programmatic split layouts (#2916) -- thanks @talldan!- Korean (ko) localization (#2885) -- thanks @say8425!
- Opt-in setting to open Cmd-clicked Markdown files in the cmux Markdown viewer (#2904) -- thanks @SeongJaeSong!
- cmux browser disable switch (#3256)
- Markdown and plain-text variants for docs pages plus
/llms.txtindex for agent consumption (#3410)
- Coalesce sidebar PR polling per-repo, drop checks fetch, and state-machine the probe queue to avoid GitHub rate limits (#2585, #2662)
- Speed up large terminal pastes by skipping eager HTML/RTF decoding when plain text is available (#3000)
- Use workspace color for selected sidebar rows and the left rail (#3038, #3082, #3310)
- Improve default light and dark theme fallback (#3123)
- Sidebar PR clickability defaults to on, with visibility split from clickability as a separate setting (#3273, #3492)
- Make hook notifications non-blocking (#3218)
- Clean up Claude session titles, render slash-command markup as readable titles, and skip meta caveats (#3211)
- Apply sidebar background to right panel and consolidate sidebar settings (#3103, #3400)
- Improve settings search aliases with localized variants (#3294, #3296)
- Disable right sidebar horizontal scroll (#3202)
- Optimize surface config reload (#3480)
- Auto-hide terminal scroll bar with disable setting on TUI alt-screen (#2678, #2729)
- Show Codex TUI errors in the sidebar (#3212)
- Keep Cmd-Shift-N windows on the source display (#3214)
- Select find text on repeated Cmd+F (#3314)
- Disable Claude OSC notifications in the cmux wrapper and gate Claude OSC suppression on integration setting (#3418, #3474)
- Namespace agent hook CLI commands (#3298)
- Fix shell integration not injected when Ghostty
ZDOTDIRoverrides the wrapper (#2778) -- thanks @michaeljauk! - Allow symlinked Ghostty config files (#2813) -- thanks @ivanrvpereira!
- Fix paste only pasting first character (#2847) -- thanks @dezren39!
- Prefer UTF-8 plain text in the pasteboard to avoid Mac OS Roman character loss (#2877) -- thanks @dasanworld!
- Fix blank split panes after portal reveal (#2840) -- thanks @jaynora2026!
- Fix workspace color picker context menu blinking (#2566)
- Hide stale startup workspace portals during teardown (#2658)
- Fix AX window polling stalls with app hierarchy caching (#2986)
- Fix close confirmation bypass when spamming close (#2989)
- Fix multi-workspace close confirmation modality (#3153)
- Fix Cmd/Ctrl shortcut hint parity (#2994)
- Cancel drag on Escape (#3013)
- Pin regular-weight Japanese auto-fallback face (#3015)
- Fix 100% CPU from ContentView publisher feedback loop (#3028)
- Fix
DebugEventLogNSFileHandleObjC exception crash (#3034) - Fix main-thread blocking in workspace PR refresh (#3036)
- Fix terminal blanking after OSC completion notifications (#3048)
- Fix blank terminal after workspace selection (#3012)
- Fix minimal-mode traffic-light inset, new-window Bonsplit tab bar, window routing, portal hit testing, drag pass-through, and pane tab rendering (#3055, #3150, #3194, #3399)
- Drop stale merged PRs from the sidebar badge selection (#3063)
- Fix transparent titlebar backdrop matching and sidebar tint backdrop ownership (#3179, #3382)
- Fix feedback editor scrolling (#3182)
- Fix bare
window.open(_blank)routing in browser panes (#3262) - Fix non-ASCII Cmd+V paste when rich clipboard payloads are lossy (#3268)
- Fix locale separators in sidebar identifiers (#3269)
- Deduplicate numpad input across IME full-to-half-width transition (#3292)
- Follow up equalize splits shortcut fixes (#3309)
- Make find escape behavior consistent (#3330)
- Fix unbound Cmd+Shift forwarding to terminal (#3332)
- Make Ctrl+P command palette navigation remappable and Cmd+D new-tab shortcut rebindable (#3335, #3338, #3398)
- Prevent shortcut recorder keys from navigating Settings (#3377)
- Preserve context-separated shortcuts through recorder swaps (#3489)
- Fix browser tab drag to new workspace, drops into sidebar workspaces, and terminal portal tab drop routing (#3299, #3381, #3430)
- Fix Cmd+Shift+Enter pane zoom for browser panes (#3520)
- Fix terminal focus after browser split (#3460)
- Fix shortcut settings dispatch_once launch crash and settings-file launch crash paths (#3455, #3476)
- Fix editable shortcuts from
settings.json(#3462) - Fix live theme picker application, launch theme before app appearance exists, and cmux theme picker Enter from search (#3221, #3378, #3431, #3479)
- Clamp Settings window away from display edge (#3436)
- Fix SSH
LocalCommandincompatibility with Fish shell (#3506, #3534) - Fix OMX HUD bottom pane placement (#3516)
- Fix inherited Claude auth env in cmux terminals (#3519)
- Fix config window to open active cmux Ghostty config (#3525)
- Fix notification dismissal with stale app focus (#3532)
- Persist app icon mode on the app bundle (#2884)
- Fix appIcon=automatic crash on macOS Tahoe (#2833)
- Fix terminal selection autoscroll past viewport edge (#2725)
- Fix command-hold shortcut hints and prevent sidebar truncation (#2767)
- Fix Raycast paste fallback regression (#2768)
- Fix Cmd+Shift+V paste in browser pane (#2779)
- Fix up/down arrow keys in browser surface (#2780)
- Fix Cmd+click file path punctuation trimming (#2831)
- Fix bilibili search popup opening detached window (#2836)
- Fix macOS modifier desync causing idle terminal input corruption (#2855)
- Fix scrollback-limit byte handling (#2927)
- Fix LinkedIn external-link redirect handoff in browser pane (#2930)
- Fix OpenCode bracketed paste fallback in terminal (#2971)
- Fix startup hang from repeated file drop overlay install (#2972)
- Fix
cmux.jsonnamed workspace colors (#3149) - Keep selected workspace visible in the sidebar (#3152)
- Hide portals for unmounted workspaces (#3155)
- Fix Bonsplit tab bar height and selected tab separator (#3331, #3351)
- Fix browser omnibar typing lag with many workspaces (#3422)
- Fix nightly codesigning for nested bundles, Sparkle executables, and dock tile plugin (#2676, #2677, #2679, #2680)
- Support chorded keyboard shortcuts (#2528)
- Detect listening ports for remote SSH workspaces (#2398)
- Editable workspace descriptions (#2475)
- Claude Binary Path setting (#2514)
cmux omxandcmux omcagent integrations (#2619)- "Open Folder in VS Code (Inline)" menu item and command palette entry (#2409)
- New Window entry in the Dock menu (#2340)
- Reset-terminal workaround in the terminal menu (#2349)
- React Grab inject button in the browser toolbar (#2373)
- Hover background on split action buttons (#2271)
- Cmd-click fallback for bare filenames in
lsoutput (#2294) - Localized tab context menu and alert strings (#2422)
- Relicense cmux from AGPL-3.0 to GPL-3.0 (#2364)
- Update bundled Ghostty fork to latest upstream (#2379)
- Sidebar PR lookups are now event-driven to reduce GitHub API load (#2453)
- Keep the latest sidebar notification until it is explicitly cleared (#2623)
- Switch the nightly Sparkle appcast feed to R2 (#2335, #2363, #2366)
- Fix terminals freezing when the first responder drifts off the focused surface (#2505)
- Fix sidebar layout loop and CLI socket deadlocks (#2601)
- Fix sidebar LazyVStack layout loop in the workspace list (#2328)
- Fix focus reporting leak on pane creation (#2511)
- Fix browser pane flicker during multi-split resize (#2574)
- Fix browser panel resize flicker during split drag (#2513)
- Fix browser pane hangs from redundant portal refreshes (#2353)
- Fix browser pane dark-mode leak on light pages (#2346)
- Fix DevTools pane breaking after workspace switch round-trips (#2621)
- Fix sidebar background: add missing locale entries and portal resync on toggle (#2622)
- Fix session restore suppression on relaunch (#2469)
- Fix session restore terminal cursor focus race (#2471)
- Fix terminal focus and surface recovery after layout changes (#2354)
- Fix missing sidebar ports for agent-run dev servers (#2562)
- Fix missing sidebar git branch metadata for workspaces (#2563)
- Fix sidebar live refresh for branch and PR state (#2331)
- Fix duplicate sidebar git metadata publishes (#2405)
- Fix SSH password-auth bootstrap race (#2564)
- Fix remote proxy notification spam with cooldown, backoff, and SSH keepalive (#2330)
- Fix tmux-compat
split-windowsurface resolution (#2351) - Fix
new-splitfalling back to the focused surface when the target is stale (#2518) — thanks @anusheel! - Fix CLI commands briefly stealing focus (#2464)
- Fix paste from Raycast and other apps using alternate plain-text UTIs (#2467)
- Fix stray
Cinsertion from Speakly dictation (#2413) - Fix Korean IME jamo leak during composition (#2529)
- Stop swallowing
/and?on ABC-QWERTZ keyboard layouts (#2447) - Keep prompt colors when zsh switches local
TERMtoxterm-256color(#2613) - Ensure shell integrations always dispatch
claudethrough the bundled wrapper (#2465) - Fix shell integration review regressions (#2466)
- Fix React Grab Cmd+Shift+G terminal round-trip (#2615)
- Suppress cmd-hover path highlighting while terminal selection is active (#2579)
- Keep cmux browser Find shortcuts authoritative over page handlers (#2356)
- Fix minimal-mode tab bar disappearing in fullscreen (#2375)
- Fix transparent background flash during sidebar toggle (#2378)
- Fix macOS 26 glass window gating (#2468)
- Fix fullscreen new windows opening in the current Space (#2345)
- Fix Dock persistence for manual app icons (#2360)
- Fix update error details dialog overflow (#2359)
- Fix Ctrl+K reaching the command palette text editor (#2394)
- Keep Cmd+P stable during animated workspace title updates (#2393)
- Fix Cmd+P workspace retention for the main CI workspace (#2412)
- Coalesce portal sync to latest geometry to fix browser overlay drift (#2214)
- Fix
claude_vm_nodeOOM behavior and hook payload retention (#2462) - Fix GitHub star badge
kformatting (#2473) - Keep GitHub stars badge stable across navigation (#2476)
- Fix web header overlap (#2452)
- Fix crash on startup after upgrading from older versions due to stale window geometry data (#2306)
- Fix re-entrant
displayIfNeededcrash during layout follow-up from SwiftUI geometry changes (#2305) — thanks @KyleJamesWalker! - Fix macOS compatibility with versioned geometry persistence to prevent future upgrade crashes (#2308)
SSH
cmux ssh user@remote creates a workspace for a remote machine. Browser panes route through the remote network so localhost just works. Drag an image into a remote session to upload via scp. Coding agent notifications come home to your local sidebar. Reconnects on drops.
Claude Code Teams
cmux claude-teams launches Claude Code's experimental teammate mode with one command. It sets up the environment, fakes a tmux session, and translates tmux commands into native cmux splits. Teammates stack vertically in a right column with sidebar metadata and notifications.
oh-my-openagent
cmux omo integrates oh-my-openagent (formerly oh-my-opencode), which orchestrates specialist agents across Claude, GPT, and Gemini in parallel. Same tmux shim as claude-teams, auto-installs the plugin, notifications route through cmux.
Browser Profile Import
Import cookies, history, and sessions from Chrome, Arc, Brave, Firefox, Safari, and 20+ browsers. The import wizard detects installed browsers, lets you pick profiles, and injects everything into cmux's browser panes so you're already logged in.
Minimal Mode
Hide the titlebar for a distraction-free terminal. Controls move to the sidebar and appear on hover. Toggle from the command palette or Settings.
Custom Commands
Define project-specific actions in cmux.json that launch from the command palette. One file per repo, no global config needed.
- Browser profile import — cookies, history, and settings from Chrome, Firefox, Safari, and more (#318, #1582, #1593)
- Support
window.open()popup windows in browser panes with shared OAuth context (#1150, #1600) - Minimal mode — hide the titlebar for a distraction-free terminal (#1479, #2218)
cmux.jsoncustom commands — define project-specific actions launched from the command palette (#2011, #2122)cmux omocommand for oh-my-openagent integration (#2087, #2230, #2280)- Codex CLI hooks integration for terminal notifications (#2103)
- Customizable number shortcuts for workspace switching (#1951)
- Customizable sidebar selection highlight color (#1824)
- Match Terminal Background sidebar color setting (#2293)
- Optional single-click focus for inactive split panes (#1796)
- Support image drag-and-drop into SSH terminals (#1838)
- Support dropping folders onto the dock icon to open as workspaces (#1571)
- Support modifier+key combinations in
send-keyCLI — ctrl+enter, shift+tab, arrow keys, home/end/delete/pageup/pagedown (#1994, #1920) --nameflag fornew-workspaceCLI command (#2160)--no-focusflag forcmux ssh(#2227)--directionflag for markdown open command (#1763)- Per-surface TTY exposed in
cmux treeoutput (#2040) set-color/clear-colorworkspace actions for tab color via CLI (#1873, #1833)- IntelliJ IDEA added to command palette Open Directory targets (#1860)
- Open a new terminal tab from empty tab bar double-click (#1601)
- Double-click custom titlebar to zoom or minimize (#2130)
- Confirm before closing pinned workspaces (#1895)
- Show tab name in close tab confirmation dialog (#1845)
- Sidebar listening ports are now clickable to open in browser (#1844)
- Ukrainian (uk) localization (#2226)
- Hidden CLI command for live terminal debugging (#1599)
rcandremote-controladded to command passthrough (#1539)- Export
CMUX_SOCKETalongsideCMUX_SOCKET_PATHin terminal env (#1991) - Dual licensing — AGPL + commercial (#2021)
- Universal binary (arm64 + x86_64) for stable releases (#2287)
- Add claude-teams, omo, and __tmux-compat to Go relay CLI for SSH sessions (#2238)
- Warn Before Quit enforced when Cmd+Q arrives via app switcher (#2186)
- Show update-available banner automatically on launch (#1651, #1543, #1575)
- Restore Sparkle scheduled update checks (#1597)
- New window inherits size from current window (#2124)
- Restore last-surface close preference toggle (#1679)
- Rename "Import From Browser" to "Import Browser Data" (#1672)
- Make founders email selectable in feedback success view (#1733)
- Include hardware details in feedback submissions (#1726)
- Coalesce scrollbar updates during bulk output for improved performance (#2116)
- Reduce shell integration prompt latency (#2109)
- Skip quit confirmation for tagged DEV builds (#2288)
- Use dedicated setting for sidebar port link browser preference (#2219)
- Skip sidebar PR lookup on main/master branches (#2110)
- Stabilize sidebar directory ordering when split focus changes (#1798)
- Improve tmux notification attention routing (#1898)
- Fix Cmd+N workspace creation crashes caused by stale snapshots, ARC hotpaths, and restore-time races (#2204, #2183, #2181, #2178, #2176, #2173, #2133, #2023, #1985, #1930)
- Fix ARC workspace inheritance crash and native Zig helper builds (#2283)
- Fix
EXC_BAD_ACCESScaused by over-releasing Ghostty font (#1496) - Fix terminal black screen on macOS 26.3.1 by dispatching Ghostty callbacks to main thread (#1937)
- Fix blank terminal renders after workspace switches (#1964)
- Fix stale terminal portal after restore churn (#2025)
- Fix floating portal terminal after nightly update relaunch (#1696)
- Fix terminal portal resync after restore-time bind (#1973)
- Fix terminal find overlay crash and focus handoff (#1487)
- Fix split transparency regression (#1568)
- Apply
background-opacityandbackground-blurto terminal rendering area (#1858) - Fix keyboard shortcuts not working with CJK input sources (Korean, Japanese, Russian) (#1649, #1913, #2202)
- Skip CJK fallback font injection when font-family already covers glyphs (#2241)
- Skip Korean from CJK font-codepoint-map auto-injection (#1700)
- Fix Japanese IME confirmation Enter from executing command prematurely (#2075, #1671)
- Fix Korean IME Enter handling on composition path in browser panes (#2108)
- Fix AZERTY Option+Delete word delete in Claude Code (#1640)
- Fix Escape key not working in terminal panels (e.g., lazygit) (#1957)
- Fix unbound Cmd+Shift+key combos being silently swallowed (#1959)
- Fix Cmd+W closing terminal tabs instead of About/Licenses windows (#1473)
- Fix Cmd+O opening Documents folder — handle in custom shortcut handler (#2034)
- Consume Cmd+number shortcuts when workspace index is out of bounds (#2033)
- Fix arrow key glyph matching in customizable shortcuts (#1443)
- Fix cursor movement on double-click selection (#1709)
- Fix doomscroll when reviewing scrollback (#1616)
- Fix browser panes rendering blank after reopen (#2141)
- Fix browser portal leaking to other tabs on Bonsplit tab switch (#2000)
- Fix browser freeze after pane split (#1852)
- Fix browser pane video fullscreen (#1921)
- Fix browser image copy pasteboard data (#1850)
- Fix browser pane file drops hanging on "Uploading" (#1843)
- Fix browser back navigation history handoff (#1897)
- Fix browser devtools X-close persistence (#1627)
- Fix browser PR metadata deadlock and BrowserPanelView hot paths (#1564)
- Fix Cloudflare/CAPTCHA verification failures in browser panel (#1877)
- Fix Google sign-in infinite loading in browser pane (#1493)
- Fix native value setter for React compatibility in browser panes (#2059)
- Fix sidebar badges not refreshing on workspace state change (#2046)
- Fix sidebar PR badge detection for workspace branches and restored workspaces (#1896, #1570, #1636)
- Fix sidebar notification persisting after being read (#1933)
- Fix premature workspace title truncation in sidebar (#1859)
- Fix pinned workspace ordering — keep pinned workspaces above pin boundary (#1503, #1505)
- Fix command palette ordering for "check" query (#1740)
- Fix command palette focus after terminal find (#2089)
- Fix missing command palette open-in targets (#1621)
- Fix all split panes appearing focused after layout restoration (#2088)
- Fix panel resize stuttering when tiled with browser panels (#1969)
- Fix splitter hitbox overlap and terminal scrollbar width resync (#1950)
- Increase content side hit width to prevent accidental window resize (#2018)
- Fix window position restore on relaunch (#2129)
- Fix dock icon not auto-switching with system dark mode (#1928, #1510)
- Align titlebar icons with traffic-light buttons (#1754)
- Fix focused notification sound playback (#1855)
- Fix laggy terminal sync during sidebar drags (#1598)
- Fix spinner hang after display resolution changes (#1549)
- Fix workspace layout follow-up spin loop (#1633)
- Fix Ghostty
resize_splitkeybind support (#1899) - Fix update attempt refreshing pill without actually updating (#2168, #2142, #2117)
- Fix SSH control master cleanup on remote teardown (#2104)
- Fix SSH cleanup after moving the last remote surface (#2123)
- Fix SSH image transfer cleanup and IPv6 followups (#1907, #1904)
- Fix SSH remote CLI wrapper and proxy follow-ups (#1596)
- Fix nightly SSH remote daemon checksum mismatch (#2225)
- Fix cmux ssh notify surface targeting (#1799)
- Fix tmux compat store decoding, layout cleanup, and cross-workspace fallback (#2207)
- Fix claude-teams pane anchoring with main-vertical layout (#2119)
- Fix claude-hook stop teardown races (#1954)
- Fix Claude Code hooks config to match actual schema (#1388)
- Handle TabManager unavailable in SessionEnd/Start hooks (#1735)
- Fix blocking sleep in preexec hook causing command lag (#1444)
- Fix redundant focus events causing Powerlevel10k redraws (#1579)
- Fix identical session autosave writes (#1732)
- Fix locale page crashes under Google Translate (#1956)
- Fix About Panel newline escaping (#1298)
- Fix remote sidebar directory canonicalization to preserve live paths (#1800)
- Fix AppleScript
count windowsreturning 0 andworking directoryreturning empty (#1826) - Fix PWD action routing to correct TabManager per tabId (#2147)
- Fix socket returning wrong error when surface_id is provided but unresolvable (#2150)
- Guard inherited terminal config against stale surfaces (#2101)
- Suppress socat stdout in
_cmux_sendto prevent "OK" leak (#1619) - Add
-rshorthand to skip session ID check in Claude wrapper (#1992) - Check git repo before running git commands to prevent TCC permission prompts (#1677)
- Preserve explicit wheel scrollback against passive follow (#1965)
- Fix terminal pane drag/drop handoff delay (#1837)
- Remove restricted web-browser entitlement (#1727)
- Configurable sidebar tint color with separate light/dark mode support via Settings and config file (
sidebar-background,sidebar-tint-opacity) (#1465) - Cmd+P all-surfaces search option (#1382)
cmux themescommand with bundled Ghostty themes (#1334, #1314)- Sidebar can now shrink to smaller widths (#1420)
- Menu bar visibility setting (#1330)
- Command palette command-mode shortcut, navigation, and omnibar backspace or arrow-key regressions (#1417, #1413)
- Stale Claude sidebar status from missing hooks, OSC suppression, and PID cleanup (#1306)
- Split cwd inheritance when the shell cwd is stale (#1403)
- Crashes when creating a new workspace and when inserting a workspace into an orphaned window context (#1391, #1380)
- Cmd+W close behavior and close-confirmation shell-state regressions (#1395, #1386)
- macOS dictation NSTextInputClient conformance and terminal image-paste fallbacks (#1410, #1305, #1361, #1358)
- VS Code command palette target resolution, Ghostty Pure prompt redraws, and internal drag regressions (#1389, #1363, #1316, #1379)
- Cmd+T (New tab) shortcut on the welcome screen (#1258)
- Cmd+backtick window cycling skipping windows
- Titlebar shortcut hint clipping (#1259)
- Terminal portals desyncing after sidebar changes (#1253)
- Background terminal focus retries reordering windows
- Pure-style multiline prompt redraws in Ghostty
- Return key not working on Cmd+Ctrl+W close confirmation (#1279)
- Concurrent remote daemon RPC calls timing out (#1281)
- SSH remote port proxying (reverted, will return in a future release)
Markdown Viewer
Open Markdown files in their own panel and keep them live with file watching. Notes, READMEs, and docs refresh automatically as the file changes on disk.
Find in Browser
Browser panels now support Cmd+F with inline find controls, so you can search long docs, dashboards, and issue threads without leaving cmux.
Vi Copy Mode
Terminal scrollback now has a keyboard copy mode with vi-style navigation, making it much easier to inspect and copy from large output buffers.
Custom Notification Sounds
Choose from bundled sounds or pick your own audio file so background task notifications are easier to notice and easier to personalize.
Expanded Localization
cmux now includes Japanese plus 16 additional languages, and a per-app language override lets you change the UI language without changing macOS system settings.
- Markdown viewer panel with live file watching (#883)
- Find-in-page (Cmd+F) for browser panels (#837, #875)
- Keyboard copy mode for terminal scrollback with vi-style navigation (#792)
- Custom notification sounds with file picker support (#839, #869)
- Browser camera and microphone permission support (#760, #913)
- Language setting for per-app locale override (#886)
- Japanese localization (#819)
- 16 new languages added to localization (#895)
- Kagi as a search provider option (#561)
- Open Folder command (Cmd+O) (#656)
- Dark mode app icon for macOS Sequoia (#702)
- Close other pane tabs with confirmation (#475)
- Flash Focused Panel command palette action (#638)
- Zoom/maximize focused pane in splits (#634)
cmux treecommand for full CLI hierarchy view (#592)- Install or uninstall the
cmuxCLI from the command palette (#626) - Clipboard image paste in terminal with Cmd+V (#562, #853)
- Middle-click X11-style selection paste in terminal (#369)
- Honor Ghostty
background-opacityacross all cmux chrome (#667) - Setting to hide Cmd-hold shortcut hints (#765)
- Focus-follows-mouse on terminal hover (#519)
- Sidebar help menu in the footer (#958)
- External URL bypass rules for the embedded browser (#768)
- Telemetry opt-out setting (#610)
- Browser automation docs page (#622)
- Vim mode indicator badge on terminal panes (#1092)
- Sidebar workspace color in CLI sidebar_state output (#1101)
- Prompt before closing window with Cmd+Ctrl+W (#1219)
- Jump to Latest button in notifications popover (#1167)
- Khmer localization (#1198)
- cmux claude-teams launcher (#1179)
- Command palette search is now async and decoupled from typing for reduced lag
- Fuzzy matching improved with single-edit and omitted-character word matches
- Replaced keychain password storage with file-based storage (#576)
- Fullscreen shortcut changed to Cmd+Ctrl+F, and Cmd+Enter also toggles fullscreen (#530)
- Workspace rename shortcut Cmd+Shift+R now uses the command palette flow
- Renamed tab color to workspace color in user-facing strings (#637)
- Feedback recipient changed to
feedback@manaflow.com(#1007) - Regenerated app icons from Icon Composer (#1005)
- Moved update logs into the Debug menu (#1008)
- Updated Ghostty to v1.3.0 (#1142)
- Welcome screen colors adapted for light mode (#1214)
- Notification sound picker width constrained (#1168)
- Frozen blank launch from session restore race condition (#399, #565)
- Crash on launch from an exclusive access violation in drag-handle hit testing (#490)
- Use-after-free in
ghostty_surface_refreshafter sleep/wake (#432, #619) - Startup SIGSEGV by pre-warming locale before
SentrySDK.start(#927) - IME issues: Shift+Space toggle inserting a space (#641, #670), Ctrl fast path blocking IME events, browser address bar Japanese IME (#789, #867), and Cmd shortcuts during IME composition
- CLI socket autodiscovery for tagged sockets (#832)
- Flaky CLI socket listener recovery (#952, #954)
- Side-docked dev tools resize (#712)
- Dvorak Cmd+C colliding with the notifications shortcut (#762)
- Terminal drag hover overlay flicker
- Titlebar controls clipped at the bottom edge (#1016)
- Sidebar git branch recovery after sleep/wake and agent checkout (#494, #671, #905)
- Browser portal routing, uploads, and click focus regressions (#908, #961)
- Notification unread persistence on workspace focus
- Escape propagation when the command palette is visible (#847)
- Cmd+Shift+Enter pane zoom regression in browser focus (#826)
- Cross-window theme background after jump-to-unread (#861)
window.open()andtarget=_blanknot opening in a new tab (#693)- Terminal wrap width for the overlay scrollbar (#522)
- Orphaned child processes when closing workspace tabs (#889)
- Cmd+F Escape passthrough into terminal (#918)
- Terminal link opens staying in the source workspace (#912)
- Ghost terminal surface rebind after close (#808)
- Cmd+plus zoom handling on non-US keyboard layouts (#680)
- Menubar icon invisible in light mode (#741)
- Various drag-handle crash fixes and reentrancy guards
- Background workspace git metadata refresh after external checkout
- Markdown panel text click focus (#991)
- Browser Cmd+F overlay clipping in portal mode (#916)
- Voice dictation text insertion (#857)
- Browser panel lifecycle after WebContent process termination (#892)
- Typing lag reduction by hiding invisible views from the accessibility tree (#862)
- CJK font fallback preventing decorative font rendering for CJK characters (#1017)
- Inline VS Code serve-web token exposure via argv (#1033)
- Browser pane portal anchor sizing (#1094)
- Pinned workspace notification reordering (#1116)
- cmux --version memory blowup (#1121)
- Notification ring dismissal on direct terminal clicks (#1126)
- Browser portal visibility when terminal tab is active (#1130)
- Browser panes reloading when switching workspaces (#1136)
- Sidebar PR badge detection (#1139)
- Browser address bar disappearing during pane zoom (#1145)
- Ghost terminal surface focus after split close (#1148)
- Browser DevTools resize loop and layout stability (#1170, #1173, #1189)
- Typing lag from sidebar re-evaluation and hitTest overhead (#1204)
- Browser pane stale content after drag splits (#1215)
- Terminal drop overlay misplacement during drag hover (#1213)
- Hidden browser slot inspector focus crash (#1211)
- Browser devtools hide fallback (#1220)
- Browser portal refresh on geometry churn (#1224)
- Browser tab switch triggering unnecessary reload (#1228)
- Devtools side dock guard for attached devtools (#1230)

Tab Colors
Right-click any workspace in the sidebar to assign it a color. There are 17 presets to choose from, or pick a custom color. Colors show on the tab itself and on the workspace indicator rail.

Command Palette
Hit Cmd+Shift+P to open a searchable command palette. Every action in cmux is here: creating workspaces, toggling the sidebar, checking for updates, switching windows. Keyboard shortcuts are shown inline so you can learn them as you go.

Open With
You can now open your current directory in VS Code, Cursor, Zed, Xcode, Finder, or any other editor directly from the command palette. Type "open" and pick your editor.

Pin Workspaces
Pin a workspace to keep it at the top of the sidebar. Pinned workspaces stay put when other workspaces reorder from notifications or activity.

Workspace Metadata
The sidebar now shows richer context for each workspace: PR links that open in the browser, listening ports, git branches, and working directories across all panes.
- Command palette (Cmd+Shift+P) with update actions and all-window switcher results (#358, #361)
- Split actions and shortcut hints in terminal context menus
- Cross-window tab and workspace move UI with improved destination focus behavior
- Sidebar pull request metadata rows and workspace PR open actions
- Workspace color schemes and left-rail workspace indicator settings (#324, #329, #332)
- URL open-wrapper routing into the embedded browser (#332)
- Cmd+Q quit warning with suppression toggle (#295)
cmux --versionoutput now includes commit metadata
- Added light mode and unified theme refresh across app surfaces (#258) — thanks @ijpatricio for the report!
- Browser link middle-click handling now uses native WebKit behavior (#416)
- Settings-window actions now route through a single command-palette/settings flow
- Sentry upgraded with tracing, breadcrumbs, and dSYM upload support (#366)
- Session restore scope clarification: cmux restores layout, working directory, scrollback, and browser history, but does not resume live terminal process state yet
- Startup split hang when pressing Cmd+D then Ctrl+D early after launch (#364)
- Browser focus handoff and click-to-focus regressions in mixed terminal/browser workspaces (#381, #355)
- Caps Lock handling in browser omnibar keyboard paths (#382)
- Embedded browser deeplink URL scheme handling (#392)
- Sidebar resize cap regression (#393)
- Terminal zoom inheritance for new splits, surfaces, and workspaces (#384)
- Terminal find overlay layering across split and portal-hosted layouts
- Titlebar drag and double-click zoom handling on browser-side panes
- Stale browser favicon and window-title updates after navigation

Tab Context Menu
Right-click any tab in a pane to rename it, close tabs to the left or right, move it to another pane, or create a new terminal or browser tab next to it. You can also zoom a pane to full size and mark tabs as unread.

Browser DevTools
The embedded browser now has full WebKit DevTools. Open them with the standard shortcut and they persist across tab switches. Inspect elements, debug JavaScript, and monitor network requests without leaving cmux.
Notification Rings
When a background process sends a notification (like a long build finishing), the terminal pane shows an animated ring so you can spot it at a glance without switching workspaces.

CJK Input
Full IME support for Korean, Chinese, and Japanese. Preedit text renders inline with proper anchoring and sizing, so composing characters works the way you'd expect.
Claude Code
Claude Code integration is now enabled by default. Each workspace gets its own routing context, and agents can read terminal screen contents via the API.
- Tab context menu with rename, close, unread, and workspace actions (#225)
- Cmd+Shift+T reopens closed browser panels (#253)
- Vertical sidebar branch layout setting showing git branch and directory per pane
- JavaScript alert/confirm/prompt dialogs in browser panel (#237)
- File drag-and-drop and file input in browser panel (#214)
- tmux-compatible command set with matrix tests (#221)
- Pane resize divider control via CLI (#223)
- Production read-screen capture APIs (#219)
- Notification rings on terminal panes (#132)
- Claude Code integration enabled by default (#247)
- HTTP host allowlist for embedded browser with save and proceed flow (#206, #203)
- Setting to disable workspace auto-reorder on notification (#215)
- Browser panel mouse back/forward buttons and middle-click close (#139)
- Browser DevTools shortcut wiring and persistence (#117)
- CJK IME input support for Korean, Chinese, and Japanese (#125)
--helpflag on CLI subcommands (#128)--commandflag fornew-workspaceCLI command (#121)rename-tabsocket command (#260)- Remap-aware bonsplit tooltips and browser split shortcuts (#200)
- IME preedit anchor sizing (#266)
- Cmd+Shift+T focus against deferred stale callbacks (#267)
- Unknown Bonsplit tab context actions causing crash (#264)
- Socket CLI commands stealing macOS app focus (#260)
- CLI unix socket lag from main-thread blocking (#259)
- Main-thread notification cascade causing hangs (#232)
- Favicon out-of-sync during back/forward navigation (#233)
- Stale sidebar git branch after closing a split
- Browser download UX and crash path (#235)
- Browser reopen focus across workspace switches (#257)
- Mark Tab as Unread no-op on focused tab (#249)
- Split dividers disappearing in tiny panes (#250)
- Flaky browser download activity accounting (#246)
- Drag overlay routing and terminal overlay regressions (#218)
- Initial bonsplit split animation flicker
- Window top inset on new window creation (#224)
- Cmd+Enter being routed as browser reload (#213)
- Child-exit close for last-terminal workspaces (#254)
- Sidebar resizer hitbox and cursor across portals (#255)
- Workspace-scoped tab action resolution
- IDN host allowlist normalization
setup.shcache rebuild and stale lock timeout (#217)- Inconsistent Tab/Workspace terminology in settings and menus (#187)
- CLI workspace commands now run off the main thread for better responsiveness (#270)
- Remove border below titlebar (#242)
- Slimmer browser omnibar with button hover/press states (#271)
- Browser under-page background refreshes on theme updates (#272)
- Command shortcut hints scoped to active window (#226)
- Nightly and release assets are now immutable (no accidental overwrite) (#268, #269)
- Fix panel resize hitbox being too narrow and stale portal frame after panel resize
- Fix split blackout race condition and focus handoff when creating or closing splits
- Terminal panes now show an animated drop overlay when dragging tabs
- Fix blue hover not showing when dragging tabs onto terminal panes
- Fix stale drag overlay blocking clicks after tab drag ends
- Move port scanning from shell to app-side with batching for faster startup
- Fix visual stretch when closing split panes
- Fix omnibar Cmd+L focus races
- Fix browser omnibar Cmd+L causing 100% CPU from infinite focus loop
- CLI commands are now workspace-relative: commands use
CMUX_WORKSPACE_IDenvironment variable so background agents target their own workspace instead of the user's focused workspace - Remove all index-based CLI APIs in favor of short ID refs (
surface:1,pane:2,workspace:3) - CLI
sendandsend-keysupport--workspaceand--surfaceflags for explicit targeting - CLI escape sequences (
\n,\r,\t) insendpayloads are now handled correctly --id-formatflag is respected in text output for all list commands
- Fix background agents sending input to the wrong workspace
- Fix
close-surfacerejecting cross-workspace surface refs - Fix malformed surface/pane/workspace/window handles passing through without error
- Fix
--windowflag being overridden byCMUX_WORKSPACE_IDenvironment variable
- Faster workspace switching with reduced rendering churn
- Fix Finder file drop not reaching portal-hosted terminals
- Fix unfocused pane dimming not showing for portal-hosted terminals
- Fix terminal hit-testing and visual glitches during workspace teardown
- Fix menubar and right-click lag on M1 Macs in release builds
- Fix browser panel opening new tabs on link click
- Fix crashes and fatal error when dropping files from Finder
- Fix zsh git branch display not refreshing after changing directories
- Fix menubar and right-click lag on M1 Macs
- Fix crash (stack overflow) when clicking after a Finder file drag
- Fix titlebar folder icon briefly enlarging on workspace switch
- Fix right-click context menu lag in notarized builds by adding missing hardened runtime entitlements
- Fix claude shim conflicting with
--resume,--continue, and--session-idflags
- Fix sidebar tab drag-and-drop reordering not working
- Fix broken mouse click forwarding in terminal views
- Rebuild with Xcode 26.2 and macOS 26.2 SDK
- Crash caused by infinite recursion when clicking in terminal (FileDropOverlayView mouse event forwarding)
- Right-click and menubar lag in production builds (rebuilt with macOS 26.2 SDK)
- Double-clicking the sidebar title-bar area now zooms/maximizes the window
- Browser omnibar
Cmd+Lnow reliably refreshes/selects-all and supports immediate typing without stale inline text - Omnibar inline completion no longer replaces typed prefixes with mismatched suggestion text
- "+" button on the tab bar for quickly creating new terminal or browser tabs
- App hang when omnibar safety timeout failed to fire (blocked main thread)
- Tab drag/drop not working when multiple workspaces exist
- Clicking in browser WebView not focusing the browser tab
- App hang when clicking browser omnibar (NSTextView tracking loop spinning forever)
- White flash when creating new browser panels
- Tab drag/drop broken when dragging over WebView panes
- Stale drag timeout cancelling new drags of the same tab
- 88% idle CPU from infinite makeFirstResponder loop
- Terminal keys (arrows, Ctrl+N/P) swallowed after opening browser
- Cmd+N swallowed by browser omnibar navigation
- Split focus stolen by re-entrant becomeFirstResponder during reparenting
- Browser not loading localhost URLs correctly
- Menubar and general UI lag in production builds
- Sidebar tabs getting extra left padding when update pill is visible
- Memory leak when middle-clicking to close tabs
Sidebar Metadata
The sidebar now displays git branch, listening ports, log entries, progress bars, and status pills for each workspace.
- Sidebar metadata: git branch, listening ports, log entries, progress bars, and status pills
- localhost and 127.0.0.1 URLs not resolving correctly in the browser panel
browser opennow targets the caller's workspace by default via CMUX_WORKSPACE_ID
- Arrow key navigation in browser omnibar suggestions
- Browser zoom shortcuts (Cmd+/-, Cmd+0 to reset)
- "Install Update and Relaunch" menu item when an update is available
- Open browser shortcut remapped from Cmd+Shift+B to Cmd+Shift+L
- Flash focused panel shortcut remapped from Cmd+Shift+L to Cmd+Shift+H
- Update pill now shows only in the sidebar footer
- Omnibar inline completion showing partial domain (e.g. "news." instead of "news.ycombinator.com")
- Update pill not appearing when sidebar is visible in Release builds
- Cmd+click on links in the browser opens them in a new tab
- Right-click context menu shows "Open Link in New Tab" instead of "Open in New Window"
- Third-party licenses bundled in app with Licenses button in About window
- Update availability pill now visible in Release builds
- Cmd+[/] now triggers browser back/forward when a browser panel is focused (no-op on terminal)
- Reload configuration shortcut changed to Cmd+Shift+,
- Improved browser omnibar suggestions and focus behavior
- Sparkle updates from
0.27.0could fail to detect newer releases because release build numbers were behind the latest published appcast build number - Release GitHub Action failed on repeat runs when
SUPublicEDKey/SUFeedURLalready existed inInfo.plist
- Release build failure caused by debug-only helper symbols referenced in non-debug code paths
- Optional nightly update channel in Settings (
Receive Nightly Builds) - Automated nightly build and publish workflow for
mainwhen new commits are available
- Settings and About windows now use the updated transparent titlebar styling and aligned controls
- Repository license changed to GNU AGPLv3
- Terminal panes freezing after repeated split churn
- Finder service directory resolution now normalizes paths consistently
- Muted traffic lights and toolbar items on macOS 14 (Sonoma) caused by
clipsToBoundsdefault change - Toolbar buttons (sidebar, notifications, new tab) disappearing after toggling sidebar with Cmd+B
- Update check pill not appearing in titlebar on macOS 14 (Sonoma)
- Muted traffic lights and toolbar items in focused window caused by background blur in themeFrame
- Sidebar showing two different textures near the titlebar on older macOS versions
- Blank terminal on macOS 26 (Tahoe) — two additional code paths were still clearing the window background, bypassing the initial fix
- Blank terminal on macOS 15 caused by background blur view covering terminal content
- Update bundle identifier to
com.cmuxterm.appfor consistency
- Rename app to cmux — new app name, socket paths, Homebrew tap, and CLI binary name (bundle ID remains
com.cmuxterm.appfor Sparkle update continuity) - Sidebar now shows tab status as text instead of colored dots, with instant git HEAD change detection
- CLI
set-statuscommand not properly quoting values or routing--tabflag
- Xcode and system environment variables (e.g. DYLD, LANGUAGE) leaking into terminal sessions
- Zsh autosuggestions not working with shared history across terminal panes
- Auto-update not working (Sparkle EdDSA signing was silently failing due to SUPublicEDKey missing from Info.plist)
- Auto-update not working (Sparkle public key was missing from release builds)
- Traffic lights (close/minimize/zoom) not showing on macOS 13-15
- Titlebar content overlapping traffic lights and toolbar buttons when sidebar is hidden
- Sidebar blur effect with withinWindow blending for a polished look
--panelflag fornew-splitcommand to control split pane placement
- Typing lag caused by redundant render loop
- Setup script for initializing submodules and building dependencies
- Contributing guide for new contributors
- Terminal focus when scrolling with mouse/trackpad
- Reload scripts are more robust with better error handling
- Customizable keyboard shortcuts via Settings
- Find panel focus and search alignment with Ghostty behavior
- Sentry environment now distinguishes between production and dev builds
- Handle display scale changes when moving between monitors
- Fix SwiftPM cache handling for release builds
- Notifications documentation for AI agent integrations
- App and tooling updates
- Sentry SDK for crash reporting
- Documentation site with Fumadocs
- Homebrew installation support (
brew install --cask cmux) - Auto-update Homebrew cask on release
- High CPU usage from notification system
- Release workflow SwiftPM cache issues
- New tabs now insert after current tab and inherit working directory
- Normalized window controls appearance
- Added confirmation panel when closing windows with active processes
- Socket key input handling
- OSC 777 notification sequence support
- Customized About window
- Restricted titlebar accessories for cleaner appearance
- Environment variable and terminfo packaging issues
- XDG defaults handling
- Terminfo packaging for proper terminal compatibility
- Sparkle updater cache handling
- Ghostty fork documentation
- cmux CLI with socket control modes
- NSPopover-based notifications
- Notarization and codesigning for embedded CLI
- Release workflow reliability
- Refined titlebar controls and variants
- Clear notifications on window close
- Debug scrollback tab with smooth scroll wheel
- Mock update feed UI tests
- Dev build branding and reload scripts
- Notification focus handling and indicators
- Tab focus for key input
- Update UI error details and pill visibility
- Renamed app to cmux
- Improved CI UI test stability
- Sparkle auto-update flow
- Titlebar update UI indicator
- GPU-accelerated terminal rendering via Ghostty
- Tab management with native macOS UI
- Split pane support
- Keyboard shortcuts
- Socket API for automation