GitLab 19.5 (Upcoming release)

The following features are being delivered for GitLab 19.5. These features are now available on GitLab.com.

Notable contributor

We are excited to recognize Dhairya, a Level 3 contributor, as this month’s Notable Contributor!

Dhairya contributed to offline transfer and Organizations support for import, so that groups, projects, and their memberships can move between GitLab instances.

Primary features

GitLab MCP server is generally available

In previous versions of GitLab, MCP clients could reach only a limited set of GitLab tools. Now the GitLab MCP server is generally available.

With the MCP server, any MCP-compatible agent, such as Claude Code or Cursor, gets direct access to the expanded GitLab catalog of tools and GitLab Duo Agent Platform agents and flows. Your agents can work across more of your GitLab workflow and run Agent Platform agents and flows without leaving your preferred tool.

Agentic Core

`/goal` command in GitLab Duo CLI is generally available

The /goal slash command in GitLab Duo CLI is now generally available in GitLab Duo CLI 9.27.0.

Describe an open-ended goal, and GitLab Duo delegates it to a governed, goal-driven flow that runs locally and handles both implementation and verification.

To start, run /goal <task>. For example:

/goal Fix the failing tests in spec/models/user_spec.rb

In GitLab 19.5 (GitLab Duo CLI 9.24.0), the Run suggested prompts as /goal sessions setting in /settings runs suggested prompts as /goal sessions instead of chat messages.

/goal requires GitLab 19.3 and later, and GitLab Duo CLI 9.17.0 and later.

Auto mode in GitLab Duo CLI

GitLab Duo CLI has a new auto mode. In auto mode, GitLab Duo uses tools without asking for approval first, so longer tasks run without stopping for each shell command, git operation, or MCP tool call.

Auto mode respects your organization’s controls:

  • Auto mode is off by default. Administrators, Owners, and Maintainers can turn the setting on for instances, groups, and projects. Administrators and group Owners can also lock it to Always off for the entire instance or group.
  • Agent tool governance still applies. Tools set to Always Deny stay blocked.

To use auto mode, you need GitLab Duo CLI 9.22.0 or later. Press Tab until the mode under the > prompt shows auto. Use auto mode only in repositories you trust and on branches you can discard.

Configure GitLab Duo CLI with settings files

You can now configure GitLab Duo CLI with settings files, for yourself or for your whole organization.

The settings file stores the choices you make in the /settings panel. You can also edit the file directly, or create it in advance, for example in a container image.

System administrators can deploy a managed settings file to each machine with a mobile device management tool or group policy. Settings in the managed file take precedence over the settings file, command-line options, and environment variables, and users can’t change them. Settings not in the managed file remain under user control.

The settings file requires GitLab Duo CLI 9.26.0 or later, and the managed settings file requires GitLab Duo CLI 9.27.0 or later.

Follow-up reviews in Code Review Flow

In previous versions of GitLab, when you asked GitLab Duo to review a merge request again, it treated the review as a first pass. It could repeat findings from its earlier threads, even ones you had already addressed.

Now, Code Review Flow uses comment threads from earlier GitLab Duo reviews, including your replies, to evaluate new changes. GitLab Duo focuses on lines added after its last review, does not repeat points it already raised, and lists outstanding findings in its summary. If you reply on a thread to explain why the code is correct, GitLab Duo does not raise the point again.

To start a follow-up review, ask GitLab Duo to review the merge request again. With Start a new review on push turned on, GitLab Duo automatically starts a follow-up review when you push changes.

Improved first-run experience in GitLab Duo CLI

GitLab Duo CLI now helps new users get started without leaving the terminal:

  • On first run, an onboarding card helps you connect MCP servers and install GitLab plugins.
  • Each new session opens with prompts suggested from your open merge requests and issues. For a merge request prompt, GitLab Duo checks out the source branch first if it exists.
  • The status bar shows your branch, project, merge request, /goal progress, and MCP status.
  • The setup screen links to token creation and validates your token before saving.
  • Tips in the prompt and the /whatsnew command point you to new features.

To get the full experience, update to GitLab Duo CLI 9.28.0 or later.

MCP server CI/CD artifact tool

Previously, if you needed an agent to check something inside a CI/CD job’s build artifacts, it had to download and unzip the whole archive just to read one file. Now the get_artifact_file MCP tool lets your agent read a single file directly from a job’s artifacts, whether it’s a log, a generated report, or a test fixture.

MCP server GitLab Duo agent and flow tools

New GitLab Duo agent and flow tools let you invoke and track GitLab Duo agents and flows from any MCP client:

  • start_duo_session starts a session.
  • get_duo_session reads a session’s current state.
  • list_duo_sessions pages through your session history.
  • list_duo_agents_and_flows lists the GitLab Duo agents and flows enabled in a project.

MCP server groups tool

Previously, an agent connecting to GitLab over MCP had no way to discover which groups and subgroups you have access to without you hardcoding IDs or paths. The new list_groups tool lets your agent browse your organization’s group hierarchy on its own, so it can find the right group before acting instead of guessing at identifiers.

MCP server toolset selection

You can now choose which toolsets the GitLab MCP server exposes. Every additional tool that isn’t required wastes space in the LLM’s context window, and runs the risk of confusing the LLM, especially if you are using multiple MCP servers at once.

New rate limits for GitLab MCP server

If you connect an agent to GitLab over MCP today, nothing stops it from reconnecting or retrying faster than your workflow actually needs, and on GitLab.com that carries a cost.

Starting October 15, the GitLab MCP server on GitLab.com limits each user to 60 requests a minute on the Free tier and 600 on Premium and Ultimate. Every reconnect and retry counts toward your limit. If your agent starts getting rate-limited (HTTP 429) errors, check its reconnect and retry settings before upgrading to a higher tier.

Provide images as context for Developer Flow and Agentic Chat

In previous versions of GitLab, the Developer Flow and Agentic Chat could only read text, so a screenshot on a bug report or a diagram in a design discussion never reached the model. Now the Developer Flow and Agentic Chat can read images in your repository and attachments on issues, merge requests, and comments, and use them as context.

You cannot upload an image directly in your prompt. Instead, name an image that already exists:

  • For a file in the repository, give the file path. For example, docs/architecture.png.
  • For an attachment, give the upload reference as it appears in the Markdown. For example, /uploads/<secret>/screenshot.png.

Recommend reviewers with GitLab Duo

In previous versions of GitLab, you had to check each approval rule and guess who had time to review your merge request. Or you assigned a whole group and hoped someone picked it up.

Now you can use the Recommend Reviewers Flow to suggest reviewers instead. The flow is generally available.

For each approval rule, it recommends the minimum number of reviewers needed, based on availability, workload, time zone, and recent activity.

Recommendations appear in the Recommended section of the merge request sidebar. Hover over a user to see why they were recommended.

To get started, turn on the flow for your top-level group. It runs when a merge request is created, or you can create a trigger to run it when a draft is marked ready. To get new recommendations, select Refresh.

Software Development Flow requires updated IDE extensions

The Software Development Flow now runs on the GitLab Duo Agent Platform flow registry, the same foundation as other flows. The flow works the same way in your IDE, and new fixes and improvements go to this version.

To keep using the Software Development Flow, update your editor extension to one of these versions or later:

  • GitLab for VS Code 6.85.0
  • GitLab Duo plugin for JetBrains IDEs 3.40.0
  • GitLab for Visual Studio 0.79.0

Trigger flows with a generally available API

In previous versions of GitLab, the API endpoint you use to trigger GitLab Duo Agent Platform flows from CI/CD pipelines, scripts, and other automation was an experiment, so it was hard to know whether you could rely on it in production. Now the trigger a flow endpoint of the Flows API is generally available, so you can build production automation on it knowing it follows the GitLab REST API breaking changes policy.

Unified DevOps and Security

Customize security configuration profiles

You can now customize Secret Detection and SAST profiles in the UI. Set scan options like excluded paths, custom analyzer images, and full Git history scans once for a group, and apply them to all its projects.

Previously, a security configuration profile enabled a scanner with its default settings. Anything beyond the defaults required edits to .gitlab-ci.yml in each project. Now the profile includes those settings too.

Currently, customization of Dependency Scanning profiles is only available through the GraphQL API. UI customization is planned in a future release.

Embed code from a repository in Markdown

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government
  • Links: Documentation · Related Issue

In previous versions of GitLab, permalinks to a file’s lines rendered as plain URLs, so you had to leave the merge request, issue, or wiki page to view the referenced code.

Now, permalinks render as a syntax-highlighted snippet with the file path and commit, so you can read the code without leaving the page. You can only view embedded snippets if you have read access to the repository.

GitLab Observability is now in beta

In previous versions of GitLab, Observability was an experiment. Now it’s in beta on GitLab.com and GitLab Self-Managed.

With GitLab Observability, you can send traces, metrics, and logs with OpenTelemetry, then explore them next to your code, merge requests, and CI/CD pipelines. On GitLab.com, each group or personal namespace opts in by selecting Enable Observability. On GitLab Self-Managed, you host the Observability backend and connect it to a group or personal namespace. Observability is available at no cost during the beta.

Sort Markdown tables by column

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government
  • Links: Documentation · Related Issue

In previous versions of GitLab, to find information in a large Markdown table, you had to scan every row or copy the table into a spreadsheet.

Now you can sort rendered Markdown tables by any column, in both view mode and preview. In a column header, select the sort button to sort rows in ascending or descending order, then reset to restore the original order. You can also sort with a keyboard.

Sticky headers for Markdown tables

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government
  • Links: Documentation · Related Issue

In previous versions of GitLab, when you scrolled through a long table, the header row scrolled out of view, so it was hard to tell what each column contained.

Now, table headers stay visible at the top of the table as you scroll, in view mode, preview, and the rich text editor. Sticky headers are always on, so you don’t need to change any settings.

Share filtered views of the security inventory

You can now share a filtered view of the security inventory with a link. Filter by tool coverage, vulnerability count, or project name, then copy the URL and send it. Whoever opens the link sees the same view.

Previously, only the project name search was saved in the URL, so a shared link lost the other filters. Now the full filter state is preserved, so you can bookmark a view or hand it to the team that owns those projects.

Scale and Deployments

Start a custom flow in GitLab Duo Agentic Chat

You can now start a custom flow directly from GitLab Duo Agentic Chat, without needing to configure a trigger first. Previously, running a custom flow required setting up a trigger event — a mention, an assignment, or similar — which made flows difficult to test and iterate on. Now, you can launch any AI Catalog flow enabled in your project by sending a message in GitLab Duo Agentic Chat. Your message becomes the goal for the flow. If you send no goal, the flow falls back to its own description. Chat links to the resulting agent session so you can follow along.

See your own GitLab Credits usage

If you used GitLab Credits, you had no way to check your own usage. Only group Owners and administrators could open the GitLab Credits dashboard, so you had to ask someone with access.

You can now see your own usage in User settings > GitLab Credits. The page shows your total usage, daily average, and peak day, and you can filter by product or select a date range. If you belong to more than one group with GitLab Credits, you can switch between them.

Co-created contributions

Resync an LDAP-blocked user on demand

Administrators can now resync a single LDAP-blocked user from the Admin area Users page. The new Resync with LDAP action runs an LDAP access check and unblocks the user when LDAP allows access, or leaves the user blocked when it does not. If the user has no LDAP identity, the action declines with a message. In previous versions of GitLab, an LDAP-blocked account stayed blocked until the daily user sync ran or the user signed in, which service accounts cannot do.

Thank you to Sergey Pechenko for this contribution (MR)!

Cancel auto-merge from the REST API

You can now cancel an active auto-merge with the cancel_auto_merge API endpoint. If the merge request is on a merge train, the call also removes it from the train. The older cancel_merge_when_pipeline_succeeds endpoint is now deprecated.

Separately, git push -o merge_request.auto_merge is now rejected with a remote message when you cannot merge to the target branch. In previous versions of GitLab, the auto-merge was recorded and left the merge request unmergeable until canceled.

Thank you to the following users for these contributions!

Configure job log update frequency

Administrators can now set how often job logs update, under Admin area > Settings > CI/CD or through the Settings API. You can select between 3 to 3600 seconds. In previous versions of GitLab, these intervals were constants, so you could not shorten the initial live-log delay for short jobs without patching the instance.

Thank you to Aleksandr Kotlyar for this contribution (MR)!

Repository tags and Terraform states in GraphQL

GraphQL now exposes Repository.tags, with forward pagination, search, and a TagSort enum for name, updated, and version order, at up to 100 tags per page. Repository.tags is an experiment in GitLab 19.5. TerraformState.versions lists a state’s versions, newest first. The merge requests REST API now returns author.bot on single and list responses, so a client can tell bot and service account authors apart without a second call to the Users API.

Thank you to the following users for these contributions!

Commit count variable in commit templates

You can now use %{commits_count} in merge commit and squash commit message templates, and in new merge request description templates. For example, %{title} (%{commits_count} commits) renders as Bugfix (3 commits).

Thank you to Jeston Singh for this contribution (MR)!

Submit a review to become a reviewer

When you submit a review on a merge request you are not yet a reviewer of, with Comment, Approve, or Request changes, GitLab now adds you to the Reviewers list. The review drawer tells you beforehand: “You will be added as a reviewer.” The Reviewers list and the people who took part in the review no longer drift apart. This behavior has been available since GitLab 19.4, when its feature flag was removed.

Thank you to Michael Fischer for this contribution (MR)!

Revoked GPG identities no longer verify commits

GitLab now ignores user IDs that GPG reports as revoked. A revoked identity no longer appears under Access > GPG keys in user settings and no longer counts as a verified email for the Verified badge on signed commits. Commits signed under a revoked identity move to “same user, different email” or “other user”, and a key whose every identity is revoked verifies nothing. Signatures already verified under a key that stays in place are not re-derived.

Thank you to José M. Requena Plens for this contribution (MR)!

Other improvements

Other improvements in this release include:

  • GitLab MCP server: rate-limited tool results name the limit and retry delay, add_branch returns the branch web_url, tool aliases in the enabled-tools header resolve, mismatched URL and project ID inputs are rejected, and ai_workflows tokens can read blobs in batch.
  • Administrators in admin mode can set a cluster agent on an environment without joining the project.
  • CI_JOB_TAGS and CI_RUNNER_TAGS JSON-encode each tag. Duplicate variable keys in push options are rejected.
  • Advanced SAST (Ultimate): C and C++ files up to 20 levels deep are scanned, and the report follows your artifact retention.
  • Plain-text token and SSH key emails link to the right page, and ?scopes= links prefill the token form.

Thank you to the following users for these contributions!

Other additions to the interface

Other additions to the interface in this release include:

  • Changing Approvals required in merge request settings shows a toast on success and an alert on failure.
  • A compliance framework whose requirement already has 5 controls can be edited again.
  • A failed protected environment update shows the API message.
  • In the Create branch dialog, the submit button stays disabled until the branch name is validated.
  • Archived labels show an Archived tooltip in issue and merge request lists, and cannot be newly assigned.
  • SCIM tokens cannot be generated while the group’s SAML provider is disabled.
  • .4dm files are syntax highlighted.
  • Right-aligned Markdown table columns use fixed-width numerals.

Approval rules, compliance frameworks, and protected environments require Premium or Ultimate.

Thank you to the following users for these contributions!