diff --git a/src/cli/exec-approvals-cli.test.ts b/src/cli/exec-approvals-cli.test.ts index 48d3f1a382d..c2d6651fe1d 100644 --- a/src/cli/exec-approvals-cli.test.ts +++ b/src/cli/exec-approvals-cli.test.ts @@ -283,6 +283,23 @@ describe("exec approvals CLI", () => { expect(runtimeErrors).toHaveLength(0); }); + it("keeps local approvals output when config load fails", async () => { + readBestEffortConfig.mockRejectedValue(new Error("duplicate agent directories")); + + await runApprovalsCommand(["approvals", "get", "--json"]); + + expect(defaultRuntime.writeJson).toHaveBeenCalledWith( + expect.objectContaining({ + effectivePolicy: { + note: "Config unavailable.", + scopes: [], + }, + }), + 0, + ); + expect(runtimeErrors).toHaveLength(0); + }); + it("reports agent scopes with inherited global requested policy", async () => { localSnapshot.file = { version: 1, diff --git a/src/cli/exec-approvals-cli.ts b/src/cli/exec-approvals-cli.ts index 6c266e9dcf1..92eb06582b5 100644 --- a/src/cli/exec-approvals-cli.ts +++ b/src/cli/exec-approvals-cli.ts @@ -165,10 +165,10 @@ async function loadConfigForApprovalsTarget(params: { if (params.source === "node") { return null; } - if (params.source === "local") { - return await readBestEffortConfig(); - } try { + if (params.source === "local") { + return await readBestEffortConfig(); + } const snapshot = (await callGatewayFromCli( "config.get", params.opts,