RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Project Summary
Atlassian is addressing Forge User Impersonation gaps to achieve functional parity with Connect and remove blockers for partners migrating their apps to the Forge platform, specifically regarding unverified JSM customers, Confluence guests, and service accounts. This RFC discusses known current parity gaps, and asks for feedback on other gaps that are blocking migrations from Connect to Forge.
- Publish: Sep 30, 2026
- Discuss: Oct 14, 2026
- Resolve: Oct 28, 2026
Problem
With the rollout of Forge User Impersonation (FUI) across Jira, Confluence and Jira Service Management, apps can now execute API calls on behalf of end users (asUser() and Forge Remote user tokens), enforcing user permissions and attributing change history directly to human users.
While the core in-session impersonation flow works for active, verified users across Jira and Confluence, partner feedback and platform testing have highlighted offline (ie, impersonating a user from a scheduled trigger), and account-state edge cases that functioned in Connect but fail or behave differently in Forge.
We are sharing our technical gap analysis, our proposed roadmap, and opening a discussion on how we should address these edge cases. Our goal with this RFC is to gather more use cases around what’s blocking our partners from migrating from Connect to Forge.
Note on Pre-Migration Scenarios:
This RFC specifically addresses runtime Forge platform parity and app behaviour. Pre-migration fixes and migration-specific tooling edge cases (e.g., user mapping/account states during app data migrations) are managed separately. For assistance with migration use cases, partners should reach out directly to Cloud Migration SMEs.
Current Parity Analysis: What works vs Edge Cases Identified
Please note, that just because a scenario worked in Connect doesn’t mean it will work in Forge. The security model for Forge is different from Connect, meaning that functionality between two platforms will not be identical.
Based on our testing across Forge functions and Forge remote, here is our current assessment of user impersonation parity.
Our team is actively working on this, we plan to update this matrix in the following days as we improve our understanding.
- Licensed User:
- Connect user impersonation:

- Forge online calls (
asUser()):
- Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
- Confluence Guest:
- Connect user impersonation:

- Forge online calls (
asUser()):
- Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
- Jira guest
- Connect user impersonation:

- Forge online calls (
asUser()):
- Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
- Unlicensed org member
- Connect user impersonation:

- Forge online calls (
asUser()):
- Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
- Unverified JSM External Customer Account (prefixed with
qm:)- Connect user impersonation:

- Forge online calls (
asUser()):
- Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
- Unlicensed JSM Portal users:
- Connect user impersonation:

- Forge online calls (
asUser()):
- Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
- Service account
- Connect user impersonation:

- Forge online calls (
asUser()): N/A (can’t log in as a service account) - Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
- Unverified Atlassian accounts
- Connect user impersonation:

- Forge online calls (
asUser()):
- Forge impersonation call (
asUser(<userId>)/ Remote):
- Connect user impersonation:
Proposed Scope
Unverified JSM External Customer Accounts
- In JSM, email is a primary channel. When an external customer emails a service desk, apps create or resolve customer accounts and create tickets or comments under that customer’s identity.
- Portal customers may never visit the customer portal or verify their account. Requiring they login before an app can act on their behalf breaks the core email-driven service desk model.
- JSM Customer accounts can be created programatically via the API (for example). Since these accounts are synthetic, they are not verified at the time they need to be used.
- External collaboration relies on guest accounts and anonymous viewers being able to access designated spaces. When a guest interacts with a Forge app, asUser API calls initiated on their behalf fail.
- From our testing, this diverges from how Jira guests work currently. They can make calls themselves, or be impersonated.
- Service accounts are accounts that are not associated with a person. They can currently be impersonated in Connect but not Forge.
- Depending on the scenario, they can be useful as a workaround for being unable to impersonate unverified users in Forge.
Unlicensed users (eg Give access to unlicensed users from Jira Service Management | Confluence Cloud | Atlassian Support )
- Some apps rely on impersonating unlicensed users, for example, in a JSM portal that is open to the public or to other members of your organisation. This currently works in Connect but not Forge.
Out of scope
The following Forge User Impersonation bugs are out of scope in the context of Connect to Forge parity gaps. We hear you that these are problems, and they’ll be addressed separately.
- Password Reset bug described in ECO-1467
- asUser API request for verified JSM customer accounts described in FRGE-971
Asks
We’ll enable impersonation for unverified JSM external customers, but enabling impersonation for standard unverified Atlassian accounts is still under investigation.
Atlassian accounts differ fundamentally from portal-only customers:
-
Broader access and blast radius: A standard Atlassian account holds permissions across products and orgs.
-
Account ownership and identity verification: Impersonating unverified email addresses have trust considerations that we must evaluate (e.g., identity spoofing) and unauthorised privilege escalation risks if the identity cannot be verified
What we need to understand from you
We know partners rely on Connect’s impersonation functionality to act as unverified Atlassian users. However, we need to understand the exact use case to address open concerns on our end.
- Would improved error messaging solve the problem? If Forge returned a distinct, actionable error code allowing your app UI to prompt an admin or user to complete verification/login, would that satisfy your customer scenarios?
- If not, why? Please explain explicitly why an interactive prompt is not viable for your architecture. Any additional information such as user stories, web sequence diagrams, whiteboarding etc is more than welcome and our team will find this very helpful. If you prefer to discuss specifics with our team privately, please let us know and we can coordinate accordingly.
We want to ensure no critical edge cases slip through the cracks so please share if:
- your app has other unverified scenarios that block you from migrating to Forge
- there are any scenarios that have not been covered in this RFC that worked in Connect but fail in Forge today