From 1b72ac7c8a2c6912601bea18aa1344a39dcab3ef Mon Sep 17 00:00:00 2001 From: Ben Brandt Date: Wed, 15 Oct 2025 15:23:26 +0200 Subject: [PATCH] Fix for allowing bypassPermissions to work (#97) It seems that unless you start the session with bypassPermissions, you can't change to it later. So we start with it on, and immediately change it back to default. This allows people to change it later however. Closes https://github.com/zed-industries/zed/issues/39392 --- CHANGELOG.md | 4 ++++ package-lock.json | 4 ++-- package.json | 2 +- src/acp-agent.ts | 10 ++++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baff9daf..9f427781 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.6.1 + +- Fix to allow bypassPermissions mode to be selected (it wasn't permitted previously) + ## 0.6.0 - Provide a model selector. We use the "default" model by default, and the user can change it via the client. diff --git a/package-lock.json b/package-lock.json index 81763223..bc2ef1c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@zed-industries/claude-code-acp", - "version": "0.6.0", + "version": "0.6.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@zed-industries/claude-code-acp", - "version": "0.6.0", + "version": "0.6.1", "license": "Apache-2.0", "dependencies": { "@agentclientprotocol/sdk": "0.4.8", diff --git a/package.json b/package.json index 9dccae42..df3e3905 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "bin": { "claude-code-acp": "./dist/index.js" }, - "version": "0.6.0", + "version": "0.6.1", "description": "An ACP-compatible coding agent powered by the Claude Code SDK (TypeScript)", "main": "dist/index.js", "type": "module", diff --git a/src/acp-agent.ts b/src/acp-agent.ts index c902dc24..ae92d763 100644 --- a/src/acp-agent.ts +++ b/src/acp-agent.ts @@ -193,6 +193,9 @@ export class ClaudeAcpAgent implements Agent { mcpServers, systemPrompt, settingSources: ["user", "project", "local"], + // If we want bypassPermissions to be an option, we have to start the session with it on. + // We change it immediately back to default below before returning the session. + permissionMode: "bypassPermissions", permissionPromptToolName: PERMISSION_TOOL_NAME, stderr: (err) => console.error(err), // note: although not documented by the types, passing an absolute path @@ -228,11 +231,14 @@ export class ClaudeAcpAgent implements Agent { prompt: input, options, }); + const permissionMode = "default"; + // Change it back to default + await q.setPermissionMode(permissionMode); this.sessions[sessionId] = { query: q, input: input, cancelled: false, - permissionMode: "default", + permissionMode, }; getAvailableSlashCommands(q).then((availableCommands) => { @@ -251,7 +257,7 @@ export class ClaudeAcpAgent implements Agent { sessionId, models, modes: { - currentModeId: "default", + currentModeId: permissionMode, availableModes: [ { id: "default",