Repository navigation
Tether 0.10.0
Tether 0.10.0
Released 2026-11-02
Highlights
- Signing in once is enough again: reconnecting after the Mac slept, and new tabs to the same server, no longer ask for the password or Touch ID while it is remembered.
- Changing networks no longer leaves tabs on "Connecting": a connection made over the old network is checked before it is used, every step of connecting has a limit, and the tab says what did not answer.
- Sessions you leave running on a server are listed under the host by their tab's name and open again with a click; paused tabs whose session ended there close by themselves, and nothing is ended on a server without you.
New
- Quitting asks first when plain shells, transfers or port forwards would end (with Quit When Transfers Finish); Restart to Update says the same.
- Port forwards come back after a relaunch (those listening only on this Mac by themselves, others when you say so), and also for hosts without an open tab when the network returns.
- A server without tmux says so once (ever), with how to install it.
- Recordings never fill the disk: with less than 5 GB free (Settings ▸ Recordings ▸ Keep free space on the disk, adjustable or off), they are compressed and the oldest closed ones removed, also below the storage limit and while Tether is locked.
Improved
- One question per server: a password you type also answers that server's other sign-ins for a minute — further connections for many tabs, a file window, a retry — also with Remember sign-in passwords turned off. Cancelling (or a refused password) stops the server's other waiting connections from asking in turn.
- Take your time answering: an open sign-in question never times out on Tether's side, the server gets 2 minutes to check the answer, and an answer given after the server's own login time signs in again without asking.
- Passwords are remembered and filled in for more servers: host names from wildcard or
Matchblocks,%hand HostKeyAlias, directory accounts with "@" in the user name, and PAM's other wordings of the password question. - App Lock no longer forgets remembered passwords; nothing signs in while Tether is locked, and tabs sign in once it is unlocked. Unlocking counts as the Touch ID check for saved passwords.
- A password typed in Quick Connect goes to that connection without Touch ID, also when you saved it.
- Patient keep-alives are on by default: every 60 s, so firewalls and routers do not forget an idle connection, but a connection ends only after 10 minutes without any answer. A keep-alive interval set in your ssh_config is kept, with its count raised to last as long.
- Checking a connection after waking or a network change runs nothing on the server any more (it asks the server to refuse a forward instead): a slow or busy server is no longer taken for a dead one, and a connection that is still receiving data is never closed. After a long sleep or on another network the check decides quickly, and tabs come back without an extra wait.
- Retry no longer closes a connection that is merely slow; only one found dead is replaced.
- A change of network on the same interface (another Wi-Fi network, a VPN with a new address) is now noticed.
- A plain-shell tab on a server whose other tabs use tmux gets a connection of its own, so it cannot take the others' connection down while the Mac sleeps.
- Turning off connection sharing no longer cuts off running plain shells, transfers and forwards.
- Your ssh_config is respected: its ConnectTimeout is used, its forwards are set up once (and never fail a sign-in), and a RemoteCommand no longer stops every tab from connecting (the tab says it is not run).
- The key-login check behind the "Set Up SSH Key" offer runs once per host instead of at every launch, and never through jump hosts.
- A plain shell (no tmux or screen) that lost its connection starts again in the same tab, as its notice says, instead of ending after a needless sign-in.
- GNU screen tabs share the session with other displays instead of pushing them out (two Macs no longer take it from each other), and screen's detach key or
tmux detachleave the tab waiting for Reconnect instead of ending it. - Transfers keep the Mac awake while they run, survive a sleep, are tried again after a lost connection, and previews or drags to Finder no longer wait behind them.
- What you type while a tab's connection is away is shown in the question about it, which comes only when another program is in front by then.
- A quick reconnect shows the small banner instead of covering the terminal, which stays scrollable.
- Private tabs end their own tmux or screen session on the server when closed.
- The Connection Log says much more about sign-ins and drops: the kind of each question and how it was answered, why nothing remembered answered, every forgotten password and why, the keep-alive each connection uses, ssh's own last words when a connection ends, why a tab tries again, how long the Mac slept, and the settings that matter (at launch and when they change). Tabs have numbers; copied and saved logs carry a header, local times, and no tab titles (which can hold command lines). Filtering by server keeps the sleep and network events.
- While Tether is locked, or recordings are encrypted, notifications no longer show what programs printed; locking removes those already shown.
- Two names for the same server (aliases, Quick Connect) share its connections and its tab limit.
- File tabs and host panels follow changes to the ssh settings, a failed folder listing loads again when the network returns, and host status that stopped updating is shown faded and restarted.
- A saved password asks for Touch ID when it is read from the keychain; after that it is remembered like a typed one, also through sleep and a locked screen (Settings ▸ Passwords ▸ Also forget them when the screen locks or the Mac sleeps still forgets everything).
- A remembered password belongs to the server ssh goes to (host name, port, user, jump host), no longer to the connection's socket name, which also depends on the Mac's own name and could change with the network.
- When ssh asks for a password although passwords are remembered, the Connection Log says why; it also notes when a password was remembered and when a saved one was used.
- A tab's recording says Paused while the Mac slept for a sleep, not Connection lost.
- On a server that asks a one-time code (or a push to approve) after the password, all tabs, file windows and transfers share one connection, so the code is asked once.
- Transfers stopped by a lost connection, the server's session limit or a sign-in nobody could answer are sent again by themselves as soon as the server can be reached (the network back, the server signed in, Tether unlocked), instead of once after five seconds.
- Folders whose listing failed load again as soon as their server signs in, also in the inspector and in Files windows, and also a first listing.
- With connection sharing off, a password typed for a transfer or a file listing is remembered and answers the others, and a time limit no longer ends an open password question.
- A port forward whose connection ended is noticed at once (it waits to be made again on the next connection) instead of up to 30 seconds later.
- No step of connecting waits for ever: getting the connection, starting the session and restoring it each have a limit while nothing happens (time spent answering a question does not count). The tab then says what did not answer ("No answer from example.com while restoring the session") and tries again; Retry, and the network coming back, also replace an attempt that went silent.
- Only a question you can see holds other connections back: one waiting unseen (for a tab in the background, or while Tether is locked) no longer keeps every tab, file window and transfer to that server on "Connecting".
- A server behind a jump host that the jump host cannot reach says so — "The jump host answered, but could not reach the server (No route to host)" — in tabs, file windows and transfers, instead of "refused" or "closed during the handshake"; it is tried again in the server's rounds.
- File windows: a folder that no longer exists (remembered from the last run, or deleted while shown) shows the nearest folder that does, and says so; one you typed says it does not exist, with Open Nearest Folder. A listing or a folder's size stops on the server when you go elsewhere or close the tab, and failed listings in tabs you are not looking at load when you show them, not all at once.
- File listings and other commands have one limit that includes connecting, and their errors name the cause ("did not answer", "cannot be reached from this network", "the jump host could not reach …").
- Host panels (processes, connections, GPUs) ask a server that does not answer less and less often, and at once again when it answers.
- A transfer whose connection is lost several times is sent again each time the server can be reached (up to six tries, waiting longer each time), and says how far it had come; nothing is ever written over.
- Sessions a closed tab left running on a server are listed under the host one by one, under the tab's name and color, and open again with a click as that tab, instead of being summed up as "leftover sessions" with a Clean Up button. Opening or ending them all at once is in the host's menu (Open or End Detached Sessions…); like Terminate All Sessions, it now acts only on sessions tabs of this Mac left there, never on another Mac's or another person's on a shared account, and leaves one alone that somebody attached to meanwhile.
- Paused tabs (suspended, or waiting for a sign-in or Reconnect) close by themselves once their server answers and their session is found gone there; their output stays in the archive. Only tmux or screen saying so counts, asked twice.
- Names, titles and command lines from servers are shown without control, bidirectional or invisible characters, and cut when very long; the list of a server's sessions is bounded, and no command's output can grow without limit in Tether's memory.
- Quitting ends commands still running for file windows and checks, and private tabs end their sessions together instead of one after another.
Fixed
- Closing a private tab whose server could not be reached could leave a stray background ssh connection for minutes.
- Cancelling a sign-in with a queued upload asked again for every queued file.
- A one-time code or new password asked after the password could replace the password saved in the keychain, and made Tether forget the password the server had just accepted. A server that asks for its code with the same "Password:" again is recognized too, when what you type is only digits.
- A sign-in answered after more than 45 seconds was stopped right after the answer, and the password was asked again.
- A remembered password was forgotten when a sign-in was stopped by Tether or by you (a tab closed, Retry), although the server never judged it.
- A saved password the server refused was sent again at every new sign-in; it is now sent no more until you save it anew.
- Touch ID for a saved password was asked while the screen was locked or the Mac asleep, and failed unseen; the sign-in now waits until you are back.
- Checking a new SSH key could send the key's passphrase to a jump host that asked for its password.
- Removing or replacing a saved password left a copy remembered from it in use.
- A slow
ssh -Vat launch switched off remembered passwords for the whole run. - The Unlock button could do nothing after switching users.
- The sign-in panel lost what you had typed when you looked at another tab and came back.
- A connection kept from the last run, or one that stopped answering altogether, was used as it was and could leave tabs hanging; it is now checked and replaced.
- Background work could run a command a second time after a connection drop (a copy or archive made twice); it is now retried only when it never reached the server, and a server's session limit reached for a moment is waited out.
- A transfer the server's session limit refused was reported as a lost connection.
- A new tab right after waking ended with "host name not found" while the network was coming back; it now tries a few times first.
- Keys typed while a tab was still connecting could reach tmux as commands and leave the tab deaf to every key; they now wait and are sent once the session is there.
- After a relaunch, bracketed paste (and mouse reporting) were off until the program set them again, so a multi-line paste could run line by line.
- A tab whose full-screen program ended while away stayed on the alternate screen after re-attaching (no scrollback).
- A tmux session also open on another computer or terminal could show an old frame under the live one (a coding agent's screen twice): tmux had sized its window for the other one. The rows outside it are now cleared, and typing in the tab or showing it again sizes the window for this tab.
- Output printed during a re-attach could be lost; when the last line seen was gone from the server's history, up to 100,000 lines were added again (now its last 1,000).
- Focus and mouse reports sent while a tab was away were counted as typed text, or beeped.
- Renaming in the file manager could replace an existing file or move the item into a folder of that name; it now refuses, and says why.
- Agents' "waiting" notifications came again after every relaunch.
- Recordings over the storage limit while Tether was locked (with encryption on) were deleted instead of compressed; they now wait for the unlock (up to twice the limit).
- A
~/.ssh/configcreated after Tether started was not noticed until a relaunch. - Restored tabs could wait behind recording maintenance at launch before connecting.
- Files dropped or pasted into a terminal on this Mac while a full-screen program was open seemed to do nothing (their paths went to the clipboard without a word). Their paths are now typed when the program takes pastes as pastes (vim, an agent's prompt), and otherwise the terminal says they were copied.
- A server's files pasted or dropped into a terminal on this Mac are saved where that terminal's files go (its folder, else Downloads; Settings ▸ Transfers) instead of a temporary folder that was cleared after a day; nothing there is replaced.
- Rows dragged from this Mac's own file manager into a terminal: their paths are typed into a local one, and they are uploaded to a server directly, without an extra copy first.
- A sign-in that failed because the network was not back yet (common right after waking) no longer forgets the remembered password, so the next try does not ask again.
- A new tab whose first sign-in broke off ("Broken pipe") now tries again instead of ending; a harmless line in ssh's log (a missing
known_hosts2file) made the failure look permanent. - A tab no longer reports "The server stopped answering" when macOS only held Tether back (App Nap, the display going to sleep before the Mac sleeps); a tab is let go only when two checks in a row find it silent.
- The Connection Log lists the network interfaces as they are when the network goes away or comes back (it showed the previous ones, and some twice), and keeps separate ssh messages on separate lines.
- When GNU screen lets go of a tab, the Connection Log says that it re-attaches to see whether the session is still there.
- Tether's shared connections are named after the server rather than this Mac's own name, which can change with the network and opened a second connection (and sign-in).
- After a change of network, tabs could stay on "Connecting" while
sshin Terminal worked: a shared connection made over the old network was still trusted. It is now checked before it is used again, also when a tab simply hears nothing (a new public address, Wi-Fi roaming), and a dead jump host connection is found the same way. - Woken before Wi-Fi was back, tabs could wait for the network after it had returned; the network is also looked at every 30 seconds while tabs wait for it.
- Retry did nothing while Tether asked the server whether a tmux session had ended.
- On a busy Mac, a transfer whose connection was lost could be reported as "scp exited with code 1" and not sent again: scp's last words, still unread when it ended, were dropped.
- End on Server… reported success on a server without tmux or screen on its PATH, and GNU screen sessions with unusual names could be taken for gone (their names were read as patterns).
Notes
- Terminate on a tab whose server cannot be reached no longer offers End When Connected: Close for Now moves it to the background, and once the server can be reached Tether tells you whether the session is still running there, and you decide. Nothing is ended without you; tabs marked "Ends when connected" become "Closed while offline".
- Keep-alives were off by default (0, count 3). If yours were still at those values, they are now every 60 s with a count of 10 — set them back in Settings ▸ Sessions ▸ Connection Health if you want them off.
- After updating with Keep connections open after quitting on, each server signs in once more: Tether's shared connections have new names.