Custom tools defined in config.json hang indefinitely on Windows (MSYS2/ucrt64). The tool invocation never returns, even for trivial commands like echo hello.
Root Cause
custom.clj hardcodes "bash -c" via p/shell:
;; src/eca/features/tools/custom.clj line 29
(p/shell {:dir work-dir
:out :string
:err :string
:continue true} "bash -c" resolved-command)
This differs from shell.clj which:
- Respects the
toolCall.shellCommand config (shell-path, shell-args)
- Uses platform detection (
powershell.exe on Windows, bash on Unix)
The p/shell call with "bash -c" on Windows appears to block — the process is visible in Process Explorer but never completes, even for echo hello.
Expected Behavior
Custom tools should use the same shell execution logic as the native shell_command tool, i.e., either:
- Respect the
toolCall.shellCommand.path and toolCall.shellCommand.args config
- Or use the platform-aware
start-shell-process! function from shell.clj
Custom tools defined in
config.jsonhang indefinitely on Windows (MSYS2/ucrt64). The tool invocation never returns, even for trivial commands likeecho hello.Root Cause
custom.cljhardcodes"bash -c"viap/shell:This differs from
shell.cljwhich:toolCall.shellCommandconfig (shell-path,shell-args)powershell.exeon Windows,bashon Unix)The
p/shellcall with"bash -c"on Windows appears to block — the process is visible in Process Explorer but never completes, even forecho hello.Expected Behavior
Custom tools should use the same shell execution logic as the native
shell_commandtool, i.e., either:toolCall.shellCommand.pathandtoolCall.shellCommand.argsconfigstart-shell-process!function fromshell.clj