Agent flows
- Tier: Premium, Ultimate
- Add-on: GitLab Duo Core, Pro, or Enterprise
- Offering: GitLab.com, GitLab Self-Managed
- Status: Experiment
- LLM: Anthropic Claude Sonnet 4
Version history
-
Introduced in GitLab 17.4 with a flag named
duo_workflow
. Enabled for GitLab team members only. This feature is a private beta. -
Changed name and
duo_workflow
flag enabled in GitLab 18.2.
The availability of this feature is controlled by a feature flag. For more information, see the history.
The software development flow is the first flow that's available in the VS Code IDE. Formerly known as GitLab Duo Workflow, the software development flow:
- Runs in your IDE so that you do not have to switch contexts or tools.
- Creates and works through a plan, in response to your prompt.
- Stages proposed changes in your project's repository. You control when to accept, modify, or reject the suggestions.
- Understands the context of your project structure, codebase, and history. You can also add your own context, such as relevant GitLab issues or merge requests.
Prerequisites
Before you can use the software development flow in Visual Studio Code (VS Code), you must:
Step 1: Configure your GitLab environment
For GitLab.com
- Have an account on GitLab.com.
- Have a project that meets the following requirements:
- The project is on GitLab.com.
- You have at least the Developer role.
- The project belongs to a group namespace with an Ultimate subscription.
- Beta and experimental features must be turned on.
- GitLab Duo must be turned on.
For GitLab Self-Managed
- Follow the documentation to configure GitLab Duo on a GitLab Self-Managed instance.
- GitLab Duo must be enabled.
- Beta and experimental features must be turned on.
Step 2: Set up your local development environment
- Install VS Code.
- Set up the GitLab Workflow extension for VS Code. Minimum version 5.16.0.
- Successfully connect to your repository.
- Ensure an HTTP/2 connection to the backend service is possible.
Connect to your repository
To use the software development flow in VS Code, ensure your repository is properly connected.
-
In VS Code, on the top menu, select Terminal > New Terminal.
-
Clone your repository:
git clone <repository>
. -
Change to the directory where your repository was cloned and check out your branch:
git checkout <branch_name>
. -
Ensure your project is selected:
- On the left sidebar, select GitLab Workflow ({tanuki}).
- Select the project name. If you have multiple projects, select the one you want to work with.
-
In the terminal, ensure your repository is configured with a remote:
git remote -v
. The results should look similar to:origin git@gitlab.com:gitlab-org/gitlab.git (fetch) origin git@gitlab.com:gitlab-org/gitlab.git (push)
If no remote is defined, or you have multiple remotes:
- On the left sidebar, select Source Control ({branch}).
- On the Source Control label, right-click and select Repositories.
- Next to your repository, select the ellipsis (), then Remote > Add Remote.
- Select Add remote from GitLab.
- Choose a remote.
Now you can use the software development flow to help solve your coding tasks.
Use the software development flow in VS Code
The software development flow is one flow in the Agent Platform.
To use the software development flow:
- On the left sidebar, select GitLab Duo Agent Platform.
- In the text box, specify a code task in detail.
- The software development flow is aware of all files available to Git in the project branch. You can also give additional context.
- The software development flow cannot access external sources or the web.
- Select Start.
After you describe your task, a plan is generated and executed. You can pause or ask it to adjust the plan.
The context the software development flow is aware of
When you ask for help with a task, the software development flow refers to files available to Git in the current branch of the project in your VS Code workspace.
You can also provide it with additional context.
Area | Enter | Examples |
---|---|---|
Local files | The file with path. | • Summarize the file src/main.js • Review the code in app/models/ • List all JavaScript files in the project |
Epics | Either: • The URL of the group or epic. • The epic ID and the name of the group the epic is in. |
Examples: • List all epics in https://gitlab.com/groups/namespace/group • Summarize the epic: https://gitlab.com/groups/namespace/group/-/epics/42 • Summarize epic 42 in group namespace/group
|
Issues | Either: • The URL of the project or issue. • The issue ID in the current or another project. |
Examples: • List all issues in the project at https://gitlab.com/namespace/project • Summarize the issue at https://gitlab.com/namespace/project/-/issues/103 • Review the comment with ID 42 in https://gitlab.com/namespace/project/-/issues/103 • List all comments on the issue at https://gitlab.com/namespace/project/-/issues/103 • Summarize issue 103 in this project |
Merge requests | Either: • The URL of the merge request. • The merge request ID in the current or another project. |
• Summarize https://gitlab.com/namespace/project/-/merge_requests/103 • Review the diffs in https://gitlab.com/namespace/project/-/merge_requests/103 • Summarize the comments on https://gitlab.com/namespace/project/-/merge_requests/103 • Summarize merge request 103 in this project |
Merge request pipelines | The merge request ID in the current or another project. | • Review the failures in merge request 12345 • Can you identify the cause of the error in the merge request 54321 in project gitlab-org/gitlab-qa • Suggest a solution to the pipeline failure in https://gitlab.com/namespace/project/-/merge_requests/54321
|
The software development flow also has access to the GitLab Search API to find related issues or merge requests.
Supported languages
The software development flow officially supports the following languages:
- CSS
- Go
- HTML
- Java
- JavaScript
- Markdown
- Python
- Ruby
- TypeScript
APIs that the software development flow has access to
To create solutions and understand the context of the problem, the software development flow accesses several GitLab APIs.
Specifically, an OAuth token with the ai_workflows
scope has access
to the following APIs:
- Projects API
- Search API
- CI Pipelines API
- CI Jobs API
- Merge Requests API
- Epics API
- Issues API
- Notes API
- Usage Data API
Audit log
An audit event is created for each API request done by the software development flow. On your GitLab Self-Managed instance, you can view these events on the instance audit events page.
Risks
The software development flow is an experimental product and users should consider their circumstances before using this tool. It is subject to the GitLab Testing Agreement. The software development flow is an AI agent that is given some ability to perform actions on the user's behalf. AI tools based on LLMs are inherently unpredictable and you should take appropriate precautions.
The software development flow in VS Code runs workflows on your local workstation. All the documented risks should be considered before using this product. The following risks are important to understand:
- The software development flow has access to the local file system of the
project where you started running it. The software development flow respects your local
.gitignore
file, but it can still access files that are not committed to the project and not called out in.gitignore
. Such files can contain credentials (for example,.env
files). - The software development flow also gets access to a time-limited
ai_workflows
scoped GitLab OAuth token with your user's identity. This token can be used to access GitLab APIs on your behalf. This token is limited to the duration of the workflow and only has access to certain APIs in GitLab. Without user approval, the software development flow will only perform read operations but the token can still, by design, perform write operations on the users behalf. You should consider the access your user has in GitLab before running the software development flow. - You should not give the software development flow any additional credentials or secrets, in goals or messages, as there is a chance it might end up using those in code or other API calls.
Give feedback
The software development flow is an experiment and your feedback is crucial to improve it for you and others. To report issues or suggest improvements, complete this survey.