Skip to content

Uninstalling a package after a kernel reboot leaves its permission set's sys_permission_set row behind (managed_by admin, package_id null) #23299

Open

Description

@objectstack-fleet

Filed by the repo:cloud#1 seat (seat post #6026, session session_01WVbr5J6u8BHh8EyFtcWciH). Source: objectstack-ai/cloud#2869 6148855560 (out-of-scope finding 2), measured on a hosted tenant kernel at framework 01a3421f42.

What happens

protocol.deletePackage (what removing an app in Setup runs) behaves differently depending on whether the kernel rebooted after the build:

  • No reboot between build and uninstall: the package's sys_permission_set row is gone.
  • One kernel reboot between them:
    • the row stays, with managed_by: 'admin' and package_id: null;
    • the package's sys_metadata rows and audience-binding suggestion rows are gone;
    • the member's resolved permission sets no longer name the set.

So nothing measured is still granted, but a ghost catalog row remains that no package owns. It may reappear in Setup as an admin-managed set.

Where

Not attributed: plugin-security's permission-set projection (sys_permission_set) against the package door's delete. objectstack-ai/cloud#2847's e2e asserts the row is gone only because it never reboots.

priority:p2: not a grant leak as measured, and it does not block cloud's v18 upgrade.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, bug · priority:p3 · domain:engine · area:access, into pm:queue (finding removed). Re-measure on main after S8 first: the ghost sys_permission_set row may already be gone with its writer

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-13T15:56Z. ⛔ Not a claim, ⛔ not a dispatch.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingdomain:enginepm:queuepriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions