fix(agent): request approval for protected path access
This commit is contained in:
@@ -24,7 +24,7 @@ describe("internal OpenCode permissions", () => {
|
||||
expect(dockerfile.startsWith("FROM smanx/opencode:1.18.13@")).toBe(true);
|
||||
});
|
||||
|
||||
it("keeps protected paths denied in every approval mode", async () => {
|
||||
it("sends protected paths to approval while allowing mounted skills", async () => {
|
||||
const config = JSON.parse(await readFile("opencode.json", "utf8")) as {
|
||||
permission?: Record<string, string | Record<string, string>>;
|
||||
};
|
||||
@@ -34,27 +34,35 @@ describe("internal OpenCode permissions", () => {
|
||||
const read = permission.read as Record<string, string> | undefined;
|
||||
|
||||
expect(permission["*"]).toBe("ask");
|
||||
expect(permission.external_directory).toBe("deny");
|
||||
expect(Object.entries(permission.external_directory ?? {})).toEqual([
|
||||
["*", "ask"],
|
||||
["/app/.opencode/skills/*", "allow"],
|
||||
]);
|
||||
expect(permission.task).toBe("deny");
|
||||
expect(permission.question).toBe("allow");
|
||||
expect(permission.activity_update).toBe("allow");
|
||||
expect(permission.final_answer).toBe("allow");
|
||||
expect(permission.todowrite).toBe("allow");
|
||||
expect(read?.["*"]).toBe("allow");
|
||||
expect(read?.["data/**"]).toBe("deny");
|
||||
expect(read?.["**/logs/**"]).toBe("deny");
|
||||
expect(read?.[".env"]).toBe("ask");
|
||||
expect(read?.["data/**"]).toBe("ask");
|
||||
expect(read?.["**/logs/**"]).toBe("ask");
|
||||
expect(Object.values(read ?? {})).not.toContain("deny");
|
||||
expect(edit?.["*"]).toBe("ask");
|
||||
expect(edit?.["data/**"]).toBe("deny");
|
||||
expect(edit?.["**/logs/**"]).toBe("deny");
|
||||
expect(edit?.[".env"]).toBe("ask");
|
||||
expect(edit?.["data/**"]).toBe("ask");
|
||||
expect(edit?.["**/logs/**"]).toBe("ask");
|
||||
expect(Object.values(edit ?? {})).not.toContain("deny");
|
||||
expect(bash?.["*"]).toBe("ask");
|
||||
expect(bash?.["rm *"]).toBe("ask");
|
||||
expect(bash?.["rm -rf *"]).toBe("deny");
|
||||
expect(bash?.["rm -fr *"]).toBe("deny");
|
||||
expect(bash?.["rm -r -f *"]).toBe("deny");
|
||||
expect(bash?.["rm -f -r *"]).toBe("deny");
|
||||
expect(bash?.["rm --recursive --force *"]).toBe("deny");
|
||||
expect(bash?.["rm --force --recursive *"]).toBe("deny");
|
||||
expect(bash?.["*.env*"]).toBe("deny");
|
||||
expect(bash?.["rm -rf *"]).toBe("ask");
|
||||
expect(bash?.["rm -fr *"]).toBe("ask");
|
||||
expect(bash?.["rm -r -f *"]).toBe("ask");
|
||||
expect(bash?.["rm -f -r *"]).toBe("ask");
|
||||
expect(bash?.["rm --recursive --force *"]).toBe("ask");
|
||||
expect(bash?.["rm --force --recursive *"]).toBe("ask");
|
||||
expect(bash?.["*.env*"]).toBe("ask");
|
||||
expect(Object.values(bash ?? {})).not.toContain("deny");
|
||||
expect(bash?.["*data/*"]).toBeUndefined();
|
||||
expect(bash?.["*logs/*"]).toBeUndefined();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user