POST /api/executions/:id/abort logs an execution_aborted entry, sets status failed, and resolves any pending prompt with null. It does not signal executeWorkflowSteps(). The loop continues: after a prompt returns null the next steps execute normally, subsequent execute steps still send commands to workers, and when the loop finishes it calls updateExecutionStatus(id, 'completed') – flipping the aborted execution back to completed and firing the completion webhook.
For a workflow currently inside a long execute or wait step nothing at all changes until that step finishes.
There is also no way to cancel a command already running on a worker (no cancel message type; worker uses exec without keeping the child handle).
Where
server.js abort route; executeWorkflowSteps() has no abort flag check; executeCommandStep()/wait are not interruptible.
worker/worker.js – no cancel handling.
Suggested fix
Keep an aborted flag in _executionState; check it after every await in the engine and before sending each command; make wait and waitForCommandResult reject on abort.
Add a cancel_command message; worker tracks child processes by command_id and kills the process group.
Make updateExecutionStatus refuse to move an execution out of a terminal state.
## Overview
`POST /api/executions/:id/abort` logs an `execution_aborted` entry, sets status `failed`, and resolves any pending prompt with `null`. It does **not** signal `executeWorkflowSteps()`. The loop continues: after a prompt returns `null` the next steps execute normally, subsequent `execute` steps still send commands to workers, and when the loop finishes it calls `updateExecutionStatus(id, 'completed')` – flipping the aborted execution back to *completed* and firing the completion webhook.
For a workflow currently inside a long `execute` or `wait` step nothing at all changes until that step finishes.
There is also no way to cancel a command already running on a worker (no `cancel` message type; worker uses `exec` without keeping the child handle).
## Where
- `server.js` abort route; `executeWorkflowSteps()` has no abort flag check; `executeCommandStep()`/`wait` are not interruptible.
- `worker/worker.js` – no cancel handling.
## Suggested fix
- Keep an `aborted` flag in `_executionState`; check it after every await in the engine and before sending each command; make `wait` and `waitForCommandResult` reject on abort.
- Add a `cancel_command` message; worker tracks child processes by `command_id` and kills the process group.
- Make `updateExecutionStatus` refuse to move an execution out of a terminal state.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Overview
POST /api/executions/:id/abortlogs anexecution_abortedentry, sets statusfailed, and resolves any pending prompt withnull. It does not signalexecuteWorkflowSteps(). The loop continues: after a prompt returnsnullthe next steps execute normally, subsequentexecutesteps still send commands to workers, and when the loop finishes it callsupdateExecutionStatus(id, 'completed')– flipping the aborted execution back to completed and firing the completion webhook.For a workflow currently inside a long
executeorwaitstep nothing at all changes until that step finishes.There is also no way to cancel a command already running on a worker (no
cancelmessage type; worker usesexecwithout keeping the child handle).Where
server.jsabort route;executeWorkflowSteps()has no abort flag check;executeCommandStep()/waitare not interruptible.worker/worker.js– no cancel handling.Suggested fix
abortedflag in_executionState; check it after every await in the engine and before sending each command; makewaitandwaitForCommandResultreject on abort.cancel_commandmessage; worker tracks child processes bycommand_idand kills the process group.updateExecutionStatusrefuse to move an execution out of a terminal state.