Cursor always using Fish shell

Describe the Bug

Cursor is ignoring my default profile in settings.json. It’s not using my system’s default shell. It’s not using my user’s shell. If Fish shell is somehow installed on my system, no matter what I do, it will use it.

If I uninstall fish entirely, then I can set the shell to anything else in my settings.json and it will actually honor it. I tried a fresh system with a virtual machine and could reproduce consistently. It’s driving me mad.

Steps to Reproduce

Using Linux, use cursor, echo $fish_pid from an agent prompt. It will return nothing as expected (using bash or whatever is your configured shell).

Then install Fish (with apt or something) so it is in the path, in /usr/bin/fish.

Restart Cursor, ask it to echo $fish_pid again. This time it will be running Fish and you will get the process id of the shell in the terminal, regardless of your default shell in Cursor or on the system

Expected Behavior

As per the documentation, Cursor to always honor the default terminal profile in settings.json.

I’m not ruling out user error here or some weird scenario I got myself into, but I feel like I tried everything at this point.

Operating System

Linux

Current Cursor Version (Menu → About Cursor → Copy)

Version: 1.3.4 (user setup)
VSCode Version: 1.99.3
Commit: bfb7c44bcb74430be0a6dd5edf885489879f2a20
Date: 2025-07-29T03:59:10.762Z
Electron: 34.5.1
Chromium: 132.0.6834.210
Node.js: 20.19.0
V8: 13.2.152.41-electron.0
OS: Windows_NT x64 10.0.26100

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

1 Like

Hey, could you show the terminal settings?

Nothing fancy:

{
    "window.commandCenter": true,
    "git.blame.editorDecoration.enabled": true,
    "terminal.integrated.defaultProfile.linux": "bash",
    "terminal.integrated.profiles.linux": {
        "bash": {
            "path": "bash",
            "icon": "terminal-bash"
        },
        "zsh": {
            "path": "zsh"
        },
        "fish": {
            "path": "fish"
        }
    },
    "window.newWindowProfile": null,
    "terminal.integrated.fontWeightBold": "bold",
    "terminal.integrated.shellIntegration.enabled": false,
    "terminal.integrated.env.linux": {
        "SHELL": "/usr/bin/bash"
    },
}

Getting exactly the same behavior.

Without changing anything on default shells, just installing fish causes Cursor to pick it up to run commmands.

Can be replicated by simply asking Cursor “what shell am I running” and seeing that the terminal it opens is running Fish even though the default is Bash.

When opening a terminal manually it does correctly open Bash.

Restarting Cursor doesn’t help, only removing Fish (and restarting Cursor) fixes the issue.

It’s really annoying because I want to use Fish for my own terminals but I want Cursor to use Bash as it’s simpler and Fish in Cursor’s automations has a number of quirks that really get in the way of productivity…

Please fix asap. It’s bad enough to make me consider moving away from Cursor…

Thanks for the additional info. With your settings, the agent uses Bash for me, so this is quite strange. I’ll try to figure out the cause.

Don’t know whether it makes a difference but in my case I’m using WSL with Arch.

Happy to provide more info if needed.

1 Like

I’m seeing this too. It doesn’t matter what my vscode settings are, the moment fish becomes an available command, it will start using it. I’m using Ubuntu under WSL2. This is really unfortunate because I like fish as my default shell but it doesn’t work well with cursor WSL.

So FISH is the problem! I’ve spent so long trying to get cursor NOT to use it.

Also on WSL. Will try uninstalling it.