4.8.5 — Windows shells, tmux 3.7, and Google sign-in
A snapshot as of 4.8.5 (released 2026-08-15). It will go stale as the app moves on — that is expected, and the living reference is the guide each section links to.
npx mulmoterminal@latest
Almost nothing to configure — but if you were hit by the tmux one, updating is not enough on its own. That section has the one command you need.
This release also adds a preview for shared apps and moves how the meeting-room template refills slots. Those two are not covered here yet — they are user-facing enough to want screenshots, so they get their own page (#1733).
Windows: a Shell cell died the instant you started it
Before. On Windows, picking Shell in the Agent Picker failed immediately — the cell went to disconnected with [session ended — exit 1], and the console showed:
C:\Program : The term 'C:\Program' is not recognized as the name of a cmdlet...
Claude and Codex cells in the same window were fine, which made it look like a problem with the Shell option rather than with a path.
Why. $SHELL is an executable path, and Git for Windows sets it to C:\Program Files\Git\usr\bin\bash.exe. That value was handed to PowerShell as a command string, and PowerShell parses a command string — so it split at the first space and looked for a program called C:\Program.
Quoting it would not have been enough, and this is the part worth knowing if you ever build something similar: in PowerShell a quoted path is a string expression. It prints the path and starts nothing — a terminal that opens onto no shell, with no error anywhere. The fix removes the parser instead of satisfying it. A shell MulmoTerminal chose is now handed to the terminal as a program, with no shell in between.
A launcher chip is different and deliberately unchanged: that is a command line you wrote, with pipes and $VAR you expect to expand, so it still goes through a shell.
How to tell you have it. Open a cell, pick Shell, press play. You get a prompt. If you have no $SHELL set at all, you now get your ComSpec (usually cmd.exe) instead of the old fallback, which pointed at a path that does not exist on Windows.
Related: the agent picker.
tmux 3.7: after deleting a worktree, every new session died
This is the one that needs a command from you.
Before. On tmux 3.7, deleting a git worktree could leave the tmux server holding that directory. From then on every new session on that machine died the moment it started, while the sessions already open carried on working. Restarting MulmoTerminal did not help. The log said only this, and neither line names the cause:
[pty] claude exited code=0 signal=0 after 48ms
Unhandled pty write error [Error: EIO: i/o error, write]
code=0 looks like a clean exit. It is not the agent’s code at all — it is the tmux client’s, and that is 0 whatever happens to the program in the pane.
Why. tmux 3.7 moves the server’s working directory to the client’s on every new session and never puts it back. When the directory it is left holding gets deleted, tmux skips telling new panes where to start, so they start in the deleted path — and a program that asks the operating system “where am I?” as it launches (the claude binary does) dies on the spot.
tmux 3.6 and earlier never had this. If it started for you recently, a brew upgrade to 3.7 is the likely reason.
Now. MulmoTerminal starts the tmux client from a directory it never deletes, so the server is never left holding one. Your cells still open where you asked them to.
If it is happening to you right now, updating is not enough. The broken thing is the tmux server, which outlives MulmoTerminal — the update stops it happening again, but the server that is already stuck stays stuck. Kill it once:
tmux -L mulmoterminal kill-server
That closes every running session on that server, so do it when you can afford to lose them. Then start MulmoTerminal again.
To check whether yours is stuck, ask the server which directory it is holding:
lsof -a -p "$(tmux -L mulmoterminal display -p '#{pid}')" -d cwd -Fn
If that prints a path that no longer exists, that is the one.
Reported upstream as tmux/tmux#5473.
Remote host: Google sign-in accepted you and then forgot
Before. Pressing Connect in RemoteHost could complete the Google sign-in and still leave the panel on Offline. Watching the network, the sign-in itself succeeded — and nothing was saved.
Why. Not MulmoTerminal’s code: a regression in the Firebase SDK version we were shipping. That version treats “this page is in the background” the same as “this page is closing” — and a sign-in popup puts the page it came from in the background, which is when the credential is written. The write threw, the credential was dropped, and the sign-in came back as a failure even though it had worked.
Now. The SDK is pinned to the version before that change. The upstream fix exists but has not been published yet, so pinning is the only route today.
How to tell you have it. Press Connect and complete the Google sign-in: the panel goes Online and stays there across a reload. Setting it up from scratch is in from your phone.
If sign-in still fails for you in Chrome specifically, there is a separate open report — #1661 — where the popup never opens at all. That one is not fixed here; adding http://localhost:34567 to Chrome’s allowed-popups list (chrome://settings/content/popups) is worth trying, and a note on that issue helps.
A skill you switched off still showed in the menu
Before. Setting a skill to "off" in skillOverrides hid it from nothing — it stayed in the Skill menu and in GET /api/skills.
Now. Off means off, in both places.
How to tell you have it. Switch one off and reopen the Skill menu; it is gone. What skillOverrides is and where it lives is in configuration.
Everything fixed here
| Fix | Issue |
|---|---|
| Windows: a Shell cell died at launch | #1717 |
| Windows: the shell is now started without a shell in between | #1720 |
| tmux 3.7: every new session died after a worktree was deleted | #1725 |
| Remote host: Google sign-in lost the credential | #1731 |
| A skill switched off still showed in the menu | #1698 |
Shared apps also gained a preview and a change to slot refill; both are still to be written up (#1733).
What the previous release fixed is in the 4.8.4 guide.