Skip to content

Security: prevent UI-only mutation affordances from bypassing host authorization #121

Description

@marcello-tk

Parent security issue: #109
Umbrella: #108

Problem / exposed surface

The Worklist, Commits, Issues, and helper surfaces can present buttons or helpers that suggest a mutation: approve, drop, commit, push, close issue, send text to the terminal, or open external URLs. The UI is useful for deliberate user action, but it should not be the policy authority.

The risk is a UI path that looks authorized because a button is enabled or a helper function is available, while the host-side route or IPC command does not independently verify the required approval state.

Relevant surfaces:

  • app/tools/components/Workspace.xmlui
  • app/__shell/helpers.js
  • Worklist approval / iterate / drop buttons
  • Commits tab push helper
  • Issues tab close/comment/create flows
  • host routes and IPC commands called from those helpers

Proposed change

Audit UI mutation affordances against host-side authorization checks:

  • List every UI action that changes disk, git state, GitHub state, terminal state, or approval state.
  • For each action, identify the host-side check that makes the action legal.
  • Move policy decisions out of frontend-only enabled/disabled state where needed.
  • Keep frontend state useful for user feedback, but make the host the final decision point.

Acceptance criteria

  • Every mutating UI affordance has a matching host-side policy check or an explicit rationale for why it does not need one.
  • Frontend disabled state is treated as UX, not as the security boundary.
  • Documentation names the sensitive helper functions and the host routes/IPC commands that enforce their permissions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions