Problem
When several sessions are running, an agent often blocks waiting for me to approve or deny a tool call. Today the only way to find that session is to scan the sidebar for the warning dot and click it. There's no keyboard way to get to it.
The existing session.next.unseen / session.previous.unseen shortcuts (⇧⌥↓ / ⇧⌥↑) cycle by unseen turn-complete/error notifications, not by pending permissions, and only within the current project — so they don't land me on the blocked session.
Proposal
Add a command (e.g. session.next.permission / session.previous.permission) with a default keybind that jumps to the next session that has an actionable pending permission request, ideally across all open projects, not just the current one.
Notes
The data and helpers already exist client-side: store.permission[sessionID] (packages/app/src/context/global-sync/types.ts), and sessionPermissionRequest(...) — the same predicate the sidebar warning dot uses (packages/app/src/pages/layout/sidebar-items.tsx). The implementation could mirror navigateSessionByUnseen (layout.tsx), swapping the unseen-count check for the pending-permission check.
Related: #27772 (pending-attention indicator), #28175 (sidebar status panel).
Problem
When several sessions are running, an agent often blocks waiting for me to approve or deny a tool call. Today the only way to find that session is to scan the sidebar for the warning dot and click it. There's no keyboard way to get to it.
The existing
session.next.unseen/session.previous.unseenshortcuts (⇧⌥↓ / ⇧⌥↑) cycle by unseen turn-complete/error notifications, not by pending permissions, and only within the current project — so they don't land me on the blocked session.Proposal
Add a command (e.g.
session.next.permission/session.previous.permission) with a default keybind that jumps to the next session that has an actionable pending permission request, ideally across all open projects, not just the current one.Notes
The data and helpers already exist client-side:
store.permission[sessionID](packages/app/src/context/global-sync/types.ts), andsessionPermissionRequest(...)— the same predicate the sidebar warning dot uses (packages/app/src/pages/layout/sidebar-items.tsx). The implementation could mirrornavigateSessionByUnseen(layout.tsx), swapping the unseen-count check for the pending-permission check.Related: #27772 (pending-attention indicator), #28175 (sidebar status panel).