[Bug] execute_bash on Windows mangles every double-quoted argument (git commit -m "msg" fails)
Los mantenedores suelen responder en 3 días
Evaluación
Este issue todavía no se ha evaluado.
Descripción
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
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.5k
- Forks
- 341
- Merge medio
- 4 d 10 h
- PR fusionados (30 d)
- 140
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Nano-Collective/nanocoder
-
[Bug] File context attachments read directly from disk, ignoring unsaved editor buffersPosiblemente ocupada @karthikponna la tomó hoy. Abiertoarea:vscode bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Nano-Collective/nanocoder#1723 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
area:agent area:cli bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Nano-Collective/nanocoder#1713 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
[Bug] white mode text and input box color is similarPosiblemente ocupada @Piyushrathoree la tomó hace 1 día. Abiertoarea:tui bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Nano-Collective/nanocoder#1705 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
[Bug] /expand rows still break when an emoji or CJK text sits at the cut pointPosiblemente ocupada @theluckystrike la tomó hace 1 día. Abiertoarea:cli area:tui bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Nano-Collective/nanocoder#1702 ·
Los mantenedores suelen responder en 3 días
-
[Bug] nanocoder config list/show/diff doesn't know about autoCommit, formatters, hooks, sandbox and notificationsPosiblemente ocupada @Zaygal la tomó hace 3 días. Abiertoarea:cli bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Nano-Collective/nanocoder#1692 ·
Los mantenedores suelen responder en 3 días
Todos los issues de Nano-Collective/nanocoder
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
apache/rocketmq-dashboard#6610 ·
Los mantenedores suelen responder en 3 días
-
nextjs-tracking
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
cloudflare/vinext#3920 ·
Los mantenedores suelen responder en 1 día
-
Team:Dashboards
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
elastic/kibana#297299 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
analytics beginner friendly community contributions-welcome good first issue hacktoberfest help wanted up-for-grabs
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
affected/v17 affected/v18 area/frontend type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
umbraco/Umbraco-CMS#24186 ·
Los mantenedores suelen responder en 2 días