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.
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.xmluiapp/__shell/helpers.jsProposed change
Audit UI mutation affordances against host-side authorization checks:
Acceptance criteria