From 27dce5a6b7aaa2bc9d9c5b4f92d69d6e98aeb8da Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Sun, 26 Jul 2026 15:29:04 -0700 Subject: [PATCH] fix(macos): attribute the FDA prompts to agent activity, not Orca's own reads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The card said the prompts happen "when this copy of Orca reads protected app data", but Orca's own reads are small and gated; #9756's trigger is agent find/grep sweeps into ~/Library/Containers, which macOS bills to Orca because Orca is the responsible process for every terminal child. Blaming Orca reads as an accusation and hid why FDA works at all — the grant attaches to Orca rather than to each churning child binary. Name agents as the trigger, keep the "reduce" hedge and the terminal caveat, and drop the "this copy of Orca" dev-build hedge that cost a clause. Assert the causation wording so it can't silently regress. --- .../src/components/sidebar/FullDiskAccessNudge.test.tsx | 4 +++- src/renderer/src/components/sidebar/FullDiskAccessNudge.tsx | 2 +- src/renderer/src/i18n/locales/en.json | 2 +- src/renderer/src/i18n/locales/es.json | 2 +- src/renderer/src/i18n/locales/ja.json | 2 +- src/renderer/src/i18n/locales/ko.json | 2 +- src/renderer/src/i18n/locales/zh.json | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/renderer/src/components/sidebar/FullDiskAccessNudge.test.tsx b/src/renderer/src/components/sidebar/FullDiskAccessNudge.test.tsx index 2cf2c7034fa..4a08c24c4e4 100644 --- a/src/renderer/src/components/sidebar/FullDiskAccessNudge.test.tsx +++ b/src/renderer/src/components/sidebar/FullDiskAccessNudge.test.tsx @@ -131,8 +131,10 @@ describe('FullDiskAccessNudge', () => { expect(container.textContent).toContain('Full Disk Access') expect(container.textContent).toContain('Open System Settings') // The grant covers this app, not the detached PTY daemon that owns terminals. - expect(container.textContent).toContain('Terminal sessions may still prompt separately') + expect(container.textContent).toContain('may still prompt separately') expect(container.textContent).not.toContain('stops asking') + // Agent sweeps trigger these prompts; macOS only names Orca as the responsible process. + expect(container.textContent).toContain('agents it runs') }) it('stays hidden while the probe is unresolved (no first-paint flash)', async () => { diff --git a/src/renderer/src/components/sidebar/FullDiskAccessNudge.tsx b/src/renderer/src/components/sidebar/FullDiskAccessNudge.tsx index d17fa2e7368..8315e506f52 100644 --- a/src/renderer/src/components/sidebar/FullDiskAccessNudge.tsx +++ b/src/renderer/src/components/sidebar/FullDiskAccessNudge.tsx @@ -258,7 +258,7 @@ export function FullDiskAccessNudge(): React.JSX.Element | null {

{translate( 'auto.components.sidebar.FullDiskAccessNudge.body', - 'Grant Full Disk Access to reduce repeated macOS prompts when this copy of Orca reads protected app data. Terminal sessions may still prompt separately.' + "These prompts come from Orca and the agents it runs reading other apps' data. Full Disk Access reduces them; terminal sessions may still prompt separately." )}