- Ask about GitLab
- Ask about a specific issue
- Ask about a specific epic
- Ask about a specific merge request
- Ask about a specific commit
- Ask about a specific pipeline job
- Explain selected code
- Ask about or generate code
- Ask follow up questions
- Ask about errors
- Refactor code in the IDE
- Fix code in the IDE
- Write tests in the IDE
- Ask about CI/CD
- Troubleshoot failed CI/CD jobs with Root Cause Analysis
- Explain a vulnerability
- Delete or reset the conversation
- GitLab Duo Chat slash commands
Ask GitLab Duo Chat
GitLab Duo Chat can help with a variety of questions. The following examples represent some of the areas where GitLab Duo Chat can be the most helpful.
For additional practical examples, see the GitLab Duo use cases.
Ask about GitLab
- Introduced for GitLab.com in GitLab 16.0.
-
Introduced ability to ask doc-related questions on self-managed in GitLab 17.0 with a flag named
ai_gateway_docs_search
. Enabled by default. - Generally available and feature flag removed in GitLab 17.1.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask questions about how GitLab works. Things like:
Explain the concept of a 'fork' in a concise manner.
Provide step-by-step instructions on how to reset a user's password.
GitLab Duo Chat uses the GitLab documentation as source. To keep Chat up to date with the documentation, its knowledge base is updated daily.
- On GitLab.com, the most recent version of the documentation is used.
- On Self-managed and GitLab Dedicated, the documentation for the version of the instance is used.
Ask about a specific issue
- Introduced for GitLab.com in GitLab 16.0.
- Introduced for self-managed and GitLab Dedicated in GitLab 16.8.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask about a specific GitLab issue. For example:
Generate a summary for the issue identified via this link: <link to your issue>
- When you are viewing an issue in GitLab, you can ask
Generate a concise summary of the current issue.
How can I improve the description of <link to your issue> so that readers understand the value and problems to be solved?
For tips on how GitLab Duo Chat can improve your productivity with issues and epics, see Boost your productivity with GitLab Duo Chat.
Ask about a specific epic
- Introduced for GitLab.com in GitLab 16.3.
- Introduced for self-managed and GitLab Dedicated in GitLab 16.8.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask about a specific GitLab epic. For example:
Generate a summary for the epic identified via this link: <link to your epic>
- When you are viewing an epic in GitLab, you can ask
Generate a concise summary of the opened epic.
What are the unique use cases raised by commenters in <link to your epic>?
Ask about a specific merge request
- Introduced in GitLab 17.5.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab about the merge request you’re viewing. You can ask about:
- The title or description.
- Comments and threads.
- The content on the Changes tab.
- Metadata, like labels, source branch, author, milestone, and more.
While in the merge request, open Chat and type your question. For example:
Why was the .vue file changed?
What do the reviewers say about this merge request?
How can this merge request be improved?
Which files and changes should I review first?
Chat is not aware of pipelines or commits. However, you can use root cause analysis to troubleshoot the jobs in your pipeline.
Ask about a specific commit
- Introduced in GitLab 17.6.
You can ask about a specific GitLab commit. For example:
Generate a summary for the commit identified with this link: <link to your commit>
How can I improve the description of this commit?
- When you are viewing a commit in GitLab, you can ask
Generate a summary of the current commit.
Ask about a specific pipeline job
- Introduced in GitLab 17.6.
You can ask about a specific GitLab pipeline job. For example:
Generate a summary for the pipeline job identified via this link: <link to your pipeline job>
Can you suggest ways to fix this failed pipeline job?
What are the main steps executed in this pipeline job?
- When you are viewing a pipeline job in GitLab, you can ask
Generate a summary of the current pipeline job.
Explain selected code
- Introduced for GitLab.com in GitLab 16.7.
- Introduced for self-managed and GitLab Dedicated in GitLab 16.8.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat to explain selected code:
You can also add additional instructions to be considered. For example:
/explain the performance
/explain focus on the algorithm
/explain the performance gains or losses using this code
-
/explain the object inheritance
(classes, object-oriented) -
/explain why a static variable is used here
(C++) -
/explain how this function would cause a segmentation fault
(C) -
/explain how concurrency works in this context
(Go) -
/explain how the request reaches the client
(REST API, database)
For more information, see Use GitLab Duo Chat in VS Code.
In the GitLab UI, you can also explain code in:
- A file.
- A merge request.
Ask about or generate code
- Introduced for GitLab.com in GitLab 16.1.
- Introduced for self-managed and GitLab Dedicated in GitLab 16.8.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat questions about code by pasting that code into the Duo Chat window. For example:
Provide a clear explanation of this Ruby code: def sum(a, b) a + b end.
Describe what this code does and how it works.
You can also ask Chat to generate code. For example:
Write a Ruby function that prints 'Hello, World!' when called.
Develop a JavaScript program that simulates a two-player Tic-Tac-Toe game. Provide both game logic and user interface, if applicable.
Create a regular expression for parsing IPv4 and IPv6 addresses in Python.
Generate code for parsing a syslog log file in Java. Use regular expressions when possible, and store the results in a hash map.
Create a product-consumer example with threads and shared memory in C++. Use atomic locks when possible.
Generate Rust code for high performance gRPC calls. Provide a source code example for a server and client.
Ask follow up questions
You can ask follow-up questions to delve deeper into the topic or task at hand. This helps you get more detailed and precise responses tailored to your specific needs, whether it’s for further clarification, elaboration, or additional assistance.
A follow-up to the question Write a Ruby function that prints 'Hello, World!' when called
could be:
Can you also explain how I can call and execute this Ruby function in a typical Ruby environment, such as the command line?
A follow-up to the question How to start a C# project?
could be:
Can you also please explain how to add a .gitignore and .gitlab-ci.yml file for C#?
Ask about errors
Programming languages that require compiling the source code may throw cryptic error messages. Similarly, a script or a web application could throw a stack trace. You can ask GitLab Duo Chat by prefixing the copied error message with, for example, Please explain this error message:
. Add the specific context, like the programming language.
Explain this error message in Java: Int and system cannot be resolved to a type
Explain when this C function would cause a segmentation fault: sqlite3_prepare_v2()
Explain what would cause this error in Python: ValueError: invalid literal for int()
Why is "this" undefined in VueJS? Provide common error cases, and explain how to avoid them.
How to debug a Ruby on Rails stacktrace? Share common strategies and an example exception.
Refactor code in the IDE
- Introduced for GitLab.com in GitLab 16.7.
- Introduced for self-managed and GitLab Dedicated in GitLab 16.8.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat to refactor selected code:
- Select some code in your IDE.
- In Duo Chat, type
/refactor
.
You can include additional instructions to be considered. For example:
- Use a specific coding pattern, for example
/refactor with ActiveRecord
or/refactor into a class providing static functions
. - Use a specific library, for example
/refactor using mysql
. - Use a specific function/algorithm, for example
/refactor into a stringstream with multiple lines
in C++. - Refactor to a different programming language, for example
/refactor to TypeScript
. - Focus on performance, for example
/refactor improving performance
. - Focus on potential vulnerabilities, for example
/refactor avoiding memory leaks and exploits
.
Fix code in the IDE
- Introduced for GitLab.com, self-managed and GitLab Dedicated in GitLab 17.3.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat to fix selected code:
- Select some code in your IDE.
- In Duo Chat, type
/fix
.
You can include additional instructions to be considered. For example:
- Focus on grammar and typos, for example,
/fix grammar mistakes and typos
. - Focus on a concrete algorithm or problem description, for example,
/fix duplicate database inserts
or/fix race conditions
. - Focus on potential bugs that are not directly visible, for example,
/fix potential bugs
. - Focus on code performance problems, for example,
/fix performance problems
. - Focus on fixing the build when the code does not compile, for example,
/fix the build
.
Write tests in the IDE
- Introduced for GitLab.com in GitLab 16.7.
- Introduced for self-managed and GitLab Dedicated in GitLab 16.8.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat to create tests for the selected code:
- Select some code in your IDE.
- In Duo Chat, type
/tests
.
You can include additional instructions to be considered. For example:
- Use a specific test framework, for example
/tests using the Boost.test framework
(C++) or/tests using Jest
(JavaScript). - Focus on extreme test cases, for example
/tests focus on extreme cases, force regression testing
. - Focus on performance, for example
/tests focus on performance
. - Focus on regressions and potential exploits, for example
/tests focus on regressions and potential exploits
.
For more information, see Use GitLab Duo Chat in VS Code.
Ask about CI/CD
- Introduced for GitLab.com in GitLab 16.7.
- Introduced for self-managed and GitLab Dedicated in GitLab 16.8.
- Updated LLM from Claude 2.1 to Claude 3 Sonnet in GitLab 17.2.
- Updated LLM from Claude 3 Sonnet to Claude 3.5 Sonnet in GitLab 17.2.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat to create a CI/CD configuration:
Create a .gitlab-ci.yml configuration file for testing and building a Ruby on Rails application in a GitLab CI/CD pipeline.
Create a CI/CD configuration for building and linting a Python application.
Create a CI/CD configuration to build and test Rust code.
Create a CI/CD configuration for C++. Use gcc as compiler, and cmake as build tool.
Create a CI/CD configuration for VueJS. Use npm, and add SAST security scanning.
Generate a security scanning pipeline configuration, optimized for Java.
You can also ask to explain specific job errors by copy-pasting the error message, prefixed with Please explain this CI/CD job error message, in the context of <language>:
:
Please explain this CI/CD job error message in the context of a Go project: build.sh: line 14: go command not found
Alternatively, you can use GitLab Duo Root Cause Analysis to troubleshoot failed CI/CD jobs.
Troubleshoot failed CI/CD jobs with Root Cause Analysis
- Introduced in GitLab 16.2 as an experiment on GitLab.com.
- Generally available and moved to GitLab Duo Chat in GitLab 17.3.
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat to determine the root cause of a CI/CD job failure by analyzing the logs.
Prerequisites:
- Have permission to view the CI/CD job.
- Have a paid GitLab Duo Enterprise seat.
To troubleshoot a failed CI/CD job:
- On the left sidebar, select Search or go to and find your project.
- Select Build > Jobs.
- Select the failed CI/CD job.
-
From the job log page, do one of the following:
- Below the job log, select Troubleshoot.
- Open GitLab Duo Chat and type
/troubleshoot
.
An analysis of the reasons for the failure and an example fix is displayed.
Explain a vulnerability
- Changed to require GitLab Duo add-on in GitLab 17.6 and later.
You can ask GitLab Duo Chat to explain a vulnerability when you are viewing a SAST vulnerability report.
For more information, see Explaining a vulnerability.
Delete or reset the conversation
To delete all conversations permanently and clear the chat window:
- In the text box, type
/clear
and select Send.
To start a new conversation, but keep the previous conversations visible in the chat window:
- In the text box, type
/reset
and select Send.
In both cases, the conversation history will not be considered when you ask new questions. Deleting or resetting might help improve the answers when you switch contexts, because Duo Chat will not get confused by the unrelated conversations.
GitLab Duo Chat slash commands
Duo Chat has a list of supported commands, each of which is preceded by a slash (/
).
Use the following commands to quickly accomplish specific tasks.
Command | Purpose |
---|---|
/clear | Delete all conversations permanently and clear the chat window |
/reset | Start a new conversation, but keep the previous conversations visible in the chat window |
/tests | Write tests |
/explain | Explain code |
/vulnerability_explain | Explain current vulnerability |
/refactor | Refactor the code |
/troubleshoot | Troubleshoot failed CI/CD jobs with Root Cause Analysis |
/fix | Fix the code |
/help | Learn more about how Duo Chat works. |