diff --git a/.changeset/fix-grok-acp-no-auto-update.md b/.changeset/fix-grok-acp-no-auto-update.md new file mode 100644 index 0000000000..ee18bea66f --- /dev/null +++ b/.changeset/fix-grok-acp-no-auto-update.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Fix Grok ACP startup by making --no-auto-update opt-in. +category: fix +dev: Released Grok CLI v1.0.0 rejects --no-auto-update; buildGrokAcpArgs now only pushes it when noAutoUpdate === true. Updated acp-settings.test.ts. diff --git a/plugins/fusion-plugin-grok-runtime/src/__tests__/acp-settings.test.ts b/plugins/fusion-plugin-grok-runtime/src/__tests__/acp-settings.test.ts index 64b26b8bee..587a63ec22 100644 --- a/plugins/fusion-plugin-grok-runtime/src/__tests__/acp-settings.test.ts +++ b/plugins/fusion-plugin-grok-runtime/src/__tests__/acp-settings.test.ts @@ -9,23 +9,21 @@ import { } from "../acp-settings.js"; describe("acp-settings", () => { - it("builds grok agent stdio args without -m when model is absent", () => { - // Official docs: --no-auto-update for automated ACP/headless clients. - expect(buildGrokAcpArgs()).toEqual(["--no-auto-update", "agent", "stdio"]); - expect(buildGrokAcpArgs({})).toEqual(["--no-auto-update", "agent", "stdio"]); - expect(buildGrokAcpArgs({ noAutoUpdate: false })).toEqual(["agent", "stdio"]); + it("builds grok agent stdio args without --no-auto-update by default (Grok CLI v1.0.0 rejects the flag)", () => { + // --no-auto-update is opt-in only; the released Grok CLI does not support it. + expect(buildGrokAcpArgs()).toEqual(["agent", "stdio"]); + expect(buildGrokAcpArgs({})).toEqual(["agent", "stdio"]); + expect(buildGrokAcpArgs({ noAutoUpdate: true })).toEqual(["--no-auto-update", "agent", "stdio"]); }); it("places plugin-dir and -m before the stdio subcommand", () => { expect(buildGrokAcpArgs({ model: "grok-4.5" })).toEqual([ - "--no-auto-update", "agent", "-m", "grok-4.5", "stdio", ]); expect(buildGrokAcpArgs({ model: "grok-4.5", pluginDirs: ["/tmp/skills-plugin"] })).toEqual([ - "--no-auto-update", "agent", "--plugin-dir", "/tmp/skills-plugin", @@ -59,7 +57,7 @@ describe("acp-settings", () => { it("builds AcpRuntimeAdapter settings for Grok ACP", () => { const settings = buildGrokAcpRuntimeSettings({ binary: "/usr/local/bin/grok", model: "grok-cli/grok-4.5" }); expect(settings.acpBinaryPath).toBe("/usr/local/bin/grok"); - expect(settings.acpArgs).toEqual(["--no-auto-update", "agent", "-m", "grok-4.5", "stdio"]); + expect(settings.acpArgs).toEqual(["agent", "-m", "grok-4.5", "stdio"]); expect(settings.acpEnvAllowList).toEqual([...GROK_ACP_ENV_ALLOWLIST]); expect(settings.acpFsRead).toBe(false); expect(settings.acpFsWrite).toBe(false); diff --git a/plugins/fusion-plugin-grok-runtime/src/acp-settings.ts b/plugins/fusion-plugin-grok-runtime/src/acp-settings.ts index ca3b3cd65e..3a1c5ff7d7 100644 --- a/plugins/fusion-plugin-grok-runtime/src/acp-settings.ts +++ b/plugins/fusion-plugin-grok-runtime/src/acp-settings.ts @@ -68,8 +68,13 @@ export function resolveGrokAcpAuthPreferMethods( * Official headless/ACP scripting docs recommend `--no-auto-update` for CI and * automated clients (https://docs.x.ai/build/cli/headless-scripting). Place it * before the `agent` subcommand: `grok --no-auto-update agent … stdio`. - * Model / plugin-dir flags belong on `grok agent` before the transport: - * `grok --no-auto-update agent [--plugin-dir