fix(permissions): require approval for backend queries

This commit is contained in:
2026-08-06 20:03:20 +08:00
parent f66b9c3e9d
commit 4cbeca4e09
4 changed files with 10 additions and 5 deletions
-1
View File
@@ -6,7 +6,6 @@ const lowRiskToolPermissions = new Set([
"locate_features", "locate_features",
"render_junctions", "render_junctions",
"show_chart", "show_chart",
"tjwater_server_query",
"view_history", "view_history",
"view_scada", "view_scada",
"web_search", "web_search",
+8 -3
View File
@@ -9,13 +9,18 @@ describe("permission approval policy", () => {
it.each([ it.each([
"show_chart", "show_chart",
"web_search", "web_search",
"tjwater_server_query",
"tjwater_tjwater_server_query",
])("allows low-risk permission %s", (permission) => { ])("allows low-risk permission %s", (permission) => {
expect(canAutoApprovePermission(permission)).toBe(true); 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", "requires confirmation for permission %s",
(permission) => { (permission) => {
expect(canAutoApprovePermission(permission)).toBe(false); expect(canAutoApprovePermission(permission)).toBe(false);
+1 -1
View File
@@ -71,7 +71,7 @@ describe("streamPromptResponse", () => {
properties: { properties: {
id: "perm-1", id: "perm-1",
sessionID: "runtime-session-1", sessionID: "runtime-session-1",
permission: "tjwater_tjwater_server_query", permission: "show_chart",
patterns: ["*"], patterns: ["*"],
metadata: {}, metadata: {},
always: ["*"], always: ["*"],
+1
View File
@@ -13,6 +13,7 @@ describe("internal OpenCode permissions", () => {
expect(permission["*"]).toBe("ask"); expect(permission["*"]).toBe("ask");
expect(permission.external_directory).toBe("deny"); expect(permission.external_directory).toBe("deny");
expect(permission.task).toBe("deny");
expect(permission.question).toBe("allow"); expect(permission.question).toBe("allow");
expect(permission.todowrite).toBe("allow"); expect(permission.todowrite).toBe("allow");
expect(read?.["*"]).toBe("allow"); expect(read?.["*"]).toBe("allow");