Skip to content

[FEATURE]: Port permission prompt keyboard shortcuts (allow/deny/always) to the desktop/web app #29904

Closed as not planned

Description

@athal7

Problem

In the desktop/web app, responding to a permission prompt is click-only. The SessionPermissionDock (packages/app/src/pages/session/composer/session-permission-dock.tsx) renders Deny / Allow Always / Allow Once as buttons with onClick handlers and no keyboard path — there's no command id and nothing to rebind.

The TUI had this regress and then restored (#7954): enter → allow once, a → always, d / esc → deny. Those shortcuts never made it to the desktop/web permission dock.

Proposal

Bring the same per-request keyboard responses to the app's permission dock — register commands (e.g. permission.allow, permission.allowAlways, permission.deny) wired to the existing decide() path (session-composer-state.ts), so they show up in the keybind settings and can be rebound like other commands.

Notes

This is distinct from permissions.autoaccept (⌘⇧A), which toggles auto-accept mode rather than responding to the currently pending request.

Precedent: #7954 (TUI shortcuts restored).

Activity

  1. github-actions commented on May 29, 2026

    @github-actions
    Contributor

    For keybind-related issues, please also check our pinned keybinds documentation: #4997


    Related: you may also want to link this to your companion issue #29903 (jump to session with pending permission), as the two features complement each other.

  2. athal7 commented on May 29, 2026

    @athal7
    ContributorAuthor

    [ai] Confirmed against the keybinds docs: the "Desktop Prompt Shortcuts" section is only Emacs/Readline text-editing bindings (and explicitly "currently not configurable"). There are no allow/deny/always permission shortcuts on desktop — and the TUI keybind list has no permission_allow/deny/always either, only the fullscreen toggle. So this gap is real on both surfaces.

  3. github-actions commented on Jul 29, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions