✨ Release Highlights
🤖 External MCP becomes a first-class way to connect other agents to Netcatty
v1.1.61 is a big release for using Netcatty as the terminal and host-control layer behind external AI tools. External MCP has moved from a lower-level integration path into a Settings-managed experience for Codex, Claude, Cursor, and Grok. Instead of manually piecing together launch commands and discovery files, Netcatty now presents dedicated client setup tabs, copyable configuration blocks, clearer setup state, and a visible permission-mode status so users can tell whether external tools are allowed to read only or request write actions.
This release also adds a new host_open capability for MCP agents. External agents could already inspect known hosts and work with open terminal sessions, but they could not directly open a saved host themselves. Now an agent can ask Netcatty to open a host into a terminal tab, have that session join the agent's working scope, and continue from there. The practical result is a smoother flow for agent-assisted SSH work: pick a host, open it, run through the approved terminal path, and keep the session visible in Netcatty instead of hiding it in a separate tool process.
A lot of hardening landed around this feature as well. External MCP now uses a dedicated token, handles enable/disable races more safely, preserves session scope more reliably across windows, refreshes permission mode for long-running clients, and surfaces approval cards in Settings as well as the main chat panel. Several edge cases for Claude, Codex, Grok, discovery paths, local/project scope, and stale client entries were tightened so one-click setup behaves more predictably.
📂 SFTP can reuse live terminal sessions
SFTP host picking is now much better when you already have SSH terminals open. The picker can show currently connected terminal sessions and reuse a live SSH connection instead of forcing a new login. This is especially useful for ephemeral hosts opened from deep links, sessions where the saved Vault credentials are unavailable on the current device, or cases where you simply want SFTP to follow the terminal you are already using.
The connected-host picker also received several reliability fixes. It now refreshes when sessions change, prefers the latest matching live session, uses the live session endpoint instead of stale Vault fields, avoids listing sessions that cannot actually be reused, and fails closed instead of silently falling back to a fresh connection when the user selected a specific live session. Edited saved hosts also stay visible when they no longer match the live endpoint, so the picker remains honest about what it is about to open.
🌐 App-level HTTP(S) proxy settings for sync and AI
Netcatty now has app-level HTTP(S) proxy support for cloud sync and AI traffic. This gives Windows users and managed-network users a straightforward way to route Google Drive, OneDrive, GitHub sync, and AI provider requests through system or custom proxies without mixing those settings into SSH ProxyJump or terminal-specific networking.
The proxy work also includes important safety fixes: cancellation is registered earlier, insecure TLS handling applies to the intended tunneled target rather than weakening the proxy hop, unchanged proxy settings no longer bounce between windows, and terminal or SSH ProxyCommand environments are restored so app-level proxy settings do not leak into places they do not belong.
🧾 More dependable automation scripts and bastion login flows
Automation scripts are more reliable when they start against a screen that already contains the text they are waiting for. Netcatty now seeds script waits from the visible terminal viewport or live buffer so bastion menus and startup prompts already on screen can be matched instead of timing out. Follow-up fixes make startup waits, prompt waits, sync-race output, long visible menus, and send-then-wait flows behave more like a human reading and typing in the terminal.
sendLine now behaves more like keyboard input by sending the command body and Enter separately. This matters for bastion and jump-host menus that react differently to pasted lines versus typed text. Stopped script runs were also cleaned up: rerunning a stopped automation should no longer inherit stale actions or confusing leftover logs from the previous run.
🖥️ Terminal reliability: big output, Ctrl+C, prompts, WebGL, and autocomplete
This release includes another serious round of terminal polish. Large output floods now drain better when SSH flow is paused, reducing slowdowns during cases like tail -2000f over higher-latency links. Hidden and hibernated panes also recover output more reliably when tabs become visible again.
Ctrl+C behavior around sudo and password prompts is much safer. Netcatty now preserves password prompts that arrive during interrupt drain, including split prompts, ANSI-colored prompts, prompts with full-width punctuation, Kylin-style no-colon prompts, and large chunks where the prompt appears at the end. That means interrupting noisy commands should be less likely to erase the password prompt you actually need to respond to.
There are also visible terminal fixes: WebGL rendering clears stale glyphs after side-panel-only pixel resizes, Local Terminal autocomplete can seed itself from shell history files, whitespace-only SSH passwords are accepted, and Telnet resize updates are gated more carefully.
🛠️ Important platform and packaging fixes
Windows Mosh is more robust. Netcatty now handles ConPTY output that can split or decorate the MOSH CONNECT handshake, and bundled Cygwin TERMINFO paths are converted so Windows mosh-client can find terminal definitions correctly.
Linux x64 packages were rebuilt in a RHEL 8-compatible environment. The final packaging flow now uses an AlmaLinux 8 build environment with a newer toolchain while keeping the glibc compatibility target, and the RPM/pacman packaging path was hardened. This should help users on RHEL 8, CentOS 8, UOS, Deepin, and similar systems where newer glibc requirements previously made native modules fail to load.
SFTP uploads are safer too. Oversized fast upload chunks could produce corrupt remote files while appearing successful; Netcatty now uses safer chunking, verifies remote size after upload, and waits for the right stream close behavior so truncated archive uploads fail loudly instead of pretending to be complete.
Smaller but still useful fixes include safer SSH key passphrase prompts, smoother 1% opacity adjustment, local shell selection in the quick switcher, better group host search scoping, clearer jump-host authentication errors, Windows Codex shim resolution under nvmd, early AI bridge event buffering, and spam-cleanup hardening for the repository.
Download based on your OS:
| OS | Download |
|---|---|
| Windows | |
| macOS | |
| Linux |
What's Changed
- Update Nix release metadata for v1.1.60 by @binaricat in #2009
- Add spam comment cleanup workflow by @binaricat in #2014
- Handle trailing punctuation in spam links by @binaricat in #2016
- fix: gate Telnet NAWS resize updates by @binaricat in #2017
- Catch suspicious GitHub spam attachments by @binaricat in #2020
- fix: Windows Mosh ConPTY handshake + Cygwin TERMINFO (#2025) by @binaricat in #2028
- fix: default passphrase remember checkbox off (#2024) by @binaricat in #2029
- fix(sftp): prevent corrupt uploads from oversized fastPut chunks by @binaricat in #2030
- fix: stop window opacity slider oscillation (#2018) by @binaricat in #2031
- fix(terminal): clear WebGL atlas on pixel-only side-panel resize by @binaricat in #2033
- fix(ai): resolve nvmd Windows Codex shims for SDK turns by @binaricat in #2032
- fix: let script waits match the visible startup screen by @binaricat in #2035
- Tighten spam filter to delete any untrusted zip comments by @binaricat in #2038
- fix: keep sudo password prompts during Ctrl+C drain (#2010) by @binaricat in #2034
- fix(terminal): keep tab visibility in sync for output recovery by @binaricat in #2041
- fix: accept whitespace-only SSH passwords by @binaricat in #2043
- fix(terminal): seed Local Terminal autocomplete from shell histfiles by @binaricat in #2044
- feat(settings): finer window opacity steps (96–99%) by @binaricat in #2046
- fix(ai): buffer early bridge stream events by @keyleaf in #2048
- Add app-level HTTP(S) proxy for cloud sync and AI by @binaricat in #2050
- Fix quick switcher local shell setting by @binaricat in #2057
- Fix group host list search scoping by @binaricat in #2056
- Fix jump host auth failure attribution by @binaricat in #2058
- feat: External MCP for Codex, Claude, Cursor, and Grok by @binaricat in #2047
- feat: show live terminal hosts in SFTP picker by @binaricat in #2045
- Fix rerunning stopped automation scripts by @binaricat in #2059
- fix: bastion script waits and keyboard-like sendLine (#1960) by @binaricat in #2055
- fix: build Linux x64 packages on Debian Buster for glibc 2.28 by @binaricat in #2063
- fix(ai): probe remote login shell so fish AI exec works (#1854) by @binaricat in #2061
- feat(ai): add host_open for MCP agents and polish External MCP setup UI by @binaricat in #2066
- fix(settings): surface External MCP permission mode and collapse help into tooltip by @binaricat in #2067
- fix(terminal): keep bulk drain batches while SSH flow is paused (#1961) by @binaricat in #2068
- fix(ci): build Linux x64 natives on AlmaLinux 8 for Electron C++20 by @binaricat in #2069
New Contributors
Full Changelog: v1.1.60...v1.1.61