From 3b4cd4b2d5478bf2fad448e8bb14f216c859ffdd Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Tue, 9 Dec 2025 22:00:38 +0100 Subject: [PATCH] Fix duplicate tool use IDs error (#198) image --------- Co-authored-by: Ben Brandt --- CHANGELOG.md | 4 ++++ package-lock.json | 4 ++-- package.json | 2 +- src/acp-agent.ts | 8 +++++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cb9d03d..bb32dc35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.12.2 + +- Fix duplicate tool use IDs error + ## 0.12.1 - Update to @anthropic-ai/claude-agent-sdk@v0.1.61 diff --git a/package-lock.json b/package-lock.json index 2b6d1875..1a9cd2a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@zed-industries/claude-code-acp", - "version": "0.12.1", + "version": "0.12.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@zed-industries/claude-code-acp", - "version": "0.12.1", + "version": "0.12.2", "license": "Apache-2.0", "dependencies": { "@agentclientprotocol/sdk": "0.8.0", diff --git a/package.json b/package.json index ecea29a0..a3600bd8 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "0.12.1", + "version": "0.12.2", "description": "An ACP-compatible coding agent powered by the Claude Code SDK (TypeScript)", "main": "dist/lib.js", "bin": { diff --git a/src/acp-agent.ts b/src/acp-agent.ts index ef326936..464ddb01 100644 --- a/src/acp-agent.ts +++ b/src/acp-agent.ts @@ -634,7 +634,7 @@ export class ClaudeAcpAgent implements Agent { } canUseTool(sessionId: string): CanUseTool { - return async (toolName, toolInput, { suggestions, toolUseID }) => { + return async (toolName, toolInput, { signal, suggestions, toolUseID }) => { const session = this.sessions[sessionId]; if (!session) { return { @@ -667,6 +667,9 @@ export class ClaudeAcpAgent implements Agent { }, }); + if (signal.aborted || response.outcome?.outcome === "cancelled") { + throw new Error("Tool use aborted"); + } if ( response.outcome?.outcome === "selected" && (response.outcome.optionId === "default" || response.outcome.optionId === "acceptEdits") @@ -730,6 +733,9 @@ export class ClaudeAcpAgent implements Agent { ).title, }, }); + if (signal.aborted || response.outcome?.outcome === "cancelled") { + throw new Error("Tool use aborted"); + } if ( response.outcome?.outcome === "selected" && (response.outcome.optionId === "allow" || response.outcome.optionId === "allow_always")