From b518a76aea020b3320666aa0a69a113516d0a1e0 Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Wed, 17 Jun 2026 11:24:56 +0200 Subject: [PATCH 1/3] fix(cli): identify Kilo in LLM user agent --- .changeset/fix-llm-user-agent.md | 5 +++++ packages/opencode/src/session/llm.ts | 6 +++--- packages/opencode/test/session/llm.test.ts | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .changeset/fix-llm-user-agent.md diff --git a/.changeset/fix-llm-user-agent.md b/.changeset/fix-llm-user-agent.md new file mode 100644 index 00000000000..f5609c9ee41 --- /dev/null +++ b/.changeset/fix-llm-user-agent.md @@ -0,0 +1,5 @@ +--- +"@kilocode/cli": patch +--- + +Identify Kilo in provider request user-agent headers instead of OpenCode. diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts index d3baeb8c4bb..aa2dc6c56fa 100644 --- a/packages/opencode/src/session/llm.ts +++ b/packages/opencode/src/session/llm.ts @@ -44,7 +44,7 @@ import { KiloSessionOverflow } from "@/kilocode/session/overflow" import { SessionExport } from "@/kilocode/session-export" import { getActiveOrg } from "@/kilocode/session-export/eligibility" // kilocode_change end -import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { USER_AGENT } from "@/installation" // kilocode_change import { EffectBridge } from "@/effect/bridge" import { RuntimeFlags } from "@/effect/runtime-flags" import * as Option from "effect/Option" @@ -491,12 +491,12 @@ const live: Layer.Layer< "x-kilo-session": input.sessionID, "x-kilo-request": input.user.id, "x-kilo-client": flags.client, - "User-Agent": `opencode/${InstallationVersion}`, + "User-Agent": USER_AGENT, // kilocode_change } : { "x-session-affinity": input.sessionID, ...(input.parentSessionID ? { "x-parent-session-id": input.parentSessionID } : {}), - "User-Agent": `opencode/${InstallationVersion}`, + "User-Agent": USER_AGENT, // kilocode_change ...(input.model.providerID !== "anthropic" ? DEFAULT_HEADERS : undefined), // kilocode_change }), // kilocode_change start - headers for kilo provider diff --git a/packages/opencode/test/session/llm.test.ts b/packages/opencode/test/session/llm.test.ts index 04e7da6965c..b3ea91bf361 100644 --- a/packages/opencode/test/session/llm.test.ts +++ b/packages/opencode/test/session/llm.test.ts @@ -17,6 +17,7 @@ import type { Agent } from "../../src/agent/agent" import { MessageV2 } from "../../src/session/message-v2" import { SessionID, MessageID } from "../../src/session/schema" import { AppRuntime } from "../../src/effect/app-runtime" +import { USER_AGENT } from "../../src/installation" // kilocode_change async function getModel(providerID: ProviderID, modelID: ModelID, ctx: InstanceContext) { const effect = Effect.gen(function* () { @@ -1159,8 +1160,10 @@ describe("session.llm.stream", () => { const capture = await request const body = capture.body + const headers = capture.headers expect(capture.url.pathname.endsWith("/messages")).toBe(true) + expect(headers.get("User-Agent")?.split(" ")[0]).toBe(USER_AGENT) // kilocode_change expect(body.messages).toStrictEqual([ { role: "user", From 074a3363eab2b2c1e49913c73a91ee0bbfb77107 Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Wed, 17 Jun 2026 11:26:43 +0200 Subject: [PATCH 2/3] test(cli): annotate LLM user agent assertion --- packages/opencode/test/session/llm.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/opencode/test/session/llm.test.ts b/packages/opencode/test/session/llm.test.ts index b3ea91bf361..d4ccbbe578a 100644 --- a/packages/opencode/test/session/llm.test.ts +++ b/packages/opencode/test/session/llm.test.ts @@ -399,7 +399,7 @@ describe("session.llm.stream", () => { const capture = await request const body = capture.body - const headers = capture.headers + const headers = capture.headers // kilocode_change const url = capture.url expect(url.pathname.startsWith("/v1/")).toBe(true) @@ -1160,7 +1160,7 @@ describe("session.llm.stream", () => { const capture = await request const body = capture.body - const headers = capture.headers + const headers = capture.headers // kilocode_change expect(capture.url.pathname.endsWith("/messages")).toBe(true) expect(headers.get("User-Agent")?.split(" ")[0]).toBe(USER_AGENT) // kilocode_change From a75da5542cbe15768c9d5cc71dfa6f649b1993d4 Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Wed, 17 Jun 2026 11:27:46 +0200 Subject: [PATCH 3/3] test(cli): keep user agent marker focused --- packages/opencode/test/session/llm.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/test/session/llm.test.ts b/packages/opencode/test/session/llm.test.ts index d4ccbbe578a..d634e6cab10 100644 --- a/packages/opencode/test/session/llm.test.ts +++ b/packages/opencode/test/session/llm.test.ts @@ -399,7 +399,7 @@ describe("session.llm.stream", () => { const capture = await request const body = capture.body - const headers = capture.headers // kilocode_change + const headers = capture.headers const url = capture.url expect(url.pathname.startsWith("/v1/")).toBe(true)