From eaaa088b582872bbef43560109d2548789df08b2 Mon Sep 17 00:00:00 2001 From: Murat Aslan Date: Sun, 22 Mar 2026 02:59:00 +0300 Subject: [PATCH 1/2] fix(claude): add settingSources to load Skills, Commands, and CLAUDE.md The Claude Agent SDK does not load filesystem settings by default. Without settingSources, Skills, slash commands, and CLAUDE.md memory files are silently ignored. Fixes #1283 --- apps/server/src/provider/Layers/ClaudeAdapter.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/server/src/provider/Layers/ClaudeAdapter.ts b/apps/server/src/provider/Layers/ClaudeAdapter.ts index 6fbe6d43b..3f5cb1464 100644 --- a/apps/server/src/provider/Layers/ClaudeAdapter.ts +++ b/apps/server/src/provider/Layers/ClaudeAdapter.ts @@ -2576,6 +2576,7 @@ function makeClaudeAdapter(options?: ClaudeAdapterLiveOptions) { includePartialMessages: true, canUseTool, env: process.env, + settingSources: ["user", "project"], ...(input.cwd ? { additionalDirectories: [input.cwd] } : {}), }; From b76aed7186d4c6b754b9477ce7fac9400de338c9 Mon Sep 17 00:00:00 2001 From: Murat Aslan Date: Mon, 23 Mar 2026 09:13:50 +0300 Subject: [PATCH 2/2] test(claude): verify settingSources is passed to query options --- .../src/provider/Layers/ClaudeAdapter.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/apps/server/src/provider/Layers/ClaudeAdapter.test.ts b/apps/server/src/provider/Layers/ClaudeAdapter.test.ts index f60b2b1e9..3e5feba6e 100644 --- a/apps/server/src/provider/Layers/ClaudeAdapter.test.ts +++ b/apps/server/src/provider/Layers/ClaudeAdapter.test.ts @@ -476,6 +476,24 @@ describe("ClaudeAdapterLive", () => { ); }); + it.effect("includes settingSources for user and project level settings", () => { + const harness = makeHarness(); + return Effect.gen(function* () { + const adapter = yield* ClaudeAdapter; + yield* adapter.startSession({ + threadId: THREAD_ID, + provider: "claudeAgent", + runtimeMode: "full-access", + }); + + const createInput = harness.getLastCreateQueryInput(); + assert.deepEqual(createInput?.options.settingSources, ["user", "project"]); + }).pipe( + Effect.provideService(Random.Random, makeDeterministicRandomService()), + Effect.provide(harness.layer), + ); + }); + it.effect("treats ultrathink as a prompt keyword instead of a session effort", () => { const harness = makeHarness(); return Effect.gen(function* () {