SSH Client - Secure ShellFish
Terminal, Files & Finder
Free · In-App Purchases
Lightning fast SSH terminal with remote file access. No other app fuses your SSH servers and iOS devices as well as Secure ShellFish. Tap Get and see for yourself.
Terminal supports standard text editing gestures for selection, scrolling and copy/paste as well as custom gestures to send arrow keys and tabulator making shell entry and full screen editing with vim or emacs delightful. Bar above the keyboard makes it easy to type special keys and insert snippets.
Select and drag filenames out of the terminal as actual files and drag files from other apps into the terminal to upload. Use built-in tmux support to persist terminal sessions if you lose Internet access, pick existing sessions with thumbnails and Handoff sessions between devices.
Server file system is available in the Files app and recently accessed files and directories are cached to make them available when offline. Use apps like Textastic and iA Writer for a native editing experience working on your remote server files.
Upload files or entire directories from the share sheet with minimal friction as the last destination directory for each kind of file is remembered or automate file transfers in the Shortcuts app.
Connect to your Mac, Synology NAS and any other SSH server or create new Digital Ocean droplets right from the app.
Secure ShellFish is useful as a free app and paying pro users can disable ads in the terminal, upload through the Files app and configure unlimited number of servers.
more Collapsed server groups show a count of the servers inside.
Starting a session works again on tmux 3.2 and older, along with general improvements to tmux native mode.
Improved support for DEC 2026 to avoid terminal flicker.
Holding alt while tapping/clicking sends the click through to mouse-aware programs (tmux, Midnight Commander), including trackpad/mouse right-clicks; shift keeps the tap local for cursor placement and selection.
Esc, ctrl and alt on the keyboard bar can be customized with tap-and-hold.
2026.27 1 day ago
The server list now has a selection mode. Start it from the (...) button to pick multiple servers, then move the whole selection to a group, delete it, export it, or open a new terminal that runs a shared command across every selected server.
You can now generate and import SSH keys directly from the pop-up menu used to pick an SSH key for a server.
Keyboard Shortcut Change
The Type Sentence shortcut is now Command-Shift-E (previously Command-E).
2026.26 16 Jul
Fixed a bug from a recent update where an already-authenticated connection would wait for re-authentication, causing delays with tmux or would refuse to attempt authentication for some server configurations.
The keyboard bar now has a three-way visibility setting: Never, Automatically, or Always, remembered separately for the on-screen and external keyboards. The Always setting keeps the bar on screen for the whole session, even when the terminal is not focused.
Export servers as a CSV file from the (...) button above the server list.
New 'settitle' shell command sets the terminal, tab, and window title and works in bash, zsh, and fish. An empty argument restores the default title. This requires updating the Shell Integration.
Fixed a crash when a port forward was configured with a port number above 65535.
2026.25 8 Jul
The keyboard bar now has a three-way visibility setting: Never, Automatically, or Always, remembered separately for the on-screen and external keyboards. The Always setting keeps the bar on screen for the whole session, even when the terminal is not focused.
Export servers as a CSV file from the (...) button above the server list.
Fixed a bug from a recent update where an already-authenticated connection would wait for re-authentication, causing delays with tmux.
New 'settitle' shell command sets the terminal, tab, and window title and works in bash, zsh, and fish. An empty argument restores the default title. This requires updating the Shell Integration.
Fixed a crash when a port forward was configured with a port number above 65535.
2026.24 7 Jul
New 'download' shell command that saves a file from the server to anywhere in Files app. This requires updating the Shell Integration.
On iPad, the manual page viewer can be docked to the left or right of the terminal instead of floating, so a man page stays open beside a live session. A button in its navigation bar switches between Floating, Left Side and Right Side, and your choice is remembered.
Browser re-authentication works with any server that withholds login behind a browser link, not just Tailscale. When a login banner carries an informational link it is surfaced in the connection status and stays tappable.
Images pasted into the terminal upload with a generated name like pasted-from-shellfish-20260701-143012.png
Fix for pinyin and other multistage input methods where picking a candidate could delete the typed letters instead of sending the composed text.
2026.23 4 Jul
Support for Tailscale SSH check mode. When a host enforces periodic re-authentication, ShellFish opens the Tailscale login in a browser and connects once you authenticate.
The Hostkey fingerprints list gains a per-row Copy action.
Improvements to LLM agent hooks to correctly show notifications. This requires reinstalling Shell Integration.
The Manage screen's Discard changes and Remove cache actions now sit in a (...) button instead of being hidden behind a long-press menu.
2026.22 1 Jul
New manual page viewer. Select a command in the terminal and choose Manual to read its man page without leaving the app, or browse all of a server's manual pages from the View menu. Pages are downloaded and rendered on device, so they are searchable and selectable, with a section navigator and tappable cross references like fork(2) that jump to the referenced page.
Fixed the paste button in the keyboard bar sometimes appearing blank. As a result, iOS may now prompt you when pasting from other apps. You can turn these prompts off under Settings → ShellFish → Paste from Other Apps → Allow.
Type Sentence mode no longer ends when you press enter. You can still toggle from the paste button's context menu.
Open Terminal action now works correctly on iPhone.
When creating Digital Ocean droplets, plans are now correctly sorted by price.
Improved importing of iTerm2 terminal themes.
2026.21 22 Jun
Fixes incorrect cursor placement.
Includes updates from previous update:
Tap "Scan clipboard" when configuring a new server to pull connection details out of a screenshot or text. Processing happens entirely on device making it exclusive to newer iPads, iPhones & Macs.
2026.20 9 Jun
Tap "Scan clipboard" when configuring a new server to pull connection details out of a screenshot or text. Processing happens entirely on device making it exclusive to newer iPads, iPhones & Macs.
Fixes for keyboard customization and Keyboard Presets.
Allow auto-scrolling terminal to extend selection.
Improvements to tmux native mode.
Fixes incorrect cursor placement.
2026.19 5 Jun
Tap "Scan clipboard" when configuring a new server to pull connection details out of a screenshot or text. Processing happens entirely on device making it exclusive to newer iPads, iPhones & Macs.
Fixes for keyboard customization and Keyboard Presets.
Allow auto-scrolling terminal to extend selection.
Improvements to tmux native mode.
2026.18 4 Jun
It is now possible to customize buttons on the Fn keyboard. All keyboard bar + Fn customizations are stored in presets that you can switch between by long-pressing the Fn key. Presets can be managed in Settings > Keyboard Presets, where you can also export and import them to share with others.
Enable a new tmux native mode with regular scrolling and no tmux bar in Settings > Advanced or from the context menu of the session picker button.
Shell Integration install looks for Claude Code, Codex CLI or OpenCode installations and asks to install hooks to use notifications or Live Activity for questions from agent.
Improved the logic that determines when a terminal should receive keyboard focus after returning to it.
Fixed an issue where the current directory was not communicated correctly from the shell to the app on some servers, which could cause Drag-and-Drop or Paste uploads to fail. This fix requires reinstalling Shell Integration.
Nicer tmux session picker.
Improvements to Files app location.
2026.17 27 May
It is now possible to customize buttons on the Fn keyboard. All keyboard bar + Fn customizations are stored in presets that you can switch between by long-pressing the Fn key. Presets can be managed in Settings > Keyboard Presets, where you can also export and import them to share with others.
Enable a new tmux native mode with regular scrolling and no tmux bar in Settings > Advanced or from the context menu of the session picker button.
Shell Integration install looks for Claude Code, Codex CLI or OpenCode installations and asks to install hooks to use notifications or Live Activity for questions from agent.
Improved the logic that determines when a terminal should receive keyboard focus after returning to it.
Fixed an issue where the current directory was not communicated correctly from the shell to the app on some servers, which could cause Drag-and-Drop or Paste uploads to fail. This fix requires reinstalling Shell Integration.
Nicer tmux session picker.
Fixed an issue where the Files app failed to download files whose names contain diacritics due to Unicode normalization differences between the server and ShellFish.
2026.16 26 May
Selecting text in the terminal is now easier, with clearer selection highlighting when the server accepts mouse events.
Fixed a recently introduced bug that broke uploads from the share sheet.
When pasting images and files into the terminal, there is now an option to insert the path of the uploaded file.
More robust NFC/NFD Unicode normalization in Files app.
Fixes issue where opening tmux session as new tab from session picker blocked text input.
2026.15 29 Apr
Improvements to port forwarding showing duration + amount transferred in Settings and avoiding automatically starting a port forward alongside terminal when already using the same local or remote port.
Window > Move Tab to New Window menu action on iPad.
2026.14 21 Apr
Password insertion change from last update has been reverted as it was still essential for some users.
Fixes crash that could happen when showing tmux session picker.
2026.13 11 Apr
Improved how right-to-left text is rendered in terminal.
Password insertion from paste button is simplified to show biometrics and then confirm.
Useful control combinations added to snippet gallery and put as defaults on right keyboard bar. Remember that you can customize these button assignments by long-tapping them.
2026.12 9 Apr
ShellFish has supported YubiKeys over NFC for a while, and now USB keys work too. Generate, export, and import them like any other keys - they just require the physical key to authenticate. Due to sandboxing restrictions, USB YubiKeys are accessed from a browser context, so your server needs to support webauthn-sk-ecdsa and the key application field must be localhost rather than ssh:
The context menu when starting terminals from the server list now has a submenu for picking an existing tmux session or creating a new one, instead of always connecting to the default. On iPad, hover the pointer over the session picker for a thumbnail popup.
2026.11 18 Mar
Shift + Return works like Alt + Return to add newline without submitting prompt in Claude Code.
Improvements to Live Activity such that it correctly dismisses when terminal closes.
Control+Backspace will send ascii 8.
Improvements when using floating on-screen keyboard.
Fixes to Multipath TCP network mode.
2026.10 11 Mar
Support for post-quantum key exchange algorithms: mlkem768x25519-sha256, mlkem768nistp256-sha256, mlkem1024nistp384-sha384.
Pro users can enable Live Activity from Settings > Advanced or by long-pressing settings button in terminal to follow the active terminal on the lock screen and in the Dynamic Island on supported devices.
Fixes issue from last update where some custom keys on keyboard bar would have empty keycaps despite being assigned.
2026.9 26 Feb
'notify' and 'widget' commands support image payloads also delivered from shell to app using end-to-end encryption. Update Shell Integration scripts and run the commands without arguments for instructions.
Accept OSC 52 sequences with empty target for copying to clipboard.
Fixed issue where terminal would sometimes lose rightmost characters when resizing window.
Adjustments to background colors on keyboard bar in light mode to make it clearer when keys are pressed.
Fix issue where custom key configured for Paste would capture all keyboard bar touch events to the left of the Paste key.
2026.8 26 Feb
Configure whether to use CoreFoundation, plain BSD or Multipath TCP for connections inside Settings > Advanced.
Fix to allow copying public key to clipboard directly from SSH key list.
2026.7 19 Feb
Last update had improvements to handling of .ts.net hostnames allowing the Tailscale on-demand VPN time to start, but would also sometimes introduce a delay for .ts.net hostname if the VPN was already started. This has been improved to avoid delays.
New setting to allow manual certificate import on SSH keys which was removed when I added support for CAs. This is accessible from the gear menu when adding a new Certificate Authority and enabled by default if the app detects previous manual certificates.
2026.6 16 Feb
Improved handling of .ts.net hostnames for better compatibility with Tailscale VPN.
This is especially useful with multi-address hostnames like
MyMac.local, my-mac.tail2faa9.ts.net
which first attempts a local network connection before falling back to Tailscale.
Context menu for the Paste key in the middle of the keyboard bar includes a Type Sentence mode, where you can compose text using autocomplete and other standard iOS editing features. Nothing is sent to the server until you press Return and leave the mode, making it particularly useful for typing natural language while editing in Emacs or Vim, or when writing instructions for Claude Code.
Running servers listed for Digital Ocean or Hetzner have button to start terminal whether or not a ShellFish configuration exists for each server.
Fixed issue where control sequences like ^X in snippets would be confused with literal caret followed by a letter.
2026.5 30 Jan
Support for synchronized terminal output mode where server can ask for terminal updates to be deferred until all updates have been sent. This makes Claude Code updates nicer.
Certificate Authority feature uses in-app browser for authentication such that no browser tab is left open.
Error message is shown when Hetzner API key is wrong during Sign In.
Quick Terminal feature works correctly for terminal-only windows.
Fix issue where terminal word wrap was disabled when restore-cursor sequence was used before save-cursor which would often happen for Claude Code.
2026.4 16 Jan
Improve Certificate Authority with keyId/principals in signing request and PKCE for OAuth.
Fix Unicode variation selectors taking up terminal cell width causing weirdly wrapped terminal lines.
2026.3 15 Jan
Collapsed server groups show a count of the servers inside.
Starting a session works again on tmux 3.2 and older, along with general improvements to tmux native mode.
Improved support for DEC 2026 to avoid terminal flicker.
Holding alt while tapping/clicking sends the click through to mouse-aware programs (tmux, Midnight Commander), including trackpad/mouse right-clicks; shift keeps the tap local for cursor placement and selection.
Esc, ctrl and alt on the keyboard bar can be customized with tap-and-hold.
more Version 2026.27 1 day ago
Data Not Linked to You The following data may be collected but it is not linked to your identity: