diff --git a/desktop/src/components/controls/PermissionModeSelector.test.tsx b/desktop/src/components/controls/PermissionModeSelector.test.tsx
index 0ce66cf0..03dc1efb 100644
--- a/desktop/src/components/controls/PermissionModeSelector.test.tsx
+++ b/desktop/src/components/controls/PermissionModeSelector.test.tsx
@@ -47,7 +47,7 @@ import { useSettingsStore } from '../../stores/settingsStore'
import { useSessionStore } from '../../stores/sessionStore'
import { useTabStore } from '../../stores/tabStore'
-describe('PermissionModeSelector mobile access', () => {
+describe('PermissionModeSelector', () => {
beforeEach(() => {
viewportMocks.isMobile = false
useSettingsStore.setState({ permissionMode: 'default' })
@@ -73,4 +73,46 @@ describe('PermissionModeSelector mobile access', () => {
expect(screen.getByRole('button', { name: 'Close' })).toBeInTheDocument()
expect(screen.getByRole('menuitem', { name: /Auto accept edits/ })).toBeInTheDocument()
})
+
+ it('uses the active tab workspace when showing the bypass confirmation path', () => {
+ useSessionStore.setState({
+ activeSessionId: 'previous-session',
+ sessions: [
+ {
+ id: 'previous-session',
+ title: 'Previous',
+ createdAt: '2026-05-24T00:00:00.000Z',
+ modifiedAt: '2026-05-24T00:00:00.000Z',
+ messageCount: 1,
+ projectPath: 'C:\\Users\\LinTan',
+ projectRoot: 'C:\\Users\\LinTan',
+ workDir: 'C:\\Users\\LinTan',
+ workDirExists: true,
+ },
+ {
+ id: 'current-tab',
+ title: 'Current',
+ createdAt: '2026-05-24T00:00:00.000Z',
+ modifiedAt: '2026-05-24T00:00:00.000Z',
+ messageCount: 1,
+ projectPath: 'C:\\Users\\LinTan\\MyScript\\test5',
+ projectRoot: 'C:\\Users\\LinTan\\MyScript\\test5',
+ workDir: 'C:\\Users\\LinTan\\MyScript\\test5',
+ workDirExists: true,
+ },
+ ],
+ })
+ useTabStore.setState({
+ activeTabId: 'current-tab',
+ tabs: [{ sessionId: 'current-tab', title: 'Current', type: 'session', status: 'idle' }],
+ })
+
+ render()
+
+ fireEvent.click(screen.getByRole('button', { name: 'Ask permissions' }))
+ fireEvent.click(screen.getByRole('menuitem', { name: /Bypass permissions/ }))
+
+ expect(screen.getByText('C:\\Users\\LinTan\\MyScript\\test5')).toBeInTheDocument()
+ expect(screen.queryByText('C:\\Users\\LinTan')).not.toBeInTheDocument()
+ })
})
diff --git a/desktop/src/components/controls/PermissionModeSelector.tsx b/desktop/src/components/controls/PermissionModeSelector.tsx
index 1fb2e083..814a1d5e 100644
--- a/desktop/src/components/controls/PermissionModeSelector.tsx
+++ b/desktop/src/components/controls/PermissionModeSelector.tsx
@@ -35,7 +35,6 @@ export function PermissionModeSelector({ workDir: workDirProp, compact = false,
const setSessionPermissionMode = useChatStore((s) => s.setSessionPermissionMode)
const activeTabId = useTabStore((s) => s.activeTabId)
const sessions = useSessionStore((s) => s.sessions)
- const activeSessionId = useSessionStore((s) => s.activeSessionId)
const [open, setOpen] = useState(false)
const [confirmDialog, setConfirmDialog] = useState(false)
const ref = useRef(null)
@@ -87,7 +86,9 @@ export function PermissionModeSelector({ workDir: workDirProp, compact = false,
dontAsk: t('permMode.label.dontAsk'),
}
- const activeSession = sessions.find((s) => s.id === activeSessionId)
+ const activeSession = activeTabId
+ ? sessions.find((s) => s.id === activeTabId)
+ : null
const workDir = workDirProp || activeSession?.workDir || '~'
const compactButtonClass = compact
? isMobile