From 4cbeca4e09ba6016180eeffd58487924d16814da Mon Sep 17 00:00:00 2001 From: Huarch Date: Thu, 6 Aug 2026 20:03:20 +0800 Subject: [PATCH] fix(permissions): require approval for backend queries --- src/routes/chatPermissionPolicy.ts | 1 - tests/routes/chatPermissionPolicy.test.ts | 11 ++++++++--- tests/routes/chatStream.test.ts | 2 +- tests/runtime/opencodeConfig.test.ts | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/routes/chatPermissionPolicy.ts b/src/routes/chatPermissionPolicy.ts index e4b0a94..fef640e 100644 --- a/src/routes/chatPermissionPolicy.ts +++ b/src/routes/chatPermissionPolicy.ts @@ -6,7 +6,6 @@ const lowRiskToolPermissions = new Set([ "locate_features", "render_junctions", "show_chart", - "tjwater_server_query", "view_history", "view_scada", "web_search", diff --git a/tests/routes/chatPermissionPolicy.test.ts b/tests/routes/chatPermissionPolicy.test.ts index cda7581..2f63859 100644 --- a/tests/routes/chatPermissionPolicy.test.ts +++ b/tests/routes/chatPermissionPolicy.test.ts @@ -9,13 +9,18 @@ describe("permission approval policy", () => { it.each([ "show_chart", "web_search", - "tjwater_server_query", - "tjwater_tjwater_server_query", ])("allows low-risk permission %s", (permission) => { expect(canAutoApprovePermission(permission)).toBe(true); }); - it.each(["bash", "edit", "external_directory", "store_render_ref"])( + it.each([ + "bash", + "edit", + "external_directory", + "store_render_ref", + "tjwater_server_query", + "tjwater_tjwater_server_query", + ])( "requires confirmation for permission %s", (permission) => { expect(canAutoApprovePermission(permission)).toBe(false); diff --git a/tests/routes/chatStream.test.ts b/tests/routes/chatStream.test.ts index fa02c73..f8669c7 100644 --- a/tests/routes/chatStream.test.ts +++ b/tests/routes/chatStream.test.ts @@ -71,7 +71,7 @@ describe("streamPromptResponse", () => { properties: { id: "perm-1", sessionID: "runtime-session-1", - permission: "tjwater_tjwater_server_query", + permission: "show_chart", patterns: ["*"], metadata: {}, always: ["*"], diff --git a/tests/runtime/opencodeConfig.test.ts b/tests/runtime/opencodeConfig.test.ts index 5e59155..ce8caa3 100644 --- a/tests/runtime/opencodeConfig.test.ts +++ b/tests/runtime/opencodeConfig.test.ts @@ -13,6 +13,7 @@ describe("internal OpenCode permissions", () => { expect(permission["*"]).toBe("ask"); expect(permission.external_directory).toBe("deny"); + expect(permission.task).toBe("deny"); expect(permission.question).toBe("allow"); expect(permission.todowrite).toBe("allow"); expect(read?.["*"]).toBe("allow");