Skip to content

feat(platform): auto-grant remote permissions to trusted product labels - #446

Open
filvecchiato wants to merge 2 commits into
mainfrom
feat/auto-grant-remote-permissions
Open

feat(platform): auto-grant remote permissions to trusted product labels#446
filvecchiato wants to merge 2 commits into
mainfrom
feat/auto-grant-remote-permissions

Conversation

@filvecchiato

Copy link
Copy Markdown
Collaborator

Stacked on #434.

  • REMOTE_PERMISSION_TRUSTED_LABELS (peopl, dim2, stash) holds every RemotePermission without a prompt; nothing is persisted, and a stored Denied still revokes it.
  • Device permissions, identity disclosure and account access are unaffected.
  • PRODUCT_ID_TLDS adds test for product ids only. The dotNS navigation list stays dot/paseo, so a .test host remains external and keeps consuming a domain grant.

Product-id TLDs split from the narrower dotNS navigation list so .test is a product scope without bypassing the outbound domain grant.
Base automatically changed from feat/gate-external-navigation to main August 19, 2026 12:50
> This RFC below specifies batched remote-permission requests (`remote_permission` taking a `Vec<RemotePermission>`). That part has been rolled back: `remote_permission` again accepts a single `RemotePermission`. After the initial implementation it became clear that the batched API is hard to justify to the end user — a single prompt covering several distinct grants produces bad UX (the user cannot reason about or selectively approve what they are consenting to). The rest of this RFC (device permissions, lifecycle, persistence, implicit triggering) still stands; only the batching of remote permissions is reverted.

> **NOTE (2026-08-18): first-party products hold remote permissions without a prompt.**
> The lifecycle below specifies that every permission is prompted on first request. That holds for device permissions, identity disclosure and cross-product account access, but not for remote permissions requested by a product on the trusted list in `truapi_platform::REMOTE_PERMISSION_TRUSTED_LABELS`. Those products hold every `RemotePermission` variant — domain access, WebRTC, chain submit, preimage submit, statement submit — without a prompt, because they ship alongside the host and their remote access belongs to the host's own trust boundary. The grant is not persisted, so a `Denied` written through the permission administration surface still outranks it and revokes the access; clearing that denial restores the auto-grant. An empty `Remote` domain bundle remains denied, since it grants nothing. The list holds bare product labels with no TLD, so one entry covers the product on every network. This is an interim mechanism: the allowlist is intended to move into the product manifest, per RFC 0024.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI is likely failing because there is a change on the RFC but no spec change. We can either live with this or move this note somewhere else

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants