diff --git a/packages/adapter-utils/src/acpx-engine/execute.test.ts b/packages/adapter-utils/src/acpx-engine/execute.test.ts index 8918aec7c25..c4f1a34d00d 100644 --- a/packages/adapter-utils/src/acpx-engine/execute.test.ts +++ b/packages/adapter-utils/src/acpx-engine/execute.test.ts @@ -733,6 +733,24 @@ describe("shared ACPX engine runtime behavior", () => { expect(env).not.toContain("CLAUDE_CODE_DISABLE_BACKGROUND_TASKS='1'"); }); + it("preserves an explicit empty CLAUDE_CODE_DISABLE_BACKGROUND_TASKS value for Claude ACP runs", async () => { + const root = await makeTempRoot(); + const stateDir = path.join(root, "state"); + const cwd = path.join(root, "worktree"); + await fs.mkdir(cwd, { recursive: true }); + + await runExecutor({ + agent: "claude", + stateDir, + cwd, + env: { CLAUDE_CODE_DISABLE_BACKGROUND_TASKS: "" }, + }); + + const env = await readSingleWrapperEnv(stateDir); + expect(env).toMatch(/CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=\x27\x27/); + expect(env).not.toMatch(/CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=\x271\x27/); + }); + it("does not inject CLAUDE_CODE_DISABLE_BACKGROUND_TASKS for non-Claude ACP runs", async () => { const root = await makeTempRoot(); const stateDir = path.join(root, "state"); diff --git a/packages/adapter-utils/src/acpx-engine/execute.ts b/packages/adapter-utils/src/acpx-engine/execute.ts index df7406d9fce..f7de00fd382 100644 --- a/packages/adapter-utils/src/acpx-engine/execute.ts +++ b/packages/adapter-utils/src/acpx-engine/execute.ts @@ -1117,7 +1117,7 @@ async function buildRuntime(input: { if (requestedModel && acpxAgent === "claude" && !env.ANTHROPIC_MODEL) { env.ANTHROPIC_MODEL = requestedModel; } - if (acpxAgent === "claude" && !env.CLAUDE_CODE_DISABLE_BACKGROUND_TASKS) { + if (acpxAgent === "claude" && !("CLAUDE_CODE_DISABLE_BACKGROUND_TASKS" in env)) { env.CLAUDE_CODE_DISABLE_BACKGROUND_TASKS = "1"; } if (acpxAgent === "codex") {