[Bug] execute_bash on Windows mangles every double-quoted argument (git commit -m "msg" fails)
Les mainteneurs répondent en général sous 3 jours
Évaluation
Cette issue n'a pas encore été évaluée.
Description
Description
On Windows, execute_bash runs the command with spawn('cmd', ['/c', command], {cwd}) (source/services/bash-executor.ts:142) and no windowsVerbatimArguments. Node then re-quotes the command and escapes each inner " as \", which cmd.exe does not understand. Any command with double quotes is broken: commit messages, node -e "...", --format="...", paths with spaces. Some fail loudly, but node -e "console.log(1+1)" exits with code 0 and prints nothing, so the agent thinks it worked. Custom tools had the same bug and were fixed in #1108; execute_bash was not.
Environment
- OS: Windows 11 (10.0.26300)
- Node version: 22.22.3
- Nanocoder version: 1.31.0 (main at 5c2e693)
- Git: 2.55.0.windows.3
- Provider / Model: not relevant (reproduced by calling the executor directly)
Steps to Reproduce
- On Windows, have the agent run each of these with
execute_bashin a git repo:echo "hello world"node -e "console.log(1+1)"git log -1 --format="%h %s"git commit --allow-empty -m "fix the bug"
Expected Behavior
The same output as typing the command into cmd.exe: "hello world", 2, a commit hash and subject, and a new commit.
Actual Behavior
$ echo "hello world"
exit=0 stdout="\"hello world\""
$ node -e "console.log(1+1)"
exit=0 stdout="" (silent: no output, exit code 0)
$ git log -1 --format="%h %s"
exit=128 stderr="fatal: ambiguous argument '%s\"': unknown revision or path ..."
$ git commit --allow-empty -m "fix the bug"
exit=1 stderr="error: pathspec 'the' did not match any file(s) known to git | error: pathspec 'bug\"' ..."
No commit is created.
Suggested Fix
Spawn it the way custom tools already do (shellArgs and windowsVerbatimArguments in source/custom-tools/handler.ts:92-95 and :303-308):
spawn(process.env.ComSpec || 'cmd.exe', ['/d', '/s', '/c', `"${command}"`], {
cwd,
windowsVerbatimArguments: true,
});
I tried this spawn on the same four commands. All four worked ("hello world", 2, c2d6c64 base, and the commit was created), and echo a & echo b still chained correctly. The custom-tools version also passes /v:off to turn off delayed expansion, which is worth keeping. Please reuse shellArgs from there instead of copying it.
Also add a Windows-only test in source/services/bash-executor.spec.ts for the four commands above, and run that spec in the Windows CI job (.github/workflows/pr-checks.yml only runs two custom-tools specs today).
Additional Context
- Related: #1084 and PR #1108 (same bug in custom tools, fixed), #1028, and #1280 (a request for a configurable shell, a different change).
- I have searched existing issues to ensure this is not a duplicate
- I can reproduce this issue consistently
- This issue occurs with the latest version of nanocoder
- Langage dominant
- TypeScript
- Étoiles
- 2.5k
- Forks
- 341
- Merge moyen
- 4 j 10 h
- PR mergées (30 j)
- 140
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Nano-Collective/nanocoder
-
[Bug] File context attachments read directly from disk, ignoring unsaved editor buffersPeut-être pris @karthikponna l’a pris il y a 1 jour. Ouvertearea:vscode bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Nano-Collective/nanocoder#1723 · 1 commentaire ·
Les mainteneurs répondent en général sous 3 jours
-
area:agent area:cli bug good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Nano-Collective/nanocoder#1713 · 1 commentaire ·
Les mainteneurs répondent en général sous 3 jours
-
[Bug] white mode text and input box color is similarPeut-être pris @Piyushrathoree l’a pris il y a 1 jour. Ouvertearea:tui bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Nano-Collective/nanocoder#1705 · 1 commentaire ·
Les mainteneurs répondent en général sous 3 jours
-
[Bug] /expand rows still break when an emoji or CJK text sits at the cut pointPeut-être pris @theluckystrike l’a pris il y a 1 jour. Ouvertearea:cli area:tui bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Nano-Collective/nanocoder#1702 ·
Les mainteneurs répondent en général sous 3 jours
-
[Bug] nanocoder config list/show/diff doesn't know about autoCommit, formatters, hooks, sandbox and notificationsPeut-être pris @Zaygal l’a pris il y a 3 jours. Ouvertearea:cli bug good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Nano-Collective/nanocoder#1692 ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de Nano-Collective/nanocoder
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
db-ux-design-system/core-web#8461 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Cannot run an integration on windows when power shell is selected as the default profile terminalOuvertePriority/Blocker Type/Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
wso2/product-integrator#2767 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
severity:low
Difficulté 1/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour