diff --git a/AgentCompany-New/src/main/app/window-security.ts b/AgentCompany-New/src/main/app/window-security.ts index fb835c49..7911e18f 100644 --- a/AgentCompany-New/src/main/app/window-security.ts +++ b/AgentCompany-New/src/main/app/window-security.ts @@ -2,9 +2,16 @@ import type { BrowserWindow } from "electron"; export function attachMainWindowSecurity(win: BrowserWindow, devServerOrigin: string | null): void { win.webContents.setWindowOpenHandler(() => ({ action: "deny" })); - win.webContents.on("will-navigate", (event, url) => { + const blockNavigation = (event: Electron.Event, url: string): void => { if (devServerOrigin && url.startsWith(devServerOrigin)) return; if (url.startsWith("file://")) return; event.preventDefault(); - }); + }; + win.webContents.on("will-navigate", blockNavigation); + win.webContents.on("will-redirect", blockNavigation); + // The first-party renderer never asks for camera, microphone, geolocation, + // notifications, and the like, so deny every permission outright — matching + // the provider sign-in windows — rather than leaving the default allow. + win.webContents.session.setPermissionRequestHandler((_webContents, _permission, callback) => callback(false)); + win.webContents.session.setPermissionCheckHandler(() => false); }