Plugin directory / Developer / dsh-fish-shell
dsh-fish-shell
Verified · install-tested on dsh nathannli
What it does
DeepSeek Harness plugin that runs bash-tool commands with Fish.
Works — verified, early-stage project
DeepSeek Harness plugin that runs bash-tool commands with Fish. It installs cleanly and boots without issues in our testing. It's early-stage but functional.
“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-fish-shell
do not use. it simply causes more retries due to syntax rewrites
A DeepSeek Harness (DSH) profile plugin that runs commands submitted through the model-facing bash tool with Fish instead:
bash tool call → fish -c <command>
The public tool remains named bash so its existing schema, presentation, sandbox approval, output, timeout, and background-job contracts remain intact. The plugin adds a system-prompt note instructing the agent to use Fish-compatible syntax.
It updates both foreground and background commands. When DSH mounts its sandboxing shell executor, it also changes the inner confined command from bash -c to fish -c. Persistent PTY terminal sessions are not changed.
When configured with Babelfish, it preprocesses commands containing standalone Bash assignments before Fish runs them. For example, NAME=value, export NAME=value, and NAME=$(command) become Fish set commands. Fish-native commands are left unchanged. Babelfish failures stop the tool call instead of executing untranslated Bash.
Dependency
Bash-assignment translation depends on Babelfish. It is optional: omit babelfishPath to run Fish directly without Bash translation.
Configuration
By default, the plugin uses $SHELL when it ends in /fish; otherwise it runs fish from PATH. On this system $SHELL is /opt/homebrew/bin/fish, so the default resolves to that absolute path.
Set explicit executable paths in the profile patch if needed:
- id: fish-shell
config:
fishPath: /opt/homebrew/bin/fish
babelfishPath: /opt/homebrew/bin/babelfish
babelfishPath is optional. Without it, the plugin runs Fish directly and does not rewrite Bash syntax. Install Babelfish with brew install babelfish.
This is deliberately not a general Bash compatibility layer. Complex Bash syntax, inline environment assignments such as NAME=value command, and semantics Babelfish cannot translate should be written directly in Fish.
Install
From this repository:
dsh plugin --profile web add "$PWD"
Restart the DSH host after installation. A restart is required because this is a server-side shell-executor plugin; client-plugin HMR does not reload it.
To remove it:
dsh plugin --profile web remove dsh-fish-shell
Test
npm test
Compatibility
Tested against DSH 0.1.0-rc.6. The plugin requires DSH's local bash-compatible shell executor (runArgv and startArgv).
License
MIT
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-fish-shell for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:nathannli/dsh-fish-shell Headless (CLI) profile:
dsh plugin --profile headless add github:nathannli/dsh-fish-shell Test report
Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.