continuedev / continuedev/continue

Continue can execute a tool effect after SIGINT cancellation

Open
#12,701 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:tools kind:bug os:linux
Dominant language
TypeScript
Stars
36k
Forks
5.4k
PR merge metrics
No merged PRs in 30d

Description

Continue can execute a tool effect after SIGINT cancellation

Before submitting your bug report

  • I checked for duplicate local reproduction drafts.
  • I reduced the reproducer to a single deterministic local-provider case.

Relevant environment info

  • OS: Linux x86_64 Docker
  • Continue version: @continuedev/cli 1.5.46
  • IDE version: CLI (cn), no IDE
  • Model: OpenAI-compatible local mock provider, gpt-4

Description

Severity / performance impact: High. A cancellation window can still allow a later tool side effect, so user interruption does not reliably stop tool execution.

To reproduce

Prerequisites: Docker, Python 3, and the GitHub CLI (gh) for the clone command below. The linked reproducer is self-contained and uses only Python standard-library modules plus Docker. It builds the affected CLI version from the public package registry, starts a local mock provider, and runs the CLI in an isolated workspace. The Docker run is limited to 2 CPUs and 4 GiB RAM by default.

Complete self-contained reproducer: https://gist.github.com/N0zoM1z0/1af6bb0528ab35da9d89d181de5072d1

The Gist contains continue-late-effect-after-cancel.reproduce.py. Download and run:

gh gist clone 1af6bb0528ab35da9d89d181de5072d1 continue-late-effect-after-cancel-reproducer
cd continue-late-effect-after-cancel-reproducer
python3 continue-late-effect-after-cancel.reproduce.py

To reuse an already-built local image:

python3 continue-late-effect-after-cancel.reproduce.py --skip-build

Expected successful reproduction output includes:

REPRODUCED

Log output

Expected successful reproduction output includes REPRODUCED.

Observed behavior: The reproducer sends SIGINT while the provider stream is delayed, then emits a tool call that writes a marker file. Reproduction succeeds if the marker exists after cancellation.

Expected behavior

Continue should stop consuming late provider tool calls after cancellation and should not execute their side effects.

Public-upstream status

This reproduces against stock public @continuedev/cli@1.5.46 built from npm.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Run continue-late-effect-after-cancel.reproduce.py from the linked Gist to confirm the baseline. Then trace the CLI's SIGINT cancellation, provider-stream, and tool-call execution paths; done means the reproducer no longer reports REPRODUCED and no marker file is created after cancellation.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python, typescript
Domain
cli, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.