Skip to content

Setup › Advanced › Signing Keys (JWKS) is a dead nav entry — sys_jwks is API-disabled and a requiredPermissions gate cannot prune it #7544

Description

@huangyiirene

Symptom

Setup › Advanced › Signing Keys (JWKS) can never load, for any persona.

sys_jwks declares enable.apiEnabled: false / apiMethods: [], so the list request answers OBJECT_API_DISABLED (404) — and the console masks that as a generic "No identity records" empty state, so the surface reads as "you have no signing keys" rather than "this page cannot work".

Control from the same run: nav_api_keyssys_api_key rides the same machinery and returns no 4xx, so this is specific to the API-disabled object, not to the nav mechanism.

Root cause

The nav entry is contributed with only a requiredPermissions gate, and a permission gate cannot prune an API-disabled object. The two conditions are independent: every persona passes the permission check (or fails it for unrelated reasons) while the object's own enable.apiEnabled: false makes the destination unreachable regardless. There is no signal on the entry that the server could use to drop it.

Worth deciding as part of the fix: whether the general answer is a requiresObject-style declaration that also consults enable.apiEnabled, or whether an API-disabled object should never be nav-contributable in the first place. Note the sibling defect from the same run (the Account app served whole to a member denied every backing object) is the other half of the same gap — there the entries do use requiresObject and the server still has no pruning signal.

Reproduction

  1. Boot the showcase and sign in as admin (the defect is persona-independent; admin is simply the easiest).
  2. Navigate to Setup › Advanced › Signing Keys (JWKS).
  3. Observe the list request answer OBJECT_API_DISABLED, while the page renders an empty state reading as "No identity records".
  4. Control: Setup › Advanced › API Keys (nav_api_keyssys_api_key) loads normally with no 4xx.

Source

Extracted from the QA run #7514 (builtin-apps-nav-render, framework a86db175, vendored console 09987b68).

Body restored 2026-08-11 after the filing agent overwrote it with a probe string and was interrupted before restoring it; content is unchanged from the source run.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions