# fish shell changelog > The user-friendly command line shell. - Vendor: fish-shell - Category: Developer Tools - Official site: https://fishshell.com - Tracked by: What's New (https://whatsnew.fyi/product/fish-shell) - Harvested from: GitHub (fish-shell/fish-shell) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### 4.8.1 — fish 4.8.1 - Date: 2026-07-13 - Version: 4.8.1 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.8.1 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.8.1 - **fixed** — On non-macOS platforms, alt-backspace, alt-delete, alt-left and alt-right operate on words again instead of tokens, eliminating cross-platform differences in input handling - **added** — Builtin and function commands can now be colored separately via new variables fish_color_builtin and fish_color_function - **added** — Add fish_darcs_prompt for Darcs repository status - **fixed** — Fix a crash in commandline --current-process when the cursor is inside a &| pipe - **changed** — The omit-term-workarounds feature flag can be enabled to enable prompt marking on Konsole again - **fixed** — abbr --position=anywhere completions are no longer offered in argument position to avoid cluttering the completion pager - **fixed** — pacman -Q short option completions This release serves primarily to fix some regressions from 4.8.0 and other bugs. ###### Interactive improvements - On non-macOS platforms, `alt`-`backspace`, `alt`-`delete`, `alt`-`left` and `alt`-`right` operate on words again instead of tokens ([#12122](https://github.com/fish-shell/fish-shell/issues/12122)) eliminating cross-platform differences in input handling. - Builtin and function commands can now be colored separately via new variables [`fish_color_builtin`](https://fishshell.com/docs/4.8/interactive.html#envvar-fish_color_builtin) and [`fish_color_function`](https://fishshell.com/docs/4.8/interactive.html#envvar-fish_color_function) ([#12837](https://github.com/fish-shell/fish-shell/issues/12837)). - Add [fish_darcs_prompt](https://fishshell.com/docs/4.8/cmds/fish_darcs_prompt.html) for [Darcs](https://darcs.net/) repository status. - Fixed a crash in `commandline --current-process` when the cursor is inside a `&|` pipe ([#12868](https://github.com/fish-shell/fish-shell/issues/12868)). - Since prompt marking (via [OSC 133](https://fishshell.com/docs/4.8/terminal-compatibility.html#term-compat-osc-133)) causes an issue in [Konsole’s](https://apps.kde.org/konsole/) default configuration, prompt marking had been disabled for Konsole in 4.8.0. Now the `omit-term-workarounds` [feature flag](https://fishshell.com/docs/4.8/language.html#featureflags) can be enabled to enable prompt marking on Konsole again ([#12859](https://github.com/fish-shell/fish-shell/issues/12859)). ###### Regression fixes: - (From 4.8.0) `abbr --position=anywhere` completions are no longer offered in argument position, to avoid cluttering the completion pager ([#12838](https://github.com/fish-shell/fish-shell/issues/12838)). - (From 4.8.0) `pacman -Q` short option completions ([#12857](https://github.com/fish-shell/fish-shell/issues/12857)). --- A GPG signature for `fish-4.8.1.tar.xz` using [this key](https://github.com/krobelus.gpg) is available as `fish-4.8.1.tar.xz.asc`. The files called `fish-4.8.1-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo) for any Linux with the given CPU architecture. ### 4.8.0 — fish 4.8.0 - Date: 2026-06-24 - Version: 4.8.0 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.8.0 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.8.0 - **changed** — Translatable messages defined in Rust source code should now be translated using Fluent instead of GNU gettext - **removed** — Builtin complete's --command and --path options no longer unescape their argument - **fixed** — History search would sometimes forget about commands after those were re-run in concurrent sessions - **changed** — fish_hg_prompt, fish_git_prompt and fish_fossil_prompt now strip control characters from VCS state read off disk - **changed** — Abbreviations with --position=anywhere can now be completed in argument position, not just in command position - **changed** — Path component movement with ctrl-w skips escaped characters - **fixed** — Completion of short option groups will now handle --condition correctly - **fixed** — Fixed an issue where ctrl-c might fail to cancel certain functions - **changed** — On the first run after upgrading from an older version, fish will try harder to check if the current theme matches a historical default and avoid creating ~/.config/fish/conf.d/fish_frozen_theme.fish when upgrading from fish < 4.3 - **added** — cd supports the -L and -P options to allow specifying whether symbolic links are resolved when changing directories - **fixed** — cd with a relative path will now retry using the real current directory, if $PWD has been moved - **fixed** — Nested brace expansions now strip unquoted leading and trailing spaces from entries consistently - **changed** — bind shows the files where bindings were defined - **changed** — fish no longer creates the __fish_initialized universal variable on startup - **removed** — fish no longer installs files to $CMAKE_INSTALL_PREFIX/share/fish except for the man directory - **fixed** — Vi mode c,W key binding wrongly deleted trailing spaces - **fixed** — Vi mode x in builtin read - **fixed** — Repeated tab would sometimes insert smartcase completions redundantly - **fixed** — Pressing escape during command execution could insert garbage text into the command line This release brings 234 new commits since 4.7.1, contributed by 39 authors, 21 of which are new faces. ###### Notable improvements and fixes - Translatable messages defined in Rust source code can and should now be translated using [Fluent](https://projectfluent.org/) instead of GNU gettext. For now, GNU gettext continues to be used for translating messages defined in fish scripts. To make Fluent easy to work with, we have added tooling based on the new [fluent-ftl-tools](https://codeberg.org/danielrainer/fluent-ftl-tools) library. See [Contributing Translations](https://fishshell.com/docs/4.8/contributing.html#localization) ([#11928](https://github.com/fish-shell/fish-shell/issues/11928)). ###### Deprecations and removed features - Builtin [complete’s](https://fishshell.com/docs/4.8/cmds/complete.html) `--command` and `--path` options no longer unescape their argument. ###### Interactive improvements - History search would sometimes forget about commands after those were re-run in concurrent sessions. This has been fixed ([#10300](https://github.com/fish-shell/fish-shell/issues/10300)). - `fish_hg_prompt`, `fish_git_prompt` and `fish_fossil_prompt` now strip control characters from VCS state read off disk, matching `prompt_pwd`. - Abbreviations with `--position=anywhere` can now be completed in argument position, not just in command position ([#12630](https://github.com/fish-shell/fish-shell/issues/12630)). - Path component movement (`ctrl`-`w`) skips escaped characters. - Completion of short option groups will now handle `--condition` correctly ([#12821](https://github.com/fish-shell/fish-shell/issues/12821)). - Fixed an issue where `ctrl`-`c` might fail to cancel certain functions ([#12802](https://github.com/fish-shell/fish-shell/issues/12802)). - On the first run after upgrading from an older version, fish will try harder to check if the current theme matches a historical default. If it does match, fish won’t create `~/.config/fish/conf.d/fish_frozen_theme.fish` when upgrading from fish < 4.3. In particular, on systems where fish version 3.x was installed originally, fish will now avoid creating that file on upgrade ([#12725](https://github.com/fish-shell/fish-shell/issues/12725)). ###### Scripting improvements - `cd` supports the `-L` and `-P` options, like other shells, to allow specifying whether symbolic links (symlinks) are resolved when changing directories ([#7206](https://github.com/fish-shell/fish-shell/issues/7206)). - `cd` with a relative path will now retry using the real current directory, if `$PWD` has been moved ([#12700](https://github.com/fish-shell/fish-shell/issues/12700)). - Nested brace expansions now strip unquoted leading and trailing spaces from entries consistently ([#12794](https://github.com/fish-shell/fish-shell/issues/12794)). - [bind](https://fishshell.com/docs/4.8/cmds/bind.html) shows the files where bindings were defined ([#12504](https://github.com/fish-shell/fish-shell/issues/12504)). ###### Other improvements - fish no longer creates the `__fish_initialized` universal variable on startup. If you don’t expect to need to downgrade to earlier versions, you can remove it with `set --erase __fish_initialized`. This means that fish now only creates universal variables if instructed by the user. ###### For distributors and developers - With the exception of the `$CMAKE_INSTALL_PREFIX/share/fish/man` directory, fish no longer installs files to `$CMAKE_INSTALL_PREFIX/share/fish`. In particular, this means that both `$CMAKE_INSTALL_PREFIX/share/fish/completions` and `$CMAKE_INSTALL_PREFIX/share/fish/functions` should no longer exist. These directories have been ignored since fish 4.2. If another package installs fish scripts there, they should be corrected to install to `extra_completionsdir` (typically `$CMAKE_INSTALL_PREFIX/share/fish/vendor_completions.d`), `extra_functionsdir` (typically `$CMAKE_INSTALL_PREFIX/share/fish/vendor_functions.d`) or `ex _[Truncated at 4000 characters — full notes: https://github.com/fish-shell/fish-shell/releases/tag/4.8.0]_ ### 4.7.1 — fish 4.7.1 - Date: 2026-05-07 - Version: 4.7.1 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.7.1 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.7.1 - **fixed** — Fix regression in 4.7.0 that caused the web config (fish_config) to fail to start This release fixes a regression in 4.7.0 that caused the web config (`fish_config`) to fail to start ([#12717](https://github.com/fish-shell/fish-shell/issues/12717)). --- Download links: To download the source code for fish, we suggest the file named `fish-4.7.1.tar.xz`. The file downloaded from `Source code (tar.gz)` will not build correctly. A GPG signature using [this key](https://github.com/krobelus.gpg) is available as `fish-4.7.1.tar.xz.asc`. The files called `fish-4.7.1-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo) for any Linux with the given CPU architecture. ### 4.7.0 — fish 4.7.0 - Date: 2026-05-06 - Version: 4.7.0 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.7.0 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.7.0 - **deprecated** — The default theme (i.e. the fish_color_* variables) is no longer set in non-interactive shells - **changed** — prompt_pwd now strips control characters - **fixed** — Repaint events no longer reset the completion pager and other transient UI states - **changed** — fish_color_valid_path now respects background and underline colors - **fixed** — funced will no longer lose work if there are parse errors multiple times without new changes to the file - **fixed** — Directory completions are no longer sorted in a surprising order - **changed** — When at the command token, the alt-o binding will now open read-only files too - **fixed** — Private mode in-memory history is no longer shared with builtin read - **fixed** — History is no longer corrupted with NUL bytes when fish receives SIGTERM or SIGHUP - **changed** — fish_update_completions now handles groff \X'...' device control escapes, fixing completion generation for man pages produced by help2man 1.50 and later - **changed** — Removing history entries via the web-based config is more intuitive - **changed** — If XDG_DATA_DIRS is empty, the default value is assumed, allowing fish to use configuration from paths like $PREFIX/share/fish/vendor_completions.d - **changed** — Internal file descriptors were moved to number 10 or higher to reduce risk of clashes with those used by the user in scripts - **changed** — The wording of error messages has been made consistent, especially for builtin subcommands - **changed** — When the default global config directory exists but has been overridden via -DCMAKE_INSTALL_SYSCONFDIR, fish will now respect that override - **changed** — build_tools/update_translations.fish has been replaced by cargo xtask gettext {check,new,update} - **added** — cargo xtask shellcheck to lint shell-scripts - **fixed** — Vi mode dl regression from 4.6 - **fixed** — Backspace after newline regression from 4.6 - **fixed** — Long options no longer spuriously completed after typing short options This release brings 198 new commits since 4.6.0, contributed by 21 authors, 12 of which are new faces. ###### Deprecations and removed features - The default theme (i.e. the `fish_color_*` variables) is no longer set in non-interactive shells. ###### Interactive improvements - [prompt_pwd](https://fishshell.com/docs/4.7/cmds/prompt_pwd.html) now strips control characters. - Repaint events (as triggered by changes to color variables or by event handlers running `commandline -f repaint`) no longer reset the completion pager and other transient UI states ([#12683](https://github.com/fish-shell/fish-shell/issues/12683)). - [`fish_color_valid_path`](https://fishshell.com/docs/4.7/interactive.html#envvar-fish_color_valid_path) now respects background and underline colors ([#12622](https://github.com/fish-shell/fish-shell/issues/12622)). - [funced](https://fishshell.com/docs/4.7/cmds/funced.html) will no longer lose work if there are parse errors multiple times without new changes to the file. - Fixed a case where directory completions were sorted in a surprising order ([#12695](https://github.com/fish-shell/fish-shell/issues/12695)). - When at the command token, the `alt`-`o` binding will now open read-only files too ([#12671](https://github.com/fish-shell/fish-shell/issues/12671)). - Private mode in-memory history (`set fish_history`) is no longer shared with [builtin read](https://fishshell.com/docs/4.7/cmds/read.html) ([#12662](https://github.com/fish-shell/fish-shell/issues/12662)). ###### Other improvements - History is no longer corrupted with NUL bytes when fish receives SIGTERM or SIGHUP ([#10300](https://github.com/fish-shell/fish-shell/issues/10300)). - [fish_update_completions](https://fishshell.com/docs/4.7/cmds/fish_update_completions.html) now handles groff `\X'...'` device control escapes, fixing completion generation for man pages produced by help2man 1.50 and later (such as coreutils 9.10). - Removing history entries via the [web-based config](https://fishshell.com/docs/4.7/cmds/fish_config.html) is more intuitive. - If `XDG_DATA_DIRS` is empty, the default value is assumed, which means that fish will now also use configuration from paths like `$PREFIX/share/fish/vendor_completions.d` ([#11349](https://github.com/fish-shell/fish-shell/issues/11349)). - Some internal file descriptors were moved to number 10 or higher, to reduce risk of clashes with those used by the user in scripts. - The wording of error messages has been made consistent, especially for builtin subcommands ([#12556](https://github.com/fish-shell/fish-shell/issues/12556)). ###### For distributors and developers - When the default global config directory (`$PREFIX/etc/fish`) exists but has been overridden via `-DCMAKE_INSTALL_SYSCONFDIR`, fish will now respect that override ([#10748](https://github.com/fish-shell/fish-shell/issues/10748)). - `build_tools/update_translations.fish` has been replaced by `cargo xtask gettext {check,new,update}` ([#12676](https://github.com/fish-shell/fish-shell/issues/12676)). - `cargo xtask shellcheck` to lint shell-scripts. ###### Regression fixes: - (from 4.6) Vi mode `dl` ([#12461](https://github.com/fish-shell/fish-shell/issues/12461)). - (from 4.6) Backspace after newline ([#12583](https://github.com/fish-shell/fish-shell/issues/12583)). - (from 4.3.3) Long options were spuriously completed after typing short options (85e76ba3561). - (from 3.2) `nosuchcommand || echo hello` executes the right hand side again ([#12654](https://github.com/fish-shell/fish-shell/issues/12654)). --- Thanks to everyone who contributed through issue discussions, code reviews, or code changes. Welcome our new committers: Armandas Jarušauskas, Daniel D. Beck, Dennis Yildirim, Jaakko Koivisto, Kayce Basques, Nathaniel, Saúl Nogueras, Vishrut Sachan, Yakov Till, cunlem, joveian, r-vdp Welcome back our returning committers: Bacal Mesfin, Branch Vincent, Daniel Rainer, David Adam, Johannes Altmanninger, Nahor, Peter Ammon, Remo Sen _[Truncated at 4000 characters — full notes: https://github.com/fish-shell/fish-shell/releases/tag/4.7.0]_ ### 4.6.0 — fish 4.6.0 - Date: 2026-03-28 - Version: 4.6.0 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.6.0 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.6.0 - **added** — New Spanish translations - **added** — New Japanese translations - **added** — fish now supports the SHELL_PROMPT_PREFIX, SHELL_PROMPT_SUFFIX, and SHELL_WELCOME environment variables - **added** — set_color learned the foreground and reset options - **added** — fish now accepts |& as alternate spelling of &| for piping both standard output and standard error - **changed** — The default width for emoji is switched from 1 to 2 - **changed** — The tab completion pager now left-justifies the description of each column - **changed** — set_color is able to turn off italics, reverse mode, strikethrough and underline individually - **changed** — fish_indent now preserves comments and newlines immediately preceding a brace block - **changed** — Signals like SIGWINCH no longer interrupt builtin output - **fixed** — An error caused by slow terminal responses at macOS startup has been addressed - **fixed** — A crash when suspending certain pipelines with ctrl-z has been fixed - **fixed** — Intermediate artifact when redrawing prompt - **fixed** — history honors explicitly specified --color= again - **fixed** — Vi mode dl and dh - **fixed** — Error completing of commands starting with - This release brings 100 new commits since 4.5.0, contributed by 27 authors, 15 of which are new committers. ###### Notable improvements and fixes - New Spanish translations ([#12489](https://github.com/fish-shell/fish-shell/issues/12489)). - New Japanese translations ([#12499](https://github.com/fish-shell/fish-shell/issues/12499)). ###### Deprecations and removed features - The default width for emoji is switched from 1 to 2, improving the experience for users connecting to old systems from modern desktops. Users of old desktops who notice that lines containing emoji are misaligned can set `$fish_emoji_width` back to 1 ([#12562](https://github.com/fish-shell/fish-shell/issues/12562)). ###### Interactive improvements - The tab completion pager now left-justifies the description of each column ([#12546](https://github.com/fish-shell/fish-shell/issues/12546)). - fish now supports the `SHELL_PROMPT_PREFIX`, `SHELL_PROMPT_SUFFIX`, and `SHELL_WELCOME` environment variables. The prefix and suffix are automatically prepended and appended to the left prompt, and the welcome message is displayed on startup after the greeting. These variables are set by systemd’s `run0` for example ([#10924](https://github.com/fish-shell/fish-shell/issues/10924)). ###### Improved terminal support - `set_color` is able to turn off italics, reverse mode, strikethrough and underline individually (e.g. `--italics=off`). - `set_color` learned the foreground (`--foreground` or `-f`) and reset (`--reset`) options. - An error caused by slow terminal responses at macOS startup has been addressed ([#12571](https://github.com/fish-shell/fish-shell/issues/12571)). ###### Other improvements - Signals like `SIGWINCH` (as sent on terminal resize) no longer interrupt builtin output ([#12496](https://github.com/fish-shell/fish-shell/issues/12496)). - For compatibility with Bash, fish now accepts `|&` as alternate spelling of `&|`, for piping both standard output and standard error ([#11516](https://github.com/fish-shell/fish-shell/issues/11516)). - `fish_indent` now preserves comments and newlines immediately preceding a brace block (`{ }`) ([#12505](https://github.com/fish-shell/fish-shell/issues/12505)). - A crash when suspending certain pipelines with `ctrl`-`z` has been fixed ([#12301](https://github.com/fish-shell/fish-shell/issues/12301)). ###### For distributors and developers - `cargo xtask` subcommands no longer panic on test failures. ###### Regression fixes: - (from 4.5.0) Intermediate `⏎` artifact when redrawing prompt ([#12476](https://github.com/fish-shell/fish-shell/issues/12476)). - (from 4.4.0) `history` honors explicitly specified `--color=` again ([#12512](https://github.com/fish-shell/fish-shell/issues/12512)). - (from 4.4.0) Vi mode `dl` and `dh` ([#12461](https://github.com/fish-shell/fish-shell/issues/12461)). - (from 4.3.0) Error completing of commands starting with `-` ([#12522](https://github.com/fish-shell/fish-shell/issues/12522)). --- Thanks to everyone who contributed through issue discussions, code reviews, or code changes. Welcome our new committers: Aditya Giri, Daan De Meyer, Daniel Danner, Helen Chong, Janne Pulkkinen, Julien Gautier, Lieuwe Rooijakkers, Mike Yuan, Noah Hellman, Remo Senekowitsch, Rodolfo Gatti, Steffen Winter, rohan436, t4k44 Welcome back our returning committers: Daniel Rainer, David Adam, Delapouite, Fabian Boehm, JANMESH ARUN SHEWALE, Johannes Altmanninger, Julio Napurí, Nahor, Peter Ammon, Volodymyr Chernetskyi, exploide, xtqqczze --- Download links: To download the source code for fish, we suggest the file named `fish-4.6.0.tar.xz`. The file downloaded from `Source code (tar.gz)` will not build correctly. A GPG signature using [this key](https://github.com/krobelus.gpg) is available as `fish-4.6.0.tar.xz.asc`. The files called `fish-4.6.0-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme- _[Truncated at 4000 characters — full notes: https://github.com/fish-shell/fish-shell/releases/tag/4.6.0]_ ### 4.5.0 — fish 4.5.0 - Date: 2026-02-17 - Version: 4.5.0 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.5.0 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.5.0 - **fixed** — Ctrl-L no longer cancels history search - **fixed** — History search cursor positioning now works correctly with characters of arbitrary width - **removed** — fish no longer reads the terminfo database to alter behaviour based on the TERM environment variable and does not depend on ncurses or terminfo - **fixed** — Vi mode d,f key binding did not work - **fixed** — Vi mode c,w key binding wrongly deleted trailing spaces - **fixed** — Vi mode crash on c,i,w after accepting autosuggestion - **fixed** — fish_vi_key_bindings called with a mode argument produced an error - **fixed** — Build on Illumos This is mostly a patch release for Vi mode regressions in 4.4.0 but other minor behavior changes are included as well. This release comprises 68 commits since 4.4.0, contributed by 16 authors, 8 of which are new committers. ###### Interactive improvements - `ctrl`-`l` no longer cancels history search ([#12436](https://github.com/fish-shell/fish-shell/issues/12436)). - History search cursor positioning now works correctly with characters of arbitrary width. ###### Deprecations and removed features - fish no longer reads the terminfo database to alter behaviour based on the `TERM` environment variable, and does not depend on ncurses or terminfo. The `ignore-terminfo` feature flag, introduced and enabled by default in fish 4.1, is now permanently enabled. fish may no longer work correctly on Data General Dasher D220 and Wyse WY-350 terminals, but should continue to work on all known terminal emulators released in the 21st century. ###### Regression fixes: - (from 4.4.0) Vi mode `d,f` key binding did not work ([#12417](https://github.com/fish-shell/fish-shell/issues/12417)). - (from 4.4.0) Vi mode `c,w` key binding wrongly deleted trailing spaces ([#12443](https://github.com/fish-shell/fish-shell/issues/12443)). - (from 4.4.0) Vi mode crash on `c,i,w` after accepting autosuggestion ([#12430](https://github.com/fish-shell/fish-shell/issues/12430)). - (from 4.4.0) `fish_vi_key_bindings` called with a mode argument produced an error ([#12413](https://github.com/fish-shell/fish-shell/issues/12413)). - (from 4.0.0) Build on Illumos ([#12410](https://github.com/fish-shell/fish-shell/issues/12410)). --- Thanks to everyone who contributed through issue discussions, code reviews, or code changes. Welcome our new committers: Aman Verma, Jack Pickle, Liam Snow, Pothi Kalimuthu, Salman Muin Kayser Chishti, Simon Olofsson, Tristan Partin, Weixie Cui Welcome back our returning committers: Daniel Rainer, David Adam, Francisco Giordano, Johannes Altmanninger, Nahor, Peter Ammon, madblobfish, xtqqczze --- Download links: To download the source code for fish, we suggest the file named `fish-4.5.0.tar.xz`. The file downloaded from `Source code (tar.gz)` will not build correctly. A GPG signature using [this key](https://github.com/krobelus.gpg) is available as `fish-4.5.0.tar.xz.asc`. The files called `fish-4.5.0-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo) for any Linux with the given CPU architecture. ### 4.4.0 — fish 4.4.0 - Date: 2026-02-03 - Version: 4.4.0 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.4.0 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.4.0 - **deprecated** — The default fossil prompt has been disabled - **changed** — The bind builtin lists mappings from all modes if --mode is not provided - **changed** — Line-wise autosuggestions that don't start a command are no longer shown - **changed** — Builtin history now assumes that PAGER supports ANSI color sequences - **fixed** — fish now clears the terminal's FLUSHO flag when acquiring control of the terminal, to fix an issue caused by pressing ctrl-o on macOS - **changed** — Vi mode word movements (w, W, e, and E) are now largely in line with Vim, with underscores treated as word separators - **added** — New special input functions to support Vi mode word movements: forward-word-vi, kill-word-vi, forward-bigword-vi, kill-bigword-vi, forward-word-end, backward-word-end, forward-bigword-end, backward-bigword-end, kill-a-word, kill-inner-word, kill-a-bigword, and kill-inner-bigword - **added** — Vi mode key bindings now support counts for movement and deletion commands via a new operator mode - **added** — New catppuccin-* color themes - **added** — set_color learned the strikethrough (--strikethrough or -s) modifier - **changed** — The CMake option WITH_GETTEXT has been renamed to WITH_MESSAGE_LOCALIZATION - **added** — New cargo xtask commands can replace some CMake workflows - **fixed** — Crash when autosuggesting Unicode characters with nontrivial lowercase mapping - **fixed** — Glitch on read --prompt-str "" This release comprises 215 commits since 4.3.3, contributed by 20 authors, 9 of which are new committers. ###### Deprecations and removed features - The default fossil prompt has been disabled ([#12342](https://github.com/fish-shell/fish-shell/issues/12342)). ###### Interactive improvements - The `bind` builtin lists mappings from all modes if `--mode` is not provided ([#12214](https://github.com/fish-shell/fish-shell/issues/12214)). - Line-wise autosuggestions that don’t start a command are no longer shown (739b82c34db, 58e7a50de8a). - Builtin `history` now assumes that `PAGER` supports ANSI color sequences. - fish now clears the terminal’s `FLUSHO` flag when acquiring control of the terminal, to fix an issue caused by pressing `ctrl`-`o` on macOS ([#12304](https://github.com/fish-shell/fish-shell/issues/12304)). ###### New or improved bindings - Vi mode word movements (`w`, `W`, `e`, and `E`) are now largely in line with Vim. The only exception is that underscores are treated as word separators ([#12269](https://github.com/fish-shell/fish-shell/issues/12269)). - New special input functions to support these movements: `forward-word-vi`, `kill-word-vi`, `forward-bigword-vi`, `kill-bigword-vi`, `forward-word-end`, `backward-word-end`, `forward-bigword-end`, `backward-bigword-end`, `kill-a-word`, `kill-inner-word`, `kill-a-bigword`, and `kill-inner-bigword`. - Vi mode key bindings now support counts for movement and deletion commands (e.g. d3w or 3l), via a new operator mode ([#2192](https://github.com/fish-shell/fish-shell/issues/2192)). - New `catppuccin-*` color themes. ###### Improved terminal support - `set_color` learned the strikethrough (`--strikethrough` or `-s`) modifier. ###### For distributors and developers - The CMake option `WITH_GETTEXT` has been renamed to `WITH_MESSAGE_LOCALIZATION`, to reflect that it toggles localization independently of the backend used in the implementation. - New `cargo xtask` commands can replace some CMake workflows. ###### Regression fixes: - (from 4.1.0) Crash when autosuggesting Unicode characters with nontrivial lowercase mapping ([#12326](https://github.com/fish-shell/fish-shell/issues/12326), 78f4541116e). - (from 4.3.0) Glitch on `read --prompt-str ""` ([#12296](https://github.com/fish-shell/fish-shell/issues/12296)). --- Thanks to everyone who contributed through issue discussions, code reviews, or code changes. Welcome our new committers: Heitor Augusto, JANMESH ARUN SHEWALE, SharzyL, Tiago de Paula, Timen Zandbergen, Wang Bing-hua, andreacfromtheapp, iksuddle, neglu Welcome back our returning committers: Daniel Rainer, David Adam, Fabian Boehm, Ilya Grigoriev, Johannes Altmanninger, Luc J. Bourhis, Next Alone, Peter Ammon, Razzi Abuissa, phanium, xtqqczze --- Download links: To download the source code for fish, we suggest the file named `fish-4.4.0.tar.xz`. The file downloaded from `Source code (tar.gz)` will not build correctly. A GPG signature using [this key](https://github.com/krobelus.gpg) is available as `fish-4.4.0.tar.xz.asc`. The files called `fish-4.4.0-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo) for any Linux with the given CPU architecture. ### 4.3.3 — fish 4.3.3 - Date: 2026-01-07 - Version: 4.3.3 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.3.3 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.3.3 - **fixed** — Selecting a completion could insert only part of the token - **fixed** — Glitch with soft-wrapped autosuggestions and fish_right_prompt - **fixed** — Spurious echo in tmux when typing a command really fast - **fixed** — tomorrow theme always using the light variant - **fixed** — fish_config theme choose sometimes not shadowing themes set by webconfig - **fixed** — Sample prompts and themes are correctly installed - **fixed** — Last line of command output could be hidden when missing newline - **added** — The abbr, bind, complete, functions, history and type commands now support a --color option to control syntax highlighting in their output with values auto, always, or never - **added** — Existing file paths in redirection targets are now highlighted using fish_color_valid_path to indicate that the file will be clobbered This release fixes the following problems identified in fish 4.3.0: - Selecting a completion could insert only part of the token ([#12249](https://github.com/fish-shell/fish-shell/issues/12249)). - Glitch with soft-wrapped autosuggestions and [fish_right_prompt](https://fishshell.com/docs/4.3/cmds/fish_right_prompt.html) ([#12255](https://github.com/fish-shell/fish-shell/issues/12255)). - Spurious echo in tmux when typing a command really fast ([#12261](https://github.com/fish-shell/fish-shell/issues/12261)). - `tomorrow` theme always using the light variant ([#12266](https://github.com/fish-shell/fish-shell/issues/12266)). - `fish_config theme choose` sometimes not shadowing themes set by e.g. webconfig ([#12278](https://github.com/fish-shell/fish-shell/issues/12278)). - The sample prompts and themes are correctly installed ([#12241](https://github.com/fish-shell/fish-shell/issues/12241)). - Last line of command output could be hidden when missing newline ([#12246](https://github.com/fish-shell/fish-shell/issues/12246)). Other improvements include: - The `abbr`, `bind`, `complete`, `functions`, `history` and `type` commands now support a `--color` option to control syntax highlighting in their output. Valid values are `auto` (default), `always`, or `never`. - Existing file paths in redirection targets such as `> file.txt` are now highlighted using [`fish_color_valid_path`](https://fishshell.com/docs/4.3/interactive.html#envvar-fish_color_valid_path), indicating that `file.txt` will be clobbered ([#12260](https://github.com/fish-shell/fish-shell/issues/12260)). --- Download links: To download the source code for fish, we suggest the file named `fish-4.3.3.tar.xz`. The file downloaded from `Source code (tar.gz)` will not build correctly. A GPG signature using [this key](https://github.com/krobelus.gpg) is available as `fish-4.3.3.tar.xz.asc`. The files called `fish-4.3.3-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo) for any Linux with the given CPU architecture. ### 4.3.2 — fish 4.3.2 - Date: 2025-12-30 - Version: 4.3.2 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.3.2 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.3.2 - **fixed** — Pre-built macOS packages failed to start due to a Malformed Mach-O file error - **fixed** — extra_functionsdir (usually vendor_functions.d) and friends were not used - **fixed** — Sample config file and config directories were recreated on every startup instead of only the first time fish runs on a system - **fixed** — Spurious echo of ^[[I in some scenarios - **fixed** — Infinite prompt redraw loop on some prompts - **added** — New CMake build option FISH_INDENT_FOR_BUILDING_DOCS can be set to the path of a runnable fish_indent binary to fix cross compilation This release fixes the following problems identified in 4.3.0: - Pre-built macOS packages failed to start due to a `Malformed Mach-O file` error ([#12224](https://github.com/fish-shell/fish-shell/issues/12224)). - `extra_functionsdir` (usually `vendor_functions.d`) and friends were not used ([#12226](https://github.com/fish-shell/fish-shell/issues/12226)). - Sample config file `~/.config/fish/config.fish/` and config directories `~/.config/fish/conf.d/`, `~/.config/fish/completions/` and `~/.config/fish/functions/` were recreated on every startup instead of only the first time fish runs on a system ([#12230](https://github.com/fish-shell/fish-shell/issues/12230)). - Spurious echo of `^[[I` in some scenarios ([#12232](https://github.com/fish-shell/fish-shell/issues/12232)). - Infinite prompt redraw loop on some prompts ([#12233](https://github.com/fish-shell/fish-shell/issues/12233)). - The removal of pre-built HTML docs from tarballs revealed that cross compilation is broken because we use `${CMAKE_BINARY_DIR}/fish_indent` for building HTML docs. As a workaround, the new CMake build option `FISH_INDENT_FOR_BUILDING_DOCS` can be set to the path of a runnable `fish_indent` binary. --- Download links: To download the source code for fish, we suggest the file named `fish-4.3.2.tar.xz`. The file downloaded from `Source code (tar.gz)` will not build correctly. A GPG signature using [this key](https://github.com/krobelus.gpg) is available as `fish-4.3.2.tar.xz.asc`. The files called `fish-4.3.2-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo) for any Linux with the given CPU architecture. ### 4.3.1 — fish 4.3.1 - Date: 2025-12-28 - Version: 4.3.1 - Original notes: https://github.com/fish-shell/fish-shell/releases/tag/4.3.1 - Permalink: https://whatsnew.fyi/product/fish-shell/releases/4.3.1 - **fixed** — Fix possible crash after expanding an abbreviation This release fixes the following problem identified in 4.3.0: - Possible crash after expanding an abbreviation ([#12223](https://github.com/fish-shell/fish-shell/issues/12223)). --- Download links: To download the source code for fish, we suggest the file named `fish-4.3.1.tar.xz`. The file downloaded from `Source code (tar.gz)` will not build correctly. A GPG signature using [this key](https://github.com/krobelus.gpg) is available as `fish-4.3.1.tar.xz.asc`. The files called `fish-4.3.1-linux-*.tar.xz` contain [standalone fish binaries](https://github.com/fish-shell/fish-shell/?tab=readme-ov-file#building-fish-with-cargo) for any Linux with the given CPU architecture.