I wonder if this is a login-related issue? Running Preferences: Open Default Settings (JSON) in the command palette, I see this:
"terminal.integrated.profiles.linux": {
...
"fish": {
"path": "fish"
},
...
},
...
"terminal.integrated.profiles.osx": {
...
"fish": {
"path": "fish",
"args": [
"-l"
]
},
...
Notably, the Linux default terminal profile setting doesn't pass -l, but the OSX profile does.
If you're on macOS, then try checking if you've overridden the fish terminal profile in a way that doesn't pass -l.
If you're on Linux and that's the issue, I think you can work around it by just redefining the terminal profile in your user settings.json, adding the -l flag (you can copy from the OSX terminal profile for fish).
Hey everyone!
I'm not a strong fish user, I usually manage my way around but I am feeling stuck right now.
I have been using fish on a linux computer for more than a year, no issues between the "real" terminal and the integrated one in VsCode, the both work fine.
I recently had a Macbook for work and well, I needed to feel at home so I installed fish via homebrew.
I followed the fish instruction to turn fish into my default shell, adapting the path to the homebrew one:
echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells chsh -s /opt/homebrew/bin/fish
Here is what cat /etc/shells gives me:
/bin/bash /bin/csh /bin/dash /bin/ksh /bin/sh /bin/tcsh /bin/zsh /opt/homebrew/bin/fish
So we're good here. In the Terminal app settings, I changed "Shells open with" from /bin/zsh to /opt/homebrew/bin/fish. It indeed now launch fish as the default shell but it fails to load things like zoxide or starship which are loaded in the config.fish.
To try to prevent that I added fish_add_path /opt/homebrew/bin/starship before executing the command but to no avail.
My intuition was that some $PATH was not loaded correctly before fish initialization, there is actually a Warning about that on the documentation but let's be honest, I did not fully understood or read through it.
To fix that, I switched back my default shell to /bin/zsh and the first command my terminal automatically execute is: fish. It works wonderfully. Sadly I can't replicate the behaviour for VsCode so I can't hide this issue anymore and need to fix it, any thoughts or experience worth sharing?
Many thanks!

and click edit in settings.json. It should take you right to the correct spot to paste in these profiles.