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

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions