diff --git a/src/cli/cutterCommands.ts b/src/cli/cutterCommands.ts
index d521d7c394..0b62412584 100644
--- a/src/cli/cutterCommands.ts
+++ b/src/cli/cutterCommands.ts
@@ -23,8 +23,11 @@ export const registerCutterCommands = (
"List live Cutter instances connected through the REA Python plugin bridge",
args: z.object({}),
run: () =>
- logCliCommand(logger, CLI_COMMANDS.listCutterSessions, () =>
- cutter.listSessions(),
+ withCommandCancellation((signal) =>
+ logCliCommand(logger, CLI_COMMANDS.listCutterSessions, async () => {
+ const result = await cutter.listSessions({ signal });
+ return result.ok ? result.value : projectAnalysisError(result.error);
+ }),
),
});
cli.command(CLI_COMMANDS.cutterCommand, {
diff --git a/src/cutter/CutterBridgeClient.ts b/src/cutter/CutterBridgeClient.ts
index e725a5b2ab..f5c98f3d03 100644
--- a/src/cutter/CutterBridgeClient.ts
+++ b/src/cutter/CutterBridgeClient.ts
@@ -167,22 +167,39 @@ class CutterBridgeResponseFrames {
const mapDiscovery = async (
inputs: readonly Input[],
operation: (input: Input) => Promise