Dive into Rovo Dev’s IDE integration, handling access, permissions, and usage, plus key lessons for a smoother developer experience.
Rovo Dev – a leading AI Coding Agent
Rovo Dev is Atlassian’s enterprise-ready AI coding agent. It’s designed to transform your development workflow – From Jira work item, to code, to pull request, to pipeline, and beyond.
Rovo Dev achieves state-of-the-art results on the SWE-bench benchmark. Rovo Dev has a 41.98% resolve rate across 2,294 tasks on SWE Bench Full. This beats the next best agent by a large margin.
Key capabilities include:
- Code Understanding & Navigation: Instantly analyze repositories, generate documentation, and get code explanations in natural language
- Development Acceleration: AI-assisted code completion, intelligent refactoring, automated testing, and interactive debugging
- Atlassian Ecosystem Integration: Direct integration with Jira issues, Confluence docs, and Bitbucket repositories
- Security & Administration: Enterprise-grade security with robust permission controls and user management
Why we integrated with the IDE
Developers want to use tools where they work. They spend a significant amount of time in their IDE. Context switching between tools disrupts their flow state.
Also, the IDE provides a user experience that is harder to deliver in the CLI.
Key benefits of an IDE integration:
- Staying in the flow: Users can stay within the IDE and easily work with Rovo Dev.
- Contextual Awareness: Rovo Dev can see which files you’re currently working on
- Easy Context Addition: Quickly add context such as lines of code and files.
- Seamless Diff Viewing: Changes displayed in the familiar IDE diff interface
- Workflow Integration: Integration with IDE tools, such as linting.
We currently offer support for Visual Studio Code and its forks, such as Cursor and Windsurf.
| IDE | Deep Link |
|---|---|
| Visual Studio Code | vscode://atlassian.atlascode/extension |
| Cursor | cursor://atlassian.atlascode/extension |
| Windsurf | windsurf://atlassian.atlascode/extension |
You can find more information about getting started here:
How it works
In a Picture
To get Rovo Dev to work for a user, you need:
- Input from the user:
- Jira cloud credentials: User email & API token
- Atlassian Jira Site
- User’s directory
- Resources as a developer
- Rovo Dev Binary
- Port
- Xid
- Command to run it all
- API Docs
Let’s look at each of these.
Rovo Dev Binary
If the ACLI meets your needs, you can use ACLI with Rovo Dev. Learn more here: https://support.atlassian.com/rovo/docs/install-and-run-rovo-dev-cli-on-your-device/
The Atlassian extension automatically detects if the Rovo Dev binary needs downloading or updating and downloads it if necessary. Users don’t need to set up the binary, as the extension handles this automatically, improving the user experience.
Credentials
User Email
This is the same email that the user would use to login. Ex: john_doe@example.com
API Token
If your application can use scoped tokens, the user can auto-create one here: https://id.atlassian.com/manage-profile/security/api-tokens?autofillToken&expiryDays=max&appId=rovodev&selectedScopes=all
If your application cannot use scoped tokens, the user can manually create on here: https://id.atlassian.com/manage-profile/security/api-tokens
Atlassian Jira Site
This is the Jira site that the Rovo Dev will check for entitlements & usage.
We let the user know how to find their site by looking at one of their recent Jiras – for example, mysite.atlassian.net/browse/JIRA-1 maps to mysite.atlassian.net
If your application has the user’s OAuth token, the oauth/token/accessible-resources API can show the user’s sites. You can present that as a list for the user to choose from.
Xid
This is an identifier for your experience. This helps Atlassian prevent abuse. Also, this lets admins know where Rovo Dev credits are being consumed. Ex: com.example.rovodev.use_case
User’s directory
Rovo Dev runs in a directory. Our best practice is to have a directory that contains all the context Rovo Dev needs to complete the job. Often, this is the root of a code repository.
Command
# run this command in the appropriate folder
USER_API_TOKEN={API_TOKEN} \
USER_EMAIL={USER_EMAIL} \
{RovoDevExecutable} \
serve {port} \
--xid {your_unique_experience_id} \
--site-url {USER_SITE}
API Docs
Once you run the command above, you can find the swagger docs at http://localhost:{port}/docs
Once Rovo Dev is running, we need to handle:
Entitlements
The site that the user has may not have access to Rovo Dev. If this occurs, Rovo Dev will fail its healthcheck with a ‘entitlement check failed’ state. In this scenario, every API will be disabled except for the healthcheck and shutdown APIs. The user can take action, such as contacting their admin or switching to a site that has Rovo Dev.
Permissions
Rovo Dev may need to run sensitive commands, such as bash commands. When doing so, it will await the user’s permission to proceed. The Atlassian extension presents this as a modal that the user can accept or decline. It also expose yolo mode to reduce friction for the user.
Usage
The user may have used all of their credits on Rovo Dev. When this occurs, Rovo Dev will throw an error indicating this. The Atlassian extension then presents this to user, so that the user can take action – such as contacting their admin, or switching to a site on which they have more credits available.
Some learnings
Discoverable Authentication
In our early versions, our authentication was quite hidden. This meant many of our users struggled to get started. Even once they found the place to authenticate, they struggled to understand where to create the API token.
Learning: Make the calls to action for authentication easily discoverable. Assist users by providing links to create API tokens.
Eager initialization
Rovo Dev takes time to both download and to start up. When we first built this, the users would have to face both of these time lags. To improve this, we allowed Rovo Dev to download and start up eagerly to improve the user experience.
Learning: Parallelizing the download and initialization of Rovo Dev with other user activities. This increases the likelihood that Rovo Dev is ready when the user sends the chat.
Clear error messages
Rovo Dev has a couple of user-facing error messages around authentication, directories, permissions, and usage. When we make these easily visible in the UX, users can make the necessary choices to allow Rovo Dev to continue.
Managing multiple Rovo Dev instances
Some user have multiple instances of their IDE open. They may multitask across these instances. This means that Rovo Dev needs to multitask. The simple solution is to have a Rovo Dev instance running per IDE instance. However, this raises a challenge. One needs to know which ports are available and properly clean up processes.
We achieved this by tracking which ports mapped to specific directories and, if the Rovo Dev process was active, recording its PID.