From a24e5302ef50b19ee716355a9d3d19cfde720245 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 24 May 2026 01:27:15 -0700 Subject: [PATCH 1/2] fix --- cecli/tui/worker.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cecli/tui/worker.py b/cecli/tui/worker.py index 4275b1f9b36..61eb60e5af8 100644 --- a/cecli/tui/worker.py +++ b/cecli/tui/worker.py @@ -92,6 +92,8 @@ async def _async_run(self): break # Normal exit except asyncio.CancelledError: break + except KeyboardInterrupt: + continue except SwitchCoderSignal as switch: # Handle chat mode switches (e.g., /chat-mode architect) try: From 0bcb0726f802ab6a52b84b478ef80bd3288e1b09 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 24 May 2026 11:35:13 -0700 Subject: [PATCH 2/2] cli-29: fix acompletion keyboardinterrupt exception --- cecli/tui/worker.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cecli/tui/worker.py b/cecli/tui/worker.py index 61eb60e5af8..b09cb54d3c7 100644 --- a/cecli/tui/worker.py +++ b/cecli/tui/worker.py @@ -181,7 +181,11 @@ def stop(self): except RuntimeError: # Loop may already be closed pass - + except KeyboardInterrupt: + # An interrupt was not caught within the async run loop. + # We'll just pass to allow the thread to exit gracefully + # without a scary traceback. + pass self.interrupt() # Wait for thread to finish