From 14636b99005dcaf5faa0a8fc89f4afe9b0668bf1 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 30 Sep 2026 15:01:58 -0500 Subject: [PATCH] fix(core): avoid reinjecting ancestor instructions (#52364) --- packages/core/src/tool/plugin/read.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/tool/plugin/read.ts b/packages/core/src/tool/plugin/read.ts index cc0f7b0a8b6..5b80d71e61a 100644 --- a/packages/core/src/tool/plugin/read.ts +++ b/packages/core/src/tool/plugin/read.ts @@ -88,15 +88,15 @@ export const Plugin = { if (result.target.externalDirectory !== undefined) return const resolved = yield* fs.resolve(result.target.absolute) const root = yield* fs.resolve(location.directory) - // up() searches its stop directory, so the Location-root AGENTS.md (already - // supplied by core initial instructions) is dropped by the dirname filter. + // The Location and its ancestors are already supplied by initial instructions, + // even when an upward walk from elsewhere in the project cannot reach root. const discovered = yield* fs.up({ targets: [FILENAME], start: result.content.type === "list-page" ? resolved : dirname(resolved), stop: root, }) const candidates = (yield* Effect.forEach(discovered, fs.resolve)).filter( - (file) => dirname(file) !== root, + (file) => !FSUtil.contains(dirname(file), root), ) if (candidates.length === 0) return yield* sessionInstructions.load({ sessionID: context.sessionID, paths: candidates })