Skip to content

Continue repeats identical tool calls instead of bounding the loop #12702

Description

@trackoor

Continue repeats identical tool calls instead of bounding the loop

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 repeated tool-use response can cause multiple committed tool side effects and repeated provider turns.

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/c166065dd2a35dfdbd634ee447460579

The Gist contains continue-repeated-identical-tool-loop.reproduce.py. Download and run:

gh gist clone c166065dd2a35dfdbd634ee447460579 continue-repeated-identical-tool-loop-reproducer
cd continue-repeated-identical-tool-loop-reproducer
python3 continue-repeated-identical-tool-loop.reproduce.py

To reuse an already-built local image:

python3 continue-repeated-identical-tool-loop.reproduce.py --skip-build

Expected successful reproduction output includes:

REPRODUCED

Log output

Expected successful reproduction output includes REPRODUCED.

Observed behavior: The local provider repeats a shell tool call after tool results arrive. The script checks for at least two side-effect log entries.

Expected behavior

Continue should detect repeated identical tool-use state and stop with a bounded error rather than executing the same work repeatedly.

Public-upstream status

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:toolsRelates to tool usagekind:bugIndicates an unexpected problem or unintended behavioros:linuxHappening specifically on Linux

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions