I have built and deployed a Jira app using Atlassian Forge. The app acts as a lightweight chatbot that listens to Jira Automation Webhooks (e.g., issue commented) and then fetches issue data via the Jira REST API to generate automated insights.
The app works perfectly on my own Jira site, but when installed on another Jira site (by an admin using the official install link), it fails to fetch issues due to permission errors.
What the app does
api.asApp().requestJira(`/rest/api/3/issue/${issueKey}`)Posts an automated comment back to the issue
Observed behavior
On the external Jira site, the automation fires successfully, but the Forge app fails when fetching the issue.
Jira Automation error:
Unable to publish the web request - received HTTP status response: 500
Failed to fetch Jira data
Forge logs:
Failed to fetch issue OD2T-2: 404 Not Found
"Issue does not exist or you do not have permission to see it."
Critical: Failed to fetch Jira data. Check App Permissions.
Important details
Same code works on my own Jira site (where I’m also an admin)
Forge permissions (manifest.yml)
permissions:
scopes:
- read:jira-work
- read:jira-user
What I suspect
This seems related to project-level permissions or issue security schemes for the Forge app system user, especially since:
However, I’m unclear on:
Questions
Any guidance from Forge or Jira platform experts would be greatly appreciated.
Environment
Based on my investigation of similar cases in the Atlassian Developer Community, this is a known behavior related to how Forge app system users are handled in Jira's permission schemes.
The issue is likely caused by the Forge app's system user not having the necessary project-level permissions on the external site. Unlike Connect apps, which are automatically added to the atlassian-addons-project-access role, Forge apps act as a unique system user that may not be automatically granted access to projects with custom permission schemes.
Root Cause: When using api.asApp(), the request is authenticated as the app's internal service account. If the target project on the customer site has a restricted permission scheme (e.g., it doesn't grant "Browse Projects" to "Any logged in user" or a group the app belongs to), Jira returns a 404 to avoid leaking the existence of the issue.
Why it works on your site: Your site likely uses a default permission scheme where "Any logged in user" or "Service Desk Team" has access, or you may have inadvertently granted the app user permissions during development.
To resolve this, the administrator of the external Jira site needs to ensure the Forge app user has the Browse Projects (and Add Comments, if applicable) permission for the specific project.
Identify the App User:
Go to Project Settings > Users and roles.
Click Add users to a role.
Search for the name of your app. A user with the same name as your app should appear.
Grant Permissions:
Add this app user to a role that has the Browse Projects permission in the project's Permission Scheme.
Alternatively, update the Permission Scheme to grant "Browse Projects" to the specific app user.
This is a suitable case to raise with Developer Support (Ecosystem) if you wish to advocate for a more seamless installation experience (similar to Connect's automatic role assignment).
Sources:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.