From 3edbdd1bb8da473f19820507c9e6b563304205a2 Mon Sep 17 00:00:00 2001 From: Kagura Date: Fri, 17 Apr 2026 16:01:06 +0800 Subject: [PATCH] fix(tool): use relative path for read permission patterns The read tool was passing absolute file paths to permission evaluation while user-configured permission rules use relative paths. This caused exact path deny rules (e.g., 'src/main/.../File.java': 'deny') to never match, since Wildcard.match compared an absolute path against a relative pattern. Other tools (write, edit, apply_patch) already use path.relative(Instance.worktree, filepath) for permission patterns. This change makes the read tool consistent. Fixes #23048 Related: #6892 --- packages/opencode/src/tool/read.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/tool/read.ts b/packages/opencode/src/tool/read.ts index 18c668ca0701..d365b014c4f8 100644 --- a/packages/opencode/src/tool/read.ts +++ b/packages/opencode/src/tool/read.ts @@ -105,7 +105,7 @@ export const ReadTool = Tool.define( yield* ctx.ask({ permission: "read", - patterns: [filepath], + patterns: [path.relative(Instance.worktree, filepath)], always: ["*"], metadata: {}, }) @@ -321,3 +321,4 @@ async function isBinaryFile(filepath: string, fileSize: number): Promise