fix(oauth): drop ungrantable JSM Forms scopes from Jira scope list#4960
Conversation
Atlassian never published read/write/delete:form:jira-service-management to the OAuth 2.0 (3LO) or Forge scope catalogs, so no OAuth app can be configured with them and the authorize flow silently omits them from every grant. Because the credential check hard-requires the full canonical list, every Jira credential showed a permanent 'Additional permissions required' banner that 'Update access' could never clear. No granted credential has ever held these scopes, and no saved workflow uses the JSM forms operations, so removal changes no working behavior.
The viewer mask was derived from the value's length, but the server now withholds workspace secret values from non-admins (empty string), so the bullets disappeared entirely for read-only users. Always render a fixed-length mask for viewers — matching the component's documented behavior — which also stops leaking the secret's length.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryLow Risk Overview Separately, read-only secret viewers on the secrets settings page now always see a fixed 10-bullet mask in Reviewed by Cursor Bugbot for commit 1458af6. Configure here. |
Greptile SummaryThis PR fixes two independent bugs: it removes three Jira Service Management Forms scopes that Atlassian never published to its OAuth 3LO catalog (causing a permanent "Additional permissions required" banner that could never be cleared), and it fixes the secrets UI mask for read-only viewers where the server-returned empty string was causing the bullet mask to disappear.
Confidence Score: 5/5Safe to merge — both fixes are narrow, well-scoped, and directly address confirmed bugs with no regressions on existing behavior. The scope removals are additive-safe (no credential has ever held these scopes, so no grant is broken) and the mask fix restores previously visible UI without altering any data path. All three changed files have clear, isolated impact and the logic is straightforward to verify. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[SecretValueField renders] --> B{canEdit?}
B -- yes --> C[displayValue = real value\nfrom server]
B -- no --> D["displayValue = BULLET.repeat(10)\nfixed mask — server returned ''"]
C --> E{maskActive?\ncanEdit && !unmasked && !focused}
E -- yes --> F[WebkitTextSecurity: disc\nhides value while unfocused]
E -- no --> G[Render plain text]
D --> H[Render 10 bullets\nlength and existence hidden]
Reviews (2): Last reviewed commit: "fix(secrets): keep a fixed-length value ..." | Re-trigger Greptile |
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 1458af6. Configure here.
Summary
read/write/delete:form:jira-service-managementfrom the canonical Jira OAuth scope list (and their entries inSCOPE_DESCRIPTIONS). Atlassian never published these scopes to the OAuth 2.0 (3LO) or Forge scope catalogs, so no OAuth app can be configured with them — the authorize flow silently omits them from every grant. Since the credential check hard-requires the full list, every Jira credential showed a permanent "Additional permissions required" banner that "Update access" could never clear (reported on self-hosted, reproduces on hosted too)Type of Change
Testing
Typecheck and oauth/blocks unit tests pass. Verified repo-wide that nothing else references the removed scopes.
Checklist