Useful defaults come with a different shell language
Type part of a command you've used before, and fish offers the rest beside the cursor. Press the right arrow to accept it. Invalid commands get colored as you type, and tab completion can describe candidates instead of leaving you to decode names. These are built-in behaviors documented in the fish tutorial, so you can try them before choosing plugins. I'd recommend that experience to someone tired of maintaining a terminal configuration just to get helpful feedback.
Our checkout contained 2,242 files and roughly 116,922 source lines, occupying 26.4 MB. Fish is a full shell implementation with its own language, which makes adopting it a larger decision than changing a prompt theme. Ordinary commands and pipes remain familiar. The cost appears when you bring across shell code, including configuration you've forgotten how to maintain. Decide whether you want fish's defaults enough to learn those differences before making it your login shell.
What happened when we ran it
Our run installed 35 packages in 11 seconds and occupied 38 MB at commit 35c2902 on October 5, 2026. The harness recorded a successful build step in 0 seconds. Its environment was an unprivileged Debian container using ghcr.io/astral-sh/uv:python3.12-bookworm, with 3 CPUs, 8 GB of RAM, and no secrets. Pip-audit reported 0 known vulnerabilities. These are measurements of the Python environment the harness selected. They provide no timing or security assessment of a compiled fish executable.
Pytest exited with code 5 after 1 second, reporting 0 passed and 0 failed out of 0 tests. The log explains the collection warnings: TestSkip, TestFail, and TestPass in tests/test_driver.py each have an __init__ constructor, so pytest couldn't collect them as test classes. The tail ends with three warnings. No assertion failure appears, and nothing in that log establishes a missing system package. The finding is that our command collected no tests, leaving fish's behavior unverified by this run.
The source route needs Rust and CMake
The project README specifies Rust 1.85 or later, CMake 3.15 or later, and a C compiler. It also documents extra programs needed for the full suite. That disagrees with the lab's Python ecosystem classification. The documented contributor path deserves a separate evaluation before you rely on it. For ordinary use, follow the project's package guidance: its own warning says a manual CMake installation is harder to remove or upgrade.
Our scan found 8 CI workflow files and a tests directory, with no Dockerfile. Those are useful repository signals, but they don't fill the gap left by the empty pytest collection. Similarly, the 0-second successful build record cannot establish that the documented Rust/CMake compilation completed. If you're reviewing fish for contributor work, treat these results as an incomplete evaluation of the native project. A quick successful harness step is insufficient grounds for calling the compiler path easy.
Bash configuration and heredocs need changes
Fish deliberately rejects POSIX compatibility, and the Bash migration guide gives concrete examples. Set variables with set, close blocks with end, and use string for operations that Bash expresses through parameter expansion. Fish also lacks <<EOF heredocs and Bash's [[ conditional syntax. That matters when an installation guide asks you to paste a block into the current terminal. The command may be ordinary Unix software while the surrounding shell code requires Bash.
You can keep scripts under their existing interpreter and launch them from fish. The practical friction is interactive: startup snippets, copied runbook commands, and functions need inspection. Our 0 collected tests give you no assurance about that migration. I'd choose Zsh if keeping existing Bourne-style habits matters most. Nushell deserves a look when your main frustration is manipulating text instead of structured tables. Elvish is another option if you're willing to learn a separate scripting language. None removes the need to check your own shell-dependent commands.
Optional conveniences still need host programs
The README lists Python 3.5 or newer for generating completions from manual pages and for the browser-based fish_config tool. Clipboard integration depends on platform utilities such as wl-copy and wl-paste, or macOS's pbcopy and pbpaste. These requirements matter on stripped-down hosts: installing the shell doesn't supply every surrounding convenience. Fish runs locally without a hosted account or API key. Its configuration also belongs to fish, so sourcing an existing Bash startup file is a poor migration strategy.
The 38 MB we measured belongs to the installed Python environment, not a complete inventory of these host requirements. Use your usual package manager for fish, then check the conveniences you care about on that actual machine. Windows users also need the environment described by the README: WSL, Cygwin, or MSYS2. If your requirement is a shell inside an ordinary native Windows session without those layers, pick something built for that environment.
Maintenance is active, and keyboard fixes deserve attention
The repository was pushed on October 13, 2026. GitHub showed 34,297 stars and 566 open issues and PRs when fetched on October 14. The recent activity list includes an October 12 update to a web configuration fix, alongside documentation and input-related work. The September 8 4.9.3 release fixes a macOS dead-key sequence that incorrectly inserted a space. Push and issue activity together support a judgment of continuing maintenance.
A shell handles the keystrokes between you and your work, so that keyboard fix matters more than the star count. Our 1-second pytest failure cannot tell you whether your keyboard layout or terminal behaves correctly. Install a package and start fish from your current shell, as the README suggests. Try a command from your history, paste a real runbook snippet, and use your clipboard bindings. If those daily tasks feel better and the syntax changes are acceptable, then consider changing your login shell.

