Starting from "emacs -Q": M-x eshell-command RET *echo hi | *cat & RET You'll see the following error in the *Messages* buffer instead of the result: eshell-eval-command: Unmatched delimiter: (# . #) This is a regression from my fix for bug#53715, which changed how Eshell pipelines return the processes in the pipeline. Attached are some patches to fix it. One for the emacs-29 branch, and one for master. Eli, is it ok to merge the patch for emacs-29? I tried to keep the change as minimal as possible for that branch. The patch for master is a bit more extensive, and also fixes another issue where this would fail due to incorrect syntax in the Eshell command form: (eshell-command "*echo hi &" t) Previously, it turned the command into "*echo hi & >>> #", but that's not right; the "&" needs to go last. For master, I also thought it would be nice to clean up 'eshell-command' slightly (see patch 0002); this just changes it to handle its arguments in the interactive spec.