<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>GitLab Monthly Releases</title><id>https://docs.gitlab.com/releases/</id><link href="https://docs.gitlab.com/releases/" rel="alternate"/><updated>2026-04-16T00:00:00Z</updated><author><name>The GitLab Team</name></author><entry><title>GitLab 18.11 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-11-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-11-released/</id><published>2026-04-16T00:00:00Z</published><updated>2026-04-16T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On April 16, 2026, GitLab 18.11 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-rinku-c">This month’s Notable Contributor: Rinku C</h2>
<p>We are excited to recognize <a href="https://gitlab.com/therealrinku">Rinku C</a>, a Level 4 contributor with over 80 merged improvements across GitLab since joining in September 2025.</p>
<p>Nominated by <a href="https://gitlab.com/aharadon">Arianna Haradon</a>, Senior Fullstack Engineer on the Developer Relations team, this award celebrates his sustained and meaningful impact over time. Rinku has strengthened security-sensitive flows by <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/219236">requiring scopes on project and group access token creation forms</a>, and improved everyday GitLab experience with numerous updates like <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/217618">next/previous navigation in job logs</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/223570">excluding empty searches from recent</a>, and <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/224628">reducing file tree clutter</a> through thoughtful UI refinements that make common workflows clearer and easier to navigate. Rinku tackles the work that often goes unclaimed, keeping the codebase healthy and compounding to meaningful, lasting value. Thank you for your contributions!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="vulnerability-resolution-generally-available-on-gitlab-duo-agent-platform">Vulnerability resolution generally available on GitLab Duo Agent Platform</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/agentic_vulnerability_resolution/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/585626">Related issue</a></li></ul>
</div>

<p>Agentic SAST Vulnerability Resolution is now generally available in GitLab 18.11 on the GitLab Duo Agent Platform. It runs as part of your SAST scan, after SAST false positive detection runs, or when manually triggered for individual SAST vulnerabilities.</p>
<p>Agentic SAST Vulnerability Resolution:</p>
<ul>
<li>Autonomously analyzes the finding and reasons through the surrounding code context.</li>
<li>Automatically creates a ready-to-review merge request with proposed code fixes for critical and high severity SAST vulnerabilities.</li>
<li>Provides quality assessments so reviewers can quickly gauge confidence in the proposed remediation.</li>
<li>Allows you to apply resolutions directly from vulnerability details pages.</li>
</ul>
<p>We welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/585626">issue 585626</a>.</p>
<h3 id="gitlab-data-analyst-foundational-agent-now-generally-available">GitLab Data Analyst Foundational Agent now generally available</h3>
<!-- categories: Custom Dashboards Foundation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/data_analyst/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20337">Related epic</a></li></ul>
</div>

<p>The Data Analyst Agent is a specialized AI chat assistant that helps you query, visualize, and surface data across the GitLab platform.</p>
<p>Backed by the <a href="/user/glql/">GitLab Query Language (GLQL)</a>, the Data Analyst can retrieve and analyze data about each of the supported <a href="/user/glql/data_sources/">data sources</a>, and provide clear, actionable insights about your software development health and engineering efficiency.</p>
<p>These insights can be visualized directly in the agent output and embedded directly into issues and epics for further evaluation.</p>
<h3 id="ci-expert-agent-launches-in-beta">CI Expert Agent launches in beta</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/ci_expert_agent/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/587460">Related issue</a></li></ul>
</div>

<p>The AI-powered CI Expert Agent is now available in beta. This agent helps teams get from GitLab code to a first working pipeline without starting from a blank <code>.gitlab-ci.yml</code>.</p>
<p>Using GitLab Duo Agent Platform, the agent inspects your repository, asks a few guided questions about your build and test process, and generates a ready-to-run pipeline you can review, edit, and commit.</p>
<p>This turns pipeline creation into a conversational, context-aware experience, while still letting you take full control of the YAML after you’re ready to evolve and optimize your configuration.</p>
<h3 id="automated-vulnerability-severity-overrides">Automated vulnerability severity overrides</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/vulnerability_management_policy/#severity-override-policies">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15839">Related epic</a></li></ul>
</div>

<p>Default vulnerability severities don’t always reflect your organization’s actual risk. A critical CVE in an internal-only service might not warrant the same urgency as one in a public-facing application, yet teams spend significant time triaging findings that don’t match their risk model.</p>
<p>Vulnerability management policies can now automatically adjust the severity of vulnerabilities based on conditions like CVE ID, CWE ID, file path, and directory. When applied, the policy updates the severity of any vulnerability that matches the criteria on the default branch. Manual overrides still take precedence, and all changes are logged in the vulnerability’s history and audit events.</p>
<p>This reduces triage work and ensures developers focus on the findings that matter most to your business.</p>
<h3 id="create-service-account-in-subgroups-and-projects">Create Service Account in subgroups and projects</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/17754">Related epic</a></li></ul>
</div>

<p>Teams can now create service accounts in subgroups and projects. Instead of broad, top-level group bots, you can attach a dedicated service account to a single subgroup or project and manage its access like any other member of that namespace. Group and subgroup service accounts can be invited to the group where they were created or to any descendant subgroups and projects. Project service accounts are limited to their own project.</p>
<h3 id="service-accounts-available-on-gitlab-free">Service Accounts available on GitLab Free</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20439">Related epic</a></li></ul>
</div>

<p>Service accounts are now available on GitLab.com in all tiers. Previously limited to
Premium and Ultimate, service accounts let you perform automated actions, access data, or run
scheduled processes without tying credentials to individual team members. They’re commonly used in
pipelines and third-party integrations where credentials must stay stable regardless of team
changes. On GitLab Free, you can create up to 100 service accounts per top-level group, including those
created in subgroups or projects.</p>
<h3 id="fine-grained-permissions-for-personal-access-tokens-now-available-beta">Fine-grained permissions for personal access tokens now available (Beta)</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/auth/tokens/fine_grained_access_tokens/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/18555">Related epic</a></li></ul>
</div>

<p>Fine-grained personal access tokens (PATs) are now available in beta. Unlike legacy PATs, which grant access to every project and group you belong to, fine-grained PATs let you limit each token to specific resources and actions. This reduces the potential impact of a leaked or compromised token.</p>
<p>Your existing PATs continue to work as before, and you can still create legacy PATs without fine-grained permissions.</p>
<p>This beta release covers approximately 75% of the GitLab REST API. Full REST API coverage, GraphQL enforcement, and administrator policy controls are planned for the GA release.</p>
<p>To share feedback, see <a href="https://gitlab.com/groups/gitlab-org/-/epics/18555">epic 18555</a>.</p>
<h3 id="top-cwe-chart-in-security-dashboards">Top CWE chart in security dashboards</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/#top-10-cwes">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17422">Related epic</a></li></ul>
</div>

<p>The top CWE chart is now available on the new security dashboards. Identify the most common CWEs across your project or instance to identify opportunities for training, improvement, or program optimization. Users can group the dashboard data by severity and filter the dashboard by severity, project, and report type.</p>
<h3 id="deploy-gitaly-on-kubernetes">Deploy Gitaly on Kubernetes</h3>
<!-- categories: Gitaly -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitaly/kubernetes/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/6127">Related issue</a></li></ul>
</div>

<p>You can now deploy Gitaly on Kubernetes as a fully supported deployment method. This gives you greater flexibility in managing your GitLab infrastructure by using Kubernetes orchestration capabilities for scaling, high availability, and resource management. Previously, Kubernetes deployments required custom configurations and weren’t officially supported, making it difficult to maintain reliable Gitaly deployments in containerized environments.</p>
<h3 id="reconfigure-inputs-when-manually-running-mr-pipelines">Reconfigure inputs when manually running MR pipelines</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/merge_request_pipelines/#run-a-merge-request-pipeline-with-custom-inputs">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/547861">Related issue</a></li></ul>
</div>

<p>A powerful aspect of CI/CD inputs is that you can manually run new pipelines with new values for runtime customization.
This was not available in merge request (MR) pipelines before, but in this release you can now customize inputs in MR pipelines too.</p>
<p>After you configure inputs for MR pipelines, you can optionally modify those inputs and change the pipeline behavior any time you run a new pipeline for a merge request.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="default-model-for-gitlab-duo-agentic-chat-updated-from-haiku-45-to-sonnet-46">Default model for GitLab Duo Agentic Chat updated from Haiku 4.5 to Sonnet 4.6</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/model_selection/#default-models">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/595042">Related issue</a></li></ul>
</div>

<p>We’ve made an update to improve your Agentic Chat experience in GitLab. The default model for Agentic Chat was upgraded from Claude Haiku 4.5 to Claude Sonnet 4.6, hosted on Vertex AI. Claude Sonnet 4.6 offers improved reasoning and response quality but uses a higher GitLab Credit multiplier than Haiku 4.5.</p>
<p>You can select an alternative model, including Haiku, using the <a href="/user/duo_agent_platform/model_selection/#select-a-model-for-a-feature">model selection</a> setting. If you’ve already selected a specific model, your choice is preserved. This update only affects the default and will not override any existing selections. For information about credit multipliers by model, see the <a href="/subscriptions/gitlab_credits/">GitLab Credits documentation</a>.</p>
<h3 id="configure-tools-in-custom-flow-definitions">Configure tools in custom flow definitions</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/flows/custom/#create-a-flow">Documentation</a> | <a href="https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/work_items/2147">Related issue</a></li></ul>
</div>

<p>You can now configure tool options and parameter values directly in your custom flow definitions to supersede the LLM default values. This gives you more precise, consistent control over how tools behave within a custom flow, making it easier to enforce guardrails and specific parameter values across that flow.</p>
<h3 id="mistral-ai-now-supported-as-a-self-hosted-model-in-gitlab-duo-agent-platform">Mistral AI now supported as a self-hosted model in GitLab Duo Agent Platform</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_llm_serving_platforms/#cloud-hosted-model-deployments">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/587872">Related issue</a></li></ul>
</div>

<p>GitLab Duo Agent Platform now supports Mistral AI as an LLM platform for self-hosted model deployments. GitLab Self-Managed customers can configure Mistral AI alongside existing supported platforms, including AWS Bedrock, Google Vertex AI, Azure OpenAI, Anthropic, and OpenAI. This gives teams more choice in how they run AI-powered features.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="view-historical-months-in-gitlab-credits-dashboard">View historical months in GitLab Credits dashboard</h3>
<!-- categories: Consumables Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#view-the-gitlab-credits-dashboard">Documentation</a> | <a href="https://gitlab.com/gitlab-org/customers-gitlab-com/-/work_items/15910">Related issue</a></li></ul>
</div>

<p>The GitLab Credits dashboard in Customers Portal now supports historical month navigation. Billing managers can browse past billing months to review daily usage trends, compare consumption patterns across periods, and reconcile usage with invoices. Previously, the dashboard only displayed the current billing month. With this improvement, administrators can make more informed decisions about credit allocation and forecast future needs based on historical data.</p>
<h3 id="set-subscription-level-usage-cap-for-gitlab-credits">Set subscription-level usage cap for GitLab Credits</h3>
<!-- categories: Consumables Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#usage-control-status">Documentation</a></li></ul>
</div>

<p>Administrators can now set a monthly usage cap for On-Demand Credits at the subscription level. When total on-demand credit consumption reaches the configured cap, GitLab Duo Agent Platform access is automatically suspended for all users on that subscription until the next billing period begins or the admin adjusts the cap. This setting gives organizations a hard guardrail against unexpected overage bills, removing a key barrier to broader Agent Platform rollout. Caps reset automatically each billing period, and administrators receive an email notification when the cap is reached.</p>
<h3 id="set-per-user-gitlab-credits-cap">Set per-user GitLab Credits cap</h3>
<!-- categories: Consumables Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#usage-control-status">Documentation</a></li></ul>
</div>

<p>Administrators can now set an optional per-user usage cap for GitLab Credits per billing period. When an individual user’s total credit consumption reaches the configured limit, GitLab Duo Agent Platform access is suspended only for that user, while other users continue unaffected. This prevents any single user from consuming a disproportionate share of the organization’s credit pool, and gives administrators fine-grained control over usage distribution. Per-user usage caps work alongside subscription-level usage caps, by applying the cap that is reached first.</p>
<h3 id="linux-package-improvements">Linux package improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/settings/database/#upgrade-packaged-postgresql-server">Documentation</a> | <a href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/work_items/9734">Related issue</a></li></ul>
</div>

<p>In GitLab 19.0, the minimum-supported version of PostgreSQL will be version 17. To prepare for this change, on instances that don’t use <a href="/administration/postgresql/replication_and_failover/">PostgreSQL Cluster</a>, upgrades to GitLab 18.11 will attempt to automatically upgrade PostgreSQL to version 17.</p>
<p>If you use <a href="/administration/postgresql/replication_and_failover/">PostgreSQL Cluster</a> or <a href="https://docs.gitlab.com/omnibus/settings/database/#opt-out-of-automatic-postgresql-upgrades">opt out of this automated upgrade</a>, you must <a href="https://docs.gitlab.com/omnibus/settings/database/#upgrade-packaged-postgresql-server">manually upgrade to PostgreSQL 17</a> to be able to upgrade to GitLab 19.0.</p>
<h3 id="backup-and-restore-support-for-container-registry-metadata-database">Backup and Restore Support for Container Registry Metadata Database</h3>
<!-- categories: Backup/Restore of GitLab instances -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/backup_restore/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-com/gl-infra/data-access/durability/-/work_items/45">Related issue</a></li></ul>
</div>

<p>The GitLab <code>backup</code> Rake task for Linux package installations and the <code>[backup-utility](https://docs.gitlab.com/charts/backup-restore/)</code>
for Cloud Native (Helm) installations now support the <a href="/administration/packages/container_registry_metadata_database/">container registry metadata database</a>.
You can now back up references to blobs, manifests, tags, and other data stored in the metadata database,
enabling recovery in the event of malicious or accidental data corruption.</p>
<h3 id="new-navigation-experience-for-groups-in-explore">New navigation experience for groups in Explore</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/#explore-groups">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/13791">Related epic</a></li></ul>
</div>

<p>We’re excited to announce improvements to the groups list in <strong>Explore</strong>, making it easier to discover groups across your GitLab instance.
The redesigned interface introduces a tabbed layout with two views:</p>
<ul>
<li><strong>Active</strong> tab: Browse all accessible groups, helping you discover relevant communities and projects.</li>
<li><strong>Inactive</strong> tab: View archived groups and groups pending deletion for visibility into group lifecycle status.</li>
</ul>
<p>These changes streamline group discovery and provide clearer visibility into which groups are available to join.</p>
<h3 id="asynchronous-transfer-of-projects">Asynchronous transfer of projects</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/manage/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20521">Related epic</a></li></ul>
</div>

<p>In previous versions of GitLab, transfers of large groups and projects could timeout. As we move groups and projects to use a unified state model for operations such as transfer, archive, and deletion, you get more consistent behavior, better visibility into state history and audit details, and fewer timeouts, specifically, for long running transfer operations through asynchronous processing.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="clickhouse-is-generally-available-for-self-managed-deployments">ClickHouse is generally available for Self-Managed deployments</h3>
<!-- categories: DevOps Reports -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/clickhouse/#set-up-clickhouse">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/architecture/gitlab-data-analytics/-/work_items/51">Related issue</a></li></ul>
</div>

<p>For GitLab Self-Managed instances, we now have improved recommendations and configuration guidance for the GitLab <a href="/integration/clickhouse/">ClickHouse integration</a>. Customers have options to bring their own cluster, or use the ClickHouse Cloud (recommended) setup option. This integration powers multiple dashboards and unlocks access to various API endpoints within the analytics space.</p>
<p>This scalable, high-performance database is part of the larger architectural improvements planned for the GitLab analytics infrastructure.</p>
<h3 id="enhanced-gitlab-duo-agent-platform-analytics-on-duo-and-sdlc-trends-dashboard">Enhanced GitLab Duo Agent Platform analytics on Duo and SDLC trends dashboard</h3>
<!-- categories: DevOps Reports -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/duo_and_sdlc_trends/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20540">Related epic</a></li></ul>
</div>

<p>The GitLab Duo and SDLC trends dashboard delivers improved analytics capabilities to measure the impact of GitLab Duo
on software delivery. The dashboard now includes new single stat panels for monthly Agent Platform unique users and Agentic Chat sessions.
Additionally, metrics previously displayed as a % usage compared to seat assignments have been updated to strictly report usage counts.
This change resolves the <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590326">issue</a> where counts were missing Agent Platform usage controlled under the new usage billing model.</p>
<h3 id="glql-now-has-access-to-projects-pipelines-and-jobs-data-sources">GLQL now has access to projects, pipelines, and jobs data sources</h3>
<!-- categories: Custom Dashboards Foundation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/glql/data_sources/">Documentation</a></li></ul>
</div>

<p>The <a href="/user/glql/">GitLab Query Language (GLQL)</a> now has access to three new data sources: projects, pipelines, and jobs.
These new data sources are also available as embedded views, letting teams surface pipeline results, job statuses,
and project overviews directly in wikis, issue and merge request descriptions, and repository Markdown files.
GLQL also powers the <a href="/user/duo_agent_platform/agents/foundational_agents/data_analyst/">Data Analyst Agent</a>.</p>
<p>With these new types, the agent can inspect CI/CD job results, debug failures, and provide detailed overviews of pipeline execution,
as well as provide an accurate overview of projects in a namespace.</p>
<h3 id="dependency-resolution-for-maven-and-python-sbom-scanning">Dependency resolution for Maven and Python SBOM scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/#dependency-resolution">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20461">Related epic</a></li></ul>
</div>

<p>GitLab dependency scanning using SBOM now supports generating a dependency graph automatically for Maven and Python projects.
Previously, dependency scanning required users to provide a lock file or a graph file to get an accurate dependency analysis.
Now, when a lock file or graph file is not available, the analyzer automatically attempts to generate one.
This improvement makes it easier for Maven and Python projects to enable dependency scanning without requiring a lock file.</p>
<h3 id="incremental-scanning-for-advanced-sast">Incremental scanning for Advanced SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/#incremental-scanning">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20508">Related epic</a></li></ul>
</div>

<p>You can now perform incremental scans that analyze only changed parts of the codebase with GitLab Advanced SAST, significantly reducing scan times compared to full repository scans. This feature is a further iteration of diff-based scanning, because it produces full results for codebases.</p>
<p>By scanning just the code that has changed rather than the entire codebase, your teams can integrate security testing more seamlessly into their development workflow without sacrificing speed or adding friction.</p>
<h3 id="unverified-vulnerabilities-beta">Unverified vulnerabilities (Beta)</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/#report-unverified-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/15649">Related epic</a></li></ul>
</div>

<p>Advanced SAST can now surface unverified vulnerabilities (findings that cannot be fully traced from source to sink) directly in the vulnerability report. Enable this feature if you have a higher tolerance for false positives over false negatives.</p>
<p>This feature is in beta status. Provide feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/596512">issue 596512</a>.</p>
<h3 id="kubernetes-135-support">Kubernetes 1.35 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/584225">Related issue</a></li></ul>
</div>

<p>GitLab now fully supports Kubernetes version 1.35. If you want to deploy your applications to Kubernetes
and access all features, upgrade your connected clusters to the most recent version.
For more information, see <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">supported Kubernetes versions for GitLab features</a>.</p>
<h3 id="prefer-mode-for-the-container-registry-metadata-database">Prefer mode for the container registry metadata database</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/packages/container_registry_metadata_database/#prefer-mode">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/595480">Related issue</a></li></ul>
</div>

<p>You can now set the container registry metadata database to <code>prefer</code> mode, a new configuration option alongside the existing <code>true</code> and <code>false</code> values. In prefer mode, the registry automatically detects whether it should use the metadata database or fall back to legacy storage based on the current state of your installation.</p>
<p>If your registry has existing filesystem metadata that has not been imported to the database, the registry continues to use legacy storage until you complete a metadata import. If the database is already in use, or on a fresh installation, the registry uses the database directly.</p>
<p>In a later release, <code>prefer</code> mode will become the default for new Linux package installations. Existing installations will not be affected. For more information, see <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/595480">issue 595480</a>.</p>
<h3 id="package-protection-rules-now-support-terraform-modules">Package protection rules now support Terraform modules</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/package_protection_rules/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/592761">Related issue</a></li></ul>
</div>

<p>Teams publishing Terraform modules through the built-in GitLab Terraform module registry had
no way to restrict who could push new module versions. Package protection rules supported
several package formats but did not include <code>terraform_module</code>, leaving infrastructure
teams without a project-level push control.</p>
<p>You can now create package protection rules scoped to <code>terraform_module</code>, restricting push
access based on minimum role. Support is available in the UI package type dropdown, the
REST API, the GraphQL API, and the GitLab Terraform provider resource.</p>
<h3 id="release-evidence-now-includes-packages">Release evidence now includes packages</h3>
<!-- categories: Package Registry, Release Evidence -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/releases/release_evidence/#include-packages-as-release-evidence">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/283995">Related issue</a></li></ul>
</div>

<p>When creating a GitLab Release, packages published to the package registry were not
automatically associated with it. Teams had to manually construct package URLs and attach
them as release links through the API or pipeline scripts, adding friction and risk of
incomplete release records.</p>
<p>GitLab now automatically includes packages in release evidence when the package version
matches the release tag. This creates a verifiable, auditable link between your release and
its associated packages without any manual steps, keeping source code, artifacts, and
packages together in one complete release snapshot.</p>
<h3 id="wiki-sidebar-toggle-repositioned-for-easier-access">Wiki sidebar toggle repositioned for easier access</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/#sidebar">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/580569">Related issue</a></li></ul>
</div>

<p>The wiki sidebar toggle is now positioned on the left side, directly next to the sidebar
it controls.</p>
<p>When the sidebar is collapsed, the toggle remains visible as a floating
control so you can reopen it without scrolling back to the top of the page.</p>
<h3 id="sticky-action-bar-on-wiki-pages">Sticky action bar on wiki pages</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590255">Related issue</a></li></ul>
</div>

<p>The action bar on wiki pages is now sticky, so it remains visible as you scroll
through a page. Previously, you had to scroll back to the top to access actions
like editing, viewing page history, or managing templates. Now the page title
and key actions, including Edit, New page, Templates, Page history, and more,
stay within reach no matter how far down the page you are.</p>
<h3 id="epic-weights">Epic weights</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/work_items/weight/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/12273">Related epic</a></li></ul>
</div>

<p>Epics now support weights, making it easier to estimate and prioritize large-scale
initiatives during planning.</p>
<p>Before breaking down an epic into child issues, you can assign a preliminary weight
to represent your initial estimate.
As you decompose the epic, the weight automatically updates to reflect the rolled-up total
from all child issues.
This is consistent with how weight rollup works for issues and tasks.</p>
<p>On the epic detail page, you can see both the preliminary weight and the rolled-up weight
from child issues, giving you the insight needed to refine estimates over time.</p>
<h3 id="block-merge-requests-with-high-exploitability-risk">Block merge requests with high exploitability risk</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#vulnerability_attributes-object">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16311">Related epic</a></li></ul>
</div>

<p>Previously, merge request (MR) approval policies could block MRs based on vulnerability severity, but not all vulnerabilities carry the same risk. CVSS severity alone doesn’t tell you whether a CVE is being exploited or how likely exploitation is. This leads to noisy approval policies and wasted time for developers and security teams.</p>
<p>You can now configure MR approval policies using Known Exploited Vulnerability (KEV) and Exploit Prediction Scoring System (EPSS) data. Block or require approval when a finding is in the KEV catalog (actively exploited in the wild), or when its EPSS score is above a threshold. Policy violations in the MR include KEV and EPSS context so developers understand why the security gate was triggered.</p>
<p>This gives security teams precise control over which findings block or warn, reduces alert fatigue, and keeps enforcement aligned with the current threat landscape.</p>
<h3 id="assign-cvss-40-scores-to-vulnerabilities">Assign CVSS 4.0 scores to vulnerabilities</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/severities/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18697">Related epic</a></li></ul>
</div>

<p>CVSS 4.0 is the latest version of the industry standard used to assess and rate the severity of a vulnerability. You can now view and access CVSS 4.0 score in the UI, including the vulnerability details page and the vulnerability report. You can also query the score using the API.</p>
<h3 id="improved-row-interaction-in-the-vulnerability-report">Improved row interaction in the vulnerability report</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/561414">Related issue</a></li></ul>
</div>

<p>Previously, you had to select the row description to navigate to a vulnerability details page from the vulnerability report.</p>
<p>You can now select anywhere in the row to go directly to its details. Link styling for the vulnerability description and file location only appears when you hover over each link, and keyboard navigation has been improved.</p>
<p>These changes make the vulnerability report more intuitive and accessible.</p>
<h3 id="export-a-security-dashboard-as-a-pdf">Export a security dashboard as a PDF</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/#export-as-pdf">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18203">Related epic</a></li></ul>
</div>

<p>You can export the security dashboard as a PDF for use in reports and presentations. The export captures the current state of all of the charts and panels in the dashboard, including any active filters.</p>
<h3 id="sast-scanning-in-security-configuration-profiles">SAST scanning in security configuration profiles</h3>
<!-- categories: Security Testing Configuration -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/configuration/security_configuration_profiles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/19951">Related epic</a></li></ul>
</div>

<p>In GitLab 18.9, we introduced security configuration profiles with the <strong>Secret Detection - Default</strong> profile. In GitLab 18.11, profiles now extend to SAST with the <strong>Static Application Security Testing (SAST) - Default</strong> profile, giving you a unified control surface to apply standardized static analysis coverage across all your projects without touching a single CI/CD configuration file.</p>
<p>The profile activates two scan triggers:</p>
<ul>
<li><strong>Merge Request Pipelines</strong>: Automatically runs a SAST scan each time new commits are pushed to a branch with an open merge request. Results only include new vulnerabilities introduced by the merge request.</li>
<li><strong>Branch Pipelines (default only)</strong>: Runs automatically when changes are merged or pushed to the default branch, providing a complete view of your default branch’s SAST posture.</li>
</ul>
<h3 id="security-attribute-filters-in-group-security-dashboards">Security attribute filters in group security dashboards</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/#filter-the-entire-dashboard">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18201">Related epic</a></li></ul>
</div>

<p>You can now filter the results in a group security dashboard based on the security attributes that you have applied to the projects in that group.</p>
<p>The available security attributes include the following:</p>
<ul>
<li>Business impact</li>
<li>Application</li>
<li>Business unit</li>
<li>Internet exposure</li>
<li>Location</li>
</ul>
<h3 id="security-manager-role-beta">Security Manager role (Beta)</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/">Documentation</a></li></ul>
</div>

<p>The Security Manager role is now available as a beta feature, providing a new default set of permissions designed specifically for security professionals. Security teams no longer need Developer or Maintainer roles to access security features, eliminating over-privileging concerns while maintaining separation of duties.</p>
<p>Users with the Security Manager role have the following access:</p>
<ul>
<li><strong>Vulnerability management</strong>: View, triage, and manage vulnerabilities across groups and projects, including vulnerability reports and security dashboards.</li>
<li><strong>Security inventory</strong>: View a group’s security inventory to understand scanner coverage across all projects.</li>
<li><strong>Security configuration profiles</strong>: View security configuration profiles for a group.</li>
<li><strong>Compliance tools</strong>: View audit events, compliance center, compliance frameworks, and dependency lists for a group or project.</li>
<li><strong>Secret push protection</strong>: Enable secret push protection for a group.</li>
<li><strong>On-demand DAST</strong>: Create and run on-demand DAST scans for a group.</li>
</ul>
<p>To get started, go to a group and select <strong>Manage</strong> &gt; <strong>Members</strong> to invite and assign members to the Security Manager role.</p>
<h3 id="identifier-list-popover-in-the-vulnerability-report">Identifier list popover in the vulnerability report</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/564939">Related issue</a></li></ul>
</div>

<p>The vulnerability report now shows the primary CVE identifier as a clickable link in each row. When multiple identifiers exist,
a <code>&quot;+N more&quot;</code> popover lists all of the identifiers. Each identifier in the list links to its external reference
(for example, in the CVE, CWE, or WASC databases) so you can quickly access more details without leaving the report.</p>
<h3 id="gitlab-runner-1811">GitLab Runner 18.11</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.11 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s New</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39286">Create <code>concrete</code> helper image with bundled dependencies</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39280">Read the job router feature flag from the runner configuration instead of an environment variable</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39329">Incorrect runner binary path after refactoring</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39279">Pipeline hangs on cache operations</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39276">The <code>docker-machine</code> binary in GitLab Runner 18.9.0 references CVE-2025-68121</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39201">Runner silently falls back to job payload credentials when credential helper binary is missing from <code>DOCKER_AUTH_CONFIG</code></a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/38307"><code>CONCURRENT_PROJECT_ID </code>not unique in different jobs, which causes a conflict in the builds directory</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/37220">Artifact upload fails with timeout awaiting response headers</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/3116">User-defined <code>after_script</code> executes after failed <code>pre_build_script</code> and bypasses <code>post_build_script</code></a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-11-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-11-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.11">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.11">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.11">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.10 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-10-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-10-released/</id><published>2026-03-19T00:00:00Z</published><updated>2026-03-19T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On March 19, 2026, GitLab 18.10 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-harshith-sudar">This month’s Notable Contributor: Harshith Sudar</h2>
<p>Harshith is currently a Level 3 Contributor who has made impactful contributions improving community tooling and analytics, from triage automation and contributor recognition to <a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a> usage insights.</p>
<p>Harshith’s contributions were first recognized by <a href="https://gitlab.com/leetickett-gitlab">Lee Tickett</a>, Fullstack Engineer in DevRel Engineering at GitLab, who nominated him. His work has strengthened how we support contributors behind the scenes through improvements to our automation and contributor-facing experiences. For example, he expanded our triage automation by <a href="https://gitlab.com/gitlab-org/quality/triage-ops/-/merge_requests/3589">updating the <code>IssueSummary</code> processor in triage-ops to work with multiple projects</a>, including <a href="https://contributors.gitlab.com">contributors.gitlab.com</a>, making it easier for us to keep more community projects consistently summarized and visible. He also helped recognize community-created content through the <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/contributors-gitlab-com/-/merge_requests/1250">new “Add content” button and flow</a>, which lets contributors log blog posts, videos, and other content directly from their profile and get rewarded.</p>
<p>Harshith has also contributed to our analytics and GitLab Duo usage insights. Highlights include <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/207511">refining how GitLab Duo usage is calculated</a>, improving how AI impact over time can be explored by <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/218870">removing the 180-day default</a>, and <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/216715">consolidating DORA metric date range constants</a>, as well as enhancing analytics at scale with improvements like adding <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/207796">infinite scroll for the Value Stream Analytics custom stage label picker</a>. Together, these changes help teams better understand how GitLab is used in real projects.</p>
<p>In his own words:</p>

<blockquote><p>“One thing I’ve really enjoyed while contributing is how thoughtfully ideas are discussed within the community. It’s encouraging to see suggestions explored collaboratively, like in the discussion around <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/contributors-gitlab-com/-/merge_requests/1288">MR !1288</a>, which turned into a great learning experience.
I’m really happy to be part of this community and look forward to making many more contributions in the future.”</p></blockquote><p>Thank you, Harshith, for your ongoing work to improve the GitLab codebase and contributor experience!</p>
<p>Want to connect with Harshith and learn more about his contributions? Visit Harshith’s <a href="https://gitlab.com/official.harshith1">GitLab profile</a> and his <a href="https://www.linkedin.com/in/harshith-s-a44169282/">LinkedIn profile</a>.</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="sast-false-positive-detection-with-gitlab-duo-agent-platform">SAST false positive detection with GitLab Duo Agent Platform</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/false_positive_detection/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/19789">Related epic</a></li></ul>
</div>

<p>SAST false positive detection, which was first introduced as a beta in GitLab 18.7, is now generally available in GitLab 18.10.</p>
<p>When a security scan runs, GitLab Duo Agent Platform analyzes each critical and high severity SAST vulnerability and determines the likelihood that it’s a false positive.
The assessment appears directly in the vulnerability report, giving teams the context they need to triage with confidence rather than uncertainty.</p>
<p>Key capabilities include:</p>
<ul>
<li>Automatic analysis: False positive detection runs automatically after each security scan with no manual intervention required.</li>
<li>Manual option: Users can manually run false positive detection for individual vulnerabilities on the vulnerability details page for on-demand analysis.</li>
<li>Focus on high-impact findings: Limiting the analysis to critical and high severity SAST vulnerabilities cuts through the noise where it matters most.</li>
<li>Contextual AI reasoning: Each assessment explains why a finding may or may not be a false positive, factoring in code context, data flow, and vulnerability characteristics specific to static analysis.</li>
<li>Seamless workflow integration: Results surface directly in the vulnerability report alongside existing severity, status, and remediation information — no changes to existing workflows required.</li>
</ul>
<p>This feature is available for Ultimate customers with GitLab Duo Agent Platform. The feature must be enabled in your group or project settings.
We welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/583697">issue 583697</a>.</p>
<h3 id="purchase-gitlab-credits-on-the-free-tier-on-gitlabcom">Purchase GitLab Credits on the Free tier on GitLab.com</h3>
<!-- categories: Subscription Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Add-ons</span>: GitLab Credits</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#for-the-free-tier">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20165">Related epic</a></li></ul>
</div>

<p>Free tier group Owners on GitLab.com can now unlock AI with GitLab Credits. Purchase a monthly credit amount, commit to an annual term, and get access to <a href="/subscriptions/gitlab_credits/#for-the-free-tier">GitLab Duo Agent Platform agents and flows</a>. Credits refresh automatically each month, so your team always has what it needs to build faster and smarter.</p>
<p>Key highlights:</p>
<ul>
<li><strong>Usage-based pricing</strong>: Purchase a monthly credit commitment without needing a base plan subscription.</li>
<li><strong>Self-service purchasing</strong>: Buy credits through the GitLab purchase flow.</li>
<li><strong>Seamless upgrade path</strong>: Your credit commitment transfers if you later upgrade to Premium or Ultimate.</li>
<li><strong>Consumption tracking</strong>: Monitor your credit usage through the GitLab Credits dashboard.</li>
</ul>
<p>This <a href="/subscriptions/gitlab_credits/#buy-gitlab-credits">purchase option</a> is currently only available for free GitLab.com top-level groups.</p>
<h3 id="sign-in-securely-with-passkeys">Sign in securely with passkeys</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/auth/passkeys/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/10897">Related epic</a></li></ul>
</div>

<p>GitLab now supports passkeys for passwordless sign-in and as a phishing-resistant two-factor authentication (2FA) method. Passkeys use public-key cryptography and biometric authentication (fingerprint, face recognition) or your device PIN to securely access your account.</p>
<p>Passkeys offer the following benefits:</p>
<ul>
<li><strong>Passwordless convenience</strong>: Sign in with your device’s biometrics or PIN instead of remembering a password.</li>
<li><strong>Multi-device support</strong>: Use passkeys on desktop browsers, mobile devices (iOS 16 or later, Android 9 or later), and FIDO2/WebAuthn-compatible hardware security keys.</li>
<li><strong>Phishing-resistant security</strong>: Your private key never leaves your device. GitLab only stores the public key, protecting your account even if GitLab servers are compromised.</li>
<li><strong>Automatic 2FA integration</strong>: For accounts with 2FA enabled, passkeys become available as your default 2FA method.</li>
</ul>
<p>To get started, add a passkey in your account settings. We welcome your questions and feedback in issue <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/[366758]%28https://gitlab.com/gitlab-org/gitlab/-/work_items/366758%29">366758</a>.</p>
<h3 id="introducing-the-work-items-list-and-saved-views">Introducing the work items list and saved views</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/work_items/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/17530">Related epic</a></li></ul>
</div>

<p>The GitLab planning experience is getting a significant upgrade with the work items list and saved views,
bringing together two long-requested capabilities:</p>
<ul>
<li>The work items list combines epics, issues, and other work items into a single unified list, eliminating the need to switch between separate pages for different work item types. This makes it easier to understand relationships across your planning objects.</li>
<li>Saved views allow you to create and save customized list configurations, including filters, sort order, and display options. This makes routine checks more efficient, and supports standardized ways of viewing work across your team.</li>
</ul>
<p>This is the next step in the GitLab work items journey, a unified architecture designed to deliver
consistency and unlock new capabilities across GitLab planning tools.</p>
<p>Share your thoughts and feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590689">issue 590689</a>.</p>
<h3 id="custom-agents-can-use-mcp-to-access-external-data">Custom agents can use MCP to access external data</h3>
<!-- categories: AI Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/model_context_protocol/ai_catalog_mcp_servers/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590708">Related issue</a></li></ul>
</div>

<p>You can now connect custom agents in the AI Catalog to external data sources and tools through the Model Context Protocol (MCP), without leaving GitLab.</p>
<p>This feature is an experiment. Share your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/593219">issue 593219</a>.</p>
<h3 id="enforce-merge-request-title-naming-conventions-with-regex">Enforce merge request title naming conventions with regex</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/title_validation/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20108">Related epic</a></li></ul>
</div>

<p>Maintaining consistent merge request titles is important for teams that rely on structured
naming conventions. Whether that’s following the Conventional Commits format,
or linking to an internal tracking system. Teams previously needed external tooling or
custom CI/CD pipeline jobs to enforce these conventions, but this approach had a
critical gap. If someone changed the merge request title after the pipeline ran, there was no
re-validation, and the MR could still be merged with a non-compliant title.</p>
<p>You can now configure a required title regex for merge requests in your project settings.
When configured, GitLab evaluates the merge request title against the pattern as a
mergeability check — blocking the merge until the title is updated to comply, regardless
of when the title was last changed.</p>
<p>To set this up, go to your project’s <strong>Settings &gt; Merge requests</strong> and enter a regex
pattern in the <strong>Merge request title must match regex</strong> field.</p>
<p>Your existing merge request workflows continue to work as before. This check only
applies to projects where you explicitly configure a title regex.</p>
<h3 id="secret-false-positive-detection-with-ai-beta">Secret false positive detection with AI (beta)</h3>
<!-- categories: Vulnerability Management, Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/secret_false_positive_detection/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20152">Related epic</a></li></ul>
</div>

<p>Security teams spend significant time investigating secret detection findings that turn out to be false positives. For example, test credentials, example values, and placeholder tokens that are incorrectly flagged as actual secrets.
False positives create alert fatigue, erode trust in scan results, and divert attention from genuine security risks.</p>
<p>GitLab 18.10 introduces AI-powered secret false positive detection (beta) to focus on the secrets that actually matter.
When a security scan runs, GitLab Duo automatically analyzes each <strong>Critical</strong> and <strong>High</strong> severity secret detection vulnerability to determine if it’s a false positive.</p>
<p>The AI assessment appears directly in the vulnerability report, giving security engineers immediate context to make faster and confident triage decisions.</p>
<p>Key capabilities include:</p>
<ul>
<li>Automatic analysis: False positive detection runs automatically after each security scan without manual trigger.</li>
<li>Manual trigger option: You can manually trigger false positive detection for individual vulnerabilities on the vulnerability details page for on-demand analysis.</li>
<li>Focus on high-impact findings: Scoped for <strong>Critical</strong> and <strong>High</strong> severity vulnerabilities to maximize signal-to-noise improvement.</li>
<li>Contextual AI reasoning: Each assessment includes an explanation of why the finding may or may not be a true positive, based on code context and vulnerability characteristics.</li>
<li>Confidence scoring: Each detection includes a confidence score to help teams prioritize review based on the model’s certainty.</li>
<li>Seamless workflow integration: Results surface directly in the vulnerability report alongside existing severity, status, and remediation information.</li>
</ul>
<p>This feature is available as a free beta for Ultimate customers and must be enabled in your group or project settings.
Share feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/592861">issue 592861</a>.</p>
<h3 id="use-runtime-inputs-with-cicd-jobs">Use runtime inputs with CI/CD jobs</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/job_inputs/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17833">Related epic</a></li></ul>
</div>

<p>Using CI/CD variables for dynamic job configuration can be challenging. Variables follow a complex override hierarchy that’s difficult to manage, and they can’t be used for a variety of use cases.</p>
<p>Now you can use <code>inputs</code> to define explicit, typed inputs at the job level. Use job inputs to define and control the values that a job accepts at runtime. With job inputs, you get:</p>
<ul>
<li>Type safety (string, number, boolean, array).</li>
<li>Default values that can be static or reference existing variables.</li>
<li>The option to define a strict list of possible values to use.</li>
<li>Regex support for validating input values.</li>
</ul>
<p>Job inputs can use the default values without any user interaction, but you can modify the values when retrying a job or running a manual job.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="gitlab-blob-search-for-group-and-instance-code-search">GitLab Blob Search for group and instance code search</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/tools/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/593221">Related issue</a></li></ul>
</div>

<p>The <a href="/user/duo_agent_platform/agents/tools/"><code>[gitlab_blob_search](../../user/duo_agent_platform/agents/tools.md)</code></a> tool now enables GitLab AI agents to search your code:</p>
<ul>
<li>Across all projects in a group.</li>
<li>Across all accessible projects on an instance.</li>
</ul>
<p>Previously, blob search was limited to a single project, or required specifying explicit project IDs. This change makes it easier for AI-powered workflows to discover and reuse code that’s spread across multiple related projects.</p>
<h3 id="gitlab-mcp-server-tool-for-pipeline-management">GitLab MCP server tool for pipeline management</h3>
<!-- categories: MCP Server -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/model_context_protocol/mcp_server_tools/#manage_pipeline">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/583826">Related issue</a></li></ul>
</div>

<p>You can now manage your CI/CD pipelines in a GitLab project with the new <code>manage_pipeline</code> tool.
This GitLab MCP server tool lets AI agents create, cancel, retry, delete, and update pipeline metadata in a single call.
With this tool, you no longer have to piece together multiple steps to automate your pipeline workflows.</p>
<p>If you want to see other GitLab MCP sever tools, let us know in the <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/566375">feedback issue</a>.</p>
<h3 id="project-maintainers-can-enable-custom-agents-and-flows">Project Maintainers can enable custom agents and flows</h3>
<!-- categories: AI Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/flows/custom/#enable-a-flow">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590573">Related issue</a></li></ul>
</div>

<p>Previously, enabling AI agents and flows from the AI Catalog required top-level group permissions.</p>
<p>Now, when browsing the AI Catalog at the explore level or project level, project Maintainers can enable agents and flows directly in their projects.</p>
<h3 id="configure-network-access-control-for-remote-flows-in-projects">Configure network access control for remote flows in projects</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/environment_sandbox/#configure-a-network-policy">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/593560">Related issue</a></li></ul>
</div>

<p>You can now configure <a href="/user/duo_agent_platform/environment_sandbox/">network access controls</a> for flows using GitLab runners in projects.</p>
<p>This provides secure external integrations, while maintaining control over network destinations. This also gives project maintainers the flexibility to allow necessary API connections, MCP servers, and third-party services while enforcing security boundaries.</p>
<p>Configure <a href="/user/duo_agent_platform/environment_sandbox/">network access controls</a> in the <code>network_policy</code> section of <code>agent-config.yml</code>. The <code>agent-config.yml</code> is protected by branch protection rules and MR approval workflows.</p>
<h3 id="self-hosted-vertex-ai-for-gitlab-duo-agent-platform">Self-hosted Vertex AI for GitLab Duo Agent Platform</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_llm_serving_platforms/#configure-authentication-with-google-vertex-ai">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/591604">Related issue</a></li></ul>
</div>

<p>Vertex AI is now a supported LLM platform within GitLab Duo Agent Platform Self-Hosted.</p>
<p>Customers can now configure Anthropic models hosted on Vertex AI for use with GitLab Duo Agent Platform features.</p>
<h3 id="users-can-enable-agents-and-flows-directly-from-projects">Users can enable agents and flows directly from projects</h3>
<!-- categories: AI Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/custom/#enable-an-agent">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/588012">Related issue</a></li></ul>
</div>

<p>Maintainers and Owners can now enable agents and flows directly from their project or the explore page, without navigating away from their current context.</p>
<p>Top-level group Owners can also select their group, and the specific projects where they want to activate agents and flows, streamlining their workflow setup.</p>
<h3 id="support-for-agent-skills-in-ides-and-cicd-pipelines">Support for Agent Skills in IDEs and CI/CD pipelines</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/customize/agent_skills/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp/-/issues/1984">Related issue</a></li></ul>
</div>

<p>GitLab Duo Agent Platform now supports the <a href="https://agentskills.io/specification">Agent Skills specification</a>,
an emerging standard for giving AI agents new capabilities and expertise.</p>
<p>You can define Agent Skills at the workspace level for your project
to give agents specialized knowledge and workflows for specific tasks, like writing
tests in a specific framework. Agents automatically discover and load relevant skills
as they encounter matching tasks.</p>
<p>You can also trigger skills manually by name, file path, or custom slash commands.
Agent Skills are accessible for flows and Agentic Chat in your IDE, and for
flows run in CI/CD pipelines. They also work with any other AI tool that supports
the specification.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="download-credit-usage-data-as-csv">Download credit usage data as CSV</h3>
<!-- categories: Consumables Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#export-usage-data">Documentation</a> | <a href="https://gitlab.com/gitlab-org/customers-gitlab-com/-/work_items/14504">Related issue</a></li></ul>
</div>

<p>Billing managers can now download credit usage data as a CSV file directly from the GitLab Credits dashboard in Customers Portal.</p>
<p>The export provides a daily, per-action breakdown of credit consumption for the current billing month, including commitment, waiver, trial, on-demand, and included credits used.</p>
<p>Finance and operations teams can use this data to perform cost allocation, chargeback reporting, and usage analysis in Excel, Google Sheets, or BI tools without manual data gathering or support requests.</p>
<h3 id="link-credit-usage-to-gitlab-duo-agent-platform-sessions">Link credit usage to GitLab Duo Agent Platform sessions</h3>
<!-- categories: Consumables Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#gitlab-credits-dashboard">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/579139">Related issue</a></li></ul>
</div>

<p>The GitLab Credits dashboard now links credit consumption directly to the GitLab Duo Agent Platform session that generated it.</p>
<p>In the per-user drill-down view, the <strong>Action</strong> column for Agent Platform usage rows (such as <strong>Agentic Chat</strong> or <strong>Foundational Agents</strong>) is now a clickable hyperlink that navigates to the corresponding session details.</p>
<p>This link provides a direct audit trail from billing to AI session behavior, so administrators can investigate credit usage, support escalations, and compliance reviews without manually correlating timestamps across separate systems.</p>
<h3 id="sort-users-in-the-gitlab-credits-dashboard">Sort users in the GitLab Credits dashboard</h3>
<!-- categories: Consumables Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#view-the-gitlab-credits-dashboard">Documentation</a> | <a href="https://gitlab.com/gitlab-org/customers-gitlab-com/-/work_items/15608">Related issue</a></li></ul>
</div>

<p>Enterprise administrators can now sort the <strong>Usage by User</strong> table in the GitLab Credits dashboard by total credits used or by username.</p>
<p>The default sort order is by total credits consumed (highest first), so the top consumers are immediately visible without scrolling.</p>
<p>With this view, administrators managing thousands of GitLab Duo users can quickly identify high-usage individuals for cost allocation, chargeback reporting, and license utilization audits.</p>
<h3 id="new-navigation-experience-for-projects-in-explore">New navigation experience for projects in Explore</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/#explore-all-projects-on-an-instance">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/13786">Related epic</a></li></ul>
</div>

<p>We’ve streamlined the projects page in <strong>Explore</strong> to reduce clutter and remove redundant options that accumulated over time.
The simplified interface now focuses on two core views:</p>
<ul>
<li><strong>Active</strong> tab: Discover projects with recent activity and ongoing development.</li>
<li><strong>Inactive</strong> tab: Access archived projects and those scheduled for deletion.</li>
</ul>
<p>We’ve removed several redundant tabs:</p>
<ul>
<li><strong>Most starred</strong> projects can be found by sorting <strong>Active</strong> or <strong>Inactive</strong> tabs by star count.</li>
<li><strong>All</strong> projects are available by viewing both <strong>Active</strong> and <strong>Inactive</strong> tabs.</li>
<li><strong>Trending</strong> tab will be fully removed in GitLab 19.0 due to limited functionality and low usage.</li>
</ul>
<p>The cleaner design aligns with other project lists for visual consistency. You can still access all the same content through more logical organization and flexible sorting options.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="dependency-scanning-with-sbom-support-for-java-gradle-build-files">Dependency Scanning with SBOM support for Java Gradle build files</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/#manifest-fallback">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/588788">Related issue</a></li></ul>
</div>

<p>GitLab dependency scanning by using SBOM now supports scanning Java <code>build.gradle</code> and <code>build.gradle.kts</code> build files.</p>
<p>Previously, dependency scanning for Java projects using Gradle required a lock file to be present.
Now, when a lock file is not available, the analyzer automatically falls back to scanning <code>build.gradle</code> and <code>build.gradle.kts</code> files, extracting and reporting only direct dependencies for vulnerability analysis.
This improvement makes it easier for Java projects using Gradle to enable dependency scanning without requiring a lock file.</p>
<p>To enable manifest fallback, set the <code>DS_ENABLE_MANIFEST_FALLBACK</code> CI/CD variable to <code>&quot;true&quot;</code>.</p>
<h3 id="dependency-scanning-sbom-based-scanning-extended-to-self-managed">Dependency scanning SBOM-based scanning extended to self-managed</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/546429">Related issue</a></li></ul>
</div>

<p>In GitLab 18.10, we’re extending limited availability status to self-managed instances for the new SBOM-based dependency scanning feature.</p>
<p>This feature was initially released in GitLab 18.5 with limited availability for GitLab.com only, behind the feature flag <code>dependency_scanning_sbom_scan_api</code> and disabled by default.</p>
<p>With additional improvements and fixes, we now have confidence to reliably use the new SBOM scanning internal API and enable this feature flag by default.
This internal API allows the dependency scanning analyzer to generate a dependency scanning report containing all component vulnerabilities.
Unlike the previous behavior (Beta) that processed SBOM reports after CI/CD pipeline completion, <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/#how-it-scans-an-application">this improved process</a> generates scan results immediately during the CI/CD job, giving users instant access to vulnerability data for custom workflows.</p>
<p>Self-managed customers who encounter issues can disable the <code>dependency_scanning_sbom_scan_api</code> feature flag. The analyzer will then fall back to the previous behavior.</p>
<p>To use this feature, import the v2 dependency scanning template <code>Jobs/Dependency-Scanning.v2.gitlab-ci.yml</code>.</p>
<p>We welcome feedback on this feature. If you have questions, comments, or would like to engage with our team, please reach out in this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523458">feedback issue</a>.</p>
<h3 id="license-scanning-support-for-dartflutter-projects-using-pub-package-manager">License scanning support for Dart/Flutter projects using Pub package manager</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/license_scanning_of_cyclonedx_files/#data-sources">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/18351">Related epic</a></li></ul>
</div>

<p>GitLab now supports license scanning for Dart and Flutter projects that use the <code>pub</code> package manager.
Previously, teams building with Dart or Flutter were unable to identify the licenses of their open source dependencies directly within GitLab, creating compliance blind spots for organizations with license policy requirements.</p>
<p>License data is sourced directly from <a href="https://pub.dev">pub.dev</a>, the official Dart package repository, and results are surfaced alongside other supported ecosystems.
Dart/Flutter dependency scanning and vulnerability detection were already supported.</p>
<h3 id="conan-20-package-registry-support-beta">Conan 2.0 package registry support (Beta)</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/conan_2_repository/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/585819">Related issue</a></li></ul>
</div>

<p>C and C++ development teams using Conan as their package manager have long requested registry support in GitLab. Previously, the Conan package registry was experimental and only supported Conan 1.x clients, limiting adoption for teams that have migrated to the modern Conan 2.0 toolchain.</p>
<p>The Conan package registry now supports Conan 2.0 and has been promoted from Experimental to Beta. This release includes full v2 API compatibility, recipe revision support, improved search capabilities, and proper handling of upload policies including the <code>--force</code> flag. Teams can publish and install Conan 2.0 packages directly from GitLab using standard Conan client workflows, reducing the need for external artifact management solutions like JFrog Artifactory.</p>
<p>With this update, platform engineering teams managing C and C++ dependencies can consolidate their package management within GitLab alongside their source code, CI/CD pipelines, and security scanning. The Conan registry supports both project-level and instance-level endpoints, and works with personal access tokens, deploy tokens, and CI/CD job tokens for authentication.</p>
<p>We welcome feedback as we work toward general availability. Please share your experience in the <a href="https://gitlab.com/groups/gitlab-org/-/work_items/6816">epic</a>.</p>
<h3 id="manage-container-virtual-registries-with-a-dedicated-ui-beta">Manage container virtual registries with a dedicated UI (Beta)</h3>
<!-- categories: Virtual Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/virtual_registry/container/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/19283">Related epic</a></li></ul>
</div>

<p>When the container virtual registry launched in beta last milestone, platform engineers could aggregate multiple upstream container registries — Docker Hub, Harbor, Quay, and others — behind a single pull endpoint. However, all configuration required direct API calls, meaning teams had to maintain scripts or manual curl commands to create and manage their registries, configure upstreams, and handle changes over time. This added operational overhead and made the feature inaccessible to users who weren’t comfortable working directly with the API.</p>
<p>Container virtual registries can now be created and managed directly from the GitLab UI. From the group-level container registry page, you can create new virtual registries, configure upstream sources with authentication credentials, edit existing configurations, and delete registries you no longer need — all without leaving GitLab or writing a single API call. The UI integrates seamlessly with the existing container registry experience, making virtual registries a first-class part of your group’s artifact management workflow.</p>
<p>This feature is in beta. To share feedback, please comment in the <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/589630">feedback issue</a>.</p>
<h3 id="gitlab-helm-chart-registry-generally-available">GitLab Helm Chart registry generally available</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/helm_repository/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/573715">Related issue</a></li></ul>
</div>

<p>Teams using Helm to manage Kubernetes application deployments can now rely on the GitLab Helm Chart registry for production workloads. Previously in beta, the registry is now generally available following the resolution of key architectural and reliability concerns.</p>
<p>The path to GA included resolving a hard limit that prevented the <code>index.yaml</code> endpoint from returning more than 1,000 charts, fixing a background indexing bug that caused newly published chart versions to be missing from the index, completing a full AppSec security review, and adding Geo replication support for Helm metadata cache, ensuring high availability for self-managed customers running GitLab Geo.</p>
<p>Platform and DevOps teams can publish and install Helm charts directly from GitLab using standard Helm client workflows, with support for project-level endpoints and authentication using personal access tokens, deploy tokens, and CI/CD job tokens. Now you can keep charts alongside the source code, pipelines, and security scanning that depend on them.</p>
<h3 id="task-item-support-in-markdown-tables">Task item support in Markdown tables</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/#task-lists-in-tables">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/21506">Related issue</a></li></ul>
</div>

<p>You can now use task item checkbox syntax directly in Markdown table cells.</p>
<p>Previously, achieving this required a combination of raw HTML and Markdown, which was
cumbersome and difficult to maintain.</p>
<p>This improvement makes it easier to track task completion directly within structured table
layouts in issues, epics, and other content.</p>
<h3 id="pipeline-secret-detection-in-security-configuration-profiles">Pipeline secret detection in security configuration profiles</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/configuration/security_configuration_profiles/">Documentation</a></li></ul>
</div>

<p>In GitLab 18.9, we introduced security configuration profiles with the <strong>Secret Detection - Default</strong> profile, starting with push protection. You use the profile to apply standardized secret scanning across hundreds of projects without touching a single CI/CD configuration file.</p>
<p>The <strong>Secret Detection - Default</strong> profile now also covers pipeline-based scanning, providing a unified control surface for secret detection across your entire development workflow.</p>
<p>The profile activates three scan triggers:</p>
<ul>
<li><strong>Push Protection</strong>: Scans all Git push events and blocks pushes where secrets are detected, preventing secrets from ever entering your codebase.</li>
<li><strong>Merge Request Pipelines</strong>: Automatically runs a scan each time new commits are pushed to a branch with an open merge request. Results only include new vulnerabilities introduced by the merge request.</li>
<li><strong>Branch Pipelines (default only)</strong>: Runs automatically when changes are merged or pushed to the default branch, providing a complete view of your default branch’s secret detection posture.</li>
</ul>
<p>Applying the profile requires no YAML configuration. The profile can be applied to a group to propagate coverage across all projects in the group, or to individual projects for more granular control.</p>
<h3 id="macos-tahoe-26-and-xcode-26-job-image">macOS Tahoe 26 and Xcode 26 job image</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/macos/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-com/gl-infra/-/work_items/1694">Related epic</a></li></ul>
</div>

<p>You can now create, test, and deploy applications for the newest
generations of Apple devices using macOS Tahoe 26 and Xcode 26.</p>
<p>With <a href="/ci/runners/hosted_runners/macos/">hosted runners on macOS</a>,
your development teams can build and deploy macOS applications faster in a secure,
on-demand build environment integrated with GitLab CI/CD.</p>
<p>Try it out today by using the <code>macos-26-xcode-26</code> image in your <code>.gitlab-ci.yml</code> file.</p>
<h3 id="gitlab-runner-1810">GitLab Runner 18.10</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.10 today!
GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance.
GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s New</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39085">Allow k8s runner to define Pod Level Resources for build pod</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39192">Add automation to update Go versions and packages for all Runner projects</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39105">S3 cache with RoleARN returns 403 instead of 404 for non-existent cache</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/37872">Using helper image <code>gitlab-runner-helper:x86_64-v16.11.1-nanoserver21H2</code> results in <code>init-permissions</code> error</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/28136">MacOS: LaunchAgent - Service could not initialize on M1 architecture</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-10-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-10-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.10">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.10">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.10">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.9 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-9-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-9-released/</id><published>2026-02-19T00:00:00Z</published><updated>2026-02-19T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On February 19, 2026, GitLab 18.9 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-pooja-ghanghas">This month’s Notable Contributor: Pooja Ghanghas</h2>
<p>Pooja has made significant contributions to ongoing efforts at GitLab to migrate legacy dropdown components to our modern dropdown architecture. These migrations require careful attention to detail and an understanding of both the old and new component systems. Pooja has consistently delivered high-quality work across multiple migrations, including updates to the <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/189621">diff file header</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/194129">code block bubble menu</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186247">oncall schedules rotation assignee component</a>, and the <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/209598">new resource dropdown</a>.</p>
<p><a href="https://gitlab.com/peterhegman">Peter Hegman</a>, Staff Frontend Engineer on Tenant Scale::Organizations at GitLab, nominated Pooja for this recognition, noting: “These migrations can be pretty tricky and she has completed a number of them. Thanks for your contributions!”</p>
<p>Beyond these migration efforts, Pooja has also contributed to feature development, including <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524100">adding statuses to milestones and iterations</a>, a feature she put significant effort into getting merged. <a href="https://gitlab.com/msaleiko">Marc Saleiko</a>, Staff Fullstack Engineer on Plan:Project Management at GitLab, recognised her work: “This is a valuable contribution and you did a great job delivering this functionality!” Reflecting on her experience, Pooja shared: “I’m proud of how it turned out and it was a great learning experience for me.”</p>
<p>She has also contributed numerous bug fixes and maintenance improvements across the GitLab codebase. Pooja’s work directly improves the maintainability and consistency of the GitLab user interface, making it easier for both contributors and team members to build and maintain features, and helping move the GitLab frontend architecture forward.</p>
<p>Thank you, Pooja, for your continued contributions to improving the GitLab codebase and for being such a reliable member of our contributor community!</p>
<p>Want to learn more about Pooja’s contributions? Check out her <a href="https://gitlab.com/poojaghanghas479">GitLab profile</a>.</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-agent-platform-self-hosted-models-now-available-for-cloud-licenses">GitLab Duo Agent Platform Self-Hosted models now available for cloud licenses</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/#gitLab-duo-agent-platform">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20949">Related epic</a></li></ul>
</div>

<p>GitLab Duo Agent Platform is now generally available for GitLab Self-Managed customers with a cloud license. Billing for this feature is <a href="/subscriptions/gitlab_credits/">usage-based</a>.</p>
<p>Administrators can configure <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#compatible-models">compatible models</a> for use with GitLab Duo Agent Platform. Administrators using AWS Bedrock or Azure OpenAI can also configure Anthropic Claude or OpenAI GPT models.</p>
<p>Not yet on Ultimate? <a href="https://docs.gitlab.com/#gitlab-duo-agent-platform-available-in-ultimate-trials">Start a free trial with Duo Agent Platform included</a>.</p>
<h3 id="vulnerability-resolution-with-gitlab-duo-agent-platform-beta">Vulnerability resolution with GitLab Duo Agent Platform (Beta)</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/flows/foundational_flows/agentic_sast_vulnerability_resolution/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20150">Related epic</a></li></ul>
</div>

<p>Triaging and remediating SAST vulnerabilities is one of the most time-consuming tasks in application security. After identifying a real vulnerability, developers need to understand the finding, locate the affected code, and write an appropriate fix. All of which take time and specialized knowledge.
In GitLab 18.9, we’re introducing Agentic SAST Vulnerability Resolution. When you trigger resolution for a SAST vulnerability, GitLab Duo autonomously analyzes the finding, reasons through the surrounding code context, generates a context-aware fix, and creates a merge request without any manual intervention.</p>
<p>Key capabilities include:</p>
<ul>
<li>Agentic multi-step resolution: Rather than producing a single code suggestion, the GitLab Duo Agent Platform reasons through the vulnerability, evaluates the codebase, and produces a well-informed fix.</li>
<li>Automatic merge request creation: Generates a ready-to-review merge request with the proposed code fix for critical and high severity SAST vulnerabilities.</li>
<li>Quality scoring: Each generated fix includes a quality assessment so reviewers can quickly gauge confidence in the proposed remediation.</li>
</ul>
<p>SAST vulnerability resolution is available from the vulnerability report and the individual vulnerability details pages. You can trigger a resolution directly from the individual vulnerability details page.</p>
<p>This feature is available as a free beta for Ultimate customers. We welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/585626">issue 585626</a>.</p>
<h3 id="navigate-repositories-with-collapsible-file-tree">Navigate repositories with collapsible file tree</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/files/file_tree_browser/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17781">Related epic</a></li></ul>
</div>

<p>You can now browse repository files with a collapsible file tree. The tree provides
a comprehensive view of your project structure, so you can expand and collapse directories
inline, jump between files in different parts of your repository, and maintain context
while you work.</p>
<p>The file tree appears as a resizable sidebar when you view repository files or directories.
You can toggle visibility with keyboard shortcuts, filter files by name or extension,
and navigate through complex project hierarchies. The tree synchronizes with your current
location, so when you select a file in the main content area, the tree updates to show
that file.</p>
<p>Your existing repository structure and file organization remain unchanged. With fewer page
loads required to move between files, this feature scales from small projects to large
codebases with thousands of files.</p>
<h3 id="include-cicd-inputs-from-a-file">Include CI/CD inputs from a file</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/inputs/#define-pipeline-inputs-in-external-files">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415636">Related issue</a></li></ul>
</div>

<p>Previously, pipeline inputs could only be defined directly within a pipeline’s spec section. This limitation made it challenging to reuse input configuration across multiple projects.</p>
<p>In this release you can now include input definitions from external files using the familiar <code>include</code> keyword. Being able to maintain a list of inputs in a separate place helps you have a manageable solution across many projects or pipelines. You can maintain centralized input configurations and even dynamically manage input values from external sources.</p>
<h3 id="web-based-commit-signing-on-gitlabcom">Web-based commit signing on GitLab.com</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/signed_commits/web_commits/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/17775">Related epic</a></li></ul>
</div>

<p>Ensuring commits are cryptographically signed is essential for code integrity and meeting
compliance requirements. Previously, web-based commit signing was only available for GitLab Self-Managed.</p>
<p>GitLab.com now supports web-based commit signing. When enabled for a group or project, commits
created through the GitLab web interface are automatically signed with the GitLab signing key and are
displayed with a <strong>Verified</strong> badge, providing cryptographic proof of authenticity for your repositories.</p>
<p>Key details:</p>
<ul>
<li>Enable in group or project settings based on your requirements.</li>
<li>All web-based commits (Web IDE edits, merges, API operations) are automatically signed when enabled.</li>
</ul>
<p>This brings the GitLab.com security capabilities in line with GitLab Self-Managed and provides
the foundation for comprehensive commit signing policies across your organization.</p>
<h3 id="container-virtual-registry-now-available-beta">Container virtual registry now available (Beta)</h3>
<!-- categories: Virtual Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/virtual_registry/container/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20820">Related epic</a></li></ul>
</div>

<p>Modern container-based development requires accessing images from multiple registries including Docker Hub, Harbor, Quay, and private registries. Without a container virtual registry, platform engineers must configure each project and CI/CD pipeline to authenticate with and pull from multiple registries individually. This creates configuration complexity, slows pulls with sequential registry queries, and makes it difficult to implement consistent security policies across container sources.</p>
<p>The container virtual registry addresses these challenges by aggregating multiple upstream container registries behind a single endpoint. Platform engineers can configure Docker Hub, Harbor, Quay, and other registries with long-lived token authentication through one URL. Intelligent caching improves pull performance while integrating with the GitLab authentication systems for centralized access control and audit logging.</p>
<p>The container virtual registry API is currently available in beta for GitLab Premium and Ultimate customers. Beta participants can use the <a href="/api/container_virtual_registries/">GitLab API</a> to create container virtual registries, configure multiple upstream sources with shareable configurations, and pull container images through the virtual registry. Please note the beta does not support registries that require IAM authentication. Support for cloud provider registries requiring IAM authentication is tracked in <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20919">this epic</a>.</p>
<p>On GitLab.com, this feature is behind a feature flag. To request access or share feedback, please comment in the <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/589630">feedback issue</a>.</p>
<h3 id="new-security-dashboard-chart-vulnerabilities-by-age">New security dashboard chart: Vulnerabilities by age</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/#vulnerabilities-by-age">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/17417">Related epic</a></li></ul>
</div>

<p>The new <strong>Vulnerabilities by age</strong> chart helps you understand how long vulnerabilities have been open in your environment.</p>
<p>The chart shows the distribution of unresolved vulnerabilities based on the amount of time since they were first detected. You can group vulnerabilities by severity or by report type, helping you identify where remediation activities may be needed.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="oauth-support-in-jetbrains-ides-for-self-managed-and-dedicated">OAuth support in JetBrains IDEs for Self-Managed and Dedicated</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/editor_extensions/jetbrains_ide/setup/#authenticate-with-gitlab">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-jetbrains-plugin/-/issues/1337">Related issue</a></li></ul>
</div>

<p>The GitLab Duo plugin for JetBrains IDEs now supports OAuth authentication for GitLab Self-Managed and GitLab Dedicated. This means all JetBrains users can now enjoy a faster, more secure sign-in experience. No personal access token required.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="non-billable-minimal-access-users">Non-billable Minimal Access users</h3>
<!-- categories: Seat Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/#users-with-minimal-access">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/584275">Related issue</a></li></ul>
</div>

<p>Previously, organizations that used identity providers to automate user provisioning on GitLab Self-Managed Premium might run into a potential problem. When identity provider syncs attempt to add users beyond the licensed seat limit, administrators must either purchase extra seats for users who don’t need active access, or manually intervene to prevent failures.</p>
<p>Now, users with the Minimal Access role on GitLab Self-Managed Premium subscriptions no longer count as billable seats, bringing them in line with how minimal access works on GitLab.com Premium, GitLab.com Ultimate, and GitLab Self-Managed Ultimate.
This change unlocks the <a href="/administration/settings/sign_up_restrictions/#restricted-access">restricted access</a> feature, which automatically assigns the Minimal Access role to users who would otherwise exceed the seat limit during identity provider syncs. This change keeps syncs running smoothly without unexpected billing overages or manual intervention.</p>
<h3 id="geo-data-management-view-on-primary-site">Geo data management view on primary site</h3>
<!-- categories: Disaster Recovery, Geo Replication -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/admin_area/#data-management">Documentation</a></li></ul>
</div>

<p>You can now troubleshoot and verify data integrity directly from the primary site, thanks to the new data management view that brings detailed verification status information to the primary Geo site. This enhancement eliminates the need to access secondary sites for basic verification and troubleshooting tasks.</p>
<p>Previously, this verification status was only accessible through the secondary site UI. Now, with the data management view on the primary site, you can:</p>
<ul>
<li>View detailed verification status for all replicable data types on the primary site</li>
<li>Perform data sanitization and troubleshooting tasks directly from the primary UI</li>
<li>Set up and verify your Geo configuration on the primary site before adding secondary sites</li>
</ul>
<p>This enhancement is the first step toward comprehensive self-serve troubleshooting with the UI, reducing the need to access multiple sites for routine maintenance and issue resolution.</p>
<h3 id="gitlab-duo-agent-platform-available-in-ultimate-trials">GitLab Duo Agent Platform available in Ultimate trials</h3>
<!-- categories: Acquisition, Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/free_trials/#gitlab-duo-agent-platform-trials">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20353">Related epic</a></li></ul>
</div>

<p>Teams evaluating GitLab can now test agentic AI capabilities that automate complex development workflows and reduce manual tasks. Sign up for a GitLab Ultimate trial and get access to Duo Agent Platform with 24 evaluation credits per user, enabling hands-on experience with autonomous task execution and multi-step workflow orchestration during a 30-day evaluation. Evaluation credits are available for 30 days from the provision date, so consider your team’s readiness before starting.</p>
<p><a href="https://gitlab.com/-/trial_registrations/new">Start your free trial</a>. Current paid customers can access evaluation credits through their account team. <a href="https://about.gitlab.com/sales/">Contact Sales</a> to learn more.</p>
<h3 id="zero-downtime-upgrades-now-supported-for-cloud-native-hybrid-deployments">Zero Downtime Upgrades now supported for Cloud Native Hybrid deployments</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/installation/upgrade/#upgrade-with-zero-downtime">Documentation</a></li></ul>
</div>

<p>Zero Downtime Upgrades are now officially supported for Cloud Native Hybrid deployments.</p>
<p>Enterprise customers require their DevSecOps platform to be available at all times, making upgrade-related downtime a significant operational concern.
Until now, Zero Downtime Upgrades were only supported for Linux package-based high availability deployments, which drove many customers toward VM-based architectures even when cloud-native Kubernetes deployments would have better suited their infrastructure strategy.</p>
<p>We’ve been upgrading our own Cloud Native Hybrid SaaS instances with zero downtime for years.
With this release, we’re bringing that same operational experience to self-managed customers running GitLab on Kubernetes.</p>
<p>The upgrade procedure has been comprehensively tested and is now fully documented, giving you the confidence to maintain availability during version upgrades.</p>
<h3 id="archive-a-group-and-its-content">Archive a group and its content</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/manage/#archive-a-group">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15019">Related epic</a></li></ul>
</div>

<p>Managing completed initiatives and abandoned projects is now easier.
You can now archive entire groups, including all subgroups and projects, in one action, eliminating the need to manually archive each project individually.</p>
<p>When you archive a group:</p>
<ul>
<li>All nested subgroups and projects are automatically archived.</li>
<li>Archived content moves to the <strong>Inactive</strong> tab with clear status badges.</li>
<li>Group data remains fully accessible in read-only mode for reference or restoration.</li>
<li>Write permissions are disabled across the archived group and its content.</li>
</ul>
<p>Beyond the <strong>Settings</strong> page, you can archive groups and projects directly from the actions menu in list views. No more navigating through multiple screens for simple administrative tasks.
This highly requested feature dramatically reduces administrative overhead while keeping your workspace organized with clear separation between active and inactive work.
Share your feedback in <a href="https://gitlab.com/groups/gitlab-org/-/epics/18616">epic 18616</a>.</p>
<h3 id="valkey-as-replacement-option-for-redis-beta">Valkey as replacement option for Redis (Beta)</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/redis/#use-valkey-instead-of-redis">Documentation</a></li></ul>
</div>

<p>Starting with GitLab 18.9, Valkey is bundled as an opt-in replacement for Redis in the Linux package.
Redis changed their license to AGPLv3, which is not suitable for open source customers. To guarantee security and maintainability for our
GitLab Self-Managed customers, we are transitioning from Redis to Valkey, a community-driven fork that maintains the permissive BSD license.</p>
<p>Transition timeline:</p>
<ul>
<li>GitLab 18.9 (this release): Valkey is bundled as an opt-in replacement (beta). You can switch from Redis to Valkey at your convenience. Valkey Sentinel support is included.</li>
<li>GitLab 19.0 (May 2026): Valkey becomes the default and Redis binaries are removed from the Linux package. Existing Redis configuration settings remain functional and are honored for backwards compatibility.</li>
</ul>
<p>This transition only affects the bundled Redis in Linux packages. Customers on scaled architectures using external Redis deployments can continue to use Redis.
We are monitoring the potential feature divergence between Redis and Valkey and will provide guidance as the ecosystem evolves.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="dependency-scanning-with-sbom-support-for-java-pomxml-manifest-files">Dependency Scanning with SBOM support for Java pom.xml manifest files</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/#manifest-fallback">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/585886">Related issue</a></li></ul>
</div>

<p>GitLab <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/">dependency scanning by using SBOM</a> now supports scanning Java <code>pom.xml</code> manifest files.
Previously, dependency scanning for Java projects using Maven required a graph file to be present.
Now, when a graph file is not available, the analyzer automatically falls back to scanning <code>pom.xml</code> files, extracting and reporting only direct dependencies for vulnerability analysis.
This improvement makes it easier for Java projects to enable dependency scanning without requiring a graph file.</p>
<p>To enable manifest fallback, set the <code>DS_ENABLE_MANIFEST_FALLBACK</code> CI/CD variable to <code>&quot;true&quot;</code>.</p>
<h3 id="dependency-scanning-with-sbom-support-for-python-requirementstxt-manifest-files">Dependency Scanning with SBOM support for Python requirements.txt manifest files</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/#manifest-fallback">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/586921">Related issue</a></li></ul>
</div>

<p>GitLab <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/">dependency scanning by using SBOM</a> now supports scanning Python <code>requirements.txt</code> manifest files.
Previously, dependency scanning for Python projects required a lock file to be present.
Now, when a lock file is not available, the analyzer automatically falls back to scanning <code>requirements.txt</code> files, extracting and reporting only direct dependencies for vulnerability analysis.
This improvement makes it easier for Python projects to enable dependency scanning without requiring a lock file.</p>
<p>To enable manifest fallback, set the <code>DS_ENABLE_MANIFEST_FALLBACK</code> CI/CD variable to <code>&quot;true&quot;</code>.</p>
<h3 id="restrict-personal-snippets-for-enterprise-users">Restrict personal snippets for enterprise users</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/manage/#restrict-personal-snippets-for-enterprise-users">Documentation</a></li></ul>
</div>

<p>Organizations using GitLab.com need to ensure that enterprise users don’t accidentally expose
sensitive code through personal snippets.
Previously, there was no way to prevent users from creating snippets in their personal namespace,
which can pose a security risk if snippets are inadvertently set to public.</p>
<p>Group Owners can now restrict personal snippet creation for enterprise users, helping maintain
tighter control over where code is shared.
When restricted, enterprise users cannot create snippets in their personal namespace.</p>
<h3 id="rapid-diffs-improves-performance-for-commit-changes">Rapid Diffs improves performance for commit changes</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/commits/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/17804">Related epic</a></li></ul>
</div>

<p>Reviewing commits with many changed files or substantial modifications can be slow.
Rapid Diffs technology now powers the commits page (<code>/-/commits/&lt;SHA&gt;</code>), delivering faster
loading times, smoother scrolling, and more responsive interactions.</p>
<p>With Rapid Diffs, you’ll notice:</p>
<ul>
<li>A pagination-free experience.</li>
<li>Faster initial load, so you can start working with code sooner.</li>
<li>A refreshed interface with a new file browser for quicker navigation between files.</li>
<li>Responsive interactions, even with large numbers of changed files.</li>
</ul>
<p>All existing functionality is preserved. As Rapid Diffs expands to other areas of GitLab, the same performance benefits will follow.</p>
<h3 id="support-for-bitbucket-cloud-api-tokens-in-import-api">Support for Bitbucket Cloud API tokens in import API</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/import/#import-repository-from-bitbucket-cloud">Documentation</a></li></ul>
</div>

<p>The GitLab import API now supports Bitbucket Cloud API tokens, providing a more secure way to
import repositories from Bitbucket Cloud.</p>
<p><a href="https://www.atlassian.com/blog/bitbucket/bitbucket-cloud-transitions-to-api-tokens-enhancing-security-with-app-password-deprecation">Atlassian has deprecated app passwords</a>
in favor of API tokens, and we’re planning to remove support for app passwords in 19.0.</p>
<p>Importing from Bitbucket Cloud through the GitLab UI is not affected by this change.</p>
<h3 id="centralized-security-governance-and-configuration">Centralized security governance and configuration</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/configuration/security_configuration_profiles/">Documentation</a></li></ul>
</div>

<p>Manage and visualize security scanner coverage across your organization. This release introduces security configuration profiles, starting with the secret detection profile.
Security teams now have a more powerful command center to secure your organization at scale.</p>
<p><strong>Profile-based security configuration</strong></p>
<p>Instead of manually editing YAML files for each project, you can now use preconfigured security configuration profiles that provide several advantages:</p>
<ul>
<li>Standardized governance: Preconfigured profiles apply appropriate boundaries without interrupting productivity. You can apply standardized security best practices, without requiring custom role configurations.</li>
<li>Scalable management: Apply the same profile across hundreds or thousands of projects with a single action.</li>
</ul>
<p>The secret detection profile is the first security configuration profile available. It provides the following advantages:</p>
<ul>
<li>Actively identifies and blocks secrets from being committed to your repositories.</li>
<li>One profile manages secret detection across your entire development workflow. No need to manage separate configurations for different trigger types.</li>
</ul>
<p><strong>Enhanced security inventory</strong></p>
<p>The security inventory has been upgraded to act as your primary dashboard to assess each group’s security posture:</p>
<ul>
<li>Group and project hierarchies: Easily distinguish between subgroups and projects in the inventory with clear iconography.</li>
<li>Bulk actions: A new <strong>Bulk Action</strong> menu allows you to apply or disable security scanner profiles across all selected projects and subgroups simultaneously.</li>
<li>Visual coverage status: Quickly identify gaps with color-coded status bars (Enabled, Not Enabled, or Failed) with tooltips for details.</li>
<li>Profile status indicators: See which trigger types are available in the profile details.</li>
</ul>
<h3 id="security-attributes">Security attributes</h3>
<!-- categories: Security Asset Inventories -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/attributes/">Documentation</a></li></ul>
</div>

<p>Security attributes, <a href="/releases/18/gitlab-18-6-released/#security-attributes-beta">introduced as a beta in GitLab 18.6</a>, are now generally available.</p>
<p>Security attributes allow security teams to apply business context to their projects, including business impact, application, business unit, internet exposure, and location. You can also create custom attribute categories to match your organization’s taxonomy. By applying these attributes, you can filter and prioritize the items in your security inventory based on risk posture and organizational context.</p>
<h3 id="security-dashboards-vulnerabilities-over-time-chart-improvements">Security dashboards: Vulnerabilities over time chart improvements</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/#vulnerabilities-over-time">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/19780">Related epic</a></li></ul>
</div>

<p>The <strong>Vulnerabilities over time</strong> chart is updated to provide a more accurate view of your vulnerability inventory.</p>
<p>The chart previously included vulnerabilities that were no longer detected, leading to inflated numbers that did not accurately represent the state of active vulnerabilities.</p>
<p>We are aware of two additional issues that may slightly alter counts in some cases. Follow <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/590022">issue 590022</a> and <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/590018">issue 590018</a> for updates.</p>
<h3 id="view-cicd-job-metrics-for-projects-limited-availability">View CI/CD job metrics for projects (limited availability)</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/ci_cd_analytics/#cicd-job-performance-metrics">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18548">Related epic</a></li></ul>
</div>

<p>GitLab CI/CD analytics now combines CI/CD pipeline and CI/CD job performance trends, which enables developers to identify
inefficient or problematic CI/CD jobs quickly. These capabilities are included directly in the GitLab UI, so developers
have the tools they need in context to identify and fix CI/CD performance problems that can significantly impact
development teams’ velocity and overall productivity. For platform administrators, the CI/CD jobs data in this view also
reduces the need to rely on external or custom-built CI/CD observability solutions when you operate GitLab at an enterprise
scale.</p>
<h3 id="add-timestamps-to-ci-job-logs">Add timestamps to CI job logs</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/job_logs/#timestamps">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/202293">Related issue</a></li></ul>
</div>

<p>You can now view timestamps on each CI job log line to identify performance bottlenecks and debug long-running jobs. Timestamps are displayed in UTC format. Use timestamps to troubleshoot performance issues, identify bottlenecks, and measure the duration of specific build steps. Requires GitLab Runner 18.7 or later for GitLab Self-Managed.</p>
<h3 id="cicd-catalog-component-analytics">CI/CD Catalog component analytics</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#view-catalog-resource-analytics">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/579458">Related issue</a></li></ul>
</div>

<p>Previously, teams lacked visibility into how CI/CD Catalog component projects were being used across their organization. Now you can view usage counts and adoption patterns at a high level, helping you understand which component projects are most valuable and optimize your catalog investments.</p>
<h3 id="view-security-reports-from-child-pipelines-in-merge-requests">View security reports from child pipelines in merge requests</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/downstream_pipelines/#view-child-pipeline-reports-in-merge-requests">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18377">Related epic</a></li></ul>
</div>

<p>You can now view security and compliance reports from child pipelines directly in merge request widgets. Previously, you had to manually navigate through multiple pipelines to identify security issues, creating inefficient workflows especially with monorepos and complex testing setups.</p>
<p>With this enhancement, the merge request widget displays reports from child pipelines directly alongside parent pipeline results, with each child pipeline’s reports presented individually and artifacts available for download. This provides a unified view of all security checks, significantly reducing time spent investigating failures and enables faster merge request reviews when using parent-child pipelines.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.9">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.9">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.9">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.8 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-8-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-8-released/</id><published>2026-01-15T00:00:00Z</published><updated>2026-01-15T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On January 15, 2026, GitLab 18.8 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-wesley-yarde">This month’s Notable Contributor: Wesley Yarde</h2>
<p>This month’s Notable Contributor is <a href="https://gitlab.com/WYarde">Wesley Yarde</a> for building a foundational new feature that allows organizations to disable SSH keys for their enterprise users.</p>
<p>Wesley’s contribution stands out for several reasons:</p>
<ul>
<li><strong>Security and compliance</strong>: This feature enables organizations to enforce SSH key requirements and enhance security across their enterprise.</li>
<li><strong>Foundational work</strong>: With no existing implementation to follow, Wesley had to collaborate extensively with the GitLab team to define requirements and architecture from scratch.</li>
<li><strong>First contribution</strong>: Remarkably, this was Wesley’s first contribution to GitLab—demonstrating exceptional ability to navigate a complex codebase and tackle a challenging feature.</li>
<li><strong>Enables future development</strong>: This work establishes the foundation for similar features like instance-level SSH key disabling and service account controls.</li>
</ul>
<p>The implementation spanned multiple merge requests (<a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/205020">!205020</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/210482">!210482</a>) with thorough review cycles. Despite the complexity, Wesley demonstrated outstanding collaboration and patience throughout the process.</p>
<p>“It was a pleasure to collaborate with Wesley on this feature request! While both the contributor and reviewers may have felt that the review process was overwhelming, both sides showed understanding and superb collaboration to ensure the implementation is solid and complete.” — <a href="https://gitlab.com/bdenkovych">Bogdan Denkovych</a>, who nominated Wesley for this recognition.</p>
<p>Congratulations Wesley, and thank you for this valuable contribution to GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-agent-platform-now-generally-available">GitLab Duo Agent Platform now generally available</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/585273">Related issue</a></li></ul>
</div>

<p>GitLab Duo Agent Platform is now generally available, bringing agentic AI orchestration
across your entire software development lifecycle. Unlike AI tools that speed up individual
tasks in isolation, the Agent Platform helps teams coordinate AI agents across
planning, building, securing, and shipping software, closing the gap between faster
individual work and the collaborative, multi-stage reality of software delivery.</p>
<p>The platform provides a central AI Catalog where teams can discover, manage, and share
agents and flows across their organization. Built-in foundational agents like Planner, Security Analyst,
and Data Analyst handle structured work at key decision points, while customizable flows
automate multi-step agents and tasks in development workflows
from issue to merge request, CI/CD migration, pipeline
troubleshooting, and code reviews.</p>
<p>With governance controls, usage visibility, and flexible deployment options including
self-hosted models for offline environments, organizations can adopt AI at scale with
the transparency and control they need.</p>
<p>GitLab Premium and Ultimate users can start using the Agent Platform today on GitLab.com and
GitLab Self-Managed instances with promotional <a href="/subscriptions/gitlab_credits/">GitLab Credits</a>.</p>
<h3 id="gitlab-duo-planner-agent-now-generally-available">GitLab Duo Planner Agent now generally available</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/planner/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/583008">Related issue</a></li></ul>
</div>

<p>The Planner Agent is now generally available! The Planner Agent is a foundational agent built to support product managers directly in GitLab.</p>
<p>Use the Planner Agent to create, edit, and analyze GitLab work items. Instead of manually chasing updates, prioritizing work, or summarizing planning data, the Planner Agent helps you analyze backlogs, apply frameworks like RICE or MoSCoW, and surface what truly needs your attention. It’s like having a proactive teammate who understands your planning workflow and works with you to make better, more efficient decisions.</p>
<p>Please provide your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/583008">issue 583008</a>.</p>
<h3 id="gitlab-duo-security-analyst-agent-now-generally-available">GitLab Duo Security Analyst Agent now generally available</h3>
<!-- categories: Vulnerability Management, Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/security_analyst_agent/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19659">Related epic</a></li></ul>
</div>

<p>The GitLab Duo Security Analyst Agent, <a href="https://about.gitlab.com/releases/2025/10/16/gitlab-18-5-released/#gitlab-security-analyst-agent-for-duo-agent-catalog-beta">introduced as beta in GitLab 18.5</a>, is now generally available in GitLab 18.8.</p>
<p>The Security Analyst Agent enables engineers to manage vulnerabilities through natural language commands in GitLab Duo Agentic Chat. Instead of manually clicking through vulnerability dashboards or writing custom scripts for bulk operations, security teams can now triage, assess, and provide guidance for vulnerabilities in Chat conversations.</p>
<p>As a foundational agent, the Security Analyst Agent is available by default in GitLab Duo Agentic Chat, with no manual setup required.</p>
<h3 id="auto-dismiss-irrelevant-vulnerabilities-with-vulnerability-management-policies">Auto-dismiss irrelevant vulnerabilities with vulnerability management policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/vulnerability_management_policy/#auto-dismiss-policies">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10894">Related epic</a></li></ul>
</div>

<p>Security teams can now automatically dismiss vulnerabilities that don’t apply to their organization using vulnerability management policies. Dismissing vulnerabilities that are not relevant to your organization reduces noise and helps developers focus on vulnerabilities that pose actual risk.</p>
<p>You can create policies to auto-dismiss vulnerabilities based on:</p>
<ul>
<li>File path</li>
<li>Directory</li>
<li>Identifier (CVE, CWE, or OWASP)</li>
</ul>
<p>Auto-dismissed vulnerabilities appear in the merge request’s security widget with an <strong>Auto-dismissed</strong> label and are tracked in the vulnerability report activity with a dismissal reason for audit purposes.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="turn-the-gitlab-duo-agent-platform-on-or-off">Turn the GitLab Duo Agent Platform on or off</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/turn_on_off/#turn-gitlab-duo-agent-platform-on-or-off">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/583980">Related issue</a></li></ul>
</div>

<p>You can now turn on or off the GitLab Duo Agent Platform, including GitLab Duo Chat (Agentic), agents,
and flows for a top-level group or the entire instance. When this setting is turned off, these features are not available.</p>
<h3 id="group-access-control-for-gitlab-duo-features">Group access control for GitLab Duo features</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo/configure/access_control/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/585355">Related issue</a></li></ul>
</div>

<p>You can now define group access rules to control who can use GitLab Duo features, enabling flexible adoption strategies from immediate organization-wide access to phased rollouts.</p>
<p>This feature provides granular governance control so you can scale adoption at your pace while maintaining security and compliance.</p>
<h3 id="gitlab-duo-agent-platform-for-gitlab-duo-self-hosted-offline-licensing-now-generally-available">GitLab Duo Agent Platform for GitLab Duo Self-Hosted (offline licensing) now generally available</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/configure_duo_features/#configure-access-to-the-gitlab-duo-agent-platform">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/19125">Related epic</a></li></ul>
</div>

<p>GitLab Duo Agent Platform is now generally available for Duo Self-Hosted. This feature is available to GitLab Self-Managed customers with an offline license, and uses seat-based pricing.</p>
<p>Self-Managed administrators can configure <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#compatible-models">compatible models</a> for use with GitLab Duo Agent Platform. Administrators using AWS Bedrock or Azure OpenAI can also configure Anthropic Claude or OpenAI GPT models.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="cc-support-in-advanced-sast-now-generally-available">C/C++ support in Advanced SAST now generally available</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/advanced_sast_cpp/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/18369">Related epic</a></li></ul>
</div>

<p>Cross-file, cross-function scanning support for C/C++ is now generally available in GitLab Advanced SAST.</p>
<h3 id="multiple-container-scanning">Multiple Container Scanning</h3>
<!-- categories: Container Scanning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/container_scanning/multi_container_scanning/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/3139">Related epic</a></li></ul>
</div>

<p>In GitLab 18.8, we released multi-container scanning in Beta.</p>
<p>Users are now able to pass in an array of images to be scanned as part of many Container Scanning jobs.</p>
<h3 id="centralized-credential-management-api-for-group-owners">Centralized credential management API for group owners</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/groups/#credentials-inventory-management">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16343">Related epic</a></li></ul>
</div>

<p>The Credentials Inventory API is now available for Enterprise users on GitLab.com. This adds credential management capabilities previously only available on self-hosted instances, and enables organizations to better manage and secure their authentication tokens and keys.</p>
<p>The Credentials Inventory API provides programmatic access to view credentials across your organization, including:</p>
<ul>
<li>Personal Access Tokens (PATs)</li>
<li>Group Access Tokens (GrATs)</li>
<li>Project Access Tokens (PrATs)</li>
<li>SSH Keys</li>
<li>GPG Keys</li>
</ul>
<p>This API complements the existing Credentials Inventory UI, allowing enterprise administrators to automate credential management tasks that previously required manual intervention. With the Credentials Inventory API, you can:</p>
<ul>
<li>Automate security workflows: Build automated processes to monitor, audit, and revoke credentials.</li>
<li>Enforce credential policies: Identify and revoke unused or expired tokens.</li>
<li>Improve security posture: Reduce the risk of credential misuse through regular auditing.</li>
<li>Streamline operations: Integrate credential management into your existing security tools and workflows.</li>
</ul>
<h3 id="group-owners-can-disable-ssh-keys-for-enterprise-users">Group Owners can disable SSH keys for enterprise users</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/ssh_advanced/#disable-ssh-keys-for-enterprise-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/30343">Related issue</a></li></ul>
</div>

<p>Group Owners can now disable SSH keys for all enterprise users in their group. When disabled, users cannot add new SSH keys and their existing keys are deactivated. This applies to all enterprise users in the group, including those with the Owner role.</p>
<p>Thank you to <a href="https://gitlab.com/WYarde">Wesley Yarde</a> for helping build this feature!</p>
<h3 id="gitlab-runner-188">GitLab Runner 18.8</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.8 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s New</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39163">Improved error messages for job inputs interpolation errors</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39172"><code>WaitForServicesTimeout</code> no longer supports <code>-1</code> to disable timeout</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39170">Custom URL breaks submodule authentication with <code>insteadOf</code> rules</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39122">Custom runner short-token on Windows 2025 uses 9 characters instead 8</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/38669">PowerShell default helper image missing for Docker executor in GitLab Runner 17.8.3</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/37906">GitLab Runner with Docker Autoscaler does not reuse available cache volumes</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/37344">VirtualBox leaves dangling VM when job is cancelled</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-8-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-8-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.8">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.8">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.8">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.7 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-7-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-7-released/</id><published>2025-12-18T00:00:00Z</published><updated>2025-12-18T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On December 18, 2025, GitLab 18.7 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-david-aniebo">This month’s Notable Contributor: David Aniebo</h2>
<p>We’re excited to recognize David Aniebo as our 18.7 Notable Contributor for his impactful contributions to GitLab
product planning capabilities and the <a href="https://contributors.gitlab.com">contributor platform</a>.</p>
<p>David’s work on <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/207549">improving work item list functionality</a>
demonstrates his technical expertise and dedication to enhancing the user experience for GitLab planning features.
This contribution helps teams better organize and manage their work items, making project planning more efficient for
thousands of GitLab users.</p>
<p>Beyond code contributions, David has been a consistent supporter of the contributor platform, helping to improve the
experience for community contributors. His collaborative approach and responsiveness have earned praise from multiple
team members across different groups.</p>
<p>“David has done some fantastic work helping out with some Product Planning group efforts, and we are very thankful for
his contributions,” shared Nick Brandt, Engineering Manager for Product Planning.</p>
<p>Thank you, David, for your valuable contributions to GitLab and for being such a collaborative member of our community!
We look forward to your continued involvement.</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="secret-validity-checks-improved-and-generally-available">Secret validity checks improved and generally available</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/validity_check/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16890">Related epic</a></li></ul>
</div>

<p>When a valid secret is leaked in one of your repositories, you must react quickly.
To help you prioritize urgent threats, validity checks automatically verify whether leaked credentials can still be used.</p>
<p>In GitLab 18.7, we’ve improved:</p>
<ul>
<li>Vendor integrations: Integrated with Google Cloud, AWS, and Postman, along with existing support for GitLab tokens.</li>
<li>Report filtering: Filter the Vulnerability Report by validity status (active, inactive, possibly active) to quickly triage and prioritize secret findings.</li>
<li>Group-level API: Turn on validity checks across all projects in a group with a single API call and streamline rollout across your organization.</li>
</ul>
<p>In this release, validity checks are generally available.</p>
<h3 id="separate-model-selection-for-agentic-chat-and-agents">Separate model selection for Agentic Chat and agents</h3>
<!-- categories: Model Personalization -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/model_selection/#select-a-model-for-a-feature">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/19998">Related issue</a></li></ul>
</div>

<p>Separate models can now be selected for Agentic Chat and for all other agents for top-level groups or instances.
This provides more options for model selection for GitLab Duo Agent Platform.</p>
<h3 id="improved-gitlab-duo-and-sdlc-trends-dashboard">Improved GitLab Duo and SDLC trends dashboard</h3>
<!-- categories: DevOps Reports -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/duo_and_sdlc_trends/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19629">Related epic</a></li></ul>
</div>

<p>The GitLab Duo and SDLC trends dashboard delivers improved analytics capabilities to measure the impact of GitLab Duo
on software delivery. The dashboard now provides 6-month trend analysis across GitLab Duo feature adoption, pipeline
performance, and common development metrics such as deployment frequency and mean time to merge.</p>
<p>You can now track code generation volumes and IDE or language trends for GitLab Duo Code Suggestions, and observe
as your teams adopt new GitLab Duo Agent Platform flows. Enhanced user-level metrics enable teams to gain deeper
insight into the key Duo features providing continuous value.</p>
<p>A new <a href="/api/graphql/reference/#aiinstanceusagedata">endpoint for instance-level AI usage</a>
is now available for instance administrators to extract all Duo data from either Postgres (3-month retention) or
ClickHouse.</p>
<p>Powered by the <a href="/integration/clickhouse/">ClickHouse integration</a>, this dashboard delivers sub-second query performance across millions of
data points. For self-managed instances, see improved recommendations and configuration guidance for
<a href="/integration/clickhouse/">ClickHouse integration</a>.</p>
<h3 id="additional-planner-agent-features-available-in-beta">Additional Planner Agent features available in beta</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/planner/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576618">Related issue</a></li></ul>
</div>

<p>The Planner Agent now includes create and edit features in beta! The Planner Agent is a foundational agent built
to support product managers directly in GitLab. Use the Planner Agent to create, edit, and analyze GitLab work items.</p>
<p>Instead of manually chasing updates, prioritizing work, or summarizing planning data, the Planner Agent helps you
analyze backlogs, apply frameworks like RICE or MoSCoW, and surface what truly needs your attention. It’s like
having a proactive teammate who understands your planning workflow and works with you to make better, more efficient
decisions.</p>
<p>Please provide your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576622">issue 576622</a>.</p>
<h3 id="dynamic-input-options-in-cicd-pipelines">Dynamic input options in CI/CD pipelines</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/inputs/#define-conditional-input-options-with-specinputsrules">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18546">Related epic</a></li></ul>
</div>

<p>You can set up your CI/CD pipelines to make use of dynamic input selection when creating new pipelines through the
intuitive web interface.</p>
<p>Now, with dynamic input options, you can configure your pipelines so that input selection options update dynamically
based on previous selections. For example, when you select an input in one dropdown list, it automatically populates
a list of related input options in a second dropdown list.</p>
<p>With CI/CD inputs, you can:</p>
<ul>
<li>Trigger pipelines with pre-configured inputs, reducing errors and streamlining deployments.</li>
<li>Enable your users to select different inputs than the defaults from dropdown menus.</li>
<li>Now have cascading dropdown lists where options dynamically update based on previous selections.</li>
</ul>
<p>This dynamic capability enables you to create more intelligent, context-aware input configurations that guide you
through the pipeline creation process, reducing errors and ensuring only valid combinations of inputs are selected.</p>
<h3 id="sast-false-positive-detection-with-ai-beta">SAST False Positive Detection with AI (Beta)</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/false_positive_detection/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18977">Related epic</a></li></ul>
</div>

<p>Security teams often spend significant time investigating SAST findings that turn out to be false positives,
diverting attention from genuine security risks.</p>
<p>In GitLab 18.7, we’re introducing AI-powered SAST False Positive Detection to help teams focus on the
vulnerabilities that matter. When a security scan runs, GitLab Duo automatically analyzes each Critical and High
severity SAST vulnerability to determine the likelihood that it’s a false positive.</p>
<p>The AI assessment appears directly in the vulnerability report, giving security engineers immediate context to
make faster, more confident triage decisions.</p>
<p>Key capabilities include:</p>
<ul>
<li>Automatic analysis: False positive detection runs automatically after each security scan with no manual triggering required.</li>
<li>Manual trigger option: Users can manually trigger false positive detection for individual vulnerabilities on the vulnerability details page for on-demand analysis.</li>
<li>Focused on high-impact findings: Scoped to Critical and High severity vulnerabilities to maximize signal-to-noise improvement.</li>
<li>Contextual AI reasoning: Each assessment includes an explanation of why the finding may or may not be a true positive, based on code context and vulnerability characteristics.</li>
<li>Seamless workflow integration: Results surface directly in the vulnerability report alongside existing severity, status, and remediation information.</li>
</ul>
<p>This feature is available as a free beta for Ultimate customers and must be enabled in your group or project settings.
We welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/583697">issue 583697</a>.</p>
<h3 id="new-security-dashboards-enabled-by-default">New security dashboards enabled by default</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/20213">Related epic</a></li></ul>
</div>

<p>The new security dashboards have been updated and modernized. The dashboards were previously available on GitLab.com,
and are now enabled by default on GitLab Dedicated and GitLab Self-Managed.</p>
<p>The new features include:</p>
<ul>
<li>A vulnerabilities over time chart that supports:
<ul>
<li>Filtering based on project or report type.</li>
<li>Grouping by report type and severity.</li>
<li>Direct links to vulnerabilities in the vulnerability report.</li>
</ul>
</li>
<li>A risk score module that calculates the estimated risk for a group or project based on a GitLab algorithm.</li>
</ul>
<p>Please note that using the new dashboard requires Elasticsearch.</p>
<h3 id="instance-setting-to-control-publishing-of-components-to-the-cicd-catalog">Instance setting to control publishing of components to the CI/CD Catalog</h3>
<!-- categories: Pipeline Composition, Component Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/continuous_integration/#restrict-cicd-catalog-publishing">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/582044">Related issue</a></li></ul>
</div>

<p>Administrators of GitLab Self-Managed and GitLab Dedicated can now restrict which projects are allowed to publish
components to the CI/CD Catalog. This new setting enables organizations to maintain a curated, trusted CI/CD Catalog
by controlling what components can be published.</p>
<p>Administrators can now specify an allowlist of projects authorized to publish components. When the allowlist is
populated with projects, only those projects can publish components. This prevents unauthorized or unapproved
components from cluttering the list of published components and ensures all components meet organizational standards
and security requirements.</p>
<p>This addresses a key governance challenge for enterprise customers who want to maintain control over their CI/CD
component ecosystem while enabling their teams to discover and reuse approved components.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="advanced-search-available-for-both-merge-request-descriptions-and-comments">Advanced search available for both merge request descriptions and comments</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/advanced_search/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/572590">Related issue</a></li></ul>
</div>

<p>Advanced search now returns matching results from both merge request descriptions and comments. Previously, users
had to search merge request descriptions and comments separately.</p>
<p>This improvement provides a more streamlined and comprehensive search workflow for GitLab merge requests.</p>
<h3 id="support-for-agentsmd-with-gitlab-duo-chat-agentic-in-ides">Support for <code>AGENTS.md</code> with GitLab Duo Chat (Agentic) in IDEs</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/customize/agents_md/">Documentation</a></li></ul>
</div>

<p>GitLab Duo Chat now supports the <code>AGENTS.md</code> specification, an emerging standard for providing context and
instructions to AI coding assistants.</p>
<p>Unlike custom rules that are only available to GitLab Duo, <code>AGENTS.md</code> files are also available for other AI
coding tools to use. This makes your build commands, testing instructions, code style guidelines, and
project-specific context available to any AI tool that supports the specification.</p>
<p>GitLab Duo Chat in your IDE automatically applies available instructions from <code>AGENTS.md</code> files in your repository,
set at the user or workspace level. For monorepos, you can place <code>AGENTS.md</code> files in subdirectories to provide
tailored instructions for different components.</p>
<h3 id="ai-agent-and-flow-versioning">AI agent and flow versioning</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/ai_catalog/#agent-and-flow-versions">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/20022">Related epic</a></li></ul>
</div>

<p>When you enable an agent or flow from the AI Catalog in your project, GitLab now pins it to a specific version.</p>
<p>This means your AI-powered workflows stay stable and predictable even as catalog items evolve, so you can test and
validate new versions before you upgrade.</p>
<h3 id="ai-gateway-timeout-setting">AI gateway timeout setting</h3>
<!-- categories: Model Personalization -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/configure_duo_features/#configure-timeout-for-the-ai-gateway">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/579183">Related issue</a></li></ul>
</div>

<p>For GitLab Duo Self-Hosted, you can now configure a timeout value for requests to self-hosted models.</p>
<p>This value can range from 60 to 600 seconds.</p>
<h3 id="report-agents-and-flows-to-administrators">Report agents and flows to administrators</h3>
<!-- categories: AI Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/report_abuse/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/578591">Related issue</a></li></ul>
</div>

<p>You can now report agents and flows to instance administrators when you encounter problematic content. Submit an
abuse report that includes your feedback, and an administrator can choose to hide or delete the harmful item.</p>
<p>Use this feature to keep your agents and flows safe across your entire organization.</p>
<h3 id="configure-foundational-agent-availability">Configure foundational agent availability</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/#turn-foundational-agents-on-or-off">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/583815">Related issue</a></li></ul>
</div>

<p>You can now control which foundational agents are available in your top-level group or instance.</p>
<p>Turn all foundational agents on or off by default, or toggle individual agents to align with your organization’s
security and governance policies.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="enhanced-active-trial-experience-for-self-managed">Enhanced active trial experience for Self-Managed</h3>
<!-- categories: Acquisition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/free_trials/#view-remaining-trial-period-days">Documentation</a></li></ul>
</div>

<p>GitLab Self-Managed users on an Ultimate trial can now access their active trial status, remaining days, accessible
features, and expiration notifications from the left sidebar.</p>
<p>These enhancements help eliminate confusion about trial duration and make it easier to evaluate paid features before purchase.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="advanced-vulnerability-management-available-in-self-managed-and-dedicated-environments">Advanced vulnerability management available in Self-Managed and Dedicated environments</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#advanced-vulnerability-management">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/532703">Related issue</a></li></ul>
</div>

<p>Advanced vulnerability management is available to all Ultimate customers and includes the following features:</p>
<ul>
<li>Grouping data by OWASP 2021 categories in the vulnerability report for a project or group.</li>
<li>Filtering based on a vulnerability identifier in the vulnerability report for a project or group.</li>
<li>Filtering based on the reachability value in the vulnerability report for a project or group.</li>
<li>Filtering by policy violation bypass reason.</li>
</ul>
<h3 id="data-analyst-foundational-agent-powered-by-glql-beta">Data Analyst foundational agent powered by GLQL (Beta)</h3>
<!-- categories: Custom Dashboards Foundation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/data_analyst/">Documentation</a></li></ul>
</div>

<p>The Data Analyst Agent is a specialized AI assistant that helps you query, visualize, and surface data across the
GitLab platform. It uses GitLab Query Language (GLQL) to retrieve and analyze data, then provides clear, actionable
insights about your projects.</p>
<p>You can find example prompts and use cases in the documentation.</p>
<p>This agent is currently in beta status, so please share your thoughts in the
<a href="https://gitlab.com/gitlab-org/gitlab/-/issues/574028">feedback issue</a> to help us improve and provide insight into
where you’d like to see this go next.</p>
<h3 id="filter-and-comment-on-compliance-violations">Filter and comment on compliance violations</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_violations_report/">Documentation</a></li></ul>
</div>

<p>The compliance violations report provides a centralized view of all compliance violations across your
organization’s projects. The report displays comprehensive details about control violations, related audit events,
and enables teams to track violation statuses effectively.</p>
<p>In GitLab 18.7, we’ve introduced powerful filtering capabilities to help you quickly find the violations that
matter most. You can now filter by:</p>
<ul>
<li>Status</li>
<li>Project</li>
<li>Control</li>
</ul>
<p>Teams can now also collaborate directly on resolving violations through comments. Within the violation record
itself, teams can:</p>
<ul>
<li>Tag team members for investigation</li>
<li>Discuss remediation approaches</li>
<li>Document findings—all within the violation record itself.</li>
</ul>
<p>Together, these features evolve the compliance violations report into a dynamic collaboration platform,
enabling organizations to efficiently discover, analyze, and resolve compliance violations in their groups and
projects.</p>
<h3 id="compliance-framework-controls-show-accurate-scan-status">Compliance framework controls show accurate scan status</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/#gitlab-compliance-controls">Documentation</a></li></ul>
</div>

<p>GitLab compliance controls can be used in compliance frameworks. Controls are checks against the configuration or
behavior of projects that are assigned to a compliance framework.</p>
<p>Previously, controls related to scanners (for example, checking if SAST is enabled) required your projects to have
a passing pipeline in the default branch before the compliance centre displayed the success or failure status of your
controls.</p>
<p>In GitLab 18.7, we have changed this behavior to show whether your controls have succeeded or failed based solely on
scan completion, regardless of the overall pipeline status. This helps ease confusion because the compliance status
of your controls reflects whether security scans ran and completed, not whether the entire pipeline passed.</p>
<h3 id="accessibility-improvements-for-heading-anchor-links">Accessibility improvements for heading anchor links</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/463385">Related issue</a></li></ul>
</div>

<p>Heading anchor links now announce with the same text as their corresponding heading, improving the experience for
screen reader users. The links also appear after the heading text, providing a cleaner visual presentation.</p>
<p>These changes make it easier for all users to understand and navigate to specific sections of documentation,
issues, and other content.</p>
<h3 id="warn-mode-in-merge-request-approval-policies">Warn mode in merge request approval policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#warn-mode">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19595">Related epic</a></li></ul>
</div>

<p>Security teams can now use warn mode to test and validate the impact of security policies before applying
enforcement or to roll out soft gates for accelerating your security program. Warn mode helps to reduce developer
friction during security policy rollouts, while continuing to ensure detected vulnerabilities are addressed.</p>
<p>When you create or edit a
<a href="/user/application_security/policies/merge_request_approval_policies/">merge request approval policy</a>,
you can now choose between <code>warn</code> or <code>enforce</code> enforcement options.</p>
<p>Policies in warn mode generate informative bot comments without blocking merge requests. Optional approvers can
be designated as points of contact for policy questions. This approach enables security teams to assess policy
impact and build developer trust through transparent, gradual policy adoption.</p>
<p>Clear indicators in merge requests tell users when policies are in <code>warn</code> or <code>enforce</code> mode, and audit events
track policy violations and dismissals for compliance reporting. Developers can bypass scan finding and license
policy violations by providing a reasoning for the policy dismissal, creating a collaborative feedback loop between
developers and security teams for more effective policy enablement.</p>
<p>When policy violations are detected on a project’s default branch, policies identify vulnerabilities that violate
the policy in the vulnerability reports for projects and groups. The dependency list for projects also displays
badges that indicate license compliance policy violations.</p>
<p>Additionally, you can use the API to query a filtered list of policy violations on the default branch in a project.</p>
<h3 id="service-accounts-available-during-trials-on-gitlabcom">Service accounts available during trials on GitLab.com</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a></li></ul>
</div>

<p>Service accounts are now available during trial periods, allowing you to test automation and integration workflows
before purchasing.</p>
<h3 id="gitlab-runner-187">GitLab Runner 18.7</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.7 today!</p>
<p>GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab
instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service
included with GitLab.</p>
<h4 id="whats-new">What’s New</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39161">Configurable taskscaler reservation throttling</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38378">Enable <code>FF_TIMESTAMPS</code> by default</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39150">Shell executor fails on existing Git repository if a relative <code>builds_dir</code> is specified</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39140">Authentication failure in GitLab Runner 18.6.0 on subsequent pipeline runs (SSH executor)</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39123">Authentication failure in GitLab Runner 18.6.0 on subsequent pipeline runs (shell executor)</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39129">Docker 29 API compatibility issues</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39124">Variables that reference file variables no longer work in GitLab Runner 18.6.0 with the shell executor</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39050">GitLab Runner now supports Windows 11 2025 (25H2)</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38365">ECR credential helper is not working with the Docker Autoscaler executor</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27040">Job timeouts now properly enforced in GitLab Runner</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-7-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-7-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h3 id="view-child-pipeline-reports-in-merge-requests">View child pipeline reports in merge requests</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/downstream_pipelines/#view-child-pipeline-reports-in-merge-requests">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18311">Related epic</a></li></ul>
</div>

<p>Teams using parent-child CI/CD pipelines previously had to navigate through multiple pipeline pages to check test
results, code quality reports, and infrastructure changes, disrupting their merge request review workflow.</p>
<p>You can now view and download all reports in a unified view, including unit tests, code quality checks, Terraform
plans, and custom metrics, without leaving the merge request.</p>
<p>This eliminates context switching and accelerates merge request velocity, giving teams the ability to deliver
features faster without compromising quality.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.7">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.7">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.7">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.6 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-6-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-6-released/</id><published>2025-11-20T00:00:00Z</published><updated>2025-11-20T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On November 20, 2025, GitLab 18.6 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-samaksh-agarwal">This month’s Notable Contributor: Samaksh Agarwal</h2>
<p>Every developer using the GitLab Development Kit (GDK) benefits from Samaksh’s
<a href="https://gitlab.com/gitlab-org/gitlab-development-kit/-/merge_requests/5227">contribution to improve the readability of <code>gdk status</code></a>.
While this enhancement may appear simple on the surface, it demonstrates exceptional attention to
developer experience and understanding of how small improvements can have
widespread impact.</p>
<p>The improved readability of <code>gdk status</code>
saves time for every developer using GDK and considerably increases the
accessibility of one of the core pieces of the development environment. This
type of contribution shows maturity in understanding how to make meaningful
improvements to the developer workflow.</p>
<p>Reflecting on his contributions, Samaksh shares: “GitLab Development Kit (or GDK)
has been my choice of active contributions for now, because I personally like to
work on the side that makes experience for other contributors easy and convenient.
And that’s the kind of developer I wanna be. The one that can use his skills to
make others’ lives easier.”</p>
<p>When asked about his experience contributing to GitLab, Samaksh notes: “I’d like
to recommend GitLab to everyone who wants to try a fresh and quality open source
experience. When I first started contributing to GitLab, I was a bit overwhelmed
but everyone in the community was so supportive, helpful and welcoming that it all
went away. I am absolutely in love with the community and how they do things around
here. From writing excellent documentation, to maintaining peak code quality, to
genuinely appreciating their contributors, GitLab community is absolutely wonderful.”</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="the-new-gitlab-ui-designed-for-productivity">The new GitLab UI: Designed for productivity</h3>
<!-- categories: Design Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/tutorials/gitlab_navigation/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17279">Related epic</a></li></ul>
</div>

<p>Introducing a smarter, more intuitive GitLab UI that puts developer productivity first.</p>
<p>The new side-by-side design uses contextual panels to keep you in your workflow, reducing unnecessary clicks and helping teams work faster. Customize your workspace, maximize screen real estate, and enjoy a cleaner, more dynamic experience that adapts to your workflow.</p>
<p>GitLab is committed to continuous improvement, so please share your thoughts in the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/577554">feedback issue</a> and help shape the future of GitLab.</p>
<h3 id="exact-code-search-in-limited-availability">Exact code search in limited availability</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/exact_code_search/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17918">Related epic</a></li></ul>
</div>

<p>With this release, exact code search is now in limited availability. You can use exact match and regular expression modes to search for code across an entire instance, in a group, or in a project. Exact code search is built on top of the open-source search engine Zoekt.</p>
<p>For GitLab.com, exact code search is enabled by default. For GitLab Self-Managed, an administrator must <a href="/integration/zoekt/#install-zoekt">install Zoekt</a> and <a href="/integration/zoekt/#enable-exact-code-search">enable exact code search</a>.</p>
<p>This feature is in active development. We welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420920">issue 420920</a>!</p>
<h3 id="cicd-components-can-reference-their-own-metadata">CI/CD Components can reference their own metadata</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/expressions/#component-context">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438275">Related issue</a></li></ul>
</div>

<p>Previously, CI/CD components couldn’t reference their own metadata, such as version numbers
or commit SHAs, within their configuration. This lack of information could cause you to use configuration with
hardcoded values or complex workarounds. Writing configuration this way can
lead to version mismatches when components build resources such as Docker images,
because there’s no way to automatically tag those resources with the component’s compatible version.</p>
<p>In this release, we’ve introduced the ability to access component context with the <code>spec:component</code> keyword.
You can now build and publish versioned resources like Docker images when you release a component version,
ensuring everything is in sync, eliminating manual version management, and preventing version mismatches.</p>
<h3 id="support-dynamic-job-dependencies-in-needsparallelmatrixciyamlmdparallelmatrix">Support dynamic job dependencies in <code>needs:[parallel:matrix](../../ci/yaml.md#parallelmatrix)</code></h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/matrix_expressions/#matrix-expressions-in-needsparallelmatrix">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/423553">Related issue</a></li></ul>
</div>

<p><a href="/ci/yaml/#parallelmatrix"><code>parallel:matrix</code></a> makes it possible
to easily run multiple jobs in parallel with different requirements, for example
to test code for multiple platforms at the same time. But if you wanted later jobs
to use <code>needs:parallel:matrix</code> to depend on specific parallel jobs, the configuration was complex
and inflexible.</p>
<p>Now, with the new <code>$[[matrix.VARIABLE]]</code> expression introduced as a Beta feature,
users can create dynamic 1-1 dependencies which makes complex <code>parallel:matrix</code> configurations
much easier to manage. This can help you create faster pipelines, with efficient artifact handling,
better scalability, and cleaner configuration. This feature is particularly valuable for multi-platform builds,
Terraform deployments across multiple environments, and any workflow requiring parallel processing across multiple dimensions.</p>
<h3 id="gitlab-security-analyst-agent-available-as-a-foundational-agent">GitLab Security Analyst Agent available as a foundational agent</h3>
<!-- categories: Vulnerability Management, Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/security_analyst_agent/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19659">Related epic</a></li></ul>
</div>

<p>The GitLab Security Analyst Agent is now a foundational agent in GitLab Duo Agentic Chat. This means that users do not have to manually add the GitLab Security Analyst agent from the AI Catalog, and this agent is available by default for GitLab Self-Managed and GitLab Dedicated as well.
This specialized assistant provides AI-native vulnerability management and security analysis, helping you investigate findings, triage vulnerabilities, and navigate compliance requirements without any setup.</p>
<p>This feature is in beta, and we welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576916">issue 576916</a>.</p>
<h3 id="model-selection-for-gitlab-duo-agentic-chat-in-vs-code-and-jetbrains-ides">Model selection for GitLab Duo Agentic Chat in VS Code and JetBrains IDEs</h3>
<!-- categories: Editor Extensions, Model Personalization -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/model_selection/#select-a-model-for-a-feature">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19345">Related epic</a></li></ul>
</div>

<p>Easily choose your preferred AI model right in GitLab Duo Chat, now available in the VS Code and JetBrains IDEs. Use the dropdown list in the GitLab Duo Chat panel to select among Claude, GPT, and other supported models. Model availability is managed by your organization admins, ensuring you have access to the right models for your workflow.</p>
<h3 id="security-dashboard-upgrade-beta-on-gitlabcom">Security dashboard upgrade (beta on GitLab.com)</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18509">Related epic</a></li></ul>
</div>

<p>The new security dashboards have been updated and modernized. The initial features in the beta release include:</p>
<ul>
<li>A vulnerabilities over time chart that supports:
<ul>
<li>Filtering based on project or report type.</li>
<li>Grouping by report type and severity.</li>
<li>Direct links to vulnerabilities in the vulnerability report.</li>
</ul>
</li>
<li>A risk score module that calculates the estimated risk for a group or project based on a GitLab algorithm.</li>
</ul>
<p>The new security dashboards released in 18.6 are currently available on GitLab.com only.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="gitlab-mcp-server-available-in-beta">GitLab MCP server available in <a href="/policy/development_stages_support/#beta">beta</a></h3>
<!-- categories: MCP Server -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/model_context_protocol/mcp_server/">Documentation</a></li></ul>
</div>

<p>The GitLab MCP server is available in <a href="/policy/development_stages_support/#beta">beta</a>. With the GitLab MCP server, you can use AI assistants like Claude Code, Cursor, and other MCP-compatible tools to interact with your GitLab projects, issues, merge requests, and pipelines, all without building custom integrations for each tool.</p>
<p>To get started, <a href="/user/gitlab_duo/turn_on_off/#turn-on-beta-and-experimental-features">turn on beta and experimental features</a> in your GitLab Duo settings.</p>
<p>The GitLab MCP server provides key tools covering issues, merge requests, and pipelines, and we continue to refine it based on user feedback. This feature might have incomplete functionality or bugs. Try it out and share feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/561564">issue 561564</a>.</p>
<h3 id="advanced-search-available-for-both-issue-descriptions-and-comments">Advanced search available for both issue descriptions and comments</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/advanced_search/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/513146">Related issue</a></li></ul>
</div>

<p>Advanced search now returns matching results from both issue descriptions and comments. Previously, users had to search issue descriptions and comments separately. This improvement provides a more streamlined and comprehensive search workflow for GitLab issues.</p>
<h3 id="gemini-25-flash-model-compatible-with-gitlab-duo-agent-platform-for-gitlab-duo-self-hosted">Gemini 2.5 Flash model compatible with GitLab Duo Agent Platform for <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#supported-models">GitLab Duo Self-Hosted</a></h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#compatible-models">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/572353">Related issue</a></li></ul>
</div>

<p>You can now use the Gemini 2.5 Flash model on GitLab Duo Agent Platform with GitLab Duo Self-Hosted.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="rate-limit-for-listing-project-and-group-members">Rate limit for listing project and group members</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/rate_limit_on_projects_api/#configure-rate-limits-on-listing-project-members">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/580116">Related issue</a></li></ul>
</div>

<p>We’ve introduced rate limiting for the <code>/api/v4/projects/:id/members/all</code> and <code>/api/v4/groups/:id/members/all</code>
endpoints to improve API stability and ensure fair resource usage across all users.
The <code>GET /api/v4/projects/:id/members/all</code> and <code>GET /api/v4/groups/:id/members/all</code>
endpoints now have a rate limit of 200 requests per minute per user.</p>
<p>This change helps protect GitLab instances from excessive API usage that could impact performance for all users.
The limit of 200 requests per minute provides ample capacity for normal usage patterns while preventing potential abuse or unintentional resource exhaustion.
If your integrations or scripts use this endpoint, ensure they handle rate limit responses appropriately (HTTP 429) and implement retry logic with backoff as needed.
Most users should not be affected by this change under normal usage patterns.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="increased-rule-coverage-for-secret-push-protection-and-pipeline-secret-detection">Increased rule coverage for secret push protection and pipeline secret detection</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/detected_secrets/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576279">Related issue</a></li></ul>
</div>

<p>We’ve added support for 40 new rules to GitLab’s pipeline secret detection. Some existing rules have also been updated
to improve quality and reduce false positives. These changes are released in <a href="https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/releases/v7.20.1">version 7.20.1</a> of the secrets analyzer.</p>
<h3 id="code-owners-now-supports-inherited-group-memberships">Code Owners now supports inherited group memberships</h3>
<!-- categories: Code Review Workflow, Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/codeowners/advanced/#group-inheritance-and-eligibility">Documentation</a></li></ul>
</div>

<p>Code ownership is critical for maintaining code quality and ensuring the right
people review changes to sensitive parts of your codebase. However, managing
Code Owners in organizations with complex group structures has been challenging.
Previously, to reference a group in your <code>CODEOWNERS</code> file, that group had to be
directly invited to each specific project, even if it was already a member of
a parent group.</p>
<p>Code Owners now supports groups with inherited memberships as eligible approvers:</p>
<ul>
<li>Groups with inherited access through parent group membership are recognized as valid code owners when Code Owners approvals are enabled.</li>
<li>No need to invite groups directly to every project.</li>
<li>Existing <code>CODEOWNERS</code> files continue to work without changes.</li>
<li>Same level of control over who can approve changes to critical code paths.</li>
</ul>
<p>This change reduces administrative overhead while maintaining the security and
approval requirements that Code Owners provide.</p>
<h3 id="toggle-draft-merge-request-visibility-on-your-homepage">Toggle draft merge request visibility on your homepage</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/homepage/#set-your-display-preferences">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/551475">Related issue</a></li></ul>
</div>

<p>On your homepage, draft merge requests can clutter your merge request view and
distract from work that’s ready for action. Previously, you could not filter them
out.</p>
<p>You can now hide draft merge requests from the <strong>Your merge requests</strong> section on
your homepage by using the display preferences. When you hide draft merge requests:</p>
<ul>
<li>They are excluded from the active count.</li>
<li>A footer displays the number of filtered draft merge requests.</li>
<li>Your preference is saved automatically.</li>
</ul>
<p>This change helps you focus on merge requests that need immediate attention.</p>
<h3 id="new-gitlab-cli-features-and-improvements">New GitLab CLI features and improvements</h3>
<!-- categories: GitLab CLI -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/cli/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/cli/-/releases">Related issue</a></li></ul>
</div>

<p>The GitLab CLI (glab) provides new features and improvements to enhance your
GitLab workflow from the command line:</p>
<ul>
<li><strong>Enhanced authentication</strong>: Auto-detect GitLab URLs from git remotes during login, making it easier to authenticate against the correct GitLab instance.</li>
<li><strong>Flexible pipeline monitoring</strong>: View any pipeline by ID with the <code>ci-view</code> command.</li>
<li><strong>GPG key management</strong>: Manage GPG keys directly from the CLI with new commands.</li>
<li><strong>Project member management</strong>: Add, remove, and update project members from the command line.</li>
<li><strong>Improved Git integration</strong>: Enhanced git-credential plugin with support for all token types.</li>
<li><strong>Modern user interface</strong>: Updated prompt library for better confirmation dialogs and consistent GitLab theme across UI components.</li>
</ul>
<p>For a full list of changes and updates, see <a href="https://gitlab.com/gitlab-org/cli/-/releases">CLI releases</a>.
To get started with the GitLab CLI or update to the latest version,
see the <a href="https://gitlab.com/gitlab-org/cli/#installation">installation guide</a>.</p>
<h3 id="webhook-notifications-for-merge-request-review-re-requests">Webhook notifications for merge request review re-requests</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#re-request-review-events">Documentation</a></li></ul>
</div>

<p>Webhook integrations are critical for automating workflows and keeping
external systems synchronized with GitLab merge request activities.
However, when reviewers were re-requested for merge requests, webhook
consumers had no way to identify which specific reviewer was being
re-requested, making it difficult to trigger appropriate notifications
or automation.</p>
<p>Webhook payloads for merge requests now include a <code>re_requested</code> attribute
in reviewer data that clearly indicates which reviewer was re-requested:</p>
<ul>
<li>Set to <code>true</code> for the specific reviewer being re-requested.</li>
<li>Set to <code>false</code> for all other reviewers.</li>
</ul>
<p>This improvement enables more precise automation around the merge request
review process. Webhook consumers can send targeted notifications,
update external tracking systems, and trigger appropriate workflows when
reviews are re-requested.</p>
<h3 id="web-ide-support-for-offline-gitlab-self-managed-environments">Web IDE support for offline GitLab Self-Managed environments</h3>
<!-- categories: Web IDE, Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/web_ide/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15146">Related issue</a></li></ul>
</div>

<p>GitLab Self-Managed administrators in offline or tightly controlled network environments can now configure a custom Web IDE extension host domain, enabling full Web IDE functionality without external internet access.</p>
<p>Previously, the Web IDE required connectivity to <code>.cdn.web-ide.gitlab-static.net</code> to load VS Code extensions and functionality. This requirement blocked Web IDE adoption for security-conscious organizations, government and public sector customers, and enterprises with strict network policies.</p>
<p>With this update, administrators can configure their GitLab instance to serve Web IDE assets directly, removing the dependency on external domains. You can now:</p>
<ul>
<li>Use the full Web IDE feature set in completely offline environments.</li>
<li>Enable the Extension Marketplace with a custom extension registry service.</li>
<li>Enable Markdown preview, code editing, and GitLab Duo Chat within the Web IDE in isolated networks.</li>
</ul>
<h3 id="webhook-triggers-for-system-initiated-approval-resets">Webhook triggers for system-initiated approval resets</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#system-initiated-merge-request-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/553070">Related issue</a></li></ul>
</div>

<p>Integrating GitLab with external systems through webhooks is critical for automated
workflows and keeping teams informed about merge request status changes. However, when
GitLab automatically resets approvals (such as when new commits are pushed to a merge
request with “Reset approvals on push” enabled), external systems could not distinguish
these system-initiated events from manual user actions.</p>
<p>GitLab now includes enhanced webhook payloads that clearly identify system-initiated approval
resets. When approvals are automatically reset, webhooks now include:</p>
<ul>
<li>A <code>system</code> field set to <code>true</code>.</li>
<li>A <code>system_action</code> field that provides specific context about why the reset occurred, such as <code>approvals_reset_on_push</code> or <code>code_owner_approvals_reset_on_push</code>.</li>
</ul>
<p>This means your webhook integrations can now distinguish between manual approval changes and
automatic system resets, enabling more sophisticated automation workflows that respond
appropriately to the specific context of each approval change.</p>
<h3 id="gitlab-duo-planner-agent-now-available-by-default">GitLab Duo Planner Agent now available by default</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/planner/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/580924">Related issue</a></li></ul>
</div>

<p>The GitLab Duo Planner Agent is now available by default in the agent dropdown in GitLab Duo Chat, eliminating the need to manually add it from the AI Catalog. With full context of your work items, epics, issues, and tasks, the Planner Agent can now assist you at both the group and project levels.</p>
<p>Get started with [<strong><a href="/user/duo_agent_platform/agents/foundational_agents/planner/#example-prompts">example prompts</a></strong>](../../user/duo_agent_platform/agents/foundational_agents/planner.md#example-prompts) to see how the Planner Agent can help you break down complex work, create implementation plans, and organize your team’s objectives.</p>
<p>This feature is in beta, and we welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576622">issue 576622</a>.</p>
<h3 id="helm-chart-registry-no-more-1000-chart-limit">Helm chart registry: No more 1,000 chart limit</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/helm_repository/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/545919">Related issue</a></li></ul>
</div>

<p>GitLab’s Helm chart registry previously generated metadata responses on-the-fly, which created performance bottlenecks when repositories contained large numbers of charts. To maintain system stability, we enforced a hard limit of the 1,000 most recent charts. This limit caused frustrating 404 errors when platform teams tried to access older chart versions.</p>
<p>Platform engineers were forced to implement complex workarounds, like splitting charts across multiple repositories, manually managing chart retention policies, or maintaining separate chart storage solutions. These workarounds added operational overhead and fragmented deployment workflows, making it harder to maintain centralized chart governance.</p>
<p>In GitLab 18.6, we’ve eliminated the 1,000 chart limitation by pre-computing metadata responses and storing them in object storage. This architectural change delivers both unlimited chart access and improved performance, as metadata is generated once in background jobs rather than on every request.</p>
<h3 id="warn-mode-in-merge-request-approval-policies-beta">Warn mode in merge request approval policies (Beta)</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#warn-mode">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19595">Related epic</a></li></ul>
</div>

<p>Security teams can now use warn mode to test and validate the impact of security policies before applying enforcement, reducing developer friction during security policy rollouts.</p>
<p>When you create or edit a <a href="/user/application_security/policies/merge_request_approval_policies/">merge request approval policy</a>, you can now choose between <code>warn</code> or <code>enforce</code> enforcement options.</p>
<p>Policies in warn mode generate informative bot comments without blocking merge requests. Optional approvers can be designated as points of contact for policy questions. This approach enables security teams to assess policy impact and build developer trust through transparent, gradual policy adoption.</p>
<p>Clear indicators in merge requests tell users when policies are in <code>warn</code> or <code>enforce</code> mode, and audit events track policy violations and dismissals for compliance reporting. Developers can dismiss vulnerabilities while providing reasoning for the dismissal, creating a collaborative approach to security policy management.</p>
<h3 id="security-attributes-beta">Security attributes (Beta)</h3>
<!-- categories: Security Asset Inventories -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/attributes/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19597">Related epic</a></li></ul>
</div>

<p>Security teams can now apply business context to projects by leveraging security attributes.</p>
<p>Security attributes are organized by categories including business impact (with structured pre-defined selections), application, business unit, internet exposure, and location. Alternatively, you can create your own attribute categories and define labels within those categories.</p>
<p>By applying these attributes across your projects, you can much more quickly search, filter, and identify which projects within the security inventory that require action based on risk posture and organizational context. You may now:</p>
<ul>
<li>Identify projects that are mission critical and requiring better scan coverage</li>
<li>Review scan coverage by application or business unit</li>
<li>Search and filter based on the attributes applied to your projects</li>
<li>Quickly locate projects that contribute to applications which are publicly accessible/exposed</li>
</ul>
<h3 id="exceptions-to-bypass-merge-request-approval-policies">Exceptions to bypass merge request approval policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18114">Related epic</a></li></ul>
</div>

<p>Organizations can now designate specific users, groups, roles, or custom roles that can bypass merge request approval policies in case critical situations occur. This capability provides flexibility for emergency responses, while maintaining comprehensive audit trails and governance controls.</p>
<p><strong>Emergency bypass with accountability</strong>: Designated users can bypass approval requirements during critical incidents, security hotfixes, or urgent production issues. When emergencies strike, authorized personnel can merge or push changes immediately while the system captures detailed justification and audit information for compliance review.</p>
<p><strong>Key capabilities include:</strong></p>
<ul>
<li><strong>Documented bypass process</strong>: When authorized users invoke a policy bypass, they must provide detailed reasoning using an intuitive modal interface, ensuring every exception is properly documented with context.</li>
<li><strong>Comprehensive audit integration</strong>: Every bypass generates detailed audit events including user identity, policy context, reasoning, and timestamps for complete visibility into exception usage patterns.</li>
<li><strong>Flexible configuration</strong>: Define exception permissions for policies using YAML or UI configuration, supporting individual users, GitLab groups, standard roles, and custom roles.</li>
<li><strong>Git-based push exceptions</strong>: Users with pre-approved policy exceptions may push directly when invoking the push bypass option <code>security_policy.bypass_reason</code>.</li>
</ul>
<p>This feature eliminates the need to entirely disable security policies during emergencies, providing a controlled path for urgent changes while preserving organizational governance and audit requirements.</p>
<h3 id="designate-an-account-succession-beneficiary">Designate an account succession beneficiary</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/account/account_succession/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/330669">Related issue</a></li></ul>
</div>

<p>You can now designate an account beneficiary permission to manage your GitLab account if you are incapacitated or unavailable. To access your account, the beneficiary must provide appropriate legal documentation. This feature helps ensure the continuity of your work and projects while preventing unauthorized access.</p>
<h3 id="group-owners-can-update-primary-emails-for-enterprise-users">Group Owners can update primary emails for enterprise users</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/enterprise_user/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/425837">Related issue</a></li></ul>
</div>

<p>Group owners can can now update the primary email address of enterprise users in their group. Updates can be made through the Users API. Previously, each enterprise user had to manually update their own email address. This change makes it easier to manage enterprise users at scale.</p>
<h3 id="gitlab-runner-186">GitLab Runner 18.6</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.6 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s New</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/39013">Implement minimal job confirmation API</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38488">GitLab Runner does not expand the variables in the Docker image platform option</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37879">Helper sidecar container fails to upload cache to S3 bucket from another account</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37878">Automatically canceled job continues execution and fails</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36060">Missing UTF8 BOM in the generated PowerShell script allows remote code execution using merge request title with character Ä</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/30109">Intermittent Kubernetes API server request failures with Kubernetes executor</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26624">When using a Kubernetes executor, jobs with large commit messages fail</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-6-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-6-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.6">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.6">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.6">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.5 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-5-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-5-released/</id><published>2025-10-16T00:00:00Z</published><updated>2025-10-16T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On October 16, 2025, GitLab 18.5 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-jose-gabriel-companioni-benitez">This month’s Notable Contributor: Jose Gabriel Companioni Benitez</h2>
<p>In his blog post <a href="https://compacompila.com/posts/gitlab-open-source-community/">“How GitLab Can Boost Your Professional Career”</a>,
Jose shares: “For me, the main advantage that GitLab offers, from a professional development
point of view, is that it is open source.” He adds, “For GitLab, it’s important
that anyone can contribute, and for that reason, they have taken the contributor
onboarding process very seriously.”</p>
<p>Jose’s journey from first-time contributor in September to Notable Contributor
in October demonstrates the power of the GitLab collaborative community. Through
active participation in community office hours, Discord discussions, and pairing
sessions, Jose found a supportive environment that helped him quickly grow to a
level 3 contributor with diverse contributions spanning <a href="https://gitlab.com/gitlab-org/cli/-/merge_requests/2392">documentation</a>,
<a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2690">code</a>, and community support.</p>
<p>The GitLab community offers a welcoming space where contributors
support one another and grow together. Whether you’re just starting your open-source
journey or looking to deepen your skills, our community is here to help you succeed.</p>
<p>To learn more about contributing, see the <a href="https://contributors.gitlab.com/">GitLab Contributor Platform</a>.</p>
<p>Thank you, Jose, for your outstanding work! 🚀</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-planner-a-specialized-agent-and-product-manager-team-member-beta">GitLab Duo Planner, a specialized agent and Product Manager team member (beta)</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/foundational_agents/planner/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576618">Related issue</a></li></ul>
</div>

<p>Collaborate with GitLab Duo Planner, a GitLab Duo agent built to support product managers directly within GitLab.
Instead of manually chasing updates, prioritizing work, or summarizing planning data, GitLab Duo Planner helps you analyze backlogs,
apply frameworks like RICE or MoSCoW, and surface what truly needs your attention.
It’s like having a proactive teammate who understands your planning workflow and works with you to make better, faster decisions.
This feature is currently in beta. Please provide feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576622">issue 576622</a>.</p>
<h3 id="gitlab-security-analyst-agent-for-duo-agent-catalog-beta">GitLab Security Analyst Agent for Duo Agent Catalog (beta)</h3>
<!-- categories: Vulnerability Management, Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/agents/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19659">Related epic</a></li></ul>
</div>

<p>Agents in GitLab Duo Agent Platform can be used to perform tasks and answer complex questions
within GitLab. Users can either create custom agents to accomplish specific tasks, like creating merge requests or reviewing code,
or discover GitLab agents using the AI Catalog.</p>
<p>In GitLab 18.5, we are releasing the GitLab Security Analyst Agent as a beta feature, available in the AI Catalog. To use the GitLab Security Analyst Agent in specific projects, select and enable the agent in GitLab Duo Agentic Chat. The agent can perform the following tasks:</p>
<ul>
<li>List all vulnerabilities in a given project.</li>
<li>Get detailed vulnerability information, including CVE data and EPSS scores.</li>
<li>Confirm and dismiss vulnerabilities.</li>
<li>Update vulnerability severity levels.</li>
<li>Revert vulnerability status back to <code>detected</code>.</li>
<li>Create vulnerability issues, or link vulnerabilities to existing issues.</li>
</ul>
<p>With the GitLab Security Analyst Agent, users can perform tedious security workflows through AI-powered automation and intelligent analysis, enabling engineers to focus on genuine threats while the GitLab Security Analyst Agent handles repetitive assessment and documentation. Please note that the GitLab Security Analyst Agent using GitLab Duo Chat is only available for Ultimate customers with the GitLab Duo add-on.</p>
<p>This feature is in beta, and we welcome your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/576916">issue 576916</a>.</p>
<h3 id="maven-virtual-registry-now-available-in-beta">Maven virtual registry now available in beta</h3>
<!-- categories: Virtual Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/virtual_registry/maven/#manage-virtual-registries">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14137">Related epic</a></li></ul>
</div>

<p>GitLab 18.5 introduces a comprehensive web-based interface for Maven virtual registry management. Previously, platform engineers could only configure and manage virtual registries through API calls, which makes routine maintenance tasks cumbersome and requires specialized knowledge.</p>
<p>This web-based approach significantly reduces operational overhead for platform engineering teams. Common tasks, like clearing stale cache entries, reordering upstreams for performance optimization, and testing connectivity are now point-and-click operations. Development teams gain better visibility into their dependency configuration, enabling more informed discussions about build performance and security policies.</p>
<p>The Maven virtual registry remains in beta for GitLab Premium and Ultimate customers. Current beta limitations include a maximum of 20 virtual registries per top-level group and 20 upstreams per virtual registry.</p>
<p>We invite enterprise customers to participate in the Maven virtual registry beta program to help shape the final release. Please consider sharing feedback and suggestions in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/543045">issue 543045</a>.</p>
<h3 id="pick-up-where-you-left-off-on-the-new-personal-homepage">Pick up where you left off on the new personal homepage</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/tutorials/personal_homepage/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16657">Related epic</a></li></ul>
</div>

<p>You can now access a new personal homepage that consolidates all your important GitLab activities in one place, making it easier to pick up where you left off. The homepage brings together your to-do items, assigned issues, merge requests, review requests, and recently viewed content, helping you navigate GitLab’s large surface area and stay focused on what matters the most to you.</p>
<h3 id="gpt-5-now-available-as-a-model-option-for-gitlab-duo-agentic-chat">GPT-5 now available as a model option for GitLab Duo Agentic Chat</h3>
<!-- categories: Model Personalization -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/agentic_chat/#select-a-model">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19124">Related epic</a></li></ul>
</div>

<p>OpenAI GPT-5 is now available as a GitLab AI Vendor model when selecting a model for GitLab Duo Agent Platform. When configured by Owners of a top-level group on GitLab.com and instance Administrators on Self-Managed and Dedicated, end-users can select to use GPT-5 with GitLab Duo features. Top-level owners and administrators can continue to set organization-wide model preferences through namespace or instance settings, or allow end-user to choose from all available GitLab AI Vendor models.</p>
<p>To get started using GPT-5, select your preferred model from the model dropdown list in GitLab Duo Chat.</p>
<h3 id="instance-wide-compliance-and-security-policy-management">Instance-wide compliance and security policy management</h3>
<!-- categories: Compliance Management, Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/compliance_security_policy_management/">Documentation</a></li></ul>
</div>

<p>Enterprise users want to manage their <a href="/user/compliance/compliance_frameworks/centralized_compliance_frameworks/">compliance frameworks</a> and <a href="/user/application_security/policies/enforcement/compliance_and_security_policy_groups/">security policies</a> across multiple top-level groups.
This is often the case when all groups in an instance:</p>
<ul>
<li>Share the same compliance frameworks. For example, when all projects in a group must adhere to the ISO 27001 standard.</li>
<li>Enforce similar security policies. For example, when all groups share the same pipeline execution policy.</li>
</ul>
<p>With GitLab 18.5, we introduce compliance and security policy groups to centralize the management of security policies and compliance frameworks on an instance for GitLab Self-Managed
and Dedicated instances. With this release, you can now create, configure, and allocate compliance frameworks and
security policies from a single top-level group and enforce them across all of the other top-level groups across your instance.</p>
<p>With a compliance and security policy group, you have a single source of truth
where you can manage and edit your compliance frameworks and security policies.
Security and compliance users within the group can then apply compliance frameworks and security policies to all the projects across the instance.</p>
<p>Compliance and security policy groups make it easier to manage and enforce your compliance and security
needs across your instance. However, groups still retain the ability to create their own compliance
frameworks and security policies to address specific situations or workflows that can arise in those groups.</p>
<p>This feature is for GitLab Self-Managed and Dedicated customers. GitLab.com customers can
manage frameworks and policies centrally within a single top-level group or namespace using security policy projects.</p>
<p>Learn more about compliance and security policy groups for <a href="/user/compliance/compliance_frameworks/centralized_compliance_frameworks/">compliance frameworks</a> and <a href="/user/application_security/policies/enforcement/compliance_and_security_policy_groups/">security policies</a>.</p>
<h3 id="dast-authentication-scripts">DAST authentication scripts</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/configuration/authentication_scripts/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17018">Related epic</a></li></ul>
</div>

<p>You can now add scripts to your CI/CD configurations to automate DAST authentication workflows. Authentication scripts enable automating complex authentication flows, including support for time-based, one-time passwords (OTP MFA).</p>
<p>This enhancement helps your team maintain critical security controls while conducting thorough, automated security scans. By supporting real-world authentication scenarios, scripts reduce friction and ensure accurate security assessments of production software.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="additional-triggers-for-cli-agents">Additional triggers for CLI agents</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/triggers/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/567787">Related issue</a></li></ul>
</div>

<p>You can now trigger CLI agents using additional events to give you more flexibility and control over where and when your agents take action across your projects. Along with the existing <strong>mention</strong> trigger, you can use:</p>
<ul>
<li><strong>Assign</strong>: Trigger agents when a merge request or issue is assigned.</li>
<li><strong>Assign reviewer</strong>: Trigger agents when a reviewer is added to a merge request.</li>
</ul>
<h3 id="gitlab-duo-agent-platform-for-gitlab-duo-self-hosted-now-in-beta">GitLab Duo Agent Platform for GitLab Duo Self-Hosted now in beta</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/configure_duo_features/#configure-access-to-the-gitlab-duo-agent-platform">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/558083">Related issue</a></li></ul>
</div>

<p>GitLab Duo Agent Platform is now in beta for GitLab Duo Self-Hosted. This feature is available to all Self-Managed GitLab Duo Enterprise customers. Self-Managed instance administrators using AWS Bedrock or Azure OpenAI can configure Anthropic Claude or OpenAI GPT models for use with GitLab Duo Agent Platform. Self-Hosted administrators can also configure</p>
<p><a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#compatible-models">compatible models</a></p>
<p>to use with GitLab Duo Agent Platform.</p>
<h3 id="codestral-now-supported-for-gitlab-duo-chat-classic">Codestral now supported for GitLab Duo Chat (Classic)</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#supported-models">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/550266">Related issue</a></li></ul>
</div>

<p>You can now use Mistral Codestral on</p>
<p>GitLab Duo Self-Hosted</p>
<p>for classic Duo Chat. This model is supported for GitLab Duo Self-Hosted customers on GitLab Self-Managed instances.</p>
<h3 id="gpt-oss-models-compatible-with-gitlab-duo-agent-platform-for-gitlab-duo-self-hosted">GPT OSS Models compatible with GitLab Duo Agent Platform for GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#compatible-models">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19348">Related epic</a></li></ul>
</div>

<p>You can now use GPT OSS models on GitLab Duo Agent Platform with GitLab Duo Self-Hosted.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="enhanced-admin-area-groups-list">Enhanced <strong>Admin</strong> area groups list</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/admin_area/#administering-groups">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17783">Related epic</a></li></ul>
</div>

<p>We’ve upgraded the <strong>Admin</strong> area groups list to provide a more consistent experience for GitLab administrators:</p>
<ul>
<li>Delayed deletion protection: Group deletions now follow the same safe deletion flow used throughout GitLab, preventing accidental data loss.</li>
<li>Faster interactions: Filter, sort, and paginate groups without page reloads for a more responsive experience.</li>
<li>Consistent interface: The groups list now matches the look and behavior of other group lists across GitLab.</li>
</ul>
<p>This update brings the administrator experience in line with GitLab design standards, and adds important safety features to protect your data. Future enhancements to group management will automatically appear in all group lists throughout the platform.</p>
<h3 id="updated-navigation-experience-for-groups">Updated navigation experience for groups</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/#view-a-group">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13790">Related epic</a></li></ul>
</div>

<p>We’ve made changes to the group overview list to deliver a more consistent and efficient experience across GitLab.
These improvements make it easier to navigate your groups and projects while providing more valuable information at a glance:</p>
<ul>
<li>Richer project information: Projects now display stars, forks, issues, merge requests, and relevant dates, giving you a complete activity overview at a glance.</li>
<li>Streamlined actions: Edit or delete groups and projects directly from the overview using the actions menu. Archived and pending deletion items appear in the <strong>Inactive</strong> tab.</li>
<li>Consistent experience: The group overview now matches the look and behavior of other group and project lists throughout GitLab for a more intuitive experience.</li>
</ul>
<p>These enhancements save time by putting more information and actions at your fingertips. This update also lays the groundwork for future features like bulk editing and advanced filtering options.</p>
<h3 id="improved-inactive-item-management-for-groups-and-projects">Improved inactive item management for groups and projects</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/#view-inactive-projects">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/526211">Related issue</a></li></ul>
</div>

<p>The <strong>Inactive</strong> tab now consistently displays all inactive items in one unified location across GitLab. This includes archived projects, projects pending deletion, and groups pending deletion.
This tab is available on the group overview page, as well as in group and project lists throughout <strong>Your work</strong>, <strong>Explore</strong>, and the <strong>Admin</strong> area.
All users with the appropriate permissions can view inactive items, while only group owners and project owners and maintainers can take further actions on them.
As part of this update, a new <code>active</code> parameter is now available in both the Projects and Groups REST APIs, and GraphQL APIs.</p>
<p>Managing inactive content is a critical part of maintaining a GitLab instance.
This update makes it easier to find and recover content that was archived or is pending deletion, allowing you to maintain better control over your GitLab resources while reducing the risk of accidentally losing valuable work.
The clear separation of active from inactive content also provides a more focused search experience when navigating through groups and projects across all areas of GitLab.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="new-vulnerability-management-features-in-gitlab-duo-agentic-chat">New vulnerability management features in GitLab Duo Agentic Chat</h3>
<!-- categories: Vulnerability Management, Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/agentic_chat/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19639">Related epic</a></li></ul>
</div>

<p>GitLab Duo Agentic Chat is an enhanced version of GitLab Duo Chat. It searches,
retrieves, and combines information from multiple sources across your GitLab projects to
provide more thorough and relevant answers. A few of its use cases include
the ability to search through projects, read and list files, and autonomously create and change
files based on the prompt provided to GitLab Duo Chat.</p>
<p>In GitLab 18.5, the Agentic Chat use case expands to include managing
vulnerabilities from your security scanners. By adding vulnerability management tools to
Agentic Chat, this transforms tedious security workflows through AI-powered automation and intelligent analysis,
enabling security professionals to efficiently triage, manage, and remediate vulnerabilities through natural language commands.
This eliminates hours of manual clicking through vulnerability dashboards and streamlining complex bulk operations that previously required custom scripts or tedious manual work.</p>
<p>With the new vulnerability management tools added to GitLab Duo Chat, Ultimate users with GitLab Duo can perform
the following:</p>
<ul>
<li>List all vulnerabilities in a given project.</li>
<li>Get detailed vulnerability information, including CVE data and EPSS scores.</li>
<li>Confirm and dismiss vulnerabilities.</li>
<li>Update vulnerability severity levels.</li>
<li>Revert vulnerability status back to <code>detected</code>.</li>
<li>Create vulnerability issues, or link vulnerabilities to existing issues.</li>
</ul>
<p>These tools transform security workflows from reactive manual triage into intelligent remediation,
letting engineers focus on genuine threats while AI handles repetitive assessment and documentation. Vulnerability management using GitLab Duo Chat is only available for Ultimate customers with the GitLab Duo add-on.</p>
<h3 id="cc-support-for-advanced-sast">C/C++ support for Advanced SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/advanced_sast_cpp/">Documentation</a></li></ul>
</div>

<p>We have added beta support for C/C++ to GitLab Advanced SAST.</p>
<p>To use this new cross-file, cross-function scanning support, <a href="/user/application_security/sast/advanced_sast_cpp/">enable C/C++ support</a>.</p>
<p>We welcome feedback on this feature. If you have any questions, comments, or would like to engage with our team, please see this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/575671">feedback issue</a>.</p>
<h3 id="secret-validity-checks-is-in-beta">Secret validity checks is in beta</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/validity_check/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16927">Related epic</a></li></ul>
</div>

<p>Pipeline secret detection alerts you to exposed credentials, like passwords or API keys, in your projects. However, until GitLab 18.5, you had to manually check whether each detection represented an active token. This could make effectively triaging detections difficult and time consuming.</p>
<p>Now that validity checks is in beta, enable it to display the status of detected GitLab secrets. Active secrets can be used to impersonate legitimate activity, so you should rotate them as soon as possible. To watch validity checks in action, see the <a href="https://www.youtube.com/playlist?list=PL05JrBw4t0Ko8uOgubcYqmTTMGs0zWQRt">validity checks playlist</a>.</p>
<h3 id="increased-rule-coverage-for-secret-push-protection-and-pipeline-secret-detection">Increased rule coverage for secret push protection and pipeline secret detection</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/detected_secrets/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/573973">Related issue</a></li></ul>
</div>

<p>New rules have been added to the GitLab pipeline secret detection. Some existing rules have also been updated
to improve quality and reduce false positives. These changes are released in <a href="https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/releases/v7.15.0">version 7.15.0</a> of the secrets analyzer.</p>
<h3 id="customizable-detection-logic-for-advanced-sast">Customizable detection logic for Advanced SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/customize_rulesets/">Documentation</a></li></ul>
</div>

<p>You can now create custom security detection rules tailored to your organization’s specific security requirements and coding patterns with GitLab Advanced SAST. This feature enables your security teams to define custom vulnerability patterns beyond the predefined ruleset, allowing them to detect application-specific security issues.</p>
<p>For more information, see <a href="/user/application_security/sast/customize_rulesets/">Customize rulesets</a>.</p>
<h3 id="advanced-sast-diff-based-scanning-in-merge-requests">Advanced SAST diff-based scanning in merge requests</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/#diff-based-scanning">Documentation</a></li></ul>
</div>

<p>You can now perform diff-based scans that analyze only the code changes in a merge request with GitLab Advanced SAST, significantly reducing scan times compared to full repository scans. By scanning just the Git diff rather than the entire codebase, your teams can integrate security testing more seamlessly into their development workflow without sacrificing speed or adding friction to the merge request process.</p>
<p>We are working to enable this performance improvement by default; this is tracked in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/546359">issue 546359</a>.</p>
<h3 id="control-requests-for-external-control-statuses">Control requests for external control statuses</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/#ping-enabled-setting">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/521757">Related issue</a></li></ul>
</div>

<p>External controls can be attached to requirements when creating compliance frameworks in GitLab.</p>
<p>By default, GitLab automatically requests the status of external controls from external systems every 12 hours
during compliance scans, setting the control status to ‘pending’. External systems then respond by using the
external controls API to update the status to ‘pass’ or ‘fail’.</p>
<p>In GitLab 18.5, you can now disable this automatic 12-hour ping by turning off the <strong>Ping enabled</strong> setting when
configuring external controls. When the 12-hour ping is disabled:</p>
<ul>
<li>GitLab will not automatically request status updates from external systems.</li>
<li>The external control displays a <strong>Disabled</strong> badge in the compliance framework UI.</li>
<li>You have complete control over when external control statuses are updated using the external controls API.</li>
</ul>
<p>This prevents the system from resetting the external control statuses to ‘pending’ and gives you full control over
status update timing.</p>
<h3 id="dependency-scanning-in-limited-availability">Dependency scanning in limited availability</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15961">Related epic</a></li></ul>
</div>

<p>In GitLab 18.5, we released a new dependency scanning template that works with the dependency scanning analyzer.
The analyzer now generates a dependency scanning report containing all component vulnerabilities.
Scan Execution Policy (SEP) and Pipeline Execution Policy (PEP) support the new template.</p>
<p>To use the new template, import <code>Jobs/Dependency-Scanning.v2.gitlab-ci.yml</code>.</p>
<p>This feature is available on GitLab.com and self-managed instances, though it’s marked as limited availability because official support for self-managed is not yet available.
GitLab.com users can use it immediately.</p>
<p>We welcome feedback on this feature. If you have questions, comments, or would like to engage with our team, please see this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523458">feedback issue</a>.</p>
<h3 id="variable-expansion-in-environment-deployment_tier">Variable expansion in environment <code>deployment_tier</code></h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#environmentdeployment_tier">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/365402">Related issue</a></li></ul>
</div>

<p>You can now use CI/CD variables in the <code>environment:deployment_tier</code> field, making it easier to
dynamically configure deployment tiers based on pipeline conditions.</p>
<h3 id="configure-status-lifecycles-for-issues-and-tasks">Configure status lifecycles for issues and tasks</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/work_items/status/#lifecycles">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/555528">Related issue</a></li></ul>
</div>

<p>Previously, issues and tasks were required to share the same set of configured statuses. In this release, we’ve added support for configuring status lifecycles, enabling you to define distinct workflows for issues and tasks in your projects. With status mapping built into the workflow, you can seamlessly transition an issue or task to a new set of statuses with no bulk editing required when changing work item types.</p>
<p>Share your feedback and help us improve the feature by <a href="https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/35235">contributing to our feedback issue</a> with your use cases and suggestions.</p>
<h3 id="format-markdown-tables-in-the-plain-text-editor">Format Markdown tables in the plain text editor</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/#tables">Documentation</a></li></ul>
</div>

<p>Misaligned Markdown tables are difficult to read and edit, even though they render correctly.</p>
<p>The new <strong>Reformat table</strong> feature in the plain text editor’s toolbar realigns table
columns with a single click, preserving alignment settings and indentation. To use it:</p>
<ul>
<li>Select any Markdown table in wiki pages, issues, or merge requests.</li>
<li>From the <strong>More options</strong> menu, select <strong>Reformat table</strong>.</li>
</ul>
<p>This makes documentation maintenance faster and collaboration easier when working with
complex tables.</p>
<h3 id="view-child-task-completion-in-issues">View child task completion in issues</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/tasks/#view-tasks">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/520886">Related issue</a></li></ul>
</div>

<p>You can now track the progress of issues directly from the child items widget, giving you a status overview at a glance. This enhancement provides real-time visibility into potential bottlenecks when work is already in progress, helping you quickly identify at-risk items and make timely adjustments before sprint deadlines are threatened.</p>
<h3 id="expose-original-severity-from-the-vulnerabilities-api">Expose original severity from the vulnerabilities API</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#pipelinesecurityreportfinding">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/557940">Related issue</a></li></ul>
</div>

<p>The vulnerabilities GraphQL API now exposes the original severity of vulnerabilities.
This allows you to determine what the severity of the vulnerability was before severity overrides were applied.</p>
<h3 id="time-windows-for-merge-request-approval-policies">Time windows for merge request approval policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#security_report_time_window">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/525509">Related issue</a></li></ul>
</div>

<p>To provide further flexibility in security vulnerability comparisons, we have introduced time windows in merge request approval policies. If the security reports for the most recent baseline are not yet available, this new policy configuration allows you to use previously completed security reports, as long as the reports are not older than the age that you specify as the time window.</p>
<p>Development teams can now avoid unnecessary delays when baseline security scans are stuck or taking too long, such as in very busy projects. By configuring a time window, merge requests that don’t introduce new vulnerabilities can proceed without waiting for the latest pipeline to complete, improving workflow efficiency.</p>
<p>To use this feature, create or edit a merge request approval policy and specify the <code>security_report_time_window</code> parameter (in minutes) in your approval policy configuration</p>
<p>The system will compare your merge request’s security results against the latest pipeline using the security reports created within the specified time window, allowing for faster approvals when no new vulnerabilities are introduced.</p>
<h3 id="refreshed-security-finding-statuses-in-the-pipeline-security-tab">Refreshed security finding statuses in the pipeline <strong>Security</strong> tab</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/detect/security_scanning_results/#change-status">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/554078">Related issue</a></li></ul>
</div>

<p>Previously, in the <strong>Security</strong> tab for a pipeline, if you dismissed an vulnerability, the vulnerability was not immediately removed from the list.</p>
<p>Status updates in the security tab of a pipeline page are now updated after they are changed.</p>
<h3 id="exceptions-to-bypass-merge-request-approval-policies">Exceptions to bypass merge request approval policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18114">Related epic</a></li></ul>
</div>

<p>Organizations can now designate specific users, groups, roles, or custom roles that can bypass merge request approval policies in case critical situations occur. This capability provides flexibility for emergency responses, while maintaining comprehensive audit trails and governance controls.</p>
<p><strong>Emergency bypass with accountability</strong>: Designated users can bypass approval requirements during critical incidents, security hotfixes, or urgent production issues. When emergencies strike, authorized personnel can merge or push changes immediately while the system captures detailed justification and audit information for compliance review.</p>
<p>Key capabilities include:</p>
<ul>
<li><strong>Documented bypass process</strong>: When authorized users invoke a policy bypass, they must provide detailed reasoning using an intuitive modal interface, ensuring every exception is properly documented with context.</li>
<li><strong>Comprehensive audit integration</strong>: Every bypass generates detailed audit events including user identity, policy context, reasoning, and timestamps for complete visibility into exception usage patterns.</li>
<li><strong>Flexible configuration</strong>: Define exception permissions for policies using YAML or UI configuration, supporting individual users, GitLab groups, standard roles, and custom roles.</li>
<li><strong>Git-based push exceptions</strong>: Users with pre-approved policy exceptions may push directly when invoking the push bypass option <code>security_policy.bypass_reason</code>.</li>
</ul>
<p>This feature eliminates the need to entirely disable security policies during emergencies, providing a controlled path for urgent changes while preserving organizational governance and audit requirements.</p>
<h3 id="show-only-active-vulnerabilities-in-the-dependency-list">Show only active vulnerabilities in the dependency list</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#vulnerabilities">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/353487">Related issue</a></li></ul>
</div>

<p>Previously, the dependency list included some dismissed vulnerabilities.</p>
<p>To provide you with a more useful representation of the vulnerabilities in the dependency list, the project dependency list now includes only active vulnerabilities in the <code>detected</code> and <code>confirmed</code> states.</p>
<h3 id="static-reachability-in-limited-availability-and-experimental-java-support">Static reachability in limited availability and experimental Java support</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/static_reachability/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15780">Related epic</a></li></ul>
</div>

<p>In GitLab 18.5, we released limited availability support for static reachability.
This release focuses on improving JS/TS coverage support, fixing bugs, and providing experimental support for Java.
Static reachability enriches Software Composition Analysis (SCA) results by scanning project source code to identify open source dependencies that are in use.
Data produced by static reachability can be used as part of users’ triage and remediation decision making. Static reachability data can also be used with CVSS and EPSS scores, as well as KEV indicators to provide a more focused view of identified vulnerabilities.</p>
<p>We welcome feedback on this feature. If you have questions, comments, or would like to engage with our team, please see this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/535498">feedback issue</a>.</p>
<h3 id="gitlab-runner-185">GitLab Runner 18.5</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38976">Related issue</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.5 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<p>Bug fixes:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/259">Runner update fails on vanilla Kubernetes after updating runner operator from 1.39 to 1.41</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38674">Some container labels have duplicate prefixes</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-5-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-5-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.5">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.5">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.5">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.4 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-4-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-4-released/</id><published>2025-09-18T00:00:00Z</published><updated>2025-09-18T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On September 18, 2025, GitLab 18.4 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-patrick-rice">This month’s Notable Contributor: Patrick Rice</h2>
<p>Patrick Rice continues his exceptional dedication to GitLab’s open source community as contributor, maintainer,
and mentor.
A <a href="https://contributors.gitlab.com/leaderboard?fromDate=2025-01-01&amp;toDate=2025-09-18&amp;search=&amp;communityOnly=true">top 5 contributor</a>
over the past year, Patrick maintains the <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab">GitLab Terraform Provider</a>
and <a href="https://gitlab.com/gitlab-org/api/client-go">client-go</a> projects,
handling feature additions, releases, issue triage, and community onboarding.
He embodies GitLab’s mission that everyone can contribute, having worked his way up from
contributor to project maintainer.</p>
<p>Patrick’s impact extends beyond code contributions to community building and coaching,
helping new contributors get started and grow in the project.
Patrick previously nominated and supported Heidi Berry who won the <a href="https://about.gitlab.com/releases/2025/04/17/gitlab-17-11-released/#notable-contributor">17.11 Notable Contributor award</a>.
He also shared insights with the <a href="https://about.gitlab.com/solutions/education/">GitLab for Education</a>
team on working with students learning GitLab to help us grow the next generation of developers.</p>
<p>“I’d love to encourage new contributors to join us in collaborating on the Terraform Provider
and client-go projects,” Patrick says.
“We can always use more friendly faces in our community.”</p>
<p>“Patrick has continued relentlessly supporting the GitLab team and customers,” says <a href="https://gitlab.com/leetickett-gitlab">Lee Tickett</a>,
Staff Fullstack Engineer at GitLab, who nominated Patrick for the award.
<a href="https://gitlab.com/timofurrer">Timo Furrer</a>, Senior Backend Engineer at GitLab, supported the nomination.
“Apart from his daily contributions to the Terraform Provider and client-go,” Timo adds,
“he’s helping GitLab customers directly with their IaC journey by showcasing what is possible with the
GitLab Terraform Provider.”</p>
<p>Patrick is an Enterprise Architect at Kingland and member of the <a href="https://about.gitlab.com/community/core-team/">GitLab Community Core Team</a>.
This marks his second Notable Contributor award, having <a href="https://about.gitlab.com/releases/2023/01/22/gitlab-15-8-released/#mvp">previously won in GitLab 15.8</a> in January 2023.</p>
<p>Thanks to Patrick for his sustained contributions and dedication to supporting GitLab customers
and growing our open source community!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-model-selection-now-generally-available">GitLab Duo Model Selection now generally available</h3>
<!-- categories: Model Personalization -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/model_selection/#select-a-model-for-a-feature">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18818">Related epic</a></li></ul>
</div>

<p>GitLab Duo Model Selection is now generally available, giving organizations greater control over which AI models power their development workflows.</p>
<p>Owners of top-level groups on GitLab.com and administrators on Self-Managed and Dedicated can now choose a specific model from a variety of GitLab AI model vendors for use with their GitLab Duo features, accessed through the GitLab-hosted AI gateway.</p>
<p>GitLab users that belong to multiple namespaces on GitLab.com can now also set a default namespace to ensure consistent AI model preferences across all development contexts. For more information on GitLab Duo Model Selection, <a href="https://about.gitlab.com/blog/speed-meets-governance-model-selection-comes-to-gitlab-duo/">read the blog</a>.</p>
<h3 id="gitlab-knowledge-graph">GitLab Knowledge Graph</h3>
<!-- categories: Duo Agent Platform, Duo Chat, Code Suggestions, Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab-org.gitlab.io/rust/knowledge-graph/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17514">Related epic</a></li></ul>
</div>

<p>The GitLab Knowledge Graph provides rich code intelligence across your codebase. Developers can understand and navigate their projects with greater context, making it easier to plan changes, perform impact analysis, and work with GitLab Duo agents to accelerate development tasks.</p>
<p>The GitLab Duo Agent Platform leverages the Knowledge Graph to increase the accuracy of AI agents. By mapping files and definitions across a codebase, the Knowledge Graph provides enhanced context that allows Duo agents to understand relationships across your entire local workspace—unlocking faster and more precise responses to complex questions.</p>
<p>This release of the Knowledge Graph focuses on local code indexing, where the CLI turns your codebase into a live, embeddable graph database for RAG. You can install it with a simple one-line script, parse local repositories, and connect via MCP to query your workspace.</p>
<p>Our vision for the Knowledge Graph project is two-fold: building a vibrant community edition that developers can run locally today, which will serve as the foundation for a future, fully integrated Knowledge Graph Service within GitLab.com and self-managed instances.</p>
<p>This feature is in beta status. Provide feedback in <a href="https://gitlab.com/gitlab-org/rust/knowledge-graph/-/issues/160">issue 160</a>.</p>
<h3 id="end-user-model-selection-now-available-with-gitlab-duo">End user model selection now available with GitLab Duo</h3>
<!-- categories: Model Personalization -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/model_selection/#select-a-model-for-a-feature">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/19251">Related epic</a></li></ul>
</div>

<p>GitLab Duo model selection for end-users is now in public beta on GitLab.com. Users can now select their preferred model for GitLab Duo Agentic Chat directly in the GitLab UI, giving developers personalized control over their AI assistance experience.</p>
<p>When allowed by namespace owners on GitLab.com, end-users can choose from available GitLab AI Vendor models for use with GitLab Duo Agentic Chat. Namespace owners can continue to set organization-wide model preferences through namespace settings, or allow end-user model selection.</p>
<p>To get started, look for the model dropdown in GitLab Duo Agentic Chat to select your preferred model. Note that changing models will start a fresh conversation, and your preferences will be remembered for future sessions.</p>
<h3 id="cicd-job-tokens-can-authenticate-git-push-requests">CI/CD job tokens can authenticate Git push requests</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/ci_job_token/#allow-git-push-requests-to-your-project-repository">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/389060">Related issue</a></li></ul>
</div>

<p>You can now allow CI/CD job tokens generated in your project to authenticate Git push requests to the project’s repository.
Enable this with the Job token permissions settings in the UI, or alternatively with the <code>[ci_push_repository_for_job_token_allowed](../../api/projects.md#edit-a-project)</code>
parameter in the project’s REST API endpoint.</p>
<h3 id="gitlab-duo-context-exclusion">GitLab Duo context exclusion</h3>
<!-- categories: Duo Agent Platform, Duo Chat, Code Suggestions, Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/context/#exclude-context-from-code-review">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17124">Related epic</a></li></ul>
</div>

<p>GitLab Duo context exclusion allows you to control which project content is excluded as context for GitLab Duo. This is helpful to protect sensitive information such as password files and configuration files. You can exclude individual files, specific directories, specific file types, or any combination of these.</p>
<p>This feature is currently in beta. Provide feedback on GitLab Duo context exclusion in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/566244">issue 566244</a>.</p>
<h3 id="expanded-aws-region-support-for-gitlab-dedicated">Expanded AWS region support for GitLab Dedicated</h3>
<!-- categories: GitLab Dedicated, Switchboard -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/create_instance/data_residency_high_availability/#supported-regions">Documentation</a></li></ul>
</div>

<p>GitLab Dedicated now supports deployment in all AWS regions, enabling you to select from an <a href="/administration/dedicated/create_instance/data_residency_high_availability/#supported-regions">expanded list of regions</a> for your primary, secondary, and backup deployment location.</p>
<p>This expansion is enabled by AWS’s rollout of io2 disks across all regions, which meet GitLab Dedicated’s standards for high availability and disaster recovery.</p>
<p>All newly available regions can be selected when provisioning your GitLab Dedicated instance in Switchboard.</p>
<h3 id="simulate-cicd-pipelines-against-different-branch">Simulate CI/CD Pipelines against different branch</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipeline_editor/#validate-cicd-configuration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/482676">Related issue</a></li></ul>
</div>

<p>Previously, when using the pipeline editor and validating your changes using the Validate tab, you could only run a simulation for the default branch. In this release, we’ve expanded this capability. You can now select any branch to simulate pipelines against. This improvement gives you greater flexibility in testing and validating your pipelines. You can ensure they perform as expected across different cases, including your stable branches or feature branches.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="automatic-duo-code-review-for-groups-and-applications">Automatic Duo Code Review for groups and applications</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/duo_in_merge_requests/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/554070">Related issue</a></li></ul>
</div>

<p>You can now use group or application settings to enable automatic Duo Code Review for multiple projects. This can help you quickly enable Duo Code Review for all projects in a group, rather than individually enabling specific projects.</p>
<p>This feature is currently available in GitLab.com, and we plan to make it available for GitLab Self-Managed in a future release. Provide feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517386">issue 517386</a>.</p>
<h3 id="additional-supported-models-for-gitlab-duo-self-hosted">Additional supported models for GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enteprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#supported-models">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16742">Related epic</a></li></ul>
</div>

<p>GitLab Self-Managed customers with GitLab Duo Enterprise can now use additional supported models with GitLab Duo.
OpenAI GPT-5 is now supported on Azure OpenAI. Open source OpenAI GPT OSS 20B and 120B aer also now supported on vLLM and Azure OpenAI.
To leave feedback on using these models with GitLab Duo Self-Hosted, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523918">issue 523918</a>.</p>
<h3 id="duo-code-review-on-gitlab-duo-self-hosted-is-generally-available">Duo Code Review on GitLab Duo Self-Hosted is generally available</h3>
<!-- categories: Code Suggestions, Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/#gitlab-duo">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/548975">Related issue</a></li></ul>
</div>

<p>GitLab Duo Code Review on GitLab Duo Self-Hosted is now generally available. Use Code Review on GitLab Duo Self-Hosted to accelerate your development process without compromising on data sovereignty. When Code Review reviews your merge requests, it identifies potential bugs and suggests improvements for you to apply directly. Use Code Review to iterate on and improve your changes before you ask a human to review. This feature includes support for Mistral, Meta Llama, Anthropic Claude, and OpenAI GPT model families.</p>
<p>Provide feedback on Code Review in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517386">issue 517386</a>.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="pipeline-secret-detection-now-excludes-certain-files-and-directories-by-default">Pipeline secret detection now excludes certain files and directories by default</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/pipeline/#excluded-items">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/560147">Related issue</a></li></ul>
</div>

<p>Pipeline secret detection now automatically excludes <a href="/user/application_security/secret_detection/pipeline/#excluded-items">certain file types and directories</a>
if they have a low likelihood of containing secrets, improving scan performance. These changes are released in analyzer
<a href="https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/releases/v7.11.0">version 7.11.0</a>.</p>
<h3 id="secret-detection-analyzer-git-fetching-improvements">Secret detection analyzer Git fetching improvements</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/pipeline/#how-the-analyzer-fetches-commits">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17315">Related epic</a></li></ul>
</div>

<p>Version <a href="https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/releases/v[7.12.0]%28https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/releases/v7.12.0%29">7.12.0</a> of the secret detection analyzer adds significant improvements to the way Git commits are fetched. The analyzer now parses <code>--depth</code> and <code>--since</code> options passed from <code>SECRET_DETECTION_LOG_OPTIONS</code>, so you can further specify how many commits you want to scan. The analyzer also selects appropriate fetch strategies based on context, which prevents a known issue where potentially millions of commits were unnecessarily fetched, even with shallow depth configurations.</p>
<p>This enhancement reduces job timeouts, decreases resource consumption, and provides more predictable scan performance. Experience faster secret detection scans, especially in large repositories, with clearer logging that matches the actual fetching behavior.</p>
<h3 id="significantly-faster-advanced-sast-scanning">Significantly faster Advanced SAST scanning</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16561">Related epic</a></li></ul>
</div>

<p>Every minute counts when you’re enabling security scans in your merge requests and pipelines.
We routinely ship performance improvements for Advanced SAST, targeting both the engine and its detection rules.</p>
<p>In this release, we’re highlighting a specific improvement that cuts scan runtime by as much as 78% in our benchmark and real-world tests.
We’ve added caching in a performance-sensitive part of the scanning process, leading to significantly faster scans in large repositories.</p>
<p>This improvement is automatically enabled in Advanced SAST analyzer version 2.9.6 and later.
You can see which analyzer version you’re using by <a href="/user/application_security/sast/gitlab_advanced_sast/">checking scan job logs</a>.</p>
<h3 id="operational-container-scanning-severity-threshold-configuration">Operational Container Scanning severity threshold configuration</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/vulnerabilities/#configure-trivy-severity-threshold-filter">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/559278">Related issue</a></li></ul>
</div>

<p>You can now configure Operational Container Scanning (OCS) to only return vulnerabilties at or above a certain severity level.
After you set a severity threshold, vulnerabilities below the severity you choose are no longer returned in the Vulnerability Report, API payloads, and other reporting mechanisms.
This can help you focus on the vulnerabilities you want to remediate.</p>
<p>To enable this filtering, <a href="/user/clusters/agent/vulnerabilities/#configure-trivy-severity-threshold-filter">set a <code>severity_threshold</code></a> in your OCS configuration.</p>
<p>We gratefully acknowledge this community contribution from <a href="https://gitlab.com/mjohnw">John Walsh</a>.
To learn more about contributing to GitLab, check out the <a href="https://about.gitlab.com/community/contribute/">Community Contribution program</a>.</p>
<h3 id="publish-opentofu-modules-and-providers-to-the-gitlab-container-registry-with-cicd-templates">Publish OpenTofu modules and providers to the GitLab container registry with CI/CD templates</h3>
<!-- categories: Infrastructure as Code -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/components/opentofu#publish-providers-to-the-gitlab-oci-registry">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/562715">Related issue</a></li></ul>
</div>

<p>The GitLab container registry now supports the media types to
host OpenTofu modules and providers.</p>
<p>Version <a href="https://gitlab.com/components/opentofu/-/releases/[3.1.0]%28https://gitlab.com/components/opentofu/-/releases/3.1.0%29">3.1.0</a> of the
<a href="https://gitlab.com/components/opentofu">OpenTofu CI/CD component</a> supports
a new <code>provider-release</code> template to deploy an OpenTofu provider into the GitLab registry
using the OCI format. Now, you can host private OpenTofu providers directly in GitLab.</p>
<p>In addition, the <code>module-release</code> template now supports a new <code>type</code> input that you can set to <code>oci</code>
to deploy the OpenTofu module in the GitLab registry using the OCI format.</p>
<h3 id="bypass-confirmation-for-enterprise-users-when-reassigning-placeholders">Bypass confirmation for enterprise users when reassigning placeholders</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/mapping/reassignment/#bypass-confirmation-when-reassigning-placeholder-users">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17871">Related epic</a></li></ul>
</div>

<p>Users with the Owner role for a group can now bypass user confirmation when reassigning placeholders to active enterprise users in that group. This way, enterprise users do not have to keep checking their emails to confirm reassignments. After the time limit for the setting is reached, email confirmation requests are sent again for all new reassignments.</p>
<p>Enterprise users still receive notification emails after the reassignment is complete, ensuring transparency throughout the process.</p>
<h3 id="configure-how-to-view-issues-from-the-issues-page">Configure how to view issues from the Issues page</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issues/managing_issues/#open-issues-in-a-panel">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/570776">Related issue</a></li></ul>
</div>

<p>You now have full control over your listing page view, choose which metadata appears and whether to open work items in a drawer, making it easier to focus on the information that matters most to you.</p>
<p>Previously, all metadata fields were always visible, which could make scanning through work items overwhelming. Now you can customize your view by turning on or off specific fields like assignees, labels, dates, and milestones.</p>
<p>With the new toggle that switches between the drawer view and full-page navigation you can quickly review details while maintaining context of your list, or open the full page when you need more screen space for detailed editing and comprehensive navigation.</p>
<h3 id="enhanced-parent-filtering-for-epic-and-issue-lists">Enhanced parent filtering for epic and issue lists</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issues/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/556200">Related issue</a></li></ul>
</div>

<p>We’ve replaced the “epic” filter on the Issues and Epics pages with a more flexible “parent” filter. This change lets you filter by any parent work item, not just epics. You can now easily find child tasks by filtering by their parent issue, or find issues by filtering by their parent epic, giving you better visibility into your work hierarchy across both issue and epic lists.</p>
<h3 id="issue-boards-now-show-complete-epic-hierarchies">Issue boards now show complete epic hierarchies</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issue_board/#filter-issues">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/358416">Related issue</a></li></ul>
</div>

<p>You can now view all issues from child epics when filtering by a parent epic in issue boards, bringing consistency with how the Issues page already works. This improvement helps you better track and visualize your complete epic hierarchy without missing any issues nested in child epics, making your project management workflow more efficient and reliable.</p>
<h3 id="text-editors-toolbar-parity">Text editors toolbar parity</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/rich_text_editor/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/507377">Related issue</a></li></ul>
</div>

<p>The GitLab plain text editor now includes the same formatting options as the rich text editor. The plain text editor toolbar has been updated with a “More options” menu that provides access to advanced formatting tools like:</p>
<ul>
<li>Code blocks</li>
<li>Details blocks</li>
<li>Horizontal rules</li>
<li>Mermaid diagrams</li>
<li>PlantUML diagrams</li>
<li>Table of contents</li>
</ul>
<p>Both editors now have consistent button placement and separators, making it easier to switch between editing modes while maintaining access to familiar formatting options.</p>
<h3 id="vulnerability-details-shows-the-auto-resolve-pipeline-id">Vulnerability details shows the auto-resolve pipeline ID</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/vulnerability_management_policy/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/566392">Related issue</a></li></ul>
</div>

<p>When troubleshooting vulnerabilities that have been automatically resolved, and later redetected, it can be helpful to compare the current pipeline to the pipeline where the vulnerability was resolved.</p>
<p>If a vulnerability is automatically resolved, the vulnerability notes in the vulnerability details page now include the pipeline ID where it occurred.</p>
<h3 id="enhanced-controls-for-who-can-download-job-artifacts">Enhanced controls for who can download job artifacts</h3>
<!-- categories: Artifact Security -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#artifactsaccess">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/454398">Related issue</a></li></ul>
</div>

<p>In GitLab 16.11, we added the <code>artifacts:access</code> keyword enabling users to control whether artifacts can be downloaded by all users with access to the pipeline, only users with the Developer role or higher, or no user at all.</p>
<p>In this release, you can now restrict who can download artifacts to only the Maintainer role or higher, giving you one more option for controlling who can download job artifacts.</p>
<h3 id="gitlab-runner-184">GitLab Runner 18.4</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.4 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38963">FIPS runners fail to start jobs with GitLab Runner 18.2.1</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/246">The <code>chown</code> command for runners with custom ConfigMap &amp; security context constraints (SCC) fails after Operator v1.37.0 upgrade on OpenShift 4.16.27</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38851">Reinstate <code>FF_RETRIEVE_POD_WARNING_EVENTS</code> in GitLab 17.x.x releases due to early removal in 17.2</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/214">All GitLab Runner jobs fail due to filesystem permission errors</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37464">Build jobs fail sporadically with permission denied error</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/30851">GitLab Runner Helm chart upgrade broke the variables</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28989">Enabling <code>FF_USE_FASTZIP</code> does not enable fastzip</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28865">GitLab Runner encounters an <code>UnsupportedOperation</code> error when trying to stop Spot instances created with one-time requests</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/331460">Long polling for GitLab Runners does not work properly in Kubernetes deployed environments</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38894">Allow admins to override image:Kubernetes:user value</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-4-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-4-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.4">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.4">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.4">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.3 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-3-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-3-released/</id><published>2025-08-21T00:00:00Z</published><updated>2025-08-21T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On August 21, 2025, GitLab 18.3 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-ahmed-kashkoush">This month’s Notable Contributor: Ahmed Kashkoush</h2>
<p>For 18.3, we’re excited to recognize <a href="https://gitlab.com/ahmad-kashkoush">Ahmed Kashkoush</a> as our
Notable Contributor!</p>
<p>Ahmed has been a standout contributor to the <a href="https://gitlab.com/gitlab-org/gitlab-web-ide">GitLab Web IDE</a>
through his <a href="https://gitlab.com/ahmad-kashkoush/gsoc-2025-final-report">Google Summer of Code participation</a> this summer.
He has consistently delivered essential Git operations, directly addressing long-standing
community requests.
His five substantial merge requests include <a href="https://gitlab.com/gitlab-org/gitlab-web-ide/-/merge_requests/497">commit and force push capabilities</a>,
<a href="https://gitlab.com/gitlab-org/gitlab-web-ide/-/merge_requests/540">update confirmation message</a>,
<a href="https://gitlab.com/gitlab-org/gitlab-web-ide/-/merge_requests/507">commit amend functionality</a>,
<a href="https://gitlab.com/gitlab-org/gitlab-web-ide/-/merge_requests/534">branch creation operations</a>,
and <a href="https://gitlab.com/gitlab-org/gitlab-web-ide/-/merge_requests/539">branch deletion features</a>.</p>
<p>Beyond implementing new features, Ahmed resolved a 5+ year old feature request for amending existing
commits from the Web IDE, a feature with 24 thumbs up from the community.
His comprehensive branch management implementation brings the Web IDE closer to feature parity with
local development environments, eliminating the need for users to switch between interfaces for
basic Git operations.
Ahmed’s work directly supports <a href="https://handbook.gitlab.com/handbook/company/mission/">GitLab’s mission</a>
that “everyone can contribute” by making the Web IDE more accessible to developers.</p>
<p>Ahmed was nominated by <a href="https://gitlab.com/ealcantara">Enrique Alcántara</a>, Staff Frontend
Engineer at GitLab, who served as his mentor throughout the Google Summer of Code program.
“Ahmed shows dedication to solving real user pain points,” says Enrique.
“His work demonstrates the impact a focused contributor can have on improving core GitLab functionality.”</p>
<p>Ahmed’s contributions showcase the power of mentorship and community collaboration in open source
development and make GitLab more accessible to developers regardless of their local setup.</p>
<p>Thank you, Ahmed, for your exceptional contributions to GitLab’s Web IDE!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="duo-agent-platform-in-visual-studio-beta">Duo Agent Platform in Visual Studio (Beta)</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/editor-extensions/-/epics/179">Related epic</a></li></ul>
</div>

<p>We are excited to announce the public beta release of the Duo Agent Platform for Visual Studio! With this release, Visual Studio users can now access Duo Agent Platform’s advanced AI-powered capabilities directly within their IDE.</p>
<p>The Duo Agent Platform brings two powerful features to your workflow:</p>
<ul>
<li><strong>Agentic chat</strong>: Quickly accomplish conversational tasks such as creating and editing files, searching your codebase with pattern matching and grep, and getting instant answers about your code—all without leaving Visual Studio.</li>
<li><strong>Agent flows</strong>: Tackle larger, more complex tasks with comprehensive planning and implementation support. Agent flows help you turn high-level ideas into architecture and code, leveraging GitLab resources like issues, merge requests, commits, CI/CD pipelines, and security vulnerabilities.</li>
</ul>
<p>Both features offer intelligent search across documentation, code patterns, and project information, empowering you to move seamlessly from quick edits to in-depth project analysis.</p>
<p>Try the Duo Agent Platform beta in Visual Studio today and experience a new level of productivity and AI assistance in your development workflow.</p>
<h3 id="embedded-views-powered-by-glql">Embedded views (powered by GLQL)</h3>
<!-- categories: Markdown, Wiki, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/glql/#embedded-views">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15008">Related epic</a></li></ul>
</div>

<p>This release introduces embedded views, powered by GLQL, to general availability. Create and embed dynamic, queryable views of GitLab data directly where your work lives: in wiki pages, epic descriptions, issue comments, and merge requests.</p>
<p>Embedded views provide a stable foundation for teams to track work progress without navigating between multiple locations. Query issues, merge requests, epics, and other work items using familiar syntax, then display the results as tables or lists with customizable fields and filtering.</p>
<p>Embedded views transform static documentation into living dashboards that stay current with your project data, helping teams maintain context and improve collaboration across their workflows.</p>
<p>We welcome your feedback as we continue to enhance embedded views. Please share your thoughts and suggestions in our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509792">feedback issue</a>.</p>
<h3 id="migration-by-direct-transfer">Migration by direct transfer</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/direct_transfer_migrations/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11398">Related epic</a></li></ul>
</div>

<p>Migration by direct transfer is now generally available. To migrate GitLab groups and projects between GitLab instances by direct transfer, you can use the GitLab UI or the <a href="/api/bulk_imports/">REST API</a>.</p>
<p>Compared to <a href="/user/project/settings/import_export/#migrate-projects-by-uploading-an-export-file">migration by uploading an export file</a>, direct transfer:</p>
<ul>
<li>Works more reliably with large projects.</li>
<li>Supports migrations with a larger version gap between the source and destination instances.</li>
<li>Offers better insights into the migration process and results.</li>
</ul>
<p>On GitLab.com, migration by direct transfer is enabled by default. On GitLab Self-Managed and GitLab Dedicated, an administrator must <a href="/administration/settings/import_and_export_settings/#enable-migration-of-groups-and-projects-by-direct-transfer">enable the feature</a>.</p>
<h3 id="fine-grained-permissions-for-cicd-job-tokens">Fine-grained permissions for CI/CD job tokens</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/fine_grained_permissions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15258">Related epic</a></li></ul>
</div>

<p>Pipeline security just got more flexible. Job tokens are ephemeral credentials that provide access to resources in pipelines. Until now, these tokens inherited full permissions from the user, often resulting in unnecessarily broad access capabilities.</p>
<p>With our new fine-grained permissions for job tokens feature, you can now precisely control which specific resources a job token can access within your projects. This allows you to implement the principle of least privilege in your CI/CD workflows, granting only the minimal access necessary for jobs to complete their tasks when accessing your projects with the CI/CD job token.</p>
<p>We’re actively working to add <a href="https://gitlab.com/groups/gitlab-org/-/epics/6310">additional fine-grained permissions</a> to reduce reliance on long-lived tokens in pipelines.</p>
<h3 id="code-review-available-on-gitlab-duo-self-hosted-beta">Code Review available on GitLab Duo Self-Hosted (Beta)</h3>
<!-- categories: Code Suggestions, Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524929">Related issue</a></li></ul>
</div>

<p>You can now use GitLab Duo Code Review on GitLab Duo Self-Hosted. This feature is in beta on GitLab Duo Self-Hosted, with support for Mistral, Meta Llama, Anthropic Claude, and OpenAI GPT model families.</p>
<p>Use Code Review on GitLab Duo Self-Hosted to accelerate your development process without compromising on data sovereignty. When Code Review reviews your merge requests, it identifies potential bugs and suggests improvements for you to apply directly. Use Code Review to iterate on and improve your changes before you ask a human to review.</p>
<p>Provide feedback on Code Review in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517386">issue 517386</a>.</p>
<h3 id="customize-instructions-for-gitlab-duo-code-review">Customize instructions for GitLab Duo Code Review</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/duo_in_merge_requests/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/545136">Related issue</a></li></ul>
</div>

<p>Enforce consistent code review standards across your projects with custom instructions for GitLab Duo Code Review. Define specific review criteria for different file types using glob patterns, ensuring language-specific conventions are applied where they matter most.</p>
<p>With custom instructions, you can:</p>
<ul>
<li>Describe your team’s code review standards</li>
<li>Use glob patterns to define file-specific instructions</li>
<li>Observe clearly labeled feedback that references your custom instructions</li>
</ul>
<p>Simply create a <code>.GitLab/duo/mr-review-instructions.YAML</code> file in your repository with your custom instructions. GitLab Duo will automatically incorporate these instructions into its reviews, citing the specific instruction group when providing feedback.</p>
<p>Help us improve this feature by sharing your thoughts and suggestions in our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517386">feedback issue</a>.</p>
<h3 id="bring-your-own-models-to-gitlab-duo-self-hosted-beta">Bring your own models to GitLab Duo Self-Hosted (Beta)</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517581">Related issue</a></li></ul>
</div>

<p>GitLab Duo Self-Hosted now enables you to bring your own model to use with GitLab Duo features. This feature is in beta, and available to all GitLab Self-Managed customers with GitLab Duo Enterprise. Instance administrators can configure any compatible model for use with a supported GitLab Duo feature.</p>
<p>This feature makes GitLab Duo Self-Hosted more flexible, but GitLab cannot guarantee that all GitLab Duo features will work with every compatible model. Instance administrators are responsible for validating the compatibility and performance of their chosen model. GitLab does not provide technical support for issues specific to your chosen model or platform.</p>
<h3 id="hybrid-model-selection-on-gitlab-duo-self-hosted-beta">Hybrid model selection on GitLab Duo Self-Hosted (Beta)</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17192">Related epic</a></li></ul>
</div>

<p>You can now use a mix of GitLab AI vendor models and privately configured self-hosted models on GitLab Duo Self-Hosted. This feature is in beta and available on GitLab Self-Managed to all GitLab Duo Enterprise customers.</p>
<p>With hybrid models on GitLab Duo Self-Hosted, GitLab Self-Managed instance administrators can now choose between a self-hosted model and self-hosted AI gateway, or a GitLab AI vendor model and the GitLab-hosted AI gateway, on a feature-by-feature basis. This enables administrators to balance their security and scalability requirements. To provide feedback on hybrid model selection, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/561048">issue 561048</a>.</p>
<h3 id="surfacing-violations-of-compliance-framework-controls-beta">Surfacing violations of compliance framework controls (Beta)</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_violations_report/">Documentation</a></li></ul>
</div>

<p>Previously, the compliance violations report provided a high-level view of merge request activity for all projects
in a group. The available compliance violations related to separation of duty concerns, such as:</p>
<ul>
<li>Detecting when an author of a merge request approved their own merge request.</li>
<li>When a merge request was merged with fewer than two approvals.</li>
</ul>
<p>However, user feedback revealed that users found violation classifications confusing and difficult to understand, due to not aligning well with actual compliance use cases.</p>
<p>GitLab 18.3 significantly enhances the violations report by expanding beyond separation of duty to include violations of compliance controls and requirements in compliance frameworks.
Each custom compliance framework control has an associated audit event that provides detailed context about violations: who committed the violation, when it occurred, and how to fix it.
This includes the user’s name and IP address, plus actionable remediation suggestions.</p>
<p>These improvements give compliance managers more powerful and relevant context to ensure their organization adheres to specific compliance frameworks,
while providing reassurance that non-compliance can be effectively identified, rectified, and prevented.</p>
<h3 id="new-web-ide-source-control-operations">New Web IDE source control operations</h3>
<!-- categories: Web IDE -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/web_ide/#use-source-control">Documentation</a></li></ul>
</div>

<p>We’re excited to announce additional source control functionalities in the Web IDE. You can manage your Git workflow more efficiently without leaving your browser. In the <strong>Source Control</strong> panel, you can now:</p>
<ul>
<li>Create and delete branches.</li>
<li>Create a branch from any existing branch as your base.</li>
<li>Amend your last commit for quick fixes.</li>
<li>Force push changes directly from the interface.</li>
</ul>
<p>These enhancements bring Git operations right to your fingertips. For information about the functionalities available to you, see <a href="/user/project/web_ide/#use-source-control">Use source control</a>.</p>
<h3 id="aws-secrets-manager-support-for-gitlab-cicd">AWS Secrets Manager support for GitLab CI/CD</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/secrets/aws_secrets_manager/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17822">Related epic</a></li></ul>
</div>

<p>Secrets stored in AWS Secrets Manager can now be easily retrieved and used in CI/CD jobs. Our new integration with AWS simplifies the process of interacting with AWS Secrets Manager through GitLab CI/CD, helping our AWS customers streamline build and deploy processes!</p>
<p>Thank you to <a href="https://gitlab.com/m-s-db">Markus Siebert</a> and <a href="https://gitlab.com/DerAstronaut">Henry Sachs</a> who helped build this feature through <a href="https://about.gitlab.com/community/co-create/">GitLab’s Co-Create program</a>!</p>
<h3 id="custom-admin-role">Custom admin role</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15069">Related epic</a></li></ul>
</div>

<p>The custom admin role brings granular permissions to the Admin area for GitLab Self-Managed and GitLab Dedicated instances. Instead of granting full access, administrators can now create specialized roles that access only the specific functions needed by users. This feature helps organizations implement the principle of least privilege for administrative functions, reduce security risks from overprivileged access, and improve operational efficiency.</p>
<p>If you have questions, want to share your implementation experience, or would like to engage directly with our team about potential improvements, see the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509376">feedback issue</a>.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="more-models-available-for-use-with-gitlab-duo-self-hosted">More models available for use with GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/560016">Related issue</a></li></ul>
</div>

<p>GitLab Self-Managed customers with GitLab Duo Enterprise can now use Anthropic Claude 4 with GitLab Duo Self-Hosted.
Claude 4 is supported on AWS Bedrock. Open source OpenAI GPT OSS 20B and 120B have been added as experimental models,
and are available on vLLM, Azure OpenAI, and AWS Bedrock. To leave feedback on using these models with GitLab Duo Self-Hosted,
see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523918">issue 523918</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="new-navigation-experience-for-groups-in-your-work">New navigation experience for groups in Your work</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/#group-visibility">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/502487">Related issue</a></li></ul>
</div>

<p>We’re excited to announce significant improvements to the group overview in <strong>Your work</strong>, designed to streamline how you discover and access your groups.
The new tabbed interface features a <strong>Member</strong> tab, which provides a comprehensive view of accessible groups, and an <strong>Inactive</strong> tab to track groups pending deletion.
We’ve also streamlined group management by adding <strong>Edit</strong> and <strong>Delete</strong> actions to the list view for users with appropriate permissions.
We hope that these improvements make it easier to find and manage the groups that matter most to you.</p>
<p>We value your feedback on this update! Join the discussion in <a href="https://gitlab.com/groups/gitlab-org/-/epics/18401">epic 18401</a> to share your experience with the new navigation system.</p>
<h3 id="enhanced-admin-area-projects-list">Enhanced <strong>Admin</strong> area projects list</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/admin_area/#administering-projects">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17782">Related epic</a></li></ul>
</div>

<p>We’ve upgraded the <strong>Admin</strong> area projects list to provide a more consistent experience for GitLab administrators:</p>
<ul>
<li>Delayed deletion protection: Project deletions now follow the same safe deletion flow used throughout GitLab, preventing accidental data loss.</li>
<li>Faster interactions: Filter, sort, and paginate projects without page reloads for a more responsive experience.</li>
<li>Consistent interface: The projects list now matches the look and behavior of other project lists across GitLab.</li>
</ul>
<p>This update brings the administrator experience in line with GitLab design standards, and adds important safety features to protect your data. Future enhancements to project management will automatically appear in all project lists throughout the platform.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="improved-file-location-information-for-dependency-scanning-analyzer">Improved file location information for Dependency Scanning analyzer</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/#customizing-behavior-with-the-cicd-template">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/537716">Related issue</a></li></ul>
</div>

<p>Being able to trace a dependency back to its source is important, especially for
vulnerability remediation. Previously, the Dependency Scanning analyzer sometimes
linked to job artifacts which were deleted when they expired. This made it
difficult to trace back to the source of the dependency.
The Dependency Scanning analyzer can now link to the project file that introduced
the dependency. With this option enabled, links in the dependency list and
vulnerability report are reliable.
Users may enable this functionality by setting <code>DS_FF_LINK_COMPONENTS_TO_GIT_FILES=true</code>
for the Dependency Scanning job.</p>
<h3 id="user-defined-source-for-license-information">User-defined source for license information</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/license_scanning_of_cyclonedx_files/#use-cyclonedx-report-as-a-source-of-license-information">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501662">Related issue</a></li></ul>
</div>

<p>Users may now choose which source of license information has priority -
the GitLab License database or a CycloneDX SBOM report. This provides users
with more flexibility in sourcing license information for their open-source dependencies.
Users who wish to define the source of license information may
use the <a href="/user/application_security/detect/security_configuration/#with-the-ui">Security Configuration UI</a> to make a selection. By default we use the SBOM data as a source
for license information.</p>
<h3 id="concise-dast-job-output">Concise DAST job output</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/troubleshooting/#what-is-dast-doing">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18342">Related epic</a></li></ul>
</div>

<p>GitLab 18.3 introduces several improvements to the dynamic analysis security testing job output.</p>
<p>This improved job output provides clear, structured information that
helps you understand scan results and troubleshoot failures.</p>
<p>Each section of the job output is concise and intuitive, with a link to our troubleshooting documentation at the bottom of the output.
To override concise job output, set <code>DAST_FF_DIAGNOSTIC_JOB_OUTPUT: &quot;true&quot;</code> in your DAST configuration.</p>
<h3 id="instance-level-compliance-and-policy-management-beta">Instance level compliance and policy management (Beta)</h3>
<!-- categories: Compliance Management, Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/centralized_compliance_frameworks/">Documentation</a></li></ul>
</div>

<p>Enterprise users want to manage their compliance frameworks and security policies across multiple top-level groups.
This is often the case when all groups in an instance:</p>
<ul>
<li>Share the same compliance frameworks. For example, when all projects in a group must adhere to the ISO 27001 standard.</li>
<li>Enforce similar policies. For example, when all groups share the same pipeline execution policy.</li>
</ul>
<p>With GitLab 18.3, compliance and security policy management is now available in beta for GitLab Self-Managed
instances. You can now create, configure, and allocate compliance frameworks and
security policies from a single top-level group and enforce them across all of the other top-level groups across your
GitLab Self-Managed instance.</p>
<p>When you use a compliance and security policy top-level group, you have a single source of truth
where you can manage and edit your compliance frameworks and security policies.
Group admins can then apply these compliance frameworks and security policies to all the projects within those groups.</p>
<p>When you manage key frameworks and policies from the chosen top-level compliance and security policy group,
it’s easier to manage and enforce key compliance and security needs across your GitLab Self-Managed instance.
However, groups still retain the ability to create their own compliance frameworks and security policies to address
specific situations or workflows that can arise in those groups.</p>
<p>This feature is for GitLab Self-Managed customers because GitLab.com and GitLab Dedicated customers are already
able to manage policies centrally within a single top-level group or namespace.</p>
<h3 id="faster-workspace-startup-with-shallow-cloning">Faster workspace startup with shallow cloning</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/#shallow-cloning">Documentation</a></li></ul>
</div>

<p>Workspaces now use shallow cloning to reduce startup time. During initialization, GitLab downloads only the latest commit history instead of the full Git history. After the workspace starts, Git converts the shallow clone to a full clone in the background.</p>
<p>This feature applies automatically to all new workspaces, no configuration is required, and it doesn’t affect your development workflow.</p>
<h3 id="new-cli-commands-for-gitlab-managed-opentofu-and-terraform-states">New CLI commands for GitLab-managed OpenTofu and Terraform states</h3>
<!-- categories: GitLab CLI, Infrastructure as Code -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/infrastructure/iac/terraform_state/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/cli/-/issues/7954">Related issue</a></li></ul>
</div>

<p>The GitLab CLI (<code>glab</code>) now includes a new top-level command, <code>opentofu</code>.
The <code>opentofu</code> command is aliased to <code>terraform</code> and <code>tf</code> commands to assist with GitLab-managed
OpenTofu and Terraform states.</p>
<p>The following commands have been added:</p>
<ul>
<li><code>glab opentofu init</code>: Initialize the state backend locally.</li>
<li><code>glab opentofu state list</code>: List all states in a project.</li>
<li><code>glab opentofu state download</code>: Download the latest state or a specific version.</li>
<li><code>glab opentofu state delete</code>: Delete the entire state or a specific version.</li>
<li><code>glab opentofu state lock</code>: Lock a state.</li>
<li><code>glab opentofu state unlock</code>: Unlock a state</li>
</ul>
<p>To manage state with the <code>opentofu</code> command, you must have at least <code>glab</code> 1.66 or later.</p>
<h3 id="kubernetes-133-support">Kubernetes 1.33 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/538906">Related issue</a></li></ul>
</div>

<p>GitLab now fully supports Kubernetes version 1.33. If you deploy your apps to Kubernetes, you can upgrade your connected clusters to the most recent version and take advantage of all its features.</p>
<p>For more information, see the <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">Supported Kubernetes versions for GitLab features</a>.</p>
<h3 id="oauth-apps-support-sso-authentication">OAuth apps support SSO authentication</h3>
<!-- categories: Pages, System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/oauth2/#authorization-code-flow">Documentation</a></li></ul>
</div>

<p>OAuth applications can now seamlessly integrate with your organization’s single sign-on requirements. Previously, users had to authenticate twice: first with GitLab, then with SSO, creating unnecessary friction and complexity.</p>
<p>Now, OAuth applications can specify a parameter in their authorization requests to automatically trigger SSO authentication when required. This provides:</p>
<ul>
<li>A unified authentication experience for users</li>
<li>Automatic compliance with your organization’s SSO policies</li>
<li>Consistent security across all GitLab integrations</li>
<li>Simple implementation for developers with just a parameter addition</li>
</ul>
<p>Your OAuth integrations now respect SSO policies automatically, eliminating confusing authentication workflows while maintaining security.</p>
<h3 id="control-unique-domains-default-for-gitlab-pages-sites">Control unique domains default for GitLab Pages sites</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/pages/#disable-unique-domains-by-default">Documentation</a></li></ul>
</div>

<p>Administrators can now set the default behavior for unique domains on new GitLab Pages sites. By default, new Pages sites use unique domain URLs (like <code>my-project-1a2b3c.example.com</code>) to prevent cookie sharing between sites.</p>
<p>With this new setting for the instance, you can set new Pages sites to use path-based URLs (like <code>my-namespace.example.com/my-project</code>) by default. This helps organizations align GitLab Pages behavior with their workflows and security requirements.</p>
<p>Users can still override this setting for individual projects, and existing Pages sites remain unaffected.</p>
<h3 id="enhancements-to-wiki-functionality">Enhancements to wiki functionality</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/discussions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16403">Related epic</a></li></ul>
</div>

<p>This release introduces an enhanced wiki experience with three key improvements: you can now subscribe to wiki pages, view wiki comments while editing a page, and sort wiki page comments.</p>
<p>These enhancements help teams collaborate more effectively on documentation by letting you:</p>
<ul>
<li>Discuss content directly in context.</li>
<li>Suggest improvements and corrections.</li>
<li>Keep documentation accurate and up-to-date.</li>
<li>Share knowledge and expertise.</li>
</ul>
<p>With these updates, your GitLab wiki becomes living documentation that evolves alongside your projects through direct feedback and discussion.</p>
<h3 id="bulk-edit-epic-assignees-milestones-and-more">Bulk edit epic assignees, milestones, and more</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#bulk-edit-epics">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11901">Related epic</a></li></ul>
</div>

<p>You can now bulk edit more epic attributes in a group. In addition to labels, you can now update assignee, health status, subscription, confidentiality, and milestone for multiple epics at once.</p>
<p>This enhancement makes it faster to manage large numbers of epics by letting you apply the same changes across multiple epics simultaneously.</p>
<h3 id="grant-pipeline-execution-policies-access-to-cicd-configurations-via-api">Grant pipeline execution policies access to CI/CD configurations via API</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/projects/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524124">Related issue</a></li></ul>
</div>

<p>Use the Projects REST API to programmatically enable or disable the <strong>Pipeline execution policy</strong> setting in security policy projects with the new <code>spp_repository_pipeline_access</code> field. Previously, this setting could only be managed through the GitLab UI. With this enhancement, you can now:</p>
<ul>
<li><code>GET</code> the current <strong>Pipeline execution policy</strong> status.</li>
<li><code>PUT</code> to enable or disable the setting programmatically.</li>
</ul>
<p>This improvement enables better automation and integration workflows for teams managing security policies at scale.</p>
<h3 id="group-by-owasp-2021-in-the-vulnerability-report">Group by OWASP 2021 in the vulnerability report</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#advanced-vulnerability-management">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/532703">Related issue</a></li></ul>
</div>

<p>In the vulnerability report for projects and groups, you can now group the vulnerabilities by their OWASP Top 10 2021 category. Available for GitLab.com and GitLab Dedicated instances only.</p>
<h3 id="scan-execution-policy-templates">Scan execution policy templates</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/#scan-execution-policy-editor">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11919">Related epic</a></li></ul>
</div>

<p>Scan execution policy templates help you quickly create scan execution policies based on common use cases. Choose from three
templates:</p>
<ul>
<li>Merge request security</li>
<li>Scheduled scanning</li>
<li>Release security</li>
</ul>
<p>Once you select a template, choose which GitLab security scans to enable with the template to get up and running immediately. If you have more advanced use cases, you can switch to the custom configuration to extend the policy with specific branch patterns, pipeline sources, and more.</p>
<h3 id="security-policy-audit-events">Security policy audit events</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_streaming/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15869">Related epic</a></li></ul>
</div>

<p>GitLab Ultimate now provides comprehensive audit events for security policy management, with events organized and centralized within each security policy project.</p>
<p>Security teams can now:</p>
<ul>
<li>Track all policy modifications with detailed metadata.</li>
<li>Monitor enforcement failures, including scan and pipeline execution failures.</li>
<li>Monitor skipped scan execution and pipeline execution pipelines.</li>
<li>Detect policy violations within each project, including MRs merged with policy violations.</li>
<li>Receive alerts when limits are exceeded.</li>
<li>Detect policy configuration errors.</li>
<li>Use streaming-only options for high-volume scenarios.</li>
</ul>
<p>New audit events include:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_create]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_create.yml%29.yml">security_policy_create</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_delete]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_delete.yml%29.yml">security_policy_delete</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_update]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_update.yml%29.yml">security_policy_update</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_merge_request_merged_with_policy_violations]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_merge_request_merged_with_policy_violations.yml%29.yml">security_policy_merge_request_merged_with_policy_violations</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_yaml_invalidated]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_yaml_invalidated.yml%29.yml">security_policy_yaml_invalidated</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_yaml_invalidated.yml">security_policies_limit_exceeded</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_violations_detected]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_violations_detected.yml%29.yml">security_policy_violations_detected</a> (streaming only)</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_pipeline_failed]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_pipeline_failed.yml%29.yml">security_policy_pipeline_failed</a> (streaming only)</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/[security_policy_pipeline_skipped]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/audit_events/types/security_policy_pipeline_skipped.yml%29.yml">security_policy_pipeline_skipped</a> (streaming only)</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/audit_events/types/[merge_request_branch_bypassed_by_security_policy]%28https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/audit_events/types/merge_request_branch_bypassed_by_security_policy.yml%29.yml">merge_request_branch_bypassed_by_security_policy</a></li>
</ul>
<p>This enhancement strengthens your security posture by ensuring you have access to policy changes, configuration errors, and enforcement gaps, enabling faster incident response and thorough auditing capabilities.</p>
<h3 id="service-account-and-access-token-exceptions-for-approval-policies">Service account and access token exceptions for approval policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#access-token-and-service-account-exceptions">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18112">Related epic</a></li></ul>
</div>

<p>The new <strong>Service Account &amp; Access Token Exceptions</strong> feature allows you to designate service accounts and access tokens that can bypass merge request approval policies when necessary. This eliminates friction for known automations, while preserving security controls.</p>
<p><strong>Key capabilities include:</strong></p>
<ul>
<li>Automated workflow support: Configure specific service accounts, bot users, group access tokens, and project access tokens to bypass approval requirements for CI/CD pipelines, pull mirroring, and automated version updates. Service accounts can push directly to protected branches using approved tokens while maintaining restrictions for human users.</li>
<li>Emergency access and auditing: Enable break-glass scenarios for critical incidents with comprehensive audit trails. All bypass events generate detailed audit logs with context and reasoning, supporting compliance requirements while allowing rapid response during outages or security fixes.</li>
<li>GitOps integration: Unblock common automation challenges including repository mirroring, external CI systems (Jenkins, CloudBees), automated changelog generation, and GitFlow release processes. Service accounts receive the minimum required permissions with token-based access scoped to specific projects and branches.</li>
</ul>
<p>This enhancement maintains strict security policies with flexibility for modern DevOps automation needs, eliminating custom workarounds while preserving governance controls.</p>
<h3 id="saml-sso-support-for-session-timeout-attribute">SAML SSO support for session timeout attribute</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/saml_sso/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/262074">Related issue</a></li></ul>
</div>

<p>GitLab now automatically detects and respects the <code>SessionNotOnOrAfter</code> attribute in SAML assertions from your Identity Provider (IdP).
When this attribute is present, GitLab sets user sessions to expire at the time specified by your IdP,
ensuring consistent session management across your organization. This feature requires no configuration changes - if your IdP provides the attribute, GitLab automatically honors the specified expiration time.</p>
<h3 id="additional-service-account-email-configuration-options">Additional service account email configuration options</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/537976">Related issue</a></li></ul>
</div>

<p>By default, GitLab automatically generates an email address for new service accounts. Organizations can now assign a custom email address for service accounts through the UI. Previously, custom email configuration was only possible through the Service Accounts API. This change allows organizations to better route notifications to designated email addresses.</p>
<h3 id="enterprise-user-enhancements">Enterprise user enhancements</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/enterprise_user/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9262">Related epic</a></li></ul>
</div>

<p>GitLab 18.3 introduces enterprise user enhancements that give organizations greater control over user privacy and lifecycle management.</p>
<p>Group owners can now delete enterprise users in their namespace with the Users API. This destructive action unlinks user contributions and associates them with a system-wide Ghost user. These option is particularly valuable for cleaning up users erroneously created with automated SCIM imports or managing federated environments where usernames and emails need to be repurposed.</p>
<p>Additionally, organizations can now hide enterprise user emails on their user profiles, providing broader email privacy enforcement for all enterprise users.</p>
<h3 id="ssh-key-security-warnings">SSH key security warnings</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/ssh/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/432624">Related issue</a></li></ul>
</div>

<p>GitLab now displays a security warning in the UI when a user uploads a weak SSH key. This warning appears for older key types or keys with insufficient bit length (less than 2048 bits). This change helps educate users about SSH key security best practices and encourages the use of stronger cryptographic keys.</p>
<h3 id="gitlab-runner-183">GitLab Runner 18.3</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.3 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/556464">In GitLab 18.2.0, runners are unable to pull the job cache by using the subdirectory file as cache key</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38707">Docker executor fails to start jobs intermittently and returns an <code>incorrect username or password</code> error message.</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38703">Inconsistency in <code>*_get_sources</code> hooks usage between <code>none</code> and <code>empty</code> Git strategies</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/228">Operator deployed with non-OLM manifests assumes wrong default images</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/183">Operator creates ConfigMap with the wrong name if CR has the <code>app.kubernetes.io/instance</code> label</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/138">Operator 1.10.0 on OpenShift 4.9 fails to create runner ConfigMap and start pod in the <code>gitlab-runner</code> namespace</a></li>
</ul>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/245">GitLab Runner Operator now supports runner manager pod annotation</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/253">GitLab Runner Operator now supports OpenShift 4.19</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-3-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-3-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.3">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.3">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.3">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.2 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-2-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-2-released/</id><published>2025-07-17T00:00:00Z</published><updated>2025-07-17T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On July 17, 2025, GitLab 18.2 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-markus-siebert">This month’s Notable Contributor: Markus Siebert</h2>
<p><a href="https://gitlab.com/m-s-db">Markus Siebert</a>, a Platform Engineer at DB Systel GmbH, is leading the community effort to bring native AWS Secrets Manager support to GitLab CI/CD, addressing a critical enterprise need for secure secret management in pipelines. With an impressive 172 documented activities in just 6 weeks, Markus has been working tirelessly on implementing both AWS Secrets Manager and AWS Systems Manager Parameter Store support through multiple merge requests including <a href="https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5587">Add functionality to retrieve secrest from AWS Secrets Manager</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191803">Add GitLab CI config entry for AWS SSM ParameterStore</a>, and <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/192378">Documentation for AWS Secrets Manager</a>.</p>
<p>“Markus’s work directly enables GitLab users in AWS environments to securely manage their CI/CD secrets without relying on third-party tools or custom scripts. This is especially valuable for enterprise users who have standardized on AWS services,” says <a href="https://gitlab.com/atiwari71">Aditya Tiwari</a>, Senior Backend Engineer, Secure at GitLab, who nominated Markus.</p>
<p>Markus’s dedication to seeing this feature through - from initial implementation to documentation - while actively maintaining and improving merge requests based on feedback, exemplifies the best of community contribution and demonstrates the power of community-driven development in making GitLab better for AWS users.</p>
<p>This contribution was delivered through the <a href="https://about.gitlab.com/community/co-create/">GitLab Co-Create Program</a>.</p>
<p>Thanks to Markus for your valuable contributions to GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="duo-agent-platform-in-the-ide-beta">Duo Agent Platform in the IDE (Beta)</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Core, Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/556038">Related issue</a></li></ul>
</div>

<p>The Duo Agent Platform brings agentic chat and agent flows directly into VS Code and JetBrains IDEs, enabling natural conversation-based interaction with your codebase and GitLab projects.</p>
<p>Agentic chat is designed for quick, conversational tasks like creating and editing files, searching across your codebase with pattern matching and grep, and getting immediate answers about your code.
Agent flows handle larger implementations and comprehensive planning, taking high-level ideas from concept to architecture while accessing GitLab resources including issues, merge requests, commits, CI/CD pipelines, and security vulnerabilities.
Both provide intelligent search capabilities for documentation, code patterns, and project discovery to help you accomplish everything from quick edits to complex project analysis.</p>
<p>The platform also supports Model Context Protocol (MCP) for connecting to external data sources and tools, allowing AI features to leverage context beyond GitLab.</p>
<p>Learn more in our blog <a href="https://about.gitlab.com/blog/gitlab-duo-agent-platform-public-beta/">GitLab Duo Agent Platform Public Beta: Next-gen AI orchestration and more</a>.</p>
<p>To get started, see the <a href="/user/duo_agent_platform/">Duo Agent Platform documentation</a>,
<a href="/user/gitlab_duo_chat/agentic_chat/#use-gitlab-duo-chat-in-vs-code">VS Code setup guide</a>,
and <a href="/user/gitlab_duo_chat/agentic_chat/#use-gitlab-duo-chat-in-jetbrains-ides">JetBrains setup guide</a>.</p>
<h3 id="custom-workflow-statuses-for-issues-and-tasks">Custom workflow statuses for issues and tasks</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/work_items/status/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14794">Related epic</a></li></ul>
</div>

<p>Move beyond the basic open/closed system with configurable status that lets you track work items through
your team’s actual workflow stages.</p>
<p>Instead of relying on labels, you can now define custom statuses that accurately
reflect your process. With configurable statuses, you can:</p>
<ul>
<li><strong>Define custom workflows</strong> that match your team’s actual process.</li>
<li><strong>Replace workflow labels</strong> with proper statuses that are easier to find, update, and report on.</li>
<li><strong>Clarify completion outcomes</strong> beyond closing an issue using “Done” or “Canceled”.</li>
<li><strong>Filter and report accurately</strong> on work item status for better project insights.</li>
<li><strong>Use status in issue boards</strong> with automatic updates when issues move between columns.</li>
<li><strong>Bulk update status</strong> across multiple work items for efficient workflow management.</li>
<li><strong>Track dependencies</strong> with status visibility for linked work items.</li>
</ul>
<p>Custom workflow statuses also support <strong>quick actions in comments</strong> and automatically syncs with GitLab’s
open/closed system.</p>
<p>Help us improve this feature by sharing your thoughts and suggestions in our
<a href="https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/35235">feedback issue</a>.</p>
<h3 id="new-merge-request-homepage">New merge request homepage</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/homepage/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13448">Related epic</a></li></ul>
</div>

<p>Managing code reviews across multiple projects can be overwhelming when you’re juggling dozens of merge requests
as both an author and reviewer.</p>
<p>The new merge request homepage transforms how you navigate your review workload
by intelligently prioritizing what needs your attention right now, with two powerful viewing modes:</p>
<ul>
<li><strong>Workflow view</strong> organizes merge requests by their review state, grouping work by its stage in the code review workflow.</li>
<li><strong>Role view</strong> groups your merge requests by whether you’re the author or reviewer, giving you a clear separation of responsibilities.</li>
</ul>
<p>The <strong>Active</strong> tab shows merge requests requiring attention, <strong>Merged</strong> displays recently completed work,
and <strong>Search</strong> provides comprehensive filtering capabilities.</p>
<p>The new homepage also expands your visibility by combining both authored and assigned merge requests,
ensuring you never miss work that’s been delegated to you.</p>
<h3 id="improve-security-with-immutable-container-tags-beta">Improve security with immutable container tags (Beta)</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/container_registry/immutable_container_tags/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15139">Related epic</a></li></ul>
</div>

<p>Container registries are critical infrastructure for modern DevSecOps teams.
However, even with protected container tags, organizations still face a challenge:
After a tag is created, users with sufficient permissions can alter it.
This creates risks for teams that rely on specific tagged versions of container images for production stability.
Any modification—even by authorized users—can introduce unintended changes or compromise deployment integrity.</p>
<p>With immutable container tags, you can protect container images from unintended changes.
After a tag is created that matches an immutable rule, no one can modify the container image.
You can now:</p>
<ul>
<li>Create up to 5 total protection rules per project (combining both protected and immutable rules) using RE2 regex patterns.</li>
<li>Protect critical tags like latest, semantic versions (for example, v1.0.0), or release candidates from any modification.</li>
<li>Ensure immutable tags are automatically excluded from cleanup policies.</li>
</ul>
<p>Immutable container tags require the next-generation container registry, which is enabled by default on GitLab.com.
For GitLab Self-Managed instances, you must enable the <a href="/administration/packages/container_registry_metadata_database/">metadata database</a>
to use immutable container tags.</p>
<h3 id="group-and-project-controls-for-premium-and-ultimate-with-gitlab-duo">Group and project controls for Premium and Ultimate with GitLab Duo</h3>
<!-- categories: Code Suggestions, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/turn_on_off/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/551895">Related issue</a></li></ul>
</div>

<p>GitLab Premium and Ultimate users can now change the availability of Code Suggestions and GitLab Duo Chat in the IDE for groups and projects. Previously, you could change the availability for the instance or top-level group only.</p>
<h3 id="new-group-overview-compliance-dashboard">New group overview compliance dashboard</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_overview_dashboard/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13909">Related epic</a></li></ul>
</div>

<p>The compliance center is the central location for compliance teams to manage their compliance status
reporting, violations reporting, and compliance frameworks for their group.</p>
<p>The new group overview compliance dashboard gives compliance managers an aggregated view on compliance
information across all of the projects in a group. This first iteration displays the following information:</p>
<ul>
<li>% of projects covered by a certain compliance framework.</li>
<li>% of failed requirements for all projects in a group.</li>
<li>% of failed controls for all projects in a group.</li>
<li>The specific frameworks that require ‘attention’.</li>
</ul>
<p>With this new group overview, compliance managers now have a single unified view that
provides them with a clear high-level picture, of their compliance posture.</p>
<h3 id="map-workspace-kubernetes-agents-for-the-instance">Map workspace Kubernetes agents for the instance</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/gitlab_agent_configuration/#allow-a-cluster-agent-for-workspaces-on-the-instance">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16485">Related epic</a></li></ul>
</div>

<p>GitLab administrators can now map enabled workspace Kubernetes agents for the instance. Users can then create workspaces from any group or project in that instance.</p>
<p>This significantly increases workspace scalability by allowing organizations to provision workspace Kubernetes agents once, and make those agents accessible to all current and future projects across the entire instance.</p>
<h3 id="download-a-pdf-export-of-security-reports">Download a PDF export of security reports</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_dashboard/#export-as-pdf">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16989">Related epic</a></li></ul>
</div>

<p>To communicate the state and progress of your vulnerability management efforts to other stakeholders,
you can now export the security dashboard for each project or group as a PDF document.</p>
<h3 id="centralized-security-policy-management-beta">Centralized Security Policy Management (Beta)</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/enforcement/compliance_and_security_policy_groups/#set-up-centralized-security-policy-management">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17392">Related epic</a></li></ul>
</div>

<p>In large organizations where compliance is critical, teams often struggle with fragmented policies
scattered across multiple projects and groups. Without centralized visibility, ensuring consistent
enforcement becomes a time-consuming challenge while increasing compliance risk.</p>
<p>Centralized security policy management introduces a unified approach to creating, managing,
and enforcing security policies across your entire GitLab organization through a single designated
compliance and security policy (CSP) group. This allows security teams to:</p>
<ul>
<li><strong>Define policies once and apply everywhere</strong>: Create instance-wide security policies once through the CSP and automatically enforce the policies across all groups and projects.</li>
<li><strong>Configure business unit policies</strong>: Top-level groups can configure their own distinct set of policies while inheriting organization policies from the CSP group.</li>
<li><strong>Ensure adherence to principle of least privilege</strong>: Establish a central policy management layer enforced for the instance.</li>
</ul>
<p>This beta release establishes the foundational framework for centralized policy management,
with support for all existing security policy types, configurable for groups, projects, or instance.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="mistral-small-now-available-for-gitlab-duo-self-hosted">Mistral Small now available for GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#compatible-models">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18202">Related epic</a></li></ul>
</div>

<p>You can now use Mistral Small on GitLab Duo Self-Hosted. This model is available on GitLab Self-Managed instances,
and is the first fully compatible open source model for GitLab Duo Chat and Code Suggestions on GitLab Duo Self-Hosted.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="administrators-can-reassign-contributions-without-user-confirmation">Administrators can reassign contributions without user confirmation</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/import_and_export_settings/#skip-confirmation-when-administrators-reassign-placeholder-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523259">Related issue</a></li></ul>
</div>

<p>Administrators can now reassign contributions from placeholder users to active users without user confirmation.
This feature addresses a key challenge for larger organizations where the process stalled when users did not check their emails to approve reassignments.</p>
<p>On GitLab instances where user impersonation is enabled, administrators can maintain data integrity while streamlining user management workflows.
Users still receive notification emails after the reassignment is complete, ensuring transparency throughout the process.</p>
<h3 id="reassign-from-placeholder-users-to-inactive-users">Reassign from placeholder users to inactive users</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/import_and_export_settings/#skip-confirmation-when-administrators-reassign-placeholder-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523260">Related issue</a></li></ul>
</div>

<p>Previously, administrators could reassign contributions and memberships from placeholder users to active users only.</p>
<p>On GitLab Self-Managed, administrators can now also reassign contributions and memberships from placeholder users to inactive users.
This feature permits you to preserve the contribution history and membership information of blocked, banned, or deactivated users on your GitLab instance.</p>
<p>Administrators must first enable this setting and, when enabled, this setting streamlines user management by
skipping user confirmation during reassignment while maintaining secure access control.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="container-scanning-support-for-multi-architecture-container-images">Container Scanning support for multi-architecture container images</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/container_scanning/#available-cicd-variables">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/543144">Related issue</a></li></ul>
</div>

<p>Container Scanning now ships with Linux Arm64 container image variants. When running
on a Linux Arm64 runner, the analyzer will no longer require emulation, resulting in a faster
analysis. In addition, you can now scan multi-architecture images by
setting the <code>TRIVY_PLATFORM</code> environment variable to the platform you want to scan.</p>
<h3 id="improved-archive-file-support-for-container-scanning">Improved archive file support for Container Scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/container_scanning/#scanning-archive-formats">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501077">Related issue</a></li></ul>
</div>

<p>GitLab 18.2 brings improved archive file scanning support to Container Scanning.
If a vulnerability in a particular package is found in multiple images, you now see a vulnerability attributed to each scanned image.</p>
<h3 id="static-reachability-support-for-javascript">Static reachability support for JavaScript</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/static_reachability/#supported-languages-and-package-managers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/502334">Related issue</a></li></ul>
</div>

<p>Composition Analysis now supports Static Reachability for JavaScript libraries.
You can use the data produced by static reachability as part of your triage and remediation
decision making. Static reachability data can also be used with EPSS, KEV, and CVSS scores
to provide a more focused view of your vulnerabilities.</p>
<h3 id="improved-support-for-verifying-successful-dast-login">Improved support for verifying successful DAST login</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/configuration/variables/#authentication">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435942">Related issue</a></li></ul>
</div>

<p>Previously, the <code>DAST_AUTH_SUCCESS_IF_AT_URL</code> variable required an exact URL match to verify successful authentication. This worked well for applications with static landing pages, but posed difficulties for applications where post-login URLs contain dynamic elements for each login.</p>
<p>Now, you can use wildcard patterns in the <code>DAST_AUTH_SUCCESS_IF_AT_URL</code> variable to match dynamic URL patterns. This enhancement provides the flexibility needed to verify authentication success even when the exact URL changes between sessions.</p>
<h3 id="dast-support-for-time-based-one-time-password-mfa">DAST support for time-based one-time password MFA</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/configuration/authentication/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13633">Related epic</a></li></ul>
</div>

<p>Dynamic Analysis now supports time-based one-time password (TOTP) multi-factor authentication.</p>
<p>You can run DAST scans on projects with TOTP MFA enabled to ensure comprehensive security testing.
This enhancement delivers more accurate scan results by testing applications in configurations that mirror
production environments where MFA is deployed.</p>
<h3 id="deactivate-streaming-to-an-audit-streaming-destination">Deactivate streaming to an audit streaming destination</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_streaming/#activate-or-deactivate-streaming-destinations">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/537096">Related issue</a></li></ul>
</div>

<p>Previously, there was no way to temporarily deactivate streaming to an audit streaming destination. You might
want to do this for a number of reasons, including to troubleshoot stream connectivity or to make changes to
configuration without deleting the configuration and starting again.</p>
<p>With GitLab 18.2, we’ve added the ability to toggle an audit stream as active or inactive. When the audit stream
is inactive, audit events are no longer streamed to the chosen destination. When reactivated, audit events are
again streamed to the chosen destination.</p>
<h3 id="filter-functionality-for-all-audit-streaming-destinations">Filter functionality for all audit streaming destinations</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_streaming/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524939">Related issue</a></li></ul>
</div>

<p>Previously, certain audit streaming destinations did not have all of the available filtering capability.</p>
<p>We now support filter functionality for all destinations via the UI, including the ability to filter:</p>
<ul>
<li>By audit event type.</li>
<li>By groups or projects.</li>
</ul>
<p>This change also means that audit event destinations such as AWS and GCP can now filter through audit events.</p>
<h3 id="configure-epic-display-preferences">Configure epic display preferences</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/393559">Related issue</a></li></ul>
</div>

<p>You now have full control over which metadata appears when you view your list of
work items, making it easier to focus on the information that matters most to you.</p>
<p>Previously, all metadata fields were always visible, which could make scanning through work
items overwhelming. Now you can customize your view by turning on or off specific fields
like assignees, labels, dates, and milestones.</p>
<h3 id="open-epics-in-a-drawer-or-the-full-page-on-the-epics-page">Open epics in a drawer or the full page on the Epics page</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#open-epics-in-a-drawer">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/536620">Related issue</a></li></ul>
</div>

<p>You can now choose how epics open from the list page with a new toggle that switches between drawer view and
full-page navigation.</p>
<p>Use the drawer to quickly review epic details while maintaining context of your epic list,
or open the full page when you need more screen space for detailed editing and comprehensive navigation.</p>
<h3 id="assign-milestones-to-epics-for-enhanced-long-term-planning">Assign <a href="/user/project/milestones/">milestones</a> to epics for enhanced long-term planning</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/milestones/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/329">Related epic</a></li></ul>
</div>

<p>You can now assign <a href="/user/project/milestones/">milestones</a> directly to epics, creating a natural planning cascade from strategic initiatives down to execution. This enhancement helps you align longer-term planning cadences, like quarterly planning or SAFe program increments, with epics. At the same time, you can keep iterations focused on development sprints.</p>
<p>With this clear hierarchy in place, you can reduce administrative overhead and gain better visibility into how your strategic initiatives progress against organizational timeframes.</p>
<h3 id="assign-epics-to-team-members">Assign epics to team members</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#assignees">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/4231">Related epic</a></li></ul>
</div>

<p>You can now assign epics to individuals, making it clear who is responsible for overseeing strategic initiatives. Epic assignees help you identify ownership at the portfolio level, enabling faster decision-making and clearer accountability for long-term objectives. Teams can quickly see who to contact about epic progress, dependencies, or scope changes.</p>
<h3 id="sorting-and-pagination-for-glql-views">Sorting and pagination for GLQL views</h3>
<!-- categories: Wiki, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/glql/#presentation-syntax">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/502701">Related issue</a></li></ul>
</div>

<p>This release introduces enhanced sorting and pagination for GLQL views, making it easier to work with large datasets.</p>
<p>You can now sort by key fields including due dates, health status, and popularity to quickly find the most relevant items. The new “Load more” pagination system provides better control over data loading, replacing overwhelming full-page results with manageable chunks that load on demand.</p>
<p>These improvements help teams efficiently navigate complex project data and focus on what matters most at any given moment.</p>
<h3 id="work-item-references-and-editor-improvements-for-gitlab-flavored-markdown">Work item references and editor improvements for GitLab Flavored Markdown</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/#gitlab-specific-references">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/7654">Related epic</a></li></ul>
</div>

<p>You can now reference issues, epics, and work items using a unified <code>[work_item:123]</code> syntax in GitLab Flavored Markdown. This new syntax works alongside existing reference formats like <code>#123</code> for issues and <code>&amp;123</code> for epics, and supports cross-project references with <code>[work_item:namespace/project/123]</code>.</p>
<p>The plain text editor also includes a new <a href="/user/profile/preferences/#maintain-cursor-indentation">preference to maintain cursor indentation</a> when you press Enter, making it easier to write structured content like nested lists and code blocks.</p>
<h3 id="vulnerability-id-added-to-vulnerability-report-csv-export">Vulnerability ID added to vulnerability report CSV export</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#exporting">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18033">Related epic</a></li></ul>
</div>

<p>Previously, the CSV export of the vulnerability report did not include vulnerability IDs.
You can now find the ID of each vulnerability listed in the CSV export.</p>
<h3 id="reachability-filter-in-the-vulnerability-report">Reachability filter in the vulnerability report</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#filtering-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/543346">Related issue</a></li></ul>
</div>

<p>Users can now filter data in the vulnerability report to include only reachable vulnerabilities.
Reachable vulnerabilities represent vulnerabilities that are both:</p>
<ul>
<li>On the Common Vulnerabilities and Exposures (CVE) list.</li>
<li>Part of a library that is explicitly imported.</li>
</ul>
<h3 id="vulnerability-graphql-api-returns-additional-information">Vulnerability GraphQL API returns additional information</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#vulnerability">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/468913">Related issue</a></li></ul>
</div>

<p>You can now use the GraphQL API to determine the pipeline when the vulnerability was
introduced and when it was last detected. The Vulnerability GraphQL API now includes:</p>
<ul>
<li><code>initialDetectedPipeline</code>: Use to retrieve additional commit information about when the vulnerability was introduced, such as the author’s user name.</li>
<li><code>latestDetectedPipeline</code>: Use to retrieve additional commit information about when the vulnerability was removed, such as the commit SHA.</li>
</ul>
<h3 id="source-branch-pattern-exceptions-for-approval-policies">Source branch pattern exceptions for approval policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#source-branch-exceptions">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/18113">Related epic</a></li></ul>
</div>

<p>Previously, teams using GitFlow often faced approval deadlocks when merging <code>release/*</code> branches to <code>main</code>,
as most contributors had already participated in release development and then couldn’t serve as approvers.</p>
<p>Branch pattern exceptions in merge request approval policies solve this by automatically bypassing approval
requirements for specific source-target branch combinations.
Configure strict approvals for feature-to-main merges while allowing streamlined release-to-main workflows.</p>
<p><strong>Key capabilities:</strong></p>
<ul>
<li><strong>Pattern-based configuration:</strong> Define source branch patterns like <code>release/*</code> or <code>hotfix/*</code> that bypass approval requirements</li>
<li><strong>Seamless integration:</strong> Branch exceptions integrate directly into existing merge request approval policies and are configurable through the UI or <code>policy.yml</code> file.</li>
</ul>
<p>This eliminates the need for complex workarounds while preserving the security benefits of merge request
approval policies for standard development workflows.</p>
<h3 id="display-dependency-paths">Display dependency paths</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#dependency-paths">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16815">Related epic</a></li></ul>
</div>

<p>Previously, it was difficult to determine whether a dependency was a direct dependency, or a transient dependency imported by a descendant of the dependency.</p>
<p>You can now determine whether a library is primarily or transitively imported using the new dependency paths feature. You can find dependency paths on the project and group dependency list as well as in the vulnerability details. This capability allows developers to determine the most efficient path to a fix depending on how the library is imported.</p>
<h3 id="credentials-inventory-now-includes-service-account-tokens">Credentials inventory now includes service account tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/credentials_inventory/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421954">Related issue</a></li></ul>
</div>

<p>GitLab now supports service account tokens in the credentials inventory, giving you better visibility and control over the various authentication methods used across your software supply chain. The credentials inventory provides a complete picture of credentials used across your organization.</p>
<h3 id="security-inventory-for-comprehensive-asset-visibility-now-in-beta">Security Inventory for comprehensive asset visibility now in beta</h3>
<!-- categories: Security Asset Inventories -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/security_inventory/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16484">Related epic</a></li></ul>
</div>

<p>AppSec teams need comprehensive visibility into their organization’s security posture across all assets. Previously, GitLab’s security workflows focused primarily on project-level scanner configuration and project-level vulnerabilities, making it difficult to understand coverage gaps and make efficient, risk-based prioritization decisions.</p>
<p>Security Inventory provides a centralized view of the security posture across your GitLab instance, enabling AppSec teams to:</p>
<ul>
<li>Get complete visibility into security coverage across projects and groups</li>
<li>Identify assets that lack security scanning or have configuration gaps</li>
<li>Make informed, risk-based decisions about where to focus security efforts</li>
<li>Track security posture improvements over time</li>
</ul>
<p>This feature helps bridge the gap between individual project security and organization-wide security strategy, giving you the asset inventory foundation needed for effective security program management.</p>
<h3 id="custom-admin-role-in-beta">Custom admin role in beta</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15069">Related epic</a></li></ul>
</div>

<p>The custom admin role brings granular permissions to the Admin Area for GitLab Self-Managed and GitLab Dedicated instances. Instead of granting full access, administrators can now create specialized roles that access only the specific functions needed by users. This feature helps organizations implement the principle of least privilege for administrative functions, reduce security risks from overprivileged access, and improve operational efficiency.</p>
<p>We’re actively seeking community feedback on this feature. If you have questions, want to share your implementation experience, or would like to engage directly with our team about potential improvements, please visit our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509376">feedback issue</a>.</p>
<h3 id="trigger-jobs-can-mirror-the-downstream-pipeline-status">Trigger jobs can mirror the downstream pipeline status</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#triggerstrategy">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431882">Related issue</a></li></ul>
</div>

<p>Previously, trigger jobs using <code>strategy:depend</code> had limitations when dealing with complex pipeline states such as manual jobs,
blocked pipelines, or retried pipelines with changing statuses during execution.
This could make it seem like the downstream pipeline was actively running, when it was actually blocked on a manual job.</p>
<p>The new <code>strategy:mirror</code> keyword provides more nuanced status reporting by mirroring
the exact real-time status of the downstream pipeline. Statuses include intermediate states like
<code>running</code>, <code>manual</code>, <code>blocked</code>, and <code>canceled</code> . This gives teams complete visibility into
the current state of their downstream pipeline without breaking the existing workflow.</p>
<h3 id="gitlab-runner-182">GitLab Runner 18.2</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.2 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38890">Runners fail in FIPS mode after you upgrade to GitLab Runner 18.1.0</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/241">Unable to start job pods with <code>FF_USE_DUMB_INIT_WITH_KUBERNETES_EXECUTOR</code></a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38273">The <code>ubi-fips</code> image is not the default helper image flavor for GitLab Runner FIPS</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29181">Runners remain offline for an extended period after you disable GitLab maintenance mode</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-2-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-2-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.2">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.2">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.2">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.1 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-1-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-1-released/</id><published>2025-06-19T00:00:00Z</published><updated>2025-06-19T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On June 19, 2025, GitLab 18.1 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-chaitanya-sonwane">This month’s Notable Contributor: Chaitanya Sonwane</h2>
<p>Chaitanya Sonwane drives GitLab’s security capabilities through consistent authentication
improvements.
<a href="https://contributors.gitlab.com/users/chaitanyason9?fromDate=2025-01-01&amp;toDate=2025-12-31">With 13 merged contributions in 2025</a>, his work enhanced credential inventory filtering, service account management, and work items usability.
He previously delivered a <a href="https://about.gitlab.com/releases/2025/04/17/gitlab-17-11-released/#token-statistics-for-service-account-management">key feature in GitLab 17.11</a> with token statistics for service accounts, which provides “at a glance” information that makes it easier to manage service accounts.
Chaitanya is now <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/503587">improving work item list sort settings to be context specific</a>, further enhancing the user experience in GitLab’s Product Planning.</p>
<p>Chaitanya’s work directly strengthens security for GitLab organizations and
provides better visibility into service account usage across projects.
Teams can now track and rotate credentials more effectively.
This reduces the risk of orphaned or forgotten credentials that create security
vulnerabilities.</p>
<p>“Chaitanya’s contributions to the credential inventory and service accounts are both very
valuable contributions in the security space,” says <a href="https://gitlab.com/eduardosanz">Eduardo Sanz-Garcia</a>, Senior Frontend Engineer for the Authentication group, Software Supply Chain Security stage.
Eduardo supported the nomination from GitLab’s Authentication team.</p>
<p>“Chaitanya was instrumental in the implementation of the token statistics concept,” Eduardo adds.
“His credential inventory work delivered a highly requested feature to enhance the tractability and monitoring of credentials.
This was a great contribution!”</p>
<p>Chaitanya is a Software Engineer at TATA AIG.
He proactively tackles security issues and follows up consistently on improvements to his own
contributions.</p>
<p>Thanks to Chaitanya for contributing to GitLab’s security foundation and the rest of the product!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="maven-virtual-registry-now-available-in-beta">Maven virtual registry now available in beta</h3>
<!-- categories: Virtual Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/virtual_registry/maven/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14137">Related epic</a></li></ul>
</div>

<p>The Maven virtual registry simplifies Maven dependency management in GitLab. Without the Maven virtual registry, you must configure each project to access dependencies from Maven Central, private repositories, or the GitLab package registry. This approach slows builds with sequential repository queries and complicates security auditing and compliance reporting.</p>
<p>The Maven virtual registry addresses these issues by aggregating multiple upstream repositories behind a single endpoint. Platform engineers can configure Maven Central, private registries, and GitLab package registries through one URL. Intelligent caching improves build performance and integrates with GitLab’s authentication systems. Organizations benefit from reduced configuration overhead, faster builds, and centralized access control for improved security and compliance.</p>
<p>The Maven virtual registry is currently available in beta for GitLab Premium and Ultimate customers on both GitLab.com and GitLab Self-Managed. The GA release will include additional capabilities, such as a web-based user interface for registry configuration, shareable upstream functionality, lifecycle policies for cache management, and enhanced analytics. Current beta limitations include a maximum of 20 virtual registries per top-level groups and 20 upstreams per virtual registry, with API-only configuration available during the beta period.</p>
<p>We invite enterprise customers to participate in the Maven virtual registry beta program to help shape the final release. Beta participants will receive early access to the capabilities, direct engagement with GitLab product teams, and priority support during evaluation. To join the beta program, express interest and provide your use case details in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/498139">issue 498139</a>, and share feedback and suggestions in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/543045">issue 543045</a>.</p>
<h3 id="duo-code-review-is-now-generally-available">Duo Code Review is now generally available</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/duo_in_merge_requests/">Documentation</a></li></ul>
</div>

<p>Duo Code Review is now generally available and ready for production use. This AI-powered code review assistant transforms the traditional code review process by providing intelligent, automated feedback on your merge requests. It helps identify potential bugs, security vulnerabilities, and code quality issues before human reviewers get involved, making the entire review process more efficient and thorough. It includes:</p>
<ul>
<li><strong>Automated initial review</strong>: Duo Code Review analyzes your code changes and provides comprehensive feedback on potential issues, improvements, and best practices.</li>
<li><strong>Interactive refinement</strong>: Mention <code>@GitLabDuo</code> in merge request comments to get targeted feedback on specific changes or questions.</li>
<li><strong>Actionable suggestions</strong>: Many suggestions can be applied directly from your browser, streamlining the improvement process.</li>
<li><strong>Context-aware analysis</strong>: Leverages understanding of the changed files to provide relevant, project-specific recommendations.</li>
</ul>
<p>To request a code review:</p>
<ul>
<li>In your merge request, add <code>@GitLabDuo</code> as a reviewer using the <code>/assign_reviewer @GitLabDuo</code> quick action, or assign GitLab Duo directly as a reviewer.</li>
<li>Mention <code>@GitLabDuo</code> in comments to ask specific questions or request focused feedback on any discussion thread.</li>
<li>Enable automatic reviews in your project settings to have GitLab Duo automatically review all new merge requests.</li>
</ul>
<p>Duo Code Review helps teams maintain higher code quality standards while reducing the time spent on manual review cycles. By catching issues early and providing educational feedback, it serves as both a quality gate and a learning tool for development teams.</p>
<p>**<a href="https://www.youtube.com/watch?v=FlHqfMMfbzQ">Watch an overview</a> of Duo Code Review in action from our beta release.</p>
<p>Share your experience and feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517386">issue 517386</a> to help us continue improving this feature.</p>
<h3 id="compromised-password-detection-for-native-gitlab-credentials">Compromised password detection for native GitLab credentials</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/user_passwords/#compromised-password-detection">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/549865">Related issue</a></li></ul>
</div>

<p>GitLab.com now performs a secure check of your account credentials when you sign in to GitLab.com.
If your password is part of a known leak, GitLab displays a banner and sends you an email notification.
These notifications include instructions for how to update your credentials.</p>
<p>For maximum security, GitLab recommends using a unique, strong password for GitLab, enabling two-factor authentication, and regularly reviewing your account activity.</p>
<p>Note: This feature is only available for native GitLab usernames and passwords. SSO credentials are not checked.</p>
<h3 id="achieve-slsa-level-1-compliance-with-cicd-components">Achieve <a href="https://slsa.dev/">SLSA</a> Level 1 compliance with CI/CD components</h3>
<!-- categories: Artifact Security -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipeline_security/slsa/#sign-and-verify-slsa-provenance-with-a-cicd-component">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15859">Related epic</a></li></ul>
</div>

<p>You can now achieve SLSA Level 1 compliance using GitLab’s new CI/CD components for signing and verifying SLSA-compliant
<a href="/ci/runners/configure_runners/#artifact-provenance-metadata">artifact provenance metadata</a> generated by GitLab Runner. The components wrap <a href="/ci/yaml/signing_examples/">Sigstore Cosign functionality</a>
in reusable modules that can be easily integrated into CI/CD workflows.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="multiple-matches-per-file-in-code-search">Multiple matches per file in code search</h3>
<!-- categories: Code Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/zoekt/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13127">Related epic</a></li></ul>
</div>

<p>Exact code search (in beta) now consolidates multiple search results from the same file into a single view. This improvement:</p>
<ul>
<li>Preserves context between adjacent matches instead of displaying isolated lines.</li>
<li>Reduces visual clutter by eliminating duplicate content when matches are close together.</li>
<li>Enhances navigation by clearly showing the number of matches per file.</li>
<li>Improves readability by displaying code as you would see it in your editor.</li>
</ul>
<p>With this change, finding and understanding code patterns across your repositories is now more efficient.</p>
<h3 id="new-accesslevels-argument-for-projectmembers-in-graphql-api">New <code>accessLevels</code> argument for <code>projectMembers</code> in GraphQL API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#projectprojectmembers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/541386">Related issue</a></li></ul>
</div>

<p>We’re excited to announce the addition of the <code>accessLevels</code> argument to the <code>projectMembers</code> field in our GraphQL API.
Use this argument to filter project members by access level directly from an API call.
Previously, you had to fetch an entire list of project members and apply filters locally, which added significant computational overhead.
Now, analyzing project permissions and generating ownership graphs is faster and more resource-efficient.
This enhancement is particularly valuable to organizations managing large-scale deployments with complex permission structures.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="dast-detection-parity-with-secret-detection-default-rules">DAST detection parity with secret detection default rules</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/checks/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/549990">Related issue</a></li></ul>
</div>

<p>The DAST analyzer now automatically ingests the same default secret detection rules that are used by GitLab’s Secret Detection analyzer. This improvement ensures consistency in the types of secrets detected by both.</p>
<h3 id="define-a-name-for-external-custom-controls">Define a <code>Name</code> for external custom controls</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/#external-controls">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/527007">Related issue</a></li></ul>
</div>

<p>Previously, you couldn’t define a name for an external custom control when creating a custom compliance framework,
which made it difficult to identify external controls when listed alongside GitLab controls.</p>
<p>We’ve now added a <code>Name</code> field as part of the workflow when defining an external custom control, so you can
create multiple external custom controls and clearly define each one with its own unique name.</p>
<h3 id="pagination-for-requirements-in-compliance-frameworks-ui">Pagination for requirements in compliance frameworks UI</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/#add-requirements">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/531039">Related issue</a></li></ul>
</div>

<p>When creating a compliance framework, you can specify a maximum of 50 requirements.</p>
<p>However, it becomes very difficult to navigate a compliance framework with this many requirements because they
consume a lot of space in the user interface.</p>
<p>In this release, we have introduced pagination for requirements to make it easier for users to navigate, find, and
select requirements when there is a large number of them attached to a compliance framework.</p>
<h3 id="ui-performance-and-filtering-improvements-for-compliance-center">UI performance and filtering improvements for compliance center</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/">Documentation</a></li></ul>
</div>

<p>We have continued to improve the UI performance and filtering options provided by the compliance center. In this
release, we have:</p>
<ul>
<li>Improved the UI speed and performance of the <strong>Edit Framework</strong> page, especially where there are many requirements and projects on the page.</li>
<li>Introduced new filtering options so that you can group by requirement, project, or framework in the <strong>Compliance status report</strong> tab in the compliance center.</li>
</ul>
<p>By delivering these improvements, we continue to ensure that the compliance center and associated functions
continue to perform at scale for customers who regularly use the compliance center.</p>
<h3 id="control-status-pop-up-in-the-compliance-status-report">Control status pop-up in the compliance status report</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_status_report/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/521757">Related issue</a></li></ul>
</div>

<p>Controls in the compliance status report have three different statuses:</p>
<ul>
<li>Pass</li>
<li>Fail</li>
<li>Pending</li>
</ul>
<p>No matter the number of controls that are attached to the requirement, if at least one control was ‘pending’, the
entire requirement row was shown as ‘pending’ as well. This deviated from the established UX pattern for visualizing
failed controls, where the requirement would show the number of controls associated with the requirement, even
when there was at least one control that fails.</p>
<p>To provide further context and information for ‘pending’ controls, we now provide a hover over pop-up on the
requirement row status, with the status of each control listed. You can now understand which controls are pending,
and which are potentially succeeding and failing, rather than just seeing a single status for ‘pending’.</p>
<h3 id="enhanced-merge-request-review-experience-with-review-panel">Enhanced merge request review experience with review panel</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/reviews/#submit-a-review">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/525841">Related issue</a></li></ul>
</div>

<p>When you review a merge request, it can be valuable to see all of the comments and feedback you’ve provided before you submit your review. Previously, this experience was fragmented between the final comment and an additional pop-up to see your pending comments, making it hard to get the complete overview.</p>
<p>When conducting code reviews, you can now access a dedicated drawer that consolidates all your pending draft comments in one organized view. The enhanced review panel moves the review submission interface to a more accessible location, and provides a numbered badge showing your pending comment count. When you open the panel, you’ll see all your draft comments organized in a scrollable list, making it easier to review and manage your feedback before submitting.</p>
<h3 id="enhanced-codeowners-file-validation-with-permission-checks">Enhanced CODEOWNERS file validation with permission checks</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/codeowners/troubleshooting/#validate-your-codeowners-file">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15598">Related epic</a></li></ul>
</div>

<p>GitLab now provides enhanced validation for CODEOWNERS files that goes beyond basic syntax checking. When viewing a CODEOWNERS file, GitLab automatically runs comprehensive validations to help you identify both syntax and permission issues before they affect your merge request workflows.</p>
<p>The enhanced validation checks the first 200 unique user and group references in your CODEOWNERS file, and verifies that:</p>
<ul>
<li>All referenced users and groups have access to the project.</li>
<li>Users have the necessary permissions to approve merge requests.</li>
<li>Groups have at least Developer-level access or higher.</li>
<li>Groups contain at least one user with merge request approval permissions.</li>
</ul>
<p>This proactive validation helps prevent approval workflow disruptions by catching configuration issues early, ensuring your Code Owners can actually fulfill their review responsibilities when merge requests are created.</p>
<h3 id="custom-workspace-initialization-with-poststart-events">Custom workspace initialization with <code>postStart</code> events</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/#user-defined-poststart-events">Documentation</a></li></ul>
</div>

<p>GitLab workspace now supports custom <code>postStart</code> events in your devfile, allowing you to define commands that automatically execute after workspace startup. Use these events to:</p>
<ul>
<li>Set up development dependencies.</li>
<li>Configure your environment.</li>
<li>Run initialization scripts that prepare your project for immediate productivity without manual intervention.</li>
</ul>
<h3 id="view-downstream-pipeline-job-logs-in-vs-code">View downstream pipeline job logs in VS Code</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/editor_extensions/visual_studio_code/cicd/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/1895">Related issue</a></li></ul>
</div>

<p>The GitLab Workflow extension for VS Code now displays job logs from downstream pipelines directly in your editor. Previously, viewing logs from child pipelines required switching to the GitLab web interface.</p>
<p>This feature was developed through the <a href="https://about.gitlab.com/community/co-create/">GitLab Co-create program</a>. Special thanks to Tim Ryan for making this contribution!</p>
<h3 id="view-inactive-personal-access-tokens">View inactive personal access tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/425053">Related issue</a></li></ul>
</div>

<p>GitLab automatically deactivates access tokens after they expire or are revoked. You can now review these inactive tokens. Previously, access tokens were no longer visible after they became inactive. This change enhances traceability and security of these token types.</p>
<h3 id="epic-support-for-gitlab-query-language-views-beta">Epic support for GitLab Query Language views Beta</h3>
<!-- categories: Wiki, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/glql/fields/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-query-language/glql-rust/-/issues/30">Related issue</a></li></ul>
</div>

<p>We’ve made a significant improvement to GitLab Query Language (GLQL) views. You can now use epic as a type in your queries to search for epics across groups, and query by parent epic!</p>
<p>This is a huge step forward for our planning and tracking capabilities, making it easier than ever to query and organize at the epic level.</p>
<h3 id="php-support-for-advanced-sast">PHP support for Advanced SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/#supported-languages">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14273">Related epic</a></li></ul>
</div>

<p>We have added PHP support to GitLab Advanced SAST.
To use this new cross-file, cross-function scanning support, <a href="/user/application_security/sast/gitlab_advanced_sast/#turn-on-gitlab-advanced-sast">enable Advanced SAST</a>.
If you have already enabled Advanced SAST, PHP support is automatically activated.</p>
<p>To see which types of vulnerabilities Advanced SAST detects in each language, see the <a href="/user/application_security/sast/advanced_sast_coverage/">Advanced SAST coverage page</a>.</p>
<h3 id="filter-by-component-version-in-the-dependency-list">Filter by component version in the dependency list</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#filter-dependency-list">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16431">Related epic</a></li></ul>
</div>

<p>The dependency lists now supports filtering by a component’s version number. You can select multiple versions
(for example, <code>version=1.1,1.2,1.4</code> ) but ranges are not supported. This feature is available in both groups and projects.</p>
<h3 id="variable-precedence-controls-in-pipeline-execution-policies">Variable precedence controls in pipeline execution policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/#variables_override-type">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16430">Related epic</a></li></ul>
</div>

<p>Security teams often strike a delicate balance between security assurance and developer experience. It’s critical to ensure security scans are properly enforced, but security analyzers can require specific inputs from development teams to properly execute. With variable precedence controls, security teams now have granular control over how variables are handled in pipeline execution policies through the new <code>variables_override</code> configuration option.</p>
<p>Using this new configuration, you can now:</p>
<ul>
<li>Enforce container scanning policies that allow project-specific container image paths (<code>CS_IMAGE</code>).</li>
<li>Allow lower risk variables like <code>SAST_EXCLUDED_PATHS</code> while blocking high risk variables like <code>SAST_DISABLED</code>.</li>
<li>Define globally shared credentials that are secured (masked or hidden) with global CI/CD variables, such as <code>AWS_CREDENTIALS</code>, while allowing project-specific overrides where appropriate through project-level CI/CD variables.</li>
</ul>
<p>This powerful feature supports two approaches:</p>
<ul>
<li><strong>Lock variables by default</strong> (<code>allow: false</code>): Lock all variables except specific ones you list as exceptions.</li>
<li><strong>Allow variables by default</strong> (<code>allow: true</code>): Allow variables to be customized, but restrict critical risks by listing them as exceptions.</li>
</ul>
<p>To improve traceability and troubleshooting when a pipeline execution policy is the source of an CI/CD job, we’re also introducing job logs to help developers and security teams identify the jobs executed by a policy. The job logs provide details on the impact of variable overrides to help you understand if variables are overridden or locked by policies.</p>
<p><strong>Real-world impact</strong></p>
<p>This enhancement bridges the gap between security requirements and flexibility for developers:</p>
<ul>
<li>Security teams can enforce standardized scanning while allowing project-specific customizations.</li>
<li>Developers maintain control over project-specific variables without requesting policy exceptions.</li>
<li>Organizations can implement consistent security policies without disrupting development workflows.</li>
</ul>
<p>By solving this critical variable control challenge, GitLab enables organizations to implement robust security policies without sacrificing the flexibility teams need to deliver software efficiently.</p>
<h3 id="filter-for-bot-and-human-users">Filter for bot and human users</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/moderate_users/#view-users-by-type">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/541186">Related issue</a></li></ul>
</div>

<p>Established GitLab instances can often have large numbers of human and bot users. You can now filter the users list in the Admin area by user type. Filtering users can help you:</p>
<ul>
<li>Quickly identify and manage human users separately from automated accounts.</li>
<li>Perform targeted administrative actions on specific user types.</li>
<li>Simplify user auditing and management workflows.</li>
</ul>
<h3 id="orcid-identifier-in-user-profile"><a href="https://orcid.org/">ORCID</a> identifier in user profile</h3>
<!-- categories: User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/23543">Related issue</a></li></ul>
</div>

<p>GitLab now supports ORCID identifiers in user profiles, making GitLab more accessible and valuable for researchers and the academic community. <a href="https://orcid.org/">ORCID</a> (Open Researcher and Contributor ID) provides researchers with a persistent digital identifier that distinguishes them from other researchers and supports automated linkages between researchers and their professional activities, ensuring their work is properly recognized.</p>
<p>This feature was developed as a community contribution by Thomas Labalette and Erwan Hivin, master students at Artois University, under the supervision of <a href="https://www.ouvrirlascience.fr/appointment-of-daniel-le-berre-as-the-national-coordinator-for-higher-education-and-research-software-forges-in-france/">Daniel Le Berre</a>, addressing a long-standing request from the academic community.</p>
<h3 id="subscribe-to-service-account-pipeline-notifications">Subscribe to service account pipeline notifications</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/notifications/#notifications-about-failed-pipeline-that-doesnt-exist">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/515629">Related issue</a></li></ul>
</div>

<p>You can now subscribe to notifications for pipeline events triggered by service accounts. Notifications are sent when the pipeline passes, fails, or is fixed. Previously, these notifications were only sent to the service account’s email address if the service account has a valid custom email address.</p>
<p>Thank you <a href="https://gitlab.com/[Densett]%28https://gitlab.com/Densett%29">Densett</a>, <a href="https://gitlab.com/tonton1728">Gilles Dehaudt</a>, <a href="https://gitlab.com/lenaing">Lenain</a>, <a href="https://gitlab.com/gmcquat">Geoffrey McQuat</a>, and <a href="https://gitlab.com/rbihore">Raphaël Bihoré</a> for your contribution!</p>
<h3 id="increased-sast-coverage-for-duo-vulnerability-resolution">Increased SAST coverage for Duo Vulnerability Resolution</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/#supported-vulnerabilities-for-vulnerability-resolution">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/534307">Related issue</a></li></ul>
</div>

<p>Previously, you had to manually resolve detected vulnerabilities with these Common Weakness Enumeration (CWE) identifiers:</p>
<ul>
<li>CWE-78 (Command Injection)</li>
<li>CWE-89 (SQL Injection)</li>
</ul>
<p>Now, Duo Vulnerability Resolution can automatically fix these vulnerabilities.</p>
<h3 id="gitlab-runner-181">GitLab Runner 18.1</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.1 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/543351">If you upgrade to GitLab 17.10 or 17.11, runners might receive a <code>404</code> response when they request jobs</a>.</li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-1-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-1-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.1">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.1">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.1">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 18.0 release notes</title><link href="https://docs.gitlab.com/releases/18/gitlab-18-0-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/18/gitlab-18-0-released/</id><published>2025-05-15T00:00:00Z</published><updated>2025-05-15T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On May 15, 2025, GitLab 18.0 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-michael-hofer">This month’s Notable Contributor: Michael Hofer</h2>
<p>Michael Hofer champions GitLab’s open source mission as both a top contributor and community leader.
With over <a href="https://contributors.gitlab.com/users/karras?fromDate=2025-01-01&amp;toDate=2025-05-12">50 contributions</a> this year,
his work strengthened GitLab’s Geo features and Secrets Manager, based on OpenBao.
He topped the <a href="https://contributors.gitlab.com/hackathon?hackathonName=2025_04">April Hackathon</a> while supporting fellow contributors and leading community projects.</p>
<p>“I truly appreciate that everyone can contribute to GitLab!” says Michael.
“The team is great to work with, it’s a lot of fun, and everyone is super helpful, especially when we team up across open source initiatives like OpenBao and SLSA.”</p>
<p>Michael is the CTO at <a href="https://adfinis.com/en/">Adfinis</a>, an international IT service provider specializing in planning, building, and running mission critical open source workloads.
He is passionate about fostering collaboration and promoting open source solutions across organizations.</p>
<p>Recently, Adfinis participated in GitLab’s <a href="https://about.gitlab.com/community/co-create/">Co-Create program</a>, which pairs organizations with GitLab’s product and engineering teams
to build GitLab together.
“We highly recommend Co-Create to all organizations,” Michael says. “It led to a number of cool contributions, including rootless Podman builds, Glimmer syntax highlighting, and other improvements.”</p>
<p>“The Geo Team really appreciates and enjoys working with Michael,” says <a href="https://gitlab.com/luciezhao">Lucie Zhao</a>, Engineering Manager at GitLab, who nominated Michael for the award.
“With his excellent contributions over the last few milestones, he has become the most well-known community contributor within our team.”</p>
<p>GitLab team members <a href="https://gitlab.com/leetickett-gitlab">Lee Tickett</a>, <a href="https://gitlab.com/c_fons">Chloe Fons</a>, and <a href="https://gitlab.com/cipherboy-gitlab">Alex Scheel</a> supported the nomination.
Alex adds, “Michael’s leadership in OpenBao has enabled us to effectively collaborate in bringing forward a secrets management solution for our customers, with the transparency that aligns with our GitLab values.”</p>
<p>Thanks to Michael and the Adfinis team for co-creating GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-premium-and-ultimate-with-duo">GitLab Premium and Ultimate with Duo</h3>
<!-- categories: Code Suggestions, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/538857">Related issue</a></li></ul>
</div>

<p>We’re excited to announce GitLab Premium with Duo and GitLab Ultimate with Duo. GitLab Premium and Ultimate now include AI-native features.</p>
<p>GitLab’s AI-native features include Code Suggestions and Chat within the IDE. Development teams can use these features to:</p>
<ul>
<li>Analyze, understand, and explain code</li>
<li>Write secure code faster</li>
<li>Quickly generate tests to maintain code quality</li>
<li>Easily refactor code to improve performance or use specific libraries</li>
</ul>
<h3 id="repository-x-ray-now-available-on-gitlab-duo-self-hosted">Repository X-Ray now available on GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/repository_xray/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17756">Related epic</a></li></ul>
</div>

<p>You can now use Repository X-Ray with Code Suggestions on GitLab Duo Self-Hosted. This feature is in beta for GitLab Duo Self-Hosted, and is generally available on GitLab Self-Managed instances.</p>
<h3 id="automatic-reviews-with-duo-code-review">Automatic reviews with Duo Code Review</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/duo_in_merge_requests/">Documentation</a></li></ul>
</div>

<p>Duo Code Review provides valuable insights during the review process, but currently requires you to manually request reviews on each merge request.</p>
<p>You can now configure GitLab Duo Code Review to run automatically on merge requests by updating your project’s merge request settings. When enabled, Duo Code Review automatically reviews merge requests unless:</p>
<ul>
<li>The merge request is marked as draft.</li>
<li>The merge request contains no changes.</li>
</ul>
<p>Automatic reviews ensure that all code in your project receives a review, consistently improving code quality across your codebase.</p>
<h3 id="code-suggestions-prompt-caching">Code Suggestions prompt caching</h3>
<!-- categories: Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/#prompt-caching">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17489">Related epic</a></li></ul>
</div>

<p>Code Suggestions now includes prompt caching. Prompt caching significantly improves code completion latency by avoiding the re-processing of cached prompt and input data. The cached data is never logged to any persistent storage, and you can optionally disable prompt caching in the GitLab Duo settings.</p>
<h3 id="improved-duo-code-review-context">Improved Duo Code Review context</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/duo_in_merge_requests/">Documentation</a></li></ul>
</div>

<p>Duo Code Review now provides more comprehensive context for improved analysis.
The key improvements are:</p>
<ul>
<li>Includes a merge request’s title and description to better understand the purpose of proposed changes.</li>
<li>Examines all diffs simultaneously to recognize cross-file relationships and reduce false positives.</li>
<li>Provides the full content of changed files to understand how modifications fit within existing code patterns.</li>
</ul>
<p>These enhancements reduce inaccurate suggestions and deliver more relevant and higher quality
code reviews.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="list-only-enterprise-users-for-contributions-reassignment-on-gitlabcom">List only Enterprise users for contributions reassignment on GitLab.com</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/direct_transfer_migrations/#user-membership-mapping">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/510673">Related issue</a></li></ul>
</div>

<p>In this release we’ve improved the placeholder users mapping experience by
narrowing down the user selection dropdown to only Enterprise users associated with the top-level group.
Previously, when reassigning users’ contributions after an import to GitLab.com, you would see in the dropdown list
all active users on the platform, making it difficult to identify the correct user, especially when SCIM provisioning
had modified usernames. Now, if your top-level group uses the Enterprise users feature, the dropdown list will display only
users claimed by your organization, significantly reducing the potential for errors during user reassignment.
The same scoping is also applied to CSV-based reassignment, preventing accidental assignment to users outside your organization.</p>
<h3 id="support-for-multiple-workspaces-in-the-gitlab-for-slack-app">Support for multiple workspaces in the GitLab for Slack app</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/slack_app/#enable-support-for-multiple-workspaces">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/424190">Related issue</a></li></ul>
</div>

<p>The GitLab for Slack app now supports multiple workspaces for GitLab Self-Managed and GitLab Dedicated customers.
Enabling multiple workspaces allows organizations with federated Slack environments to maintain seamless GitLab integrations across all their workspaces.
To enable support for multiple workspaces, configure the GitLab for Slack app as an <a href="https://api.slack.com/distribution#unlisted-distributed-apps">unlisted distributed app</a>.</p>
<h3 id="delete-groups-and-placeholder-users">Delete groups and placeholder users</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/mapping/post_migration_mapping/#placeholder-user-deletion">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/473256">Related issue</a></li></ul>
</div>

<p>In GitLab 18.0, when you delete a top-level group, placeholder users associated with the group are deleted as well. If placeholder users are associated with other projects, they are only removed from the top-level group.
This way, unnecessary placeholder users are removed without disrupting the history or attributions of other projects.</p>
<h3 id="internal-releases-available-for-gitlab-dedicated">Internal releases available for GitLab Dedicated</h3>
<!-- categories: GitLab Dedicated -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://handbook.gitlab.com/handbook/engineering/releases/internal-releases/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/1201">Related epic</a></li></ul>
</div>

<p>GitLab Dedicated customers with strict security requirements and compliance obligations require the highest level of protection for their development environments.
Today, we’re introducing Internal Releases, a new private release that allows us to remediate GitLab Dedicated instances for critical vulnerabilities before public disclosure, ensuring GitLab Dedicated customers are never exposed to them.
This new capability delivers immediate protection for critical vulnerabilities found in GitLab parallel to response for GitLab.com. This new process does not require customer action.</p>
<h3 id="gitlab-chart-90-released-with-breaking-changes">GitLab chart 9.0 released with breaking changes</h3>
<!-- categories: Cloud Native Installation, Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/releases/9_0/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/charts/gitlab/-/issues/5927">Related issue</a></li></ul>
</div>

<ul>
<li><a href="/update/deprecations/#postgresql-14-and-15-no-longer-supported">Breaking change</a>: Support for PostgreSQL 14 and 15 has been removed. Make sure you are running PostgreSQL 16 before upgrading.</li>
<li><a href="/update/deprecations/#major-update-of-the-prometheus-subchart">Breaking change</a>: The bundled Prometheus chart was updated from 15.3 to 27.11. Along with the Prometheus chart upgrade, the Prometheus version was updated from 2.38 to 3.0. Manual steps are required to perform the upgrade. If you have Alertmanager, Node Exporter, or Pushgateway enabled, you must also update your Helm values. For more information, see the <a href="https://docs.gitlab.com/charts/releases/9_0.html#prometheus-upgrade">migration guide</a>.</li>
<li><a href="/update/deprecations/#fallback-support-for-gitlab-nginx-chart-controller-image-v131">Breaking change</a>: The default NGINX controller image was updated from version 1.3.1 to 1.11.2. If you’re using the GitLab NGINX chart, and you have set your own NGINX RBAC rules, new RBAC rules must exist. For more information, see the <a href="https://docs.gitlab.com/charts/releases/8_0/#upgrade-to-86x-851-843-836">upgrade guide</a> for more information.</li>
</ul>
<h3 id="event-data-collection">Event data collection</h3>
<!-- categories: Application Instrumentation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/event_data/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/510333">Related issue</a></li></ul>
</div>

<p>In GitLab 18.0, we are enabling event-level product usage data collection from GitLab Self-Managed and GitLab Dedicated instances. Unlike aggregated data, event-level data provides GitLab with deeper insights into usage, allowing us to improve user experience on the platform and increase feature adoption. For detailed instructions on how to adjust data sharing settings, please refer to our documentation.</p>
<h3 id="deletion-protection-available-for-all-users">Deletion protection available for all users</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/visibility_and_access_controls/#deletion-protection">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17208">Related epic</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/526405">Related issue</a></li></ul>
</div>

<p>Project and group delayed deletion is now available for all GitLab users, including those on our Free tier. This essential safety feature adds a grace period (7 days on GitLab.com) before deleted groups and projects are permanently removed. This feature allows recovery from accidental deletions without complex recovery operations.</p>
<p>By making data safety a core feature, GitLab can help better protect your work against data loss events.</p>
<h3 id="delayed-project-deletion-for-user-namespaces">Delayed project deletion for user namespaces</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/#delete-a-project">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/536244">Related issue</a></li></ul>
</div>

<p>Delayed project deletion is now available for projects in user namespaces (personal projects). Previously, this safeguard against accidental data loss was only available for group namespaces. When you delete a project in your user namespace, it will now enter a “pending deletion” state for the duration configured in your instance settings (7 days on GitLab.com), rather than being immediately deleted. This creates a recovery window during which you can restore the project if needed.</p>
<p>We hope this enhancement provides greater peace of mind when managing your personal projects in GitLab.</p>
<h3 id="new-active-parameter-for-groups-and-projects-rest-apis">New <code>active</code> parameter for Groups and Projects REST APIs</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/projects/#list-projects">Documentation</a></li></ul>
</div>

<p>We’ve added a new <code>active</code> parameter to our Groups and Projects REST APIs that simplifies filtering groups based on their status. When set to <code>true</code>, only non-archived groups or projects not marked for deletion are returned. When set to <code>false</code>, only archived groups or projects marked for deletion are returned. If the parameter is undefined, no filtering is applied. This enhancement helps you efficiently manage your workflows by targeting specific statuses through simple API calls.</p>
<p>Thank you <a href="https://gitlab.com/dagaranupam">@dagaranupam</a> for adding this parameter to the Projects API.</p>
<h3 id="rate-limits-for-groups-projects-and-users-api">Rate limits for Groups, Projects, and Users API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_com/#rate-limits-on-gitlabcom">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/461316">Related issue</a></li></ul>
</div>

<p>We have added API rate limits for projects, groups, and users to improve platform stability and performance for all users. These changes are in response to increased API traffic that has been affecting our services.</p>
<p>The limits have been carefully set based on average usage patterns and should provide sufficient capacity for most use cases. If you exceed these limits, you’ll receive a “429 Too Many Requests” response.</p>
<p>For complete details about specific rate limits and implementation information, please <a href="https://about.gitlab.com/blog/rate-limitations-announced-for-projects-groups-and-users-apis/">read the related blog post</a>.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="security-scanners-now-support-mr-pipelines">Security scanners now support MR pipelines</h3>
<!-- categories: API Security, Container Scanning, DAST, Fuzz Testing, SAST, Secret Detection, Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/detect/roll_out_security_scanning/">Documentation</a></li></ul>
</div>

<p>You can now choose to run <a href="/user/application_security/detect/">Application Security Testing (AST) scanners</a> in <a href="/ci/pipelines/merge_request_pipelines/">merge request (MR) pipelines</a>.
To minimize the impact to your pipelines, this is as an opt-in behavior you can control.</p>
<p>Previously, the default behavior depended on whether you used the <a href="/user/application_security/detect/security_configuration/#template-editions">Stable or Latest CI/CD template edition</a> to enable a scanner:</p>
<ul>
<li>In Stable templates, scan jobs ran in branch pipelines only. MR pipelines weren’t supported.</li>
<li>In Latest templates, scan jobs ran in MR pipelines when an MR was open, and ran in branch pipelines if there was no associated MR. You couldn’t control this behavior.</li>
</ul>
<p>Now, a new option, <code>AST_ENABLE_MR_PIPELINES</code>, allows you to control whether to run jobs in MR pipelines.
The default behavior for both Stable and Latest templates remains the same. Specifically:</p>
<ul>
<li>Stable templates continue to run scan jobs in branch pipelines by default, but you can set <code>AST_ENABLE_MR_PIPELINES: &quot;true&quot;</code> to use MR pipelines instead when an MR is open.</li>
<li>Latest templates continue to run scan jobs in MR pipelines by default when an MR is open, but you can set <code>AST_ENABLE_MR_PIPELINES: &quot;false&quot;</code> to use branch pipelines instead.</li>
</ul>
<p>This improvement affects all security scanning templates except for API Discovery (<code>API-Discovery.gitlab-ci.yml</code>), which currently defaults to MR pipelines.
We also changed the API Discovery template to align with other Stable templates in GitLab 18.0 and use branch pipeline by default.</p>
<h3 id="display-and-filter-archived-projects-in-the-compliance-projects-report">Display and filter archived projects in the compliance projects report</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_projects_report/#filter-the-compliance-projects-report">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/500520">Related issue</a></li></ul>
</div>

<p>In the compliance projects report, you can view the compliance frameworks applied to projects within a group or
subgroup.</p>
<p>However, the report lacked the ability to show whether a project is archived or not, which could be useful
information for managing compliance across active and archived projects.</p>
<p>As such, we’ve added an indicator to show whether a project is archived. This will provide you with better
visibility and context when reviewing compliance frameworks across both active and archived projects.</p>
<p>This feature includes:</p>
<ul>
<li>An archived status badge for each project in the compliance projects report to show whether a project is archived.</li>
<li>A filter that allows you to toggle between archived, non-archived, or all projects.</li>
</ul>
<h3 id="create-a-workspace-from-merge-requests">Create a workspace from merge requests</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/configuration/#create-a-workspace">Documentation</a></li></ul>
</div>

<p>You can now create a workspace directly from a merge request with the new <strong>Open in Workspace</strong> option. This feature automatically configures a workspace with the merge request’s branch and context, allowing you to:</p>
<ul>
<li>Review code changes in a fully configured environment.</li>
<li>Run tests on the merge request branch to verify functionality.</li>
<li>Make additional modifications to the merge request without local setup.</li>
</ul>
<h3 id="view-open-merge-requests-targeting-files">View open merge requests targeting files</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/files/#view-open-merge-requests-for-a-file">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/448868">Related issue</a></li></ul>
</div>

<p>Previously, when working on code files, you had no visibility into who else might be modifying
the same file in other branches. This lack of awareness led to merge conflicts, duplicated work,
and inefficient collaboration.</p>
<p>Now you can easily identify all open merge requests that modify the file you’re viewing in the
repository. This feature helps you:</p>
<ul>
<li>Identify potential merge conflicts before they happen.</li>
<li>Avoid duplicating work that’s already in progress.</li>
<li>Improve collaboration by providing visibility into in-flight changes.</li>
</ul>
<p>A badge displays the number of open merge requests modifying the file, and hovering over it
reveals a popover with the list of these merge requests.</p>
<h3 id="shared-kubernetes-namespace-for-workspaces">Shared Kubernetes namespace for workspaces</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/settings/#shared_namespace">Documentation</a></li></ul>
</div>

<p>You can now create GitLab workspaces in a shared Kubernetes namespace. This removes the need to create
a new namespace for every workspace and eliminates the requirement to give elevated ClusterRole
permission to the agent. With this feature, you can more easily adopt workspaces in secure or
restricted environments, offering a simpler path to scale.</p>
<p>To enable shared namespaces, set the <code>shared_namespace</code> field in your agent configuration file to
specify the Kubernetes namespace you want to use for all workspaces.</p>
<p>Thank you to the half dozen community contributors who helped build this feature through
<a href="https://about.gitlab.com/community/co-create/">GitLab’s Co-Create program</a>!</p>
<h3 id="improved-pod-status-visualizations-in-the-dashboard-for-kubernetes">Improved pod status visualizations in the dashboard for Kubernetes</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/525081">Related issue</a></li></ul>
</div>

<p>You can use the dashboard for Kubernetes to monitor your deployed applications. Until now, pods with container errors like <code>CrashLoopBackOff</code> or <code>ImagePullBackOff</code> were displayed with a “Pending” or “Running” status, which makes it difficult to identify problematic deployments without using <code>kubectl</code>.</p>
<p>In GitLab 18.0, error states in the UI show a specific container’s status, similar to the <code>kubectl</code> output. Now, you can quickly identify and troubleshoot failing pods without leaving the GitLab interface.</p>
<h3 id="exclude-packages-from-license-approval-rules">Exclude packages from license approval rules</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#license_finding-rule-type">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10203">Related epic</a></li></ul>
</div>

<p>In merge request approval policies, this new enhancement to license approval policies gives legal and compliance teams more control over which packages can use specific licenses. You can now create exceptions for pre-approved packages, even when they use licenses that would normally be blocked by your organization’s policies.</p>
<p>Previously, in license approval policies, if you blocked a license like AGPL-3.0, it was blocked for all packages across your organization. This created challenges when:</p>
<ul>
<li>Your legal team pre-approved specific packages with otherwise restricted licenses.</li>
<li>You needed to use the same package across hundreds of projects.</li>
<li>Different teams required different license exceptions.</li>
</ul>
<p>With this release, you can maintain strict license governance while allowing necessary exceptions, significantly reducing approval bottlenecks and manual reviews. For example, you can:</p>
<ul>
<li>Define package-specific exceptions to your license approval rules using Package URL (PURL) format.</li>
<li>Allow specific packages (or package versions) to use otherwise restricted licenses.</li>
<li>Block specific packages (or package versions) from using generally allowed licenses.</li>
</ul>
<p>To add exceptions, follow this workflow when you create or edit a license approval policy:</p>
<ol>
<li>In your group, go to <strong>Security &amp; Compliance</strong> &gt; <strong>Policies</strong></li>
<li>Create or edit a license approval policy.</li>
<li>Find the new package exception options in the visual editor or configure them in YAML mode.</li>
<li>Choose between allowlist or denylist mode for the licenses.</li>
<li>Add specific licenses to your policy.</li>
<li>For each license, define package exceptions in PURL format (for example, <code>pkg:npm/@angular/animation@12.3.1</code>).</li>
<li>Specify whether to include or exclude these packages from the license rule.</li>
</ol>
<p>The policy then enforces your license rules while respecting the defined exceptions, giving you granular control over license compliance across your organization.</p>
<h3 id="limit-maximum-user-session-length">Limit maximum user session length</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/account_and_limit_settings/#set-sessions-to-expire-from-creation-date">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/395038">Related issue</a></li></ul>
</div>

<p>Administrators can now choose if the maximum length of a user session is computed from the initial sign-in or from the last activity. Users are notified that the session is ending, but cannot prevent the session from expiring or extend the session. This feature is disabled by default.</p>
<p>Thank you <a href="https://gitlab.kitware.com/john.parent">John Parent</a> for your contribution!</p>
<h3 id="gitlab-query-language-views-enhancements">GitLab Query Language views enhancements</h3>
<!-- categories: Wiki, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/glql/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15008">Related epic</a></li></ul>
</div>

<p>We’ve made significant improvements to GitLab Query Language (GLQL) views. These improvements include support for:</p>
<ul>
<li>The <code>&gt;=</code> and <code>&lt;=</code> operators for all date types</li>
<li>The <strong>View actions</strong> dropdown in views</li>
<li>The <strong>Reload</strong> action</li>
<li>Field aliases</li>
<li>Aliasing columns to a custom name in GLQL tables</li>
</ul>
<p>We welcome your feedback on this enhancement, and on GLQL views in general, in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509791">issue 509791</a>.</p>
<h3 id="pages-template-improvements">Pages template improvements</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/getting_started/pages_new_project_template/#project-templates">Documentation</a></li></ul>
</div>

<p>GitLab provides <a href="https://gitlab.com/pages">templates for popular static site generators</a>. We’ve taken a deep dive into available templates using a scoring framework, and refined the list to include only the most popular templates.</p>
<p>Refining templates available for GitLab Pages streamlines the website creation process. Use templates to launch professional-looking sites with minimal technical expertise. Enhanced templates also provide modern, responsive designs, eliminating the need for custom development work.</p>
<h3 id="configure-jira-issues-from-vulnerabilities-using-the-jira-integration-api">Configure Jira issues from vulnerabilities using the Jira integration API</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/project_integrations/#jira-issues">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/454574">Related issue</a></li></ul>
</div>

<p>Previously, you had to configure the integration to <a href="/integration/jira/configure/#create-a-jira-issue-for-a-vulnerability">create Jira issues from vulnerabilities</a> from the <strong>Project settings</strong> page.</p>
<p>You can now configure this integration from the project integrations API, which allows you to automate the setup.</p>
<h3 id="improved-traceability-of-redetected-vulnerabilities">Improved traceability of redetected vulnerabilities</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/#vulnerability-status-values">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523452">Related issue</a></li></ul>
</div>

<p>Previously, when a resolved vulnerability was redetected and changed status, the vulnerability details did not provide information to indicate when and why the status change occurred.</p>
<p>GitLab now adds a system note to the vulnerability history when resolved vulnerabilities change status because they appeared in a new scan. This additional information helps users understand why vulnerabilities have changed status.</p>
<h3 id="bulk-add-vulnerabilities-to-issues-from-the-vulnerability-report">Bulk add vulnerabilities to issues from the vulnerability report</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#add-vulnerabilities-to-an-existing-issue">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13216">Related epic</a></li></ul>
</div>

<p>With this release you can now bulk add vulnerabilities to new or existing GitLab issues from the vulnerability report.
You may now associate multiple issues and vulnerabilities together. Additionally, related vulnerabilities are now listed within the issue page.</p>
<h3 id="disable-user-invitations">Disable user invitations</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/visibility_and_access_controls/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/19618">Related issue</a></li></ul>
</div>

<p>You can now remove the ability to invite members to groups or projects.</p>
<ul>
<li>On GitLab.com, this setting is configured by Owners of groups with enterprise users and applies to any sub-groups or projects within the top-level group. No user can send invites while this setting is enabled.</li>
<li>On GitLab Self-Managed, this setting is by administrators and applies to the entire instance. Administrators can still invite users directly.</li>
</ul>
<p>This feature helps organizations maintain strict control over membership access.</p>
<h3 id="ldap-authentication-with-gitlab-username">LDAP authentication with GitLab username</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/auth/ldap/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/215357">Related issue</a></li></ul>
</div>

<p>LDAP users can now authenticate requests with their GitLab username. Previously, if the GitLab username didn’t match their LDAP username, GitLab returned an authentication error. This change helps users maintain separate naming conventions in GitLab and LDAP systems without disrupting approval workflows.</p>
<h3 id="support-for-sha256-saml-certificates">Support for SHA256 SAML certificates</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/saml/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524624">Related issue</a></li></ul>
</div>

<p>GitLab now automatically detects and supports both SHA1 and SHA256 certificate fingerprints for Group SAML authentication. This maintains backward compatibility with existing SHA1 fingerprints while adding support for more secure SHA256 fingerprints. This upgrade is essential to prepare for the upcoming ruby-saml 2.x release that will make SHA256 the default.</p>
<h3 id="granular-permissions-for-job-tokens-in-beta">Granular permissions for job tokens in beta</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/fine_grained_permissions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16199">Related epic</a></li></ul>
</div>

<p>Pipeline security just got more flexible. Job tokens are ephemeral credentials that provide access to resources in pipelines. Until now, these tokens inherited full permissions from the user, often resulting in unnecessarily broad access capabilities.</p>
<p>With our new <a href="/ci/jobs/fine_grained_permissions/">fine-grained permissions for job tokens</a> beta feature, you can now precisely control which specific resources a job token can access within a project. This allows you to implement the principle of least privilege in your CI/CD workflows, granting only the minimal access necessary for each job to complete its tasks.</p>
<p>We’re actively seeking community feedback on this feature. If you have questions, want to share your implementation experience, or would like to engage directly with our team about potential improvements, please visit our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/519575">feedback issue</a>.</p>
<h3 id="new-permissions-for-custom-roles">New permissions for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14746">Related epic</a></li></ul>
</div>

<p>You can create custom roles with the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/471385">Manage protected environments</a> permission.
Custom roles allow you to grant only the specific permissions users need to complete their tasks.
This helps you define roles that are tailored to the needs of your group, and can reduce the number of users who need the Maintainer or Owner role.</p>
<h3 id="new-cicd-analytics-view-for-projects-in-limited-availability">New CI/CD analytics view for projects in limited availability</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/ci_cd_analytics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/444468">Related issue</a></li></ul>
</div>

<p>The redesigned CI/CD analytics view transforms how your development teams analyze, monitor, and optimize pipeline performance
and reliability. Developers can access intuitive visualizations in the GitLab UI that reveal performance
trends and reliability metrics. Embedding these insights in your project repository eliminates context-switching
that disrupts developer flow. Teams can identify and address pipeline bottlenecks that drain productivity.
This enhancement leads to faster development cycles, improved collaboration, and data-driven confidence to optimize your
CI/CD workflows in GitLab.</p>
<h3 id="gitlab-runner-180">GitLab Runner 18.0</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 18.0 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/514297">Add <code>ConfigurationError</code> and <code>ExitCodeInvalidConfiguration</code> to the GitLab Runner build error classifications</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/5527">Improve cloud provider error messages for failed cache uploads to cloud storage</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38706">GitLab Runner can use cached images even when disallowed</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/18-0-stable/[CHANGELOG]%28https://gitlab.com/gitlab-org/gitlab-runner/blob/18-0-stable/CHANGELOG.md%29.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.0">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=18.0">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=18.0">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.11 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-11-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-11-released/</id><published>2025-04-17T00:00:00Z</published><updated>2025-04-17T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On April 17, 2025, GitLab 17.11 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-heidi-berry">This month’s Notable Contributor: Heidi Berry</h2>
<p>For 17.11, we’re delighted to recognize <a href="https://gitlab.com/heidi.berry">Heidi Berry</a> as our Notable Contributor!</p>
<p>Heidi has been a standout contributor to the <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab">GitLab Terraform Provider</a> and <a href="https://gitlab.com/gitlab-org/api/client-go">client-go</a> projects. Over the past several releases, she has consistently delivered highly requested features including the ability to use <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/1949">custom roles with Group SAML links</a>, support for setting <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2113">branch protection defaults for group</a>, and automatic <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2206">token rotation for service account tokens</a>.</p>
<p>Beyond feature development, Heidi has been instrumental in maintenance activities - <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/issues/1035#note_2305643918">helping with issue backlog refinement</a>, <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2298">updating older tests for improved readability</a>, and <a href="https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2201">enhancing documentation with better examples</a>. Her contributions to client-go are particularly valuable as this library powers many downstream projects that both customers and GitLab use to interact with GitLab, including the Terraform provider and glab.</p>
<p>“If you have ever wanted to try your hand at open source contributing, try out client-go and terraform-provider-GitLab,” says Heidi. “They have great documentation to get you started, and supportive maintainers ready to help. I have enjoyed using these projects to learn the go language in a practical way.”</p>
<p>Heidi was nominated by another community contributor, <a href="https://gitlab.com/PatrickRice">Patrick Rice</a>, who is an Enterprise Architect at Kingland and member of the GitLab community Core Team. Patrick says: “With over 100 merged contributions so far across the 17 release cycle and more issue comments, Heidi has been a great help to GitLab and Terraform. Thank you so much for your contributions!”</p>
<p>“Heidi does phenomenal work,” said <a href="https://gitlab.com/timofurrer">Timo Furrer</a>, Senior Backend Engineer in Deploy::Environments at GitLab. “She regularly goes the extra mile and implements the necessary SDK code in client-go. Heidi not only contributes a lot of code, but also helps with issue triaging. It’s an immense help and it’s the reason community-driven projects like these can sustain.”</p>
<p>Heidi is a Lead Software Engineer at The Co-operative Group, where she helps make developer experience efficient, secure and as effortless as possible.</p>
<p>Thank you, Heidi, for your tremendous contributions to GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="customize-compliance-frameworks-with-requirements-and-compliance-controls">Customize compliance frameworks with requirements and compliance controls</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_status_report/">Documentation</a></li></ul>
</div>

<p>Previously, compliance frameworks in GitLab could be created as a label to identify that your project has certain
compliance requirements or needs additional oversight. This label could then be used as a scoping mechanism to
ensure that security policies could be enforced on all projects within a group.</p>
<p>In this release, we are introducing a new way for compliance managers to get more in-depth compliance monitoring
in GitLab through ‘requirements’.</p>
<p>With requirements, as part of a custom compliance framework, you can define specific requirements from a number of
different compliance standards, laws, and regulations that must be followed as an organization.</p>
<p>We are also expanding the number of compliance controls (previously known as compliance checks) that we offer from
five to over 50! These 50 out-of-the-box (OOTB) controls can be mapped to the compliance framework requirements.</p>
<p>These controls check particular project, security, and merge request settings across your GitLab instance to help
you meet requirements under a number of different compliance standards, laws, and regulations such as SOC2, NIST,
ISO 27001, and the GitLab CIS Benchmark.</p>
<p>Adherence to these controls is reflected in standard adherence report, which is redesigned to take into account
requirements and the mapping of controls to those requirements.</p>
<p>In addition to expanding our OOTB controls, we now allow users to map requirements to external controls, which can
be for items, programs, or systems that exist outside the GitLab platform. These mappings allow you to use the
GitLab compliance centre as the single source of truth when it comes to your compliance monitoring and audit
evidence needs.</p>
<h3 id="gitlab-eclipse-plugin-available-in-beta">GitLab Eclipse plugin available in beta</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/editor_extensions/eclipse/setup/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/editor-extensions/-/epics/89">Related epic</a></li></ul>
</div>

<p>We’re thrilled to announce the beta release of the GitLab Eclipse plugin, now available in the <a href="https://marketplace.eclipse.org/content/gitlab-eclipse">Eclipse Marketplace</a>. This powerful new plugin extends GitLab’s Duo features directly into your Eclipse IDE, giving you seamless access to Duo Chat and AI-powered code suggestions.</p>
<p>As the plugin is currently in beta, we’re actively improving features, including expanding authentication options, and refining the final user experience. Your feedback is invaluable. Please share your thoughts to help us make the GitLab Eclipse plugin even better by adding your feedback <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-eclipse-plugin/-/issues/162">in issue 162</a>.</p>
<h3 id="more-gitlab-duo-features-now-available-on-gitlab-duo-self-hosted">More GitLab Duo features now available on GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/#feature-versions-and-status">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17072">Related epic</a></li></ul>
</div>

<p>You can now use more <a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a> features with GitLab Duo Self-Hosted in your GitLab Self-Managed instance. The following features are available in beta:</p>
<ul>
<li><a href="/user/gitlab_duo_chat/examples/#troubleshoot-failed-cicd-jobs-with-root-cause-analysis">Root Cause Analysis</a></li>
<li><a href="/user/application_security/analyze/duo/">Vulnerability Explanation</a></li>
<li><a href="/user/application_security/vulnerabilities/#vulnerability-resolution">Vulnerability Resolution</a></li>
<li><a href="/user/analytics/duo_and_sdlc_trends/">AI Impact Dashboard</a></li>
<li><a href="/user/discussions/#summarize-issue-discussions-with-gitlab-duo-chat">Discussion Summary</a></li>
<li><a href="/user/project/merge_requests/duo_in_merge_requests/#generate-a-merge-commit-message">Merge Request Commit Message</a></li>
<li><a href="/user/project/merge_requests/duo_in_merge_requests/#generate-a-description-by-summarizing-code-changes">Merge Request Summary</a></li>
<li><a href="https://docs.gitlab.com/editor_extensions/gitlab_cli/#gitlab-duo-for-the-cli">GitLab Duo for the CLI</a></li>
</ul>
<p><a href="/user/project/merge_requests/duo_in_merge_requests/#summarize-a-code-review">Code Review Summary</a> is also available on GitLab Duo Self-Hosted as an experiment.</p>
<h3 id="extension-marketplace-for-web-ide-on-self-managed-instances">Extension marketplace for Web IDE on self-managed instances</h3>
<!-- categories: Web IDE -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/vscode_extension_marketplace/">Documentation</a></li></ul>
</div>

<p>We’re thrilled to announce the launch of the extension marketplace in the Web IDE for self-managed users. With the extension marketplace, you can discover, install, and manage third-party extensions to enhance your development experience.</p>
<p>By default, the GitLab instance is configured to use the Open VSX extension registry. To activate this, follow the <a href="/administration/settings/vscode_extension_marketplace/#enable-the-extension-registry">enable with default extension registry</a> steps.</p>
<p>If you want to use your own or custom registry, you also have the option to <a href="/administration/settings/vscode_extension_marketplace/#modify-the-extension-registry">connect a custom extension registry</a>. This provides you with more flexibility to manage available extensions.</p>
<p>After enabling the extension marketplace, individual users must still opt in to use it. They can do this by going to the <strong>Integrations</strong> section in their <a href="https://gitlab.com/-/profile/preferences">Preferences</a> settings.</p>
<p>It’s important to note that some extensions require a local runtime environment and are not compatible with the web-only version. Despite this, you can still choose from thousands of available extensions to boost your productivity and customize your workflow.</p>
<h3 id="gitlab-duo-with-amazon-q-is-generally-available">GitLab Duo with Amazon Q is generally available</h3>
<!-- categories: Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_amazon_q/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16879">Related epic</a></li></ul>
</div>

<p>We’re excited to announce general availability for GitLab Duo with Amazon Q, a joint offering that brings together the comprehensive GitLab AI-powered DevSecOps platform with autonomous Amazon Q AI agents in a single, integrated solution. GitLab Duo with Amazon Q integrates AI agents directly into development workflows, allowing developers to accelerate key tasks without switching tools. Acting as intelligent assistants within the GitLab DevSecOps platform, these agents automate time-consuming processes like code generation, testing, reviews, and Java modernization, helping teams focus on innovation while maintaining security and quality standards.</p>
<p>GitLab Duo with Amazon Q provides major benefits for development teams:</p>
<ul>
<li>Streamline feature development from idea to code: use <code>/q dev</code>, which will convert an issue description directly into merge-ready code in minutes.</li>
<li>Modernize legacy code without the headache: use <code>/q transform</code> to automate the entire Java modernization process.</li>
<li>Accelerate code reviews without sacrificing quality: use <code>/q review</code> to get instant, intelligent feedback on code quality and security directly in merge requests.</li>
<li>Automate testing to ship with confidence: use <code>/q test</code> to generate comprehensive unit tests that understand your application logic.</li>
</ul>
<h3 id="enhance-security-with-protected-container-tags">Enhance security with protected container tags</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/container_registry/protected_container_tags/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523893">Related issue</a></li></ul>
</div>

<p>Container registries are critical infrastructure for modern DevSecOps teams. Until now, GitLab users with the Developer role or higher could push and delete any container tag in their projects, creating risks of accidental or unauthorized changes to production-critical container images.</p>
<p>With protected container tags, you now have fine-grained control over who can push or delete specific container tags. You can:</p>
<ul>
<li>Create up to five protection rules per project.</li>
<li>Use RE2 regex patterns to protect tags like <code>latest</code>, semantic versions (for example, <code>v1.0.0</code>), or stable release tags (for example, <code>main-stable</code>).</li>
<li>Restrict push and delete operations to Maintainer, Owner, or Administrator roles.</li>
<li>Prevent protected tags from being removed by cleanup policies.</li>
</ul>
<p>This feature requires the next-generation container registry, which is already enabled by default on GitLab.com. For GitLab Self-Managed instance, you’ll need to enable the <a href="/administration/packages/container_registry_metadata_database/">metadata database</a> to use protected container tags.</p>
<h3 id="safeguard-your-registry-with-protected-maven-packages">Safeguard your registry with protected Maven packages</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/package_protection_rules/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/323969">Related issue</a></li></ul>
</div>

<p>We’re thrilled to introduce support for protected Maven packages to enhance the security and stability of your GitLab package registry. Accidental modification of packages can disrupt the entire development process. With protected packages, you can safeguard your most important dependencies against unintended changes.</p>
<p>In GitLab 17.11, you can now protect Maven packages by creating protection rules. If a package matches a protection rule, only specified users can push new versions of the package. Package protection rules prevent accidental overwrites, improve compliance with regulatory requirements, and reduce the need for manual oversight.</p>
<p><a href="https://gitlab.com/groups/gitlab-org/-/epics/5574">Protected packages</a> support for Maven and other package formats are all community contributions from <code>gerardo-navarro</code> and the Siemens crew. Thank you, Gerardo, and the rest of the crew from Siemens for their many contributions to GitLab! If you want to learn more about how Gerardo and the Siemens crew contributed this change, check out this <a href="https://www.youtube.com/watch?v=5-nQ1_Mi7zg">video</a> in which Gerardo shares his learnings and best practices for contributing to GitLab based on his experience as an external contributor.</p>
<h3 id="epic-issue-and-task-custom-fields">Epic, issue, and task custom fields</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/work_items/custom_fields/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14904">Related epic</a></li></ul>
</div>

<p>With this release, you can configure text, number, single-select,
and multi-select custom fields for issues, epics, tasks, objectives, and key
results. While labels have been the primary way to categorize work items up
to this point, custom fields provide a more user-friendly approach for adding
structured metadata to your planning artifacts.</p>
<p>Custom fields are configured in your top-level group and cascade to all subgroups and projects.
You can map fields to one or more work item types and filter by custom field values in the issues and epics lists.</p>
<h3 id="new-issue-look-now-generally-available">New issue look now generally available</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issues/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/525547">Related issue</a></li></ul>
</div>

<p>As of this release, the new issue look is generally available and replaces the legacy issue experience. Issues now share a common framework with epics and tasks, featuring real-time updates and workflow improvements:</p>
<ul>
<li><strong>Drawer view:</strong> You can open items from lists or boards in a drawer for quick viewing without leaving your current context. A button at the top lets you expand to a full-page view.</li>
<li><strong>Change type:</strong> Convert types between epics, issues, and tasks using the “Change type” action (replaces “Promote to epic”)</li>
<li><strong>Start date:</strong> Issues now support start dates, aligning their functionality with epics and tasks.</li>
<li><strong>Ancestry:</strong> The complete hierarchy is above the title and the Parent field in the sidebar. To manage relationships, use the new quick action commands <code>/set_parent</code>, <code>/remove_parent</code>, <code>/add_child</code>, and <code>/remove_child</code>.</li>
<li><strong>Controls:</strong> All actions are now accessible from the top menu (vertical ellipsis), which remains visible in the sticky header when scrolling.</li>
<li><strong>Development:</strong> All development items (merge requests, branches, and feature flags) related to an issue or task are now consolidated in a single, convenient list.</li>
<li><strong>Layout:</strong> UI improvements create a more seamless experience between issues, epics, tasks, and merge requests, helping you navigate your workflow more efficiently.</li>
<li><strong>Linked items:</strong> Create relationships between tasks, issues, and epics with improved linking options. Drag and drop to change link types and toggle the visibility of labels and closed items.</li>
</ul>
<h3 id="service-accounts-ui">Service accounts UI</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9965">Related epic</a></li></ul>
</div>

<p>You now can use a dedicated space to create and manage service accounts in the GitLab UI. This interface allows you to create, monitor, and control automated access to your GitLab resources. Previously, this functionality was only available in the API.</p>
<h3 id="automated-duo-pro-and-duo-enterprise-seat-assignment">Automated Duo Pro and Duo Enterprise seat assignment</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/saml_sso/group_sync/#manage-gitlab-duo-seat-assignment">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/502496">Related issue</a></li></ul>
</div>

<p>You can now automatically assign a Duo Pro or Duo Enterprise seat to users with SAML Group Sync. As long as the GitLab group has available Duo Pro or Duo Enterprise seats, any user mapped from the identity provider is automatically assigned a seat. This reduces the effort to manage seat assignments.</p>
<h3 id="cicd-pipeline-inputs">CI/CD pipeline inputs</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/inputs/#for-a-pipeline">Documentation</a></li></ul>
</div>

<p>CI/CD variables are essential for dynamic CI/CD workflows, and are used for many things, including as environment variables, context variables, tool configuration, and matrix variables. But developers sometimes rely on CI/CD variables to inject <a href="/ci/variables/#use-pipeline-variables">pipeline variables</a> into pipelines to manually modify pipeline behavior, which have some risks due to the higher precedence of pipeline variables.</p>
<p>In GitLab 17.11 and later, you can now use <code>inputs</code> to safely modify pipeline behavior instead of using pipeline variables, including in scheduled pipelines, downstream pipelines, triggered pipelines, and other cases. Inputs provide developers with a more structured and flexible solution for injecting dynamic content at CI/CD job runtime. After you switch to inputs, you can completely <a href="/ci/variables/#restrict-pipeline-variables">disable access to pipeline variables</a>.</p>
<p>We’d greatly appreciate it if you could try it out and share your feedback through this dedicated <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/533802">issue</a>.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="gitlab-duo-chat-now-uses-anthropic-claude-sonnet-37">GitLab Duo Chat now uses Anthropic Claude Sonnet 3.7</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/examples/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/521034">Related issue</a></li></ul>
</div>

<p>GitLab Duo Chat now uses Anthropic Claude Sonnet 3.7 as the base model, replacing Claude 3.5 Sonnet for answering most questions.</p>
<p>Claude 3.7 Sonnet has strongly improved coding and reasoning capabilities, making it even better at explaining code, generating code, processing text data, and answering complex DevSecOps questions. You’ll notice more detailed and accurate Chat responses in these areas.</p>
<p>This upgrade applies to all Chat features, and ensures a consistent and improved experience across the entire Chat interface.</p>
<h3 id="open-files-as-context-now-available-on-gitlab-duo-self-hosted-code-suggestions">Open files as context now available on GitLab Duo Self-Hosted Code Suggestions</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/context/#using-open-files-as-context">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16611">Related epic</a></li></ul>
</div>

<p>On GitLab Duo Self-Hosted, you can now use <a href="/user/project/repository/code_suggestions/context/#using-open-files-as-context">files open in tabs in your IDE</a> as context when using Code Suggestions.</p>
<h3 id="select-individual-models-for-ai-powered-features-on-gitlab-duo-self-hosted">Select individual models for AI-powered features on GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/configure_duo_features/#select-a-self-hosted-model-for-a-feature">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/17099">Related epic</a></li></ul>
</div>

<p>On GitLab Duo Self-Hosted, you can now select and configure individual supported models for each GitLab Duo feature and sub-feature on your GitLab Self-Managed instance.</p>
<p>To leave feedback, go to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524175">issue 524175</a>.</p>
<h3 id="llama-3-models-generally-available-for-gitlab-duo-chat-and-code-suggestions">Llama 3 models generally available for GitLab Duo Chat and Code Suggestions</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#supported-models">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15678">Related epic</a></li></ul>
</div>

<p>Llama 3 models are now generally available with GitLab Duo Self-Hosted to support GitLab Duo Chat and Code Suggestions.</p>
<p>To leave feedback on using these models with GitLab Duo Self-Hosted, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523918">issue 523918</a>.</p>
<h3 id="manage-multiple-conversations-in-gitlab-duo-chat">Manage multiple conversations in GitLab Duo Chat</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/#have-multiple-conversations">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16108">Related epic</a></li></ul>
</div>

<p>Multiple conversations with GitLab Duo Chat is now available in GitLab Self-Managed instances in the web UI. You can create new conversations, browse your conversation history, and switch between conversations without losing context.</p>
<p>For your privacy, conversations with no activity for 30 days are automatically deleted, and you can manually delete any conversation at any time. On GitLab Self-Managed, administrators can reduce how long conversations are retained for.</p>
<p>Share your experience with us in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/526013">issue 526013</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="all-auto-disabled-webhooks-now-automatically-re-enable">All auto-disabled webhooks now automatically re-enable</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhooks/#auto-disabled-webhooks">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/396577">Related issue</a></li></ul>
</div>

<p>With this release, webhooks that return <code>4xx</code> errors are now automatically re-enabled. All errors (<code>4xx</code>, <code>5xx</code>, or server errors) are treated the same way, allowing for more predictable behavior and easier troubleshooting. This change was announced in <a href="https://about.gitlab.com/blog/gitlab-webhooks-get-smarter-with-self-healing-capabilities/">this blog post</a>.</p>
<p>Failing webhooks are temporarily disabled for one minute, extending to a maximum of 24 hours. After a webhook fails 40 consecutive times, it now becomes permanently disabled.</p>
<p>Webhooks that were permanently disabled in GitLab 17.10 and earlier underwent a data migration.</p>
<ul>
<li>For GitLab.com, these changes apply automatically.</li>
<li>For GitLab Self-Managed and GitLab Dedicated, these changes affect only those instances where the <code>auto_disabling_webhooks``ops</code> flag is enabled.</li>
</ul>
<p>Thanks to <a href="https://gitlab.com/lifez">Phawin</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166329">this community contribution</a>!</p>
<h3 id="ghost-user-contributions-auto-mapped-during-imports">Ghost user contributions auto-mapped during imports</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/mapping/post_migration_mapping/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/514014">Related issue</a></li></ul>
</div>

<p>Previously, ghost user contributions would create placeholder references that required manual reassignment, creating extra work during migrations.
Now, importers using new <a href="/user/import/mapping/post_migration_mapping/">contributions and membership mapping functionality</a>, migration by direct transfer, GitHub, Bitbucket Server and Gitea importers,
handle ghost user contributions more intelligently.
When importing content to GitLab, contributions previously made by the ghost user on
the source instance are now automatically mapped to the ghost user on the destination instance.</p>
<p>This enhancement eliminates the creation of unnecessary placeholder users for ghost user contributions,
reducing clutter in user mapping interface and simplifying the migration process.</p>
<h3 id="saml-verification-for-contribution-reassignment-when-importing-to-gitlabcom">SAML verification for contribution reassignment when importing to GitLab.com</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/mapping/reassignment/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/513686">Related issue</a></li></ul>
</div>

<p>In this milestone, we’ve added SAML verification checks to contribution reassignment when importing to GitLab.com. These checks prevent reassignment errors in groups where SAML SSO is enabled.</p>
<p>If you import to GitLab.com and use SAML SSO for GitLab.com groups, all users must link their SAML identity to their GitLab.com account before you can reassign contributions and memberships.
When you reassign contributions to users who have not verified their SAML identity, you’ll receive error messages. These messages explain the steps to take to help ensure your group memberships are attributed correctly.</p>
<h3 id="filter-placeholder-users-in-admin-area">Filter placeholder users in Admin area</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/admin_area/#administering-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/521974">Related issue</a></li></ul>
</div>

<p>Previously, placeholder users created during imports appeared mixed with regular users
without clear distinction in the <strong>Admin</strong> area <strong>Users</strong> page.</p>
<p>With this release, administrators can now filter for placeholder accounts from the search box
in the <strong>Users</strong> page in the <strong>Admin</strong> area. To do this, select <code>Type</code> in the dropdown list,
then choose <code>Placeholder</code>.</p>
<h3 id="placeholder-user-limits-appear-in-group-usage-quotas">Placeholder user limits appear in group usage quotas</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/mapping/post_migration_mapping/#placeholder-user-limits">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/486691">Related issue</a></li></ul>
</div>

<p>For imports to GitLab.com, placeholder users are limited per top-level group. These limits depend on your GitLab license and number of seats. With this release, it’s possible to check your placeholder user usage and limits for a top-level group in the UI.</p>
<p>To view your current usage and limits:</p>
<ol>
<li>On the left sidebar, select <strong>Search or go to</strong> and find your group. This group must be at the top level.</li>
<li>Select <strong>Settings &gt; Usage Quotas</strong>.</li>
<li>Select the <strong>Import</strong> tab.</li>
</ol>
<h3 id="geo---new-replicables-view">Geo - New replicables view</h3>
<!-- categories: Disaster Recovery, Geo Replication -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/">Documentation</a></li></ul>
</div>

<p>We are introducing a new look and feel for the replicables view in Geo. The new experience better aligns with the rest of GitLab and provides a more streamlined and less cluttered interface to review the synchronization and verification status of Geo secondary sites. In addition, there is now a click-through detailed view for each replicable item, providing information such as the primary and secondary checksums, error details, and much more. This information will make troubleshooting Geo synchronization issues much easier.</p>
<h3 id="linux-package-improvements">Linux package improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/8504">Related issue</a></li></ul>
</div>

<p>In GitLab 18.0, the minimum-supported version of PostgreSQL will be version 16. To prepare for this change, on
instances that don’t use <a href="/administration/postgresql/replication_and_failover/">PostgreSQL Cluster</a>,
upgrades to GitLab 17.11 will attempt to automatically upgrade PostgreSQL to version 16.</p>
<p>If you use <a href="/administration/postgresql/replication_and_failover/">PostgreSQL Cluster</a> or <a href="https://docs.gitlab.com/omnibus/settings/database/#opt-out-of-automatic-postgresql-upgrades">opt out of this automated upgrade</a>, you must <a href="https://docs.gitlab.com/omnibus/settings/database/#upgrade-packaged-postgresql-server">manually upgrade to PostgreSQL 16</a>
to be able to upgrade to GitLab 18.0.</p>
<h3 id="pre-deployment-opt-out-toggle-to-disable-event-data-sharing">Pre-deployment opt-out toggle to disable event data sharing</h3>
<!-- categories: Application Instrumentation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/event_data/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/510333">Related issue</a></li></ul>
</div>

<p>In GitLab 18.0, we plan to enable event-level product usage data collection from GitLab Self-Managed and GitLab Dedicated instances. Unlike aggregated data, event-level data provides GitLab with deeper insights into usage, allowing us to improve user experience on the platform and increase feature adoption.</p>
<p>Starting in GitLab 17.11, you will have the ability to opt out of event data collection before it starts, effectively allowing you to choose participation in advance. For more information and details on how to opt-out please see our documentation.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="increased-rule-coverage-for-secret-push-protection-and-pipeline-secret-detection">Increased rule coverage for secret push protection and pipeline secret detection</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/detected_secrets/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/534106">Related issue</a></li></ul>
</div>

<p>GitLab secret detection has received significant updates, including 17 new secret push protection rules and 12 new pipeline secret detection rules. Some existing rules have also been updated to improve quality and reduce false positives. For details, see v0.9.0 in the <a href="https://gitlab.com/gitlab-org/security-products/secret-detection/secret-detection-rules/-/blob/main/CHANGELOG.md#v090">change log</a>.</p>
<h3 id="static-reachability-beta-with-python-support">Static reachability beta with Python support</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/static_reachability/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15781">Related epic</a></li></ul>
</div>

<p>The Composition Analysis team has released beta support for static reachability for Python. This beta release focuses on enhancing stability, observability, and provides a better user experience via easier configuration.</p>
<p>Static reachability enriches software composition analysis (SCA) results. Powered by GitLab Advanced SAST, static reachability scans project source code to identify which open source dependencies are in use.</p>
<p>You can use the data produced by static reachability as part of your triage and remediation decision making. Static reachability data can also be used with CVSS and EPSS scores, as well as KEV indicators to provide a more focused view of your vulnerabilities.</p>
<p>We welcome feedback on this feature. If you have questions, comments, or would like to engage with our team please see this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/535498">feedback issue</a>.</p>
<h3 id="dynamic-analysis-support-for-reflected-xss-checks">Dynamic analysis support for reflected XSS checks</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/checks/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/525861">Related issue</a></li></ul>
</div>

<p>The Dynamic Analysis team has introduced a check for <a href="https://cwe.mitre.org/data/definitions/79.html">CWE-79</a>. This work allows our DAST scanner to check for reflected XSS attacks.</p>
<p>Checking for Reflective XSS is on by default. To turn off this check, in you configuration, set <code>DAST_FF_XSS_ATTACK: false</code>.
If you have questions or feedback, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/525861">issue 525861</a>.</p>
<h3 id="use-imported-files-as-context-in-code-suggestions">Use imported files as context in Code Suggestions</h3>
<!-- categories: Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/context/#using-imported-files-as-context">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/editor-extensions/-/epics/58">Related epic</a></li></ul>
</div>

<p>GitLab Duo Code Suggestions can now use imported files in your IDE to enrich and improve the quality of suggestions. Imported files provide additional context about your project. Imported file context is supported for JavaScript and TypeScript files.</p>
<h3 id="assign-projects-when-creating-compliance-frameworks">Assign projects when creating compliance frameworks</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/#apply-a-compliance-framework-to-a-project">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/500520">Related issue</a></li></ul>
</div>

<p>In the past, you couldn’t assign new compliance frameworks to projects without navigating to the <strong>Projects</strong> tab
in the compliance center after creating the compliance framework. This situation created unnecessary friction to
creating new compliance frameworks in your groups.</p>
<p>In GitLab 17.11, when creating a compliance framework, we introduced a new step that provides the option of
assigning multiple projects to the compliance framework before it is created.</p>
<p>This new feature:</p>
<ul>
<li>Helps keep you in the compliance framework creation workflow.</li>
<li>Provides guidance for you to understand that compliance frameworks work together with projects in a group to
monitor and enforce compliance adherence for the entire group.</li>
</ul>
<h3 id="kubernetes-132-support">Kubernetes 1.32 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509283">Related issue</a></li></ul>
</div>

<p>This release adds full support for Kubernetes version 1.32, released in December 2024. If you deploy your apps to Kubernetes, you can now upgrade your connected clusters to the most recent version and take advantage of all its features.</p>
<p>You can read more about <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">our Kubernetes support policy and other supported Kubernetes versions</a>.</p>
<h3 id="configure-saml-single-sign-on-with-multiple-identity-providers-in-switchboard">Configure SAML single sign-on with multiple identity providers in Switchboard</h3>
<!-- categories: GitLab Dedicated, Switchboard -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/configure_instance/authentication/saml/">Documentation</a></li></ul>
</div>

<p>You can now configure SAML single sign-on (SSO) for your GitLab Dedicated instance for up to ten identity providers (IdPs).</p>
<p>All SAML configuration options available for GitLab Dedicated instances can be configured for each individual IdP.</p>
<p>If you had previously configured multiple IdPs, you can now view and edit all existing SAML configurations directly in Switchboard.</p>
<h3 id="docker-hub-authentication-ui-for-the-dependency-proxy">Docker Hub authentication UI for the dependency proxy</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/dependency_proxy/#authenticate-with-docker-hub">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/521954">Related issue</a></li></ul>
</div>

<p>We’re excited to announce UI support for Docker Hub authentication in the GitLab Dependency Proxy. This feature was initially introduced in GitLab 17.10 with GraphQL API support only, and now includes a user interface for easier configuration.</p>
<p>With this enhancement, you can now configure Docker Hub authentication directly from your group settings page, helping you:</p>
<ul>
<li>Avoid pipeline failures due to rate limits.</li>
<li>Access private Docker Hub images.</li>
<li>Store your Docker Hub credentials, <a href="https://docs.docker.com/security/for-developers/access-tokens/">personal access token</a>, or <a href="https://docs.docker.com/security/for-admins/access-tokens/">organization access tokens</a> securely.</li>
</ul>
<p>This streamlined approach makes it easier to maintain uninterrupted access to Docker Hub images in your CI/CD pipelines without using the GraphQL API.</p>
<h3 id="set-work-in-progress-limits-by-weight">Set work in progress limits by weight</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issue_board/#work-in-progress-limits">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/119208">Related issue</a></li></ul>
</div>

<p>You can now set work in progress limits by weight in addition to issue count, giving you more flexibility in managing your team’s workload.</p>
<p>Control the flow of work based on the complexity or effort of each task, rather than just the number of issues. Teams that use issue weights to represent effort can now ensure they don’t overcommit by limiting the total weight of issues in a given board list.</p>
<p>Use this feature to optimize your team’s productivity and create a more balanced workflow that accounts for varying task complexity.</p>
<h3 id="improved-wiki-sidebar-styling">Improved wiki sidebar styling</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/#customize-sidebar">Documentation</a></li></ul>
</div>

<p>The custom wiki sidebar now features improved styling with reduced heading sizes and better left-padding for lists. These ergonomic enhancements improve the readability of custom navigation created through the <code>_sidebar</code> wiki page.</p>
<p>Custom sidebars help teams organize their wiki content in a way that makes sense for their unique knowledge base structure. With this styling update, the sidebar is now easier to scan, creating a clearer visual hierarchy that helps team members find relevant information more quickly.</p>
<h3 id="display-last-comment-as-a-column-in-glql-views">Display last comment as a column in GLQL views</h3>
<!-- categories: Wiki, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/glql/fields/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/512154">Related issue</a></li></ul>
</div>

<p>GLQL views now support displaying the last comment on an issue or merge request as a column. By including <code>lastComment</code> as a field in your GLQL query, you can see the most recent updates without leaving your current context.</p>
<p>Previously, you had to open each issue or merge request individually to view the last comment, which was time consuming and made it difficult to get a quick overview of progress. This improvement helps teams maintain momentum by providing at-a-glance visibility into ongoing conversations and status updates.</p>
<p>We welcome your feedback on this enhancement and GLQL views in general on our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509791">feedback issue</a>.</p>
<h3 id="nuxt-project-template-for-gitlab-pages">Nuxt project template for GitLab Pages</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/getting_started/pages_new_project_template/">Documentation</a></li></ul>
</div>

<p>GitLab provides templates for the most popular Static Site Generators (SSGs), and you can now create a GitLab Pages site using Nuxt, a powerful framework built on Vue.js. Nuxt is particularly valuable for teams looking to build modern, performant web applications with less configuration overhead.</p>
<p>This addition expands your options for quickly launching a Pages site with built-in CI/CD pipelines and a modern development experience, without spending time on initial setup and configuration.</p>
<h3 id="cyclonedx-export-for-the-project-dependency-list">CycloneDX export for the project dependency list</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#export">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524733">Related issue</a></li></ul>
</div>

<p>Many organizations now require a software bill of materials (SBOM) to meet regulatory requirements and help further increase the security of the software supply chain. Previously, you could only export your dependency list as a JSON or CSV file from GitLab. Now, GitLab can generate your SBOM by exporting your dependency list in the widely-adopted CycloneDX format.</p>
<p>To download an SBOM directly as a CycloneDX file, in the dependency list, select <strong>Export</strong> &gt; <strong>Export as CycloneDX (JSON)</strong>.</p>
<h3 id="email-delivery-for-dependency-list-and-vulnerability-report-export">Email delivery for dependency list and vulnerability report export</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#export">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/513149">Related issue</a></li></ul>
</div>

<p>Previously, when exporting the dependency list or the vulnerability report, you had to remain on the page until the export completed before you could download the report.</p>
<p>Now, you are notified by email with a download link when the dependency list or vulnerability report export is complete.</p>
<h3 id="export-dependency-list-in-csv-format">Export dependency list in CSV format</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#export">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435843">Related issue</a></li></ul>
</div>

<p>Previously, you could not export a dependency list from GitLab as CSV file. Now, when you download a dependency list, you can select the new CSV option to export the list in this format.</p>
<h3 id="tool-filter-replaced-with-scanner-and-report-type-filters">Tool filter replaced with Scanner and Report Type filters</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#report-type-filter">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/503371">Related issue</a></li></ul>
</div>

<p>Previously, the <strong>tool</strong> search filter in the vulnerability report allowed you to filter results based on a single group of tools that included the type of scanner (like ESLint or Gemnasium) and the type of report (like SAST or container scanning).</p>
<p>To help you find the appropriate tools more easily, we’ve replaced the <strong>tool</strong> filter with the <strong>scanner</strong> filter and the <strong>report type</strong> filter. You can now filter your search based on each of these types of tools separately.</p>
<h3 id="store-and-filter-a-source-value-for-cicd-jobs">Store and filter a <code>source</code> value for CI/CD jobs</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/jobs/#retrieve-a-job-by-job-id">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11796">Related epic</a></li></ul>
</div>

<p>GitLab 17.11 introduces a new feature that allows users to verify the origin of build artifacts by tracking the source attribute of CI/CD jobs. This enhancement is particularly valuable for security and compliance workflows. For example, organizations can implement software supply chain security measures or require verifiable evidence of security scans for compliance purposes.</p>
<p>Jobs in GitLab now store and display a <code>source</code> value that identifies whether they originated from:</p>
<ul>
<li>A scan execution policy</li>
<li>A pipeline execution policy</li>
<li>A regular pipeline</li>
</ul>
<p>You can access the <code>source</code> attribute on the <strong>Build</strong> &gt; <strong>Jobs</strong> page with a new filter option, using the Jobs API, or through the ID token <code>claims</code> for artifact verification.</p>
<p>With this new feature, you can now:</p>
<ul>
<li>Verify the authenticity of security scan results.</li>
<li>Filter jobs by source type to quickly identify policy-enforced scans.</li>
<li>Implement cryptographic verification of artifacts using the new ID token claims.</li>
<li>Ensure compliance requirements are met with proper audit trails.</li>
</ul>
<p>Security and compliance teams can leverage this feature to:</p>
<ul>
<li>View only policy-enforced jobs using the new filter on the Jobs page.</li>
<li>Automate tasks by accessing the <code>source</code> field in the Jobs API.</li>
<li>Implement artifact verification using the new ID token claims:
<ul>
<li><code>job_source</code>: Identifies the job’s origin.</li>
<li><code>job_policy_ref_uri</code>: Points to the policy file (for policy-defined jobs).</li>
<li><code>job_policy_ref_sha</code>: Contains the git commit SHA of the policy.</li>
</ul>
</li>
</ul>
<h3 id="enhanced-sorting-options-for-access-tokens">Enhanced sorting options for access tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/519716">Related issue</a></li></ul>
</div>

<p>There are now additional sorting options for access tokens in the UI and API. These sorting options complement GitLab’s existing token management capabilities, giving you more control over your access token inventory, and helping you better maintain access token security. The new sorting options include:</p>
<ul>
<li>Sort by expiration date (ascending): View the tokens that expire soonest.</li>
<li>Sort by expiration date (descending): View the tokens with the longest remaining lifetime.</li>
<li>Sort by last used date (ascending): View the tokens that have not been used recently.</li>
<li>Sort by last used date (descending): View the tokens used most recently.</li>
</ul>
<h3 id="token-statistics-for-service-account-management">Token statistics for service account management</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/520472">Related issue</a></li></ul>
</div>

<p>The token management interface for service accounts now includes a helpful statistics dashboard that provides at-a-glance information about your token inventory. This information can help you assess the state of your tokens and identify tokens that require attention.
The statistics dashboard includes four key metrics:</p>
<ul>
<li>Active tokens: View the total number of active tokens</li>
<li>Expiring tokens: Identify tokens that expire in the next two weeks</li>
<li>Revoked tokens: Track tokens that were manually revoked</li>
<li>Expired tokens: Monitor tokens that have previously expired
Thank you <a href="https://gitlab.com/chaitanyason9">Chaitanya Sonwane</a> for your contribution!</li>
</ul>
<h3 id="improved-pipeline-graph-visualization-for-failed-jobs">Improved pipeline graph visualization for failed jobs</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/#view-pipelines">Documentation</a></li></ul>
</div>

<p>You can now quickly identify failed jobs in the pipeline graph with new visual indicators. Failed job groups are highlighted in the pipeline graph, and failed jobs are grouped at the top of each stage. This improved visualization helps you troubleshoot pipeline failures without having to search through complex pipeline structures.</p>
<h3 id="force-cancel-cicd-jobs-stuck-in-canceling-state">Force-cancel CI/CD jobs stuck in canceling state</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/#force-cancel-a-job">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467107">Related issue</a></li></ul>
</div>

<p>CI/CD jobs can occasionally get stuck in the ‘canceling’ state, blocking deployments or access to shared resources.</p>
<p>Users with the Maintainer <a href="/user/permissions/">role</a> can now force-cancel these stuck jobs directly from the job logs page, ensuring problematic jobs can be properly terminated.</p>
<h3 id="improved-runner-management-in-projects">Improved runner management in projects</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/runners_scope/#project-runners">Documentation</a></li></ul>
</div>

<p>You can now manage runners more efficiently in your projects. Runners are displayed in a single-column layout and organized in their own lists instead of the previous two-column view.</p>
<p>This improved organization makes it simpler to find and manage runners, with new features including a list of assigned projects, runner managers, and jobs that a runner has run. For information about additional runner management improvements planned for GitLab 18.0, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/33803">issue 33803</a>.</p>
<h3 id="gitlab-runner-1711">GitLab Runner 17.11</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 17.11 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2483">Code sign GitLab Runner Windows executables</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38681">Cleaning Git configuration in GitLab Runner 17.10.0 results in an error</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38382">The <code>FF_DISABLE_UMASK_FOR_KUBERNETES_EXECUTOR</code> flag doesn’t disable the <code>umask</code> command</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-11-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.11">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.11">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.11">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.10 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-10-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-10-released/</id><published>2025-03-20T00:00:00Z</published><updated>2025-03-20T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On March 20, 2025, GitLab 17.10 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-alexey-butkeev">This month’s Notable Contributor: Alexey Butkeev</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p><a href="https://gitlab.com/abutkeev">Alexey Butkeev</a> is a valued community contributor whose contributions enhance our global reach and user experience. His impactful localization and translation contributions exemplify our Diversity, Inclusion, and Belonging value.</p>
<p>“I’m honored to be selected as the 17.10 MVP and to contribute to making GitLab more accessible and inclusive,” says Alexey.
“Localization is a team effort, and I’m grateful to be part of such a supportive community.”</p>
<p>In addition to his code contributions, Alexey took the initiative to find, document, and fix translation errors via GitLab and Crowdin. His thorough research and problem solving make him our 17.10 MVP.</p>
<p>Alexey was nominated by <a href="https://gitlab.com/opysaryuk">Oleksandr Pysaryuk</a>, Senior Manager, Globalization Technology at GitLab, and supported by <a href="https://gitlab.com/djsulliv">Daniel Sullivan</a>, Director of Globalization &amp; Localization at GitLab.
“We appreciate your work and support here at GitLab so much,” says Daniel.
“Thank you for your part in helping us become a more globally supported company!”</p>
<p>Thank you Alexey for making GitLab more inclusive and transparent!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="duo-code-review-available-in-beta">Duo Code Review available in beta</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/duo_in_merge_requests/#use-gitlab-duo-to-review-your-code">Documentation</a></li></ul>
</div>

<p>Code review is an essential activity of software development. It ensures that contributions to a project maintain and improve code quality and security, and is an avenue of mentorship and feedback for engineers. It’s also one of the most time-consuming activities in the software development process.</p>
<p>Duo Code Review is the next evolution of the code review process.</p>
<p>Duo Code Review can accelerate your development process. When it performs an initial review on your merge request, it can help identify potential bugs and suggest further improvements - some of which you can apply directly from your browser. Use it to iterate on and improve your changes before you add another human to the loop.</p>
<p><strong>Try it out:</strong></p>
<ul>
<li>To start a code review immediately, add <code>@GitLabDuo</code> as a reviewer to your merge request.</li>
<li>To refine feedback on your changes, mention <code>@GitLabDuo</code> in a comment.</li>
</ul>
<p>You can track future progress for Duo Code Review in epic <a href="https://gitlab.com/groups/gitlab-org/-/epics/13008">13008</a> and related child epics. Feedback can be provided in issue <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517386">517386</a>.</p>
<h3 id="root-cause-analysis-available-on-gitlab-duo-self-hosted">Root Cause Analysis available on GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/#feature-versions-and-status">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13759">Related epic</a></li></ul>
</div>

<p>You can now use <a href="https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/">GitLab Duo Root Cause Analysis</a> on GitLab Duo Self-Hosted. This feature is in beta for GitLab Self-Managed instances using GitLab Duo Self-Hosted, with support for Mistral, Anthropic, and OpenAI GPT model families.</p>
<p>With Root Cause Analysis on GitLab Duo Self-Hosted, you can troubleshoot failed jobs in CI/CD pipelines faster without compromising data sovereignty. Root Cause Analysis analyzes the failed job log, quickly determines the root cause of the job failure, and suggests a fix for you.</p>
<p>Note: This feature currently has limited functionality, and full functionality is planned for 17.11.
Additional information is available in
<a href="/administration/gitlab_duo_self_hosted/troubleshooting/#feature-not-accessible-or-feature-button-not-visible">troubleshooting documentation</a>
and in issue <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/527128">527128</a>.</p>
<p>Please leave feedback on Root Cause Analysis for GitLab Duo Self-Hosted in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523912">issue 523912</a>.</p>
<h3 id="expanded-aws-regions-available-for-gitlab-dedicated-failover-instances">Expanded AWS Regions available for GitLab Dedicated failover instances</h3>
<!-- categories: GitLab Dedicated, Switchboard -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/create_instance/data_residency_high_availability/">Documentation</a></li></ul>
</div>

<p>GitLab Dedicated customers can now select from an expanded list of AWS regions when choosing where to host their failover instance for <a href="/administration/dedicated/disaster_recovery/">disaster recovery</a>.</p>
<p>Expanding failover support to additional regions enables GitLab Dedicated customers to fully use the disaster recovery functionality of GitLab Dedicated regardless of which AWS region they need to use to satisfy their data residency needs.</p>
<p>These newly available regions are only available for hosting failover instances as they do not fully support certain AWS features that GitLab Dedicated relies on.</p>
<h3 id="gitlab-query-language-views-beta">GitLab Query Language views Beta</h3>
<!-- categories: Wiki, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/glql/#embedded-views">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14938">Related epic</a></li></ul>
</div>

<p>Tracking and understanding work in progress across GitLab previously required navigating multiple locations, reducing team efficiency and consuming valuable time.</p>
<p>This release introduces GitLab Query Language (GLQL) views Beta so you can create dynamic, real-time work tracking directly in your existing workflows.</p>
<p>GLQL views embed live data queries in Markdown code blocks throughout Wiki pages, epic descriptions, issue comments, and merge requests.</p>
<p>Previously available as an experiment, GLQL views now enter beta with support for sophisticated filtering using logical expressions and operators across key fields, including assignee, author, label, and milestone. You can customize your view’s presentation as tables or lists, control which fields appear, and set result limits to create focused, actionable insights for your team.</p>
<p>Teams can now maintain context while accessing the information they need, creating shared understanding, and improving collaboration — all without leaving their current workflow.</p>
<p><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509791">We welcome your feedback</a> on GLQL views as we continue to enhance this feature.</p>
<h3 id="enhanced-markdown-experience">Enhanced Markdown experience</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/7654">Related epic</a></li></ul>
</div>

<p>GitLab Flavored Markdown has been enhanced with several powerful improvements:</p>
<ul>
<li><strong>Improved math and image handling</strong>:
<ul>
<li>Disable <a href="/user/markdown/#math-equations">math rendering</a> limits in your group or self-hosted instance to handle more complex mathematical expressions.</li>
<li>Control <a href="/user/markdown/#change-image-or-video-dimensions">image dimensions</a> precisely using pixel values or percentages to better manage content layout.</li>
</ul>
</li>
<li><strong>Enhanced editor experience</strong>:
<ul>
<li>Continue lists automatically when pressing Enter/Return.</li>
<li>Shift text left or right using keyboard shortcuts.</li>
<li>Create clear term-definition pairs using description list syntax.</li>
<li>Adjust video widths flexibly.</li>
</ul>
</li>
<li><strong>Better content organization</strong>:
<ul>
<li>Navigate content more easily with auto-expanding <a href="/user/markdown/#show-item-summary">summary quick views</a> (add <code>+s</code> to URLs).</li>
<li>See referenced <a href="/user/markdown/#show-item-title">issue titles</a> render automatically (add <code>+</code> to URLs).</li>
<li>Organize content modularly using <a href="/user/markdown/#includes"><code>include</code> syntax</a>.</li>
<li>Create visually distinct callouts and warnings using <a href="/user/markdown/#alerts">alert boxes</a>.</li>
</ul>
</li>
</ul>
<p>These improvements make GitLab Flavored Markdown more powerful for teams creating and maintaining documentation while offering greater flexibility in how content is presented and organized.</p>
<h3 id="new-visualization-of-devops-performance-with-dora-metrics-across-projects">New visualization of DevOps performance with DORA metrics across projects</h3>
<!-- categories: Value Stream Management, DORA Metrics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/#projects-by-dora-metric">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/408516">Related issue</a></li></ul>
</div>

<p>We are excited to introduce the <strong>Projects by DORA metric</strong> panel, a new addition to the <a href="https://www.youtube.com/watch?v=EA9Sbks27g4">Value Streams Dashboard</a>. This table lists all projects in the top-level group, with breakdown into the <a href="https://about.gitlab.com/solutions/value-stream-management/dora/#overview">four DORA metrics</a>. Managers can use this table to identify high, medium, and low-performing projects. This information can also help make data-driven decisions, allocate resources effectively, and focus on initiatives that enhance software delivery speed, stability, and reliability.</p>
<p>The <a href="/user/analytics/dora_metrics/">DORA metrics</a> are available out-of-the-box in GitLab, and now together with the <a href="https://about.gitlab.com/blog/inside-dora-performers-score-in-gitlab-value-streams-dashboard/"><strong>DORA Performers score</strong> panel</a> executives have a complete view into their organization’s DevOps health top to bottom.</p>
<h3 id="new-issues-look-now-in-beta">New issues look now in beta</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issues/">Documentation</a></li></ul>
</div>

<p>Issues now share a common framework with epics and tasks, featuring real-time updates and workflow improvements:</p>
<ul>
<li><strong>Drawer view:</strong> Open items from lists or boards in a drawer for quick viewing without leaving your current context. A button at the top lets you expand to full page view.</li>
<li><strong>Change type:</strong> Convert types between epics, issues, and tasks using the “Change type” action (replaces “Promote to epic”)</li>
<li><strong>Start date:</strong> Issues now support start dates, aligning their functionality with epics and tasks.</li>
<li><strong>Ancestry:</strong> The complete hierarchy is above the title and the Parent field in the sidebar. To manage relationships, use the new <a href="/user/project/quick_actions/">quick action</a> commands <code>/set_parent</code>, <code>/remove_parent</code>, <code>/add_child</code>, and <code>/remove_child</code>.</li>
<li><strong>Controls:</strong> All actions are now accessible from the top menu (vertical ellipsis), which remains visible in the sticky header when scrolling.</li>
<li><strong>Development:</strong> All development items (merge requests, branches, and feature flags) related to an issue or task are now consolidated in a single, convenient list.</li>
<li><strong>Layout:</strong> UI improvements create a more seamless experience between issues, epics, tasks, and merge requests, helping you navigate your workflow more efficiently.</li>
<li><strong>Linked items:</strong> Create relationships between tasks, issues, and epics with improved linking options. Drag and drop to change link types and toggle the visibility of labels and closed items.</li>
</ul>
<h3 id="description-templates-for-epics-issues-tasks-objectives-and-key-results">Description templates for epics, issues, tasks, objectives and key results</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/description_templates/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16088">Related epic</a></li></ul>
</div>

<p>You can now streamline your workflow and maintain consistency across your projects with description templates for work items (epics, tasks, objectives, and key results).</p>
<p>This powerful addition allows you to create standardized templates, saving you time and ensuring all crucial information is included every time you create a new work item.</p>
<h3 id="change-the-severity-of-a-vulnerability">Change the severity of a vulnerability</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#change-or-override-vulnerability-severity">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16157">Related issue</a></li></ul>
</div>

<p>When triaging vulnerabilities, you need the flexibility to adjust severity levels based on your organization’s unique security context and risk tolerance. Until now, you had to rely on the default severity levels assigned by security scanners, which might not accurately reflect the risk level for your specific environment.</p>
<p>Now you can manually change the severity of specific vulnerability occurrences to better align with your organization’s security needs. This allows you to:</p>
<ul>
<li>Adjust the severity level of any vulnerability to <strong>Critical</strong>, <strong>High</strong>, <strong>Medium</strong>, <strong>Low</strong>, <strong>Info</strong>, or <strong>Unknown</strong>.</li>
<li>Change multiple vulnerabilities’ severity at once from the vulnerability report.</li>
<li>Easily identify which vulnerabilities have custom severity levels through visual indicators.</li>
</ul>
<p>All severity changes are tracked in the vulnerability history and audit events and can only be overridden by your team members who have at least the Maintainer role for the project, or a custom role with the <code>admin_vulnerability</code> permission. This feature gives security teams more flexibility and control over vulnerability prioritization.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="gitlab-duo-chat-is-now-resizable">GitLab Duo Chat is now resizable</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/#use-gitlab-duo-chat-in-the-gitlab-ui">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/499849">Related issue</a></li></ul>
</div>

<p>In the GitLab UI, you can now resize the Duo Chat drawer. This makes it easier to view code outputs, or keep Chat open whilst working with GitLab in the background.</p>
<h3 id="manage-multiple-conversations-in-gitlab-duo-chat">Manage multiple conversations in GitLab Duo Chat</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/#have-multiple-conversations">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16108">Related epic</a></li></ul>
</div>

<p>Maintaining context across different topics in GitLab Duo Chat is now easier with multiple conversations. You can create new conversations, browse your conversation history, and switch between conversations.</p>
<p>Previously, starting a new conversation meant losing the context of your existing chat. Now, you can manage multiple conversations on different topics. Each conversation maintains its own context, so for example, you can ask follow-up questions about code explanations in one conversation, whilst preparing a work-plan in another conversation.</p>
<p>When you need to revisit previous discussions, select the new chat history icon to see all your recent conversations. Conversations are automatically organized by most recent activity, making it easy to pick up where you left off.</p>
<p>For your privacy, conversations with no activity for 30 days are automatically deleted, and you can manually delete any conversation at any time.</p>
<p>This feature is currently available only on GitLab.com in the web UI. It is not available in GitLab Self-Managed instances, nor in IDE integrations.</p>
<p>Share your experience with us in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/526013">issue 526013</a>.</p>
<h3 id="select-models-for-ai-powered-features-on-gitlab-duo-self-hosted">Select models for AI-powered features on GitLab Duo Self-Hosted</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/configure_duo_features/#select-a-self-hosted-model-for-a-feature">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524174">Related issue</a></li></ul>
</div>

<p>On GitLab Duo Self-Hosted, you can now select individual supported models for each GitLab Duo Chat sub-feature on your self-managed instance. Model selection and configuration for Chat sub-features is now in beta.</p>
<p>To leave feedback, go to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/524175">issue 524175</a>.</p>
<h3 id="ai-impact-dashboard-available-on-gitlab-duo-self-hosted-code-suggestions">AI Impact Dashboard available on GitLab Duo Self-Hosted Code Suggestions</h3>
<!-- categories: Self-Hosted Models, Value Stream Management, DORA Metrics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/duo_and_sdlc_trends/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523807">Related issue</a></li></ul>
</div>

<p>You can now use the AI Impact Dashboard with GitLab Duo Self-Hosted Code Suggestions on your self-managed instance to help you understand the impact of GitLab Duo on your productivity. The AI Impact Dashboard is in beta with GitLab Duo Self-Hosted, and you can use this feature with your self-managed instance and Visual Studio Code, Microsoft Visual Studio, JetBrains, and Neovim IDEs.</p>
<p>Use the AI Impact Dashboard to compare AI usage trends with metrics like lead time, cycle time, DORA, and vulnerabilities. This allows you to measure how much time is saved in your end-to-end workstream using GitLab Duo Self-Hosted, whilst staying focused on business outcomes rather than developer activity.</p>
<p>Please leave feedback on the AI Impact Dashboard in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/456105">issue 456105</a>.</p>
<h3 id="meta-llama-3-models-available-for-gitlab-duo-self-hosted-code-suggestions-and-chat">Meta Llama 3 models available for GitLab Duo Self-Hosted Code Suggestions and Chat</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#supported-models">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523917">Related issue</a></li></ul>
</div>

<p>You can now use select Meta Llama 3 models with GitLab Duo Self-Hosted. These models are in beta for GitLab Duo Self-Hosted to support GitLab Duo Chat and Code Suggestions.</p>
<p>Please leave feedback on using these models with GitLab Duo Self-Hosted in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/523917">issue 523912</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="timestamps-of-when-placeholder-users-were-created">Timestamps of when placeholder users were created</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/mapping/post_migration_mapping/#placeholder-user-attributes">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/507297">Related issue</a></li></ul>
</div>

<p>Previously, when you imported groups or projects, you could not see when <a href="/user/import/mapping/post_migration_mapping/#placeholder-users">placeholder users</a> were created.
With this release, we’ve added timestamps so you can track the progress of your migration and troubleshoot any issues as they occur.</p>
<h3 id="bulk-edit-to-do-items">Bulk edit to-do items</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/todos/#bulk-edit-to-do-items">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/16564">Related issue</a></li></ul>
</div>

<p>You can now efficiently manage your To-Do List with our improved bulk editing feature. Select multiple to-do items and mark them as done or snooze them in one go, giving you more control over your tasks and helping you stay organized with less effort.</p>
<h3 id="snooze-to-do-items">Snooze to-do items</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/todos/#snooze-to-do-items">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/17712">Related issue</a></li></ul>
</div>

<p>You can now snooze notifications in your To-Do List, allowing you to temporarily hide items and focus on what’s most important right now. Whether you need an hour to concentrate or want to revisit a task tomorrow, you’ll have fine-grained control over when notifications reappear, helping you manage your workflow more effectively.</p>
<h3 id="request-reassignment-by-using-a-csv-file">Request reassignment by using a CSV file</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/mapping/reassignment/#request-reassignment-by-using-a-csv-file">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16765">Related epic</a></li></ul>
</div>

<p>With this release, user contribution mapping now supports bulk reassignment by using a CSV file.
If you have a large user base with many placeholder users, group members with the Owner role can:</p>
<ol>
<li>Download a prefilled CSV template.</li>
<li>Add GitLab usernames or public emails from the destination instance.</li>
<li>Upload the completed file to reassign all contributions at once.</li>
</ol>
<p>This method eliminates tedious manual reassignment through the UI.
To further streamline large-scale migrations, API support for CSV-based reassignment is now also available.</p>
<h3 id="new-navigation-experience-for-projects-in-your-work">New navigation experience for projects in Your Work</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/465889">Related issue</a></li></ul>
</div>

<p>We’re excited to announce significant improvements to the project overview in <strong>Your Work</strong>, designed to streamline how you discover and access your projects. This update introduces a more intuitive tab-based navigation system that better reflects how users interact with their projects.</p>
<ul>
<li>The new <strong>Contributed</strong> tab (previously <strong>Yours</strong>) now displays all projects you’ve contributed to, including your personal projects, making it easier to track your development activity.</li>
<li>Find your individual projects faster with the <strong>Personal</strong> tab, now prominently featured in the main navigation.</li>
<li>Access team projects through the <strong>Member</strong> tab (formerly <strong>All</strong>), showing all projects where you have membership.</li>
<li>The <strong>Inactive</strong> tab (previously <strong>Pending deletion</strong>) now provides a comprehensive view of both archived projects and those pending deletion.</li>
</ul>
<p>Further, if you have the appropriate permissions, you can now edit or delete a project directly from the <strong>Your Work</strong> projects overview.
These changes reflect our commitment to creating a more efficient and user-friendly GitLab experience. The new layout helps you focus on the projects that matter most to your work, reducing the time spent navigating between different project categories.</p>
<p>We value your feedback on this update! Join the discussion in <a href="https://gitlab.com/groups/gitlab-org/-/epics/16662">epic 16662</a> to share your experience with the new navigation system.</p>
<h3 id="improved-project-creation-permission-settings">Improved project creation permission settings</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/visibility_and_access_controls/#define-which-roles-can-create-projects">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/507410">Related issue</a></li></ul>
</div>

<p>We’ve improved the project creation permission settings to make them more clear, intuitive, and aligned with our security principles. The improved settings include:</p>
<ul>
<li>Renamed the “Default project creation protection” dropdown to “Minimum role required for project creation” to clearly reflect the setting’s purpose.</li>
<li>Renamed the “Developers + Maintainers” dropdown option to “Developers” for consistency across the platform.</li>
<li>Reordered the dropdown options from most restrictive to least restrictive access level.</li>
</ul>
<p>These changes make it easier to understand and configure which roles can create projects within your groups, helping administrators enforce appropriate access controls more confidently.</p>
<p>Thank you <a href="https://gitlab.com/yasuk">@yasuk</a> for this community contribution!</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="dependency-scanning-support-for-pub-dart-package-manager">Dependency Scanning support for pub (Dart) package manager</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#supported-languages-and-package-managers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/342468">Related issue</a></li></ul>
</div>

<p>Dependency Scanning has added support for pub, the official package manager for Dart. Support for this has been added to our Dependency Scanning <a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Dependency-Scanning.latest.gitlab-ci.yml">latest template</a> and <a href="https://gitlab.com/explore/catalog/components/dependency-scanning">CI/CD component</a>.</p>
<p>This addition was a community contribution from one of our users, Alexandre Laroche. The GitLab Composition Analysis team appreciates this contribution to improve our product, many thanks, Alexandre. If you are interested in learning more about contributing to GitLab please check out our <a href="https://about.gitlab.com/community/contribute/">Community Contribution program</a>.</p>
<h3 id="select-a-compliance-framework-as-default-from-the-dropdown-list-on-the-frameworks-page">Select a compliance framework as default from the dropdown list on the Frameworks page</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_frameworks_report/#set-and-remove-a-compliance-framework-as-default">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181500">Related epic</a></li></ul>
</div>

<p>Users can set a default compliance framework in the GitLab compliance centre, which is applied to all new and
imported projects that are created in that group. A default compliance framework has a <strong>default</strong> label to help
users identify it.</p>
<p>To make it easier to set a compliance framework as default, we are introducing the ability for users
to set a framework as default by using the framework dropdown list on the list frameworks page in the compliance
center of a top-level group. This feature isn’t available in the compliance center of subgroups nor projects.</p>
<h3 id="ignore-specific-revisions-in-git-blame">Ignore specific revisions in Git blame</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/files/git_blame/#ignore-specific-revisions">Documentation</a></li></ul>
</div>

<p>When browsing the history of a repository, there might be commits that aren’t relevant to otherwise meaningful changes in the project. This can happen during:</p>
<ul>
<li>Refactors where you change from one library to another without changing functionality.</li>
<li>Implementation of code formatters or linters that require standardizing the entire codebase.</li>
</ul>
<p>When you look through the history of a project with <code>blame</code>, these kinds of commits make it difficult to understand the changes that occurred. Git supports identifying these commits with a <code>.git-blame-ignore-revs</code> file in your project. GitLab now allows you to toggle the blame view to show or hide these specific revisions in the “Blame preferences” dropdown list, making it easier to understand the history of your project.</p>
<h3 id="path-exclusions-for-codeowners">Path exclusions for CODEOWNERS</h3>
<!-- categories: Source Code Management, Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/codeowners/reference/#exclusion-patterns">Documentation</a></li></ul>
</div>

<p>When teams configure a <code>CODEOWNERS</code> file, it’s common to include broad matching patterns for paths
and file types. These broad configurations can be problematic if your documentation, automated
build files, or other patterns don’t require a specified Code Owner.</p>
<p>You can now configure the <code>CODEOWNERS</code> file with path exclusions to ignore certain paths. This is helpful
when you want to exclude specific files, or paths from requiring a Code Owner approval.</p>
<h3 id="configurable-squash-settings-in-branch-rules">Configurable squash settings in branch rules</h3>
<!-- categories: Source Code Management, Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/branches/branch_rules/#edit-squash-commits-option">Documentation</a></li></ul>
</div>

<p>Different Git workflows require different strategies for handling commits when merging between branches. In previous versions of GitLab, you could only set a single strategy for whether commits should be squashed when merging and how strongly that should be enforced. This setup could be error-prone or require developers to make specific choices to follow the project convention for different branch targets.</p>
<p>You can now configure squash settings for each protected branch through branch rules. For example, you can:</p>
<ul>
<li>Require squashing when merging from your <code>feature</code> branch to the <code>develop</code> branch to keep history clean.</li>
<li>Disable squashing when merging from the <code>develop</code> branch to <code>main</code> branch when you want the commit history to remain intact.</li>
</ul>
<p>This flexibility ensures consistent commit history across your project while respecting the unique needs of each branch in your workflow, all without requiring manual developer intervention.</p>
<h3 id="wider-distribution-for-token-expiration-notifications">Wider distribution for token expiration notifications</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/manage/#expiry-emails-for-group-and-project-access-tokens">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/463016">Related issue</a></li></ul>
</div>

<p>Previously, access token expiry notification emails were only sent to direct members of the group and project in which the token was expiring. Now, these notifications are also sent to inherited group and project members, if the setting is enabled. This wider distribution makes it easier to manage the token before expiry.</p>
<h3 id="handling-of-needs-statements-in-pipeline-execution-policies-for-compliance">Handling of <code>needs</code> statements in pipeline execution policies for compliance</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/#pipeline_execution_policy-schema">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/469256">Related issue</a></li></ul>
</div>

<p>To strengthen your control over pipeline execution, jobs enforced in the <code>.pipeline-policy-pre</code> reserved stage are now required to complete before jobs in subsequent stages can begin, regardless of whether the job defines any <code>needs</code> statements. Previously, jobs defined in the <code>.pipeline-policy-pre</code> stage and jobs in subsequent pipelines with a <code>needs</code> statement both started as soon as the pipeline executed. With this enhancement, jobs in subsequent stages must wait for the <code>.pipeline-policy-pre</code> to complete before starting any other jobs without dependencies, helping you enforce ordered execution and ensuring compliance within the security policies.</p>
<p>Our customers rely on reserved stages to enforce compliance and security checks before developer jobs run. A common use case is to enforce a security or compliance check that fails the entire pipeline if the check does not pass. Allowing jobs to run out of order could bypass this enforcement and weaken policy intent. This improvement provides you with a more consistent approach to compliance enforcement.</p>
<p>To inject jobs at the beginning of the pipeline without overriding <code>needs</code> behavior, configure the jobs to use a custom stage with the new custom stages feature that we introduced in 17.9.</p>
<h3 id="authenticate-to-private-pages-with-an-access-token">Authenticate to private Pages with an access token</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/pages_access_control/#authenticate-with-an-access-token">Documentation</a></li></ul>
</div>

<p>You can now authenticate to private GitLab Pages sites programmatically using access tokens, making it easier to automate interactions with your Pages content. Previously, accessing restricted Pages sites required interactive authentication through the GitLab UI.</p>
<p>This powerful enhancement increases productivity while maintaining security, giving developers more flexibility in how they interact with and distribute private Pages content.</p>
<h3 id="new-insights-into-gitlab-duo-code-suggestions-and-gitlab-duo-chat-trends">New insights into GitLab Duo Code Suggestions and GitLab Duo Chat trends</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/duo_and_sdlc_trends/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/477246">Related issue</a></li></ul>
</div>

<p>The AI comparison metrics panel on the AI Impact Dashboard now provides month-over-month (MoM) tracking for GitLab Duo Code Suggestions acceptance rate and GitLab Duo Chat usage (MoM%). These new trend-based insights complement the existing Duo Code Suggestions and Duo Chat tiles, which provide a 30-day snapshot of these metrics.
With these additional metrics, managers can better measure the AI impact on their software development processes and identify patterns, by comparing Code Suggestions acceptance rate and Duo Chat usage with other SDLC metrics over time.</p>
<h3 id="docker-hub-authentication-for-the-dependency-proxy">Docker Hub authentication for the dependency proxy</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/dependency_proxy/#authenticate-with-docker-hub">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/331741">Related issue</a></li></ul>
</div>

<p>The GitLab Dependency Proxy for container images now supports authentication with Docker Hub, helping you avoid pipeline failures due to rate limits and giving you access to private images.</p>
<p>Starting April 1, 2025, Docker Hub will enforce stricter pull limits (100 per 6-hour window per IPv4 address or IPv6 /64 subnet) for unauthenticated users. Without authentication, your pipelines might fail once these limits are reached.</p>
<p>With this release, you can configure Docker Hub authentication through the GraphQL API using your Docker Hub credentials, <a href="https://docs.docker.com/security/for-developers/access-tokens/">personal access token</a>, or <a href="https://docs.docker.com/security/for-admins/access-tokens/">organization access tokens</a>. Support for UI configuration will be available in GitLab 17.11.</p>
<h3 id="package-registry-adds-audit-events">Package registry adds audit events</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/329588">Related issue</a></li></ul>
</div>

<p>Package registry operations are now logged as audit events so teams can track when packages are published or deleted to meet compliance requirements.</p>
<p>Before this release, there was no built-in way to track who published or made changes to packages. Teams had to create their own tracking systems or manually document package changes to maintain logs of these activities. Now, each audit event shows who made a change, when it happened, how they were authenticated, and exactly what changed in the package.</p>
<p>Audit events for projects are stored either in a group namespace or the project itself for individual project Owners. Groups can turn off audit events to manage storage needs.</p>
<h3 id="sort-access-tokens-in-credentials-inventory">Sort access tokens in Credentials Inventory</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/credentials_inventory/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/513181">Related issue</a></li></ul>
</div>

<p>You can now sort personal, project, and group access tokens in the Credentials Inventory by owner, created date, and last used date. This helps you to locate and identify your access tokens more quickly.
Thank you <a href="https://gitlab.com/chaitanyason9">Chaitanya Sonwane</a> for your contribution!</p>
<h3 id="identify-and-revoke-tokens-with-token-information-api">Identify and revoke tokens with token information API</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/admin/token/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15777">Related epic</a></li></ul>
</div>

<p>GitLab administrators can now use a unified API to identify and revoke tokens. Previously, administrators had to use endpoints related to the specific type of token. This API allows revocation regardless of the type. For a list of supported token types, see the <a href="/api/admin/token/">Token information API</a>.</p>
<p>Thank you <a href="https://gitlab.com/nwittstruck">Nicholas Wittstruck</a> and the team from Siemens for your contribution!</p>
<h3 id="configurable-token-duration-with-gitlab-oidc-provider">Configurable token duration with GitLab OIDC provider</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/auth/oidc/#configure-a-custom-duration-for-id-tokens">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/377654">Related issue</a></li></ul>
</div>

<p>When using GitLab as an OpenID Connect (OIDC) provider, you can now configure the duration of ID tokens with the <code>id_token_expiration</code> attribute. Previously, ID tokens had a fixed expiration time of 120 seconds.</p>
<p>Thank you <a href="https://gitlab.com/DerAstronaut">Henry Sachs</a> for your contribution!</p>
<h3 id="map-omniauth-profile-attributes-to-user">Map OmniAuth profile attributes to user</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/omniauth/#keep-omniauth-user-profiles-up-to-date">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/505575">Related issue</a></li></ul>
</div>

<p>You can now map the Organization and Title profile attributes from an OmniAuth identity provider (IdP) to a user’s GitLab profile. This allows the IdP to be the single source of truth for these attributes, and users can no longer change them.</p>
<h3 id="extended-webhook-triggers-for-expiring-tokens">Extended webhook triggers for expiring tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/manage/#add-additional-webhook-triggers-for-group-access-token-expiration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/499732">Related issue</a></li></ul>
</div>

<p>You can now trigger webhook events 60 and 30 days before a project or group access token expires. Previously, these webhook events only triggered 7 days before expiry. This is an optional setting that matches the existing email notification schedule for expiring tokens.</p>
<h3 id="gitlab-runner-1710">GitLab Runner 17.10</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 17.10 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38271">Perform Autoscaler executor health check before instance usage</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38249">Expand Docker executor volumes</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/6208">Add Docker excecutor configuration for device addition for services</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38632">The Windows <code>gitlab-runner-helper</code> image fails due to invalid volume specification for the `/opt/step-runner’ path</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38409">Repository mirroring for RPM packages is not working properly in GitLab Runner 17.7.0 and later</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/359825">Running <code>git submodule update --remote</code> in GitLab CI/CD returns an error</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-10-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.10">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.10">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.10">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.9 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-9-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-9-released/</id><published>2025-02-20T00:00:00Z</published><updated>2025-02-20T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On February 20, 2025, GitLab 17.9 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>We’re excited to recognize <a href="https://gitlab.com/salihudickson">Salihu Dickson</a> as our MVP for his outstanding contributions to developing <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/171764">Comments on Wiki pages</a>, a highly-requested feature that gathered <a href="https://gitlab.com/groups/gitlab-org/-/epics/14062">over 200 positive reactions</a> from the community!</p>
<p>His dedication spanned over six months, delivering an implementation of <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/171764">wiki top-level discussions</a> with nearly 4,000 lines of code. Salihu also created several proof-of-concept implementations and improved the Wiki experience with additional features and bug fixes.</p>
<p>“Salihu has been an outstanding Community Contributor in developing Comments on Wiki pages!” shares <a href="https://gitlab.com/mmacfarlane">Matthew Macfarlane</a>, Product Manager, Plan:Knowledge at GitLab. “Salihu’s extensive knowledge of the product has allowed us to deliver this key feature more efficiently. As a Product Manager, it is a joy to work with contributors like Salihu!”</p>
<p>“An incredible achievement!” shares <a href="https://gitlab.com/afracazo">Alex Fracazo</a>, Senior Product Designer, Plan:Knowledge at GitLab. “Salihu didn’t just build the basic functionality, but delivered a comprehensive end-to-end feature from top-level discussions on Wiki pages to error handling and test coverage.” Many members of the GitLab team showed strong appreciation for Salihu’s work, including Natalia Tepluhina, Principal Engineer, Vue.js core team member, and <a href="https://gitlab.com/vshushlin">Vladimir Shushlin</a>, Engineering Manager, Plan:Knowledge at GitLab, highlighting his technical skills and collaboration.</p>
<p>Salihu, a front-end engineer at Elixir Cloud and two-time GSoC mentor, shared - “I’d like to thank everyone who worked closely with me to make this possible. A special thank you to <a href="https://gitlab.com/himkp">Himanshu Kapoor</a> (Staff Frontend Engineer, Plan:Knowledge at GitLab) - your mentorship over the past few months has been instrumental to all the work I’ve done here, and I truly appreciate all the guidance and support you’ve provided. Bringing this feature to life was really a team effort—from the reviewers who meticulously went through hundreds of lines of code, to the backend developers like <a href="https://gitlab.com/pskorupa">Piotr Skorupa</a> (Backend Engineer, Plan:Knowledge at GitLab), who made this possible.” He expressed enthusiasm about collaborating with the team and “contributing to many more impactful features in the future!”</p>
<p>We are so grateful to Salihu for all of his contributions and to all of our open source community for contributing to GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-self-hosted-is-generally-available">GitLab Duo Self-Hosted is generally available</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517102">Related issue</a></li></ul>
</div>

<p>You can now host selected large language models (LLMs) in your own infrastructure and configure those models as the source for GitLab Duo Code Suggestions and Chat. This feature is now generally available on self-managed GitLab environments with applicable licensing.</p>
<p>With GitLab Duo Self-Hosted, you can use models hosted either on-premise or in a private cloud as the source for GitLab Duo Chat or Code Suggestions. We currently support open-source Mistral models on vLLM or AWS Bedrock, Claude 3.5 Sonnet on AWS Bedrock, and OpenAI models on Azure OpenAI. By enabling self-hosted models, you can leverage the power of generative AI while maintaining complete data sovereignty and privacy.</p>
<p>Please leave feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/512753">issue 512753</a>.</p>
<h3 id="run-multiple-pages-sites-with-parallel-deployments">Run multiple Pages sites with parallel deployments</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/#parallel-deployments">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14434">Related epic</a></li></ul>
</div>

<p>You can now create multiple versions of your GitLab Pages sites simultaneously with parallel deployments. Each deployment gets a unique URL based on your configured prefix. For example, with a unique domain your site would be accessible at <code>project-123456.gitlab.io/prefix</code>, or without a unique domain at <code>namespace.gitlab.io/project/prefix</code>.</p>
<p>This feature is especially helpful when you need to:</p>
<ul>
<li>Preview design changes or content updates.</li>
<li>Test site changes in development.</li>
<li>Review changes from merge requests.</li>
<li>Maintain multiple site versions (for example, with localized content).</li>
</ul>
<p>Parallel deployments expire after 24 hours by default to help manage storage space, though you can customize this duration or set deployments to never expire. For automatic cleanup, parallel deployments created from merge requests are deleted when the merge request is merged or closed.</p>
<h3 id="add-project-files-to-duo-chat-in-vs-code-and-jetbrains-ides">Add project files to Duo Chat in VS Code and JetBrains IDEs</h3>
<!-- categories: Editor Extensions, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/examples/#ask-about-specific-files-in-the-ide">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15183">Related epic</a></li></ul>
</div>

<p>Add your project files directly to Duo Chat in VS Code and JetBrains to unlock more powerful, context-aware AI assistance.</p>
<p>By adding project files, Duo Chat gains deep understanding of your specific codebase, enabling it to provide highly contextual and accurate responses. This context awareness gives you more relevant code explanations, precise debugging help, and suggestions that seamlessly integrate with your existing codebase. We welcome your feedback on this new, exciting feature. Please share your thoughts in our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/492443">feedback</a> issue.</p>
<h3 id="workspaces-container-support-with-sysbox">Workspaces container support with Sysbox</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/configuration/#build-and-run-containers-in-a-workspace">Documentation</a></li></ul>
</div>

<p>GitLab workspaces now supports building and running containers directly in your development environment. When your workspace runs on a Kubernetes cluster configured <a href="/user/workspace/configuration/#with-sysbox">with Sysbox</a>, you can build and run containers without additional configuration.</p>
<p>Introduced in GitLab 17.4 as part of our <a href="https://about.gitlab.com/releases/2024/09/19/gitlab-17-4-released/#secure-sudo-access-for-workspaces">sudo access feature</a>, this capability enables you to maintain your complete container workflow in your GitLab workspace environment.</p>
<h3 id="create-workspaces-without-a-custom-devfile">Create workspaces without a custom devfile</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/#gitlab-default-devfile">Documentation</a></li></ul>
</div>

<p>Previously, setting up a workspace required creating a <code>devfile.yaml</code> configuration file. GitLab now provides you with a default file that includes common development tools. This enhancement:</p>
<ul>
<li>Removes configuration barriers.</li>
<li>Enables you to create a workspace quickly from any project.</li>
<li>Includes common development tools pre-configured and ready to use.</li>
<li>Lets you focus on development instead of configuration.</li>
</ul>
<p>Start developing and create a workspace immediately without additional setup or configuration steps.</p>
<h3 id="gitlab-managed-kubernetes-resources">GitLab-managed Kubernetes resources</h3>
<!-- categories: Environment Management, Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/managed_kubernetes_resources/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16130">Related epic</a></li></ul>
</div>

<p>Deploy your applications to Kubernetes with more control and automation using <a href="/user/clusters/agent/managed_kubernetes_resources/">GitLab-managed Kubernetes resources</a>. Previously, you had to manually configure Kubernetes resources for each environment. Now, you can use GitLab-managed Kubernetes resources to automatically provision and manage these resources.</p>
<p>With GitLab-managed Kubernetes resources, you can:</p>
<ul>
<li>Automatically create namespaces and service accounts for new environments</li>
<li>Manage access permissions through role bindings</li>
<li>Configure other required Kubernetes resources</li>
</ul>
<p>When your developers deploy applications, GitLab automatically creates the necessary Kubernetes resources based on the provided resource templates, streamlining your deployment process and maintaining consistency across environments.</p>
<h3 id="simplified-access-to-deployments-within-project-environments">Simplified access to deployments within project environments</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/505770">Related issue</a></li></ul>
</div>

<p>Have you ever struggled to get an overview of your deployments within a project? You can now view recent deployment details in the environments list without having to expand each environment. For each environment, the list shows your latest successful deployment and, if different, your most recent deployment attempt.</p>
<h3 id="wiki-page-comments">Wiki page comments</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/discussions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14062">Related epic</a></li></ul>
</div>

<p>You can now add comments directly on wiki pages, transforming your documentation into an interactive collaboration space.</p>
<p>Comments and threads on wiki pages help teams:</p>
<ul>
<li>Discuss content directly in context.</li>
<li>Suggest improvements and corrections.</li>
<li>Keep documentation accurate and up-to-date.</li>
<li>Share knowledge and expertise.</li>
</ul>
<p>With wiki comments, teams can maintain living documentation that evolves alongside their projects through direct feedback and discussion.</p>
<h3 id="enhancing-workflow-visibility-new-insights-into-merge-request-review-time">Enhancing workflow visibility: new insights into merge request review time</h3>
<!-- categories: Value Stream Management, Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/value_stream_analytics/#value-stream-stage-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/503754">Related issue</a></li></ul>
</div>

<p>To improve development workflow tracking, <a href="https://about.gitlab.com/solutions/value-stream-management/">Value Stream Analytics</a> (VSA) has been extended with a new event - <em>Merge request last approved at</em>. The <a href="/user/project/merge_requests/approvals/">merge request approval</a> event marks the end of the review phase and the start of the final pipeline run or merge stage. For example, to calculate the total merge request review time, you can create a VSA stage with <em>Merge request reviewer first assigned</em> as the start event and <em>Merge request last approved at</em> as the end event.</p>
<p>With this enhancement, teams gain deeper insights into opportunities to optimize review times, which help reduce the overall cycle time of development, leading to faster software delivery.</p>
<h3 id="epss-kev-and-cvss-data-for-vulnerability-risk-prioritization">EPSS, KEV, and CVSS data for vulnerability risk prioritization</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/risk_assessment_data/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11544">Related epic</a></li></ul>
</div>

<p>We’ve added support for the following vulnerability risk data:</p>
<ul>
<li>Exploit Prediction Scoring System (EPSS)</li>
<li>Known Exploited Vulnerabilities (KEV)</li>
<li>Common Vulnerabilities and Exposures (CVE)</li>
</ul>
<p>You can now efficiently prioritize risk across your dependency and container image vulnerabilities using this data. You can find the data in the Vulnerability Report and in the Vulnerability Details page.</p>
<h3 id="configure-dast-scans-through-the-ui-with-full-control">Configure DAST scans through the UI with full control</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/on-demand_scan/">Documentation</a></li></ul>
</div>

<p>To effectively test complex applications, security teams need flexibility when they configure DAST scans. Previously, DAST scans configured through the UI had limited configuration options, which prevented successful scanning of applications with specific security requirements. This meant you had to use pipeline-based scans even for quick security assessments.</p>
<p>You can now configure DAST scans through the UI with the same granular control available in pipeline-based scans. This includes:</p>
<ul>
<li>Full authentication configuration, including custom headers and cookies</li>
<li>Precise crawl settings like maximum pages, maximum depth, and excluded URLs</li>
<li>Advanced scan timeouts and retry attempts</li>
<li>Custom scanner behavior, like maximum links to crawl and DOM depth</li>
<li>Targeted scanning modes for specific vulnerability types</li>
</ul>
<p>Save these configurations as reusable profiles to maintain consistent security testing across your applications. Every configuration change is tracked with audit events, so you know when scan settings are added, edited, or removed.</p>
<p>This enhanced control helps you run more effective security scans while maintaining compliance using detailed audit trails. Instead of spending time managing pipeline configurations, you can quickly launch the right scan for each application to find and fix vulnerabilities faster.</p>
<h3 id="automatic-cicd-pipeline-cleanup">Automatic CI/CD pipeline cleanup</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/settings/#automatic-pipeline-cleanup">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/338480">Related issue</a></li></ul>
</div>

<p>In the past, if you wanted to delete older CI/CD pipelines, you could only do this through the API.</p>
<p>In GitLab 17.9, we have introduced a project setting that allows you to set a CI/CD pipeline expiry time.
Any pipelines and related artifacts older than the defined retention period are deleted.
This can help reduce the disk usage in projects that run lots of pipelines that generate large artifacts, and even improve overall performance.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="composite-identity-for-more-secure-ai-connections">Composite identity for more secure AI connections</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/development/ai_features/composite_identity/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/506641">Related issue</a></li></ul>
</div>

<p>Previously, a request to GitLab could only be authenticated as a single user. With composite identity, we have now made it possible to authenticate a request as a service account and a user simultaneously.
AI agent use cases often require permissions to be based on the user who initiated the tasks in a system, while simultaneously showing a distinct identity that’s separate from the initiating user. A composite identity is our new identity principal, which represents an AI agent’s identity. This identity is linked with the identity of the human user who requests actions from the agent.
Whenever an AI agent action attempts to access a resource, a composite identity token is used. This token belongs to a service account, and is also linked with the human user who is instructing the agent. The authorization checks that run on the token take into account both principals before granting access to a resource. Both identities need to have access to the resource, otherwise access is denied.
This new functionality enhances our ability to protect resources stored in GitLab.
For more information about how the composite identity for service accounts can be used, see the <a href="/development/ai_features/composite_identity/">documentation</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="restrict-users-from-making-their-profile-private">Restrict users from making their profile private</h3>
<!-- categories: User Management, User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/account_and_limit_settings/#prevent-users-from-making-their-profiles-private">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421310">Related issue</a></li></ul>
</div>

<p>Users can choose to make their user profile public or private.
Administrators can now control whether users have the option to make profiles private across their GitLab instance. In the Admin Area, “Allow users to make their profiles private” controls this setting. This setting is enabled by default, allowing users to choose private profiles.</p>
<h3 id="manage-project-integrations-from-a-group-with-the-rest-api">Manage project integrations from a group with the REST API</h3>
<!-- categories: Source Code Management, Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/group_integrations/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/328496">Related issue</a></li></ul>
</div>

<p>Previously, you could manage project integrations from a group in the GitLab UI only. With this release, it’s possible to manage these integrations with the REST API too.</p>
<p>Thanks to <a href="https://gitlab.com/van.m.anderson">Van</a> for their <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148283">initial community contribution</a>, which was subsequently picked up and completed by GitLab.</p>
<h3 id="group-sharing-visibility-enhancement">Group sharing visibility enhancement</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/members/sharing_projects_groups/#view-shared-groups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/378629">Related issue</a></li></ul>
</div>

<p>We’re excited to announce expanded visibility for group sharing across GitLab. Previously, while you could see shared projects on a group’s overview page, you couldn’t see which groups your group had been invited to join. Now you can view both <strong>Shared projects</strong> and <strong>Shared groups</strong> tabs on the group overview page, giving you a complete view of how your groups are connected and shared throughout your organization. This makes it easier to audit and manage group access across your organization.</p>
<p>We welcome feedback about this change in <a href="https://gitlab.com/groups/gitlab-org/-/epics/16777">epic 16777</a>.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="enable-dependency-scanning-using-sbom-for-cargo-conda-cocoapods-and-swift-projects">Enable Dependency Scanning using SBOM for Cargo, Conda, Cocoapods and Swift projects</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/519597">Related issue</a></li></ul>
</div>

<p>In GitLab 17.9 the Composition Analysis team starts the transition to Dependency Scanning using SBOM with the new Dependency Scanning analyzer. This analyzer will be a replacement for Gemnasium, which will reach end of support in 18.0, remaining available for use through GitLab 19.0.</p>
<p>The Dependency Scanning using SBOM approach will better support customers through expansion of language support, a tighter integration and experience within the GitLab platform, and a shift towards industry standard report types (SBOM-based scanning and reporting). As of GitLab 17.9, the new Dependency Scanning analyzer will be enabled by default in the <code>latest</code> Dependency Scanning CI/CD template (<code>Dependency-Scanning.latest.gitlab-ci.yml</code>) for the following project and file types:</p>
<ul>
<li>C/C++/Fortran/Go/Python/R projects using conda with a <code>conda-lock.yml</code> file.</li>
<li>Objective-C projects using Cocoapods with a <code>podfile.lock</code> file.</li>
<li>Rust projects using Cargo with a <code>cargo.lock</code> file.</li>
<li>Swift projects using Swift with a <code>package.resolved</code> file.</li>
</ul>
<p>With this change we are introducing a new CI/CD variable: <code>DS_ENFORCE_NEW_ANALYZER</code> which is set to <code>false</code> by default.</p>
<p>This approach ensures that all existing customers of the <code>latest</code> template continue to use the Gemnasium analyzer by default and it enables automatically the new Dependency Scanning analyzer for the file types listed above.</p>
<p>Existing customers who wish to migrate to the new Dependency Scanning analyzer can set <code>DS_ENFORCE_NEW_ANALYZER</code> to <code>true</code> (at the project, group, or instance level). You can read more about this change in the <a href="/update/deprecations/#dependency-scanning-upgrades-to-the-gitlab-sbom-vulnerability-scanner">deprecation announcement</a> and the associated <a href="/user/application_security/dependency_scanning/migration_guide_to_sbom_based_scans/">migration guide</a>.</p>
<p>Customers who want to entirely prevent the use of the new Dependency Scanning analyzer must set the CI/CD variable <code>DS_EXCLUDED_ANALYZERS</code> to <code>dependency-scanning</code>.</p>
<h3 id="license-scanning-support-for-swift-packages">License scanning support for Swift packages</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/license_scanning_of_cyclonedx_files/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/506730">Related issue</a></li></ul>
</div>

<p>In GitLab 17.9, we added support for license scanning on Swift packages. This will allow users who use Swift within their projects to better understand the licensing of their Swift packages.</p>
<p>This data is available to composition analysis users through the Dependency List, SBOM reports, and GraphQL API.</p>
<h3 id="multi-core-advanced-sast-offers-faster-scans">Multi-core Advanced SAST offers faster scans</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#security-scanner-configuration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/514156">Related issue</a></li></ul>
</div>

<p>GitLab Advanced SAST now offers multi-core scanning as an opt-in feature to improve performance.
This can reduce scan duration significantly, especially for larger codebases.</p>
<p>To enable it, set the <code>SAST_SCANNER_ALLOWED_CLI_OPTS</code> CI/CD variable to <code>--multi-core N</code>, where <code>N</code> is the desired number of cores to use.
You should only set this variable on the <code>gitlab-advanced-sast</code> job, not any other jobs.
Check <a href="/user/application_security/sast/#security-scanner-configuration">the documentation</a> for important guidance on how to select the right value.</p>
<p>We’re working to enable this performance improvement by default; this is tracked in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/517409">issue 517409</a>.</p>
<h3 id="apply-a-compliance-framework-by-using-a-projects-compliance-center">Apply a compliance framework by using a project&rsquo;s compliance center</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_projects_report/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/507986">Related epic</a></li></ul>
</div>

<p>In GitLab 17.2, we released the ability for group owners to apply and remove compliance frameworks for all projects
in a group by using the group’s compliance center.</p>
<p>We have expanded this to now allow group owners to also apply and remove compliance frameworks at the project level.
This will make it even easier for group owners to apply and monitor compliance frameworks at the project level.</p>
<p>The ability to apply and remove compliance frameworks at the project level is only available for group owners and
not project owners.</p>
<h3 id="workspace-extensions-now-support-proposed-apis">Workspace extensions now support proposed APIs</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/#extension-marketplace">Documentation</a></li></ul>
</div>

<p>Workspace extensions now support enabling proposed APIs, improving compatibility and reliability in production environments. This update allows extensions that depend on proposed APIs to run without errors, including critical development tools like the Python Debugger. The change expands API access while maintaining stability.</p>
<h3 id="implement-oci-based-gitops-with-the-fluxcd-cicd-component">Implement OCI-based GitOps with the FluxCD CI/CD component</h3>
<!-- categories: Container Registry, Deployment Management, Component Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/components/fluxcd/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/ci-cd/deploy-stage/environments-group/experiments/fluxcd-ci-cd-component/-/issues/1">Related issue</a></li></ul>
</div>

<p>Have you ever wondered how to implement GitOps best practices with GitLab? The new <a href="https://gitlab.com/components/fluxcd/">FluxCD component</a> makes it easy. Use the FluxCD component to package Kubernetes manifests into OCI images and store the images in OCI-compatible container registries. You can optionally sign the images and trigger an immediate FluxCD reconciliation.</p>
<h3 id="get-started-with-the-gitlab-integration-with-kubernetes">Get started with the GitLab integration with Kubernetes</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/getting_started/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/505216">Related issue</a></li></ul>
</div>

<p>In this release, we added new Kubernetes Getting started guides that show you how to use GitLab to deploy applications to Kubernetes directly and with FluxCD. These easy-to-follow tutorials don’t require in-depth Kubernetes knowledge to complete, so both novice and experienced users can learn how to integrate GitLab and Kubernetes.</p>
<p>To supplement the Kubernetes Getting started guides, we also included a series of recommendations for integrating GitLab into Kubernetes environments.</p>
<h3 id="discover-and-migrate-certificate-based-kubernetes-clusters">Discover and migrate certificate-based Kubernetes clusters</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/cluster_discovery/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/512420">Related issue</a></li></ul>
</div>

<p>The certificate-based Kubernetes integration will be turned off on GitLab.com for all users between May 6, 2025 9:00 AM UTC and May 8, 2025 22:00 PM UTC, and will be removed from GitLab Self-Managed instances in GitLab 19.0 (expected in May 2026).</p>
<p>To help users migrate, we added a new cluster API endpoint that group Owners can query to <a href="/api/cluster_discovery/">discover any certificate-based clusters</a> registered to a group, subgroup, or project. We also updated the <a href="/user/infrastructure/clusters/migrate_to_gitlab_agent/">migration documentation</a> to provide instructions for different types of use cases.</p>
<p>We encourage all GitLab.com users to check if they are affected, and to plan their migrations as soon as possible.</p>
<h3 id="enforce-custom-stages-in-pipeline-execution-policies">Enforce custom stages in pipeline execution policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/#inject_policy-type">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/475152">Related issue</a></li></ul>
</div>

<p>We’re excited to introduce a new capability for pipeline execution policies that allows you to enforce <strong>custom stages</strong> into your CI/CD pipelines in <code>Inject</code> mode. This feature provides greater flexibility and control over your pipeline structure while maintaining security and compliance requirements, supplying you with:</p>
<ul>
<li><strong>Enhanced pipeline customization</strong>: Define and inject custom stages at specific points in your pipeline, allowing for more granular control over job execution order.</li>
<li><strong>Improved security and compliance</strong>: Ensure that security scans and compliance checks run at the most appropriate times in your pipeline, such as after build but before deployment.</li>
<li><strong>Flexible policy management</strong>: Maintain centralized policy control while allowing development teams to customize their pipelines within defined guardrails.</li>
<li><strong>Seamless integration</strong>: Custom stages work alongside existing project stages and other policy types, providing a non-disruptive way to enhance your CI/CD workflows.</li>
</ul>
<p><strong>How does it work?</strong></p>
<p>The new and improved <code>inject_policy</code> strategy for pipeline execution policies allows you to define custom stages in your policy configuration. These stages are then intelligently merged with your project’s existing stages using a Directed Acyclic Graph (DAG) algorithm, ensuring proper ordering and preventing conflicts.</p>
<p>For example, you can now easily inject a custom security scanning stage between your build and deploy stages.</p>
<p>The <code>inject_policy</code> stage replaces <code>inject_ci</code> which will be deprecated, allowing you to opt into the <code>inject_policy</code> mode to gain the benefits. The <code>inject_policy</code> mode will become the default when configuring policies with <code>Inject</code> in the policy editor.</p>
<h3 id="rotate-access-tokens-with-self_rotate-scope">Rotate access tokens with <code>self_rotate</code> scope</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/#personal-access-token-scopes">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/430748">Related issue</a></li></ul>
</div>

<p>You can now use the <code>self_rotate</code> scope to rotate access tokens. This scope is available for personal, project, or group access tokens. Previously, this required two requests: One to obtain a new token, then another to perform the token rotation.</p>
<p>Thank you <a href="https://gitlab.com/stalb">Stéphane Talbot</a> and <a href="https://gitlab.com/ajuckel">Anthony Juckel</a> for your contribution!</p>
<h3 id="view-inactive-project-and-group-access-tokens">View inactive project and group access tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/settings/project_access_tokens/#view-your-access-tokens">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/462217">Related issue</a></li></ul>
</div>

<p>You can now view inactive group and project access tokens in the UI. Previously, GitLab instantly deleted project and group access tokens after they expired or were revoked. This lack of a record of inactive tokens made auditing and security reviews more difficult. GitLab now retains inactive group and project access token records for 30 days, which helps teams track token usage and expiration for compliance and monitoring purposes.</p>
<h3 id="view-access-token-ip-addresses">View access token IP addresses</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/#view-token-usage-information">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428577">Related issue</a></li></ul>
</div>

<p>Previously, when viewing your personal access tokens, the only usage information you could see was how many minutes ago the token was used. Now, you can also see up to the last seven IP addresses that the tokens were used from. This combined information can help you track where your token is being used.</p>
<p>Thank you <a href="https://jrm2k.us">Jayce Martin</a>, <a href="http://www.linkedin.com/in/avinash-koganti-38b511162">Avinash Koganti</a>, <a href="https://austindixon.net/">Austin Dixon</a>, and <a href="https://www.linkedin.com/in/rohit-kala-1b891a179">Rohit Kala</a> for your contribution!</p>
<h3 id="control-access-to-gitlab-pages-for-groups">Control access to GitLab Pages for groups</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/pages_access_control/#remove-public-access-for-group-pages">Documentation</a></li></ul>
</div>

<p>You can now restrict GitLab Pages access at the group level. Group owners can enable a single setting to make all Pages sites in a group and its subgroups visible only to project members. This centralized control simplifies security management without modifying individual project settings.</p>
<h3 id="change-work-item-type-to-another">Change work item type to another</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/tasks/#convert-a-task-into-another-item-type">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/385131">Related issue</a></li></ul>
</div>

<p>You can now easily change the type of your work items, giving you the flexibility to manage your projects more efficiently.</p>
<h3 id="speed-up-adding-new-child-items-by-keeping-the-form-open">Speed up adding new child items by keeping the form open</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/work_items/child_items/#work-with-multi-level-hierarchies">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/497767">Related issue</a></li></ul>
</div>

<p>We’ve streamlined the process of creating multiple child items by keeping the form open after each submission, making it easier to add multiple entries without extra clicks. This update saves you time and ensures a smoother workflow when managing your tasks.</p>
<h3 id="work-items-graphql-api---additional-query-filters">Work items GraphQL API - additional query filters</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/513308">Related issue</a></li></ul>
</div>

<p>The Work Items GraphQL API now includes additional query filters that let you filter by:</p>
<ul>
<li>Created, updated, closed, and due dates</li>
<li>Health status</li>
<li>Weight</li>
</ul>
<p>These new filters give you more control when querying and organizing work items through the API.</p>
<h3 id="block-deletion-of-active-security-policy-projects">Block deletion of active security policy projects</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/482967">Related epic</a></li></ul>
</div>

<p>To ensure secure management of security policies and prevent disruption to enabled and enforced policies, we’ve added protection to prevent deletion of security policy projects that are in active use.</p>
<p>If a security policy project is linked to any groups or projects, the links must be removed before the security policy project can be deleted.</p>
<h3 id="dependency-list-filter-by-component-in-projects">Dependency list filter by component in projects</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#filter-dependency-list">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16490">Related epic</a></li></ul>
</div>

<p>On the Dependencies list in a project, you can now filter by the package name using the Component filter.</p>
<p>Previously, you could not search for packages in the Dependencies list for a project level. Now, setting the Component filter will find packages that contain the specified string.</p>
<h3 id="filter-by-identifier-in-the-project-vulnerability-report">Filter by identifier in the project Vulnerability Report</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#filtering-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13340">Related epic</a></li></ul>
</div>

<p>In the Vulnerability Report for a project, you can now filter the results by vulnerability identifier so you can find specific vulnerabilities (like CVEs or CWEs) that are in your project.
You can use the identifier in conjunction with other filters like the severity, status, or tool filters. The vulnerability identifier filter is limited to reports with 20,000 vulnerabilities or less.</p>
<h3 id="support-custom-roles-in-merge-request-approval-policies">Support custom roles in merge request approval policies</h3>
<!-- categories: Permissions, Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#require_approval-action-type">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13550">Related epic</a></li></ul>
</div>

<p>We’ve made merge request approval policies more flexible by adding the ability to assign custom roles as approvers.</p>
<p>You can now tailor approval requirements to match your organization’s unique team structures and responsibilities, ensuring the right roles are engaged in the review process based on the policy. For example, require approval from AppSec Engineering roles for security reviews and Compliance roles for license approvals.</p>
<h3 id="search-and-filter-the-credentials-inventory">Search and filter the Credentials Inventory</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/credentials_inventory/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/345734">Related issue</a></li></ul>
</div>

<p>You can now use search and filter capabilities in the Credentials Inventory. This makes it easier to identify tokens and keys which fall within certain user-defined parameters, including tokens that expire within a certain window. Previously, the entries in the Credentials Inventory were presented as a static list.</p>
<h3 id="oauth-application-authorization-audit-event">OAuth application authorization audit event</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/#authorization">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/514152">Related issue</a></li></ul>
</div>

<p>Previously, when a user authorized an OAuth application, no audit event was generated. However, this event is important for security teams to
monitor the OAuth applications authorized by users on a specific GitLab instance.</p>
<p>With this release, GitLab now provides a <strong>User authorized an OAuth application</strong> audit event to track when users successfully authorize OAuth
applications. This new audit event further improves your ability to audit your GitLab instance.</p>
<h3 id="use-api-to-disable-2fa-for-individual-enterprise-users">Use API to disable 2FA for individual enterprise users</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/group_enterprise_users/#disable-two-factor-authentication-for-an-enterprise-user">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/383319">Related issue</a></li></ul>
</div>

<p>You can now use the API to clear all two-factor authentication (2FA) registrations for an individual enterprise user. Previously, this was only possible in the UI. Using the API allows for automated and bulk operations, saving time when 2FA resets need to be done at scale.</p>
<h3 id="email-notifications-for-service-accounts">Email notifications for service accounts</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428750">Related issue</a></li></ul>
</div>

<p>You can now set a custom email address to receive email notifications for service accounts. When a custom email address is specified when creating a service account, GitLab sends notifications to that address. Each service account must use a unique email address. This can help you monitor processes and events more effectively.</p>
<p>Thank you <a href="https://gitlab.com/tonton1728">Gilles Dehaudt</a>, <a href="https://gitlab.com/lenaing">Étienne Girondel</a>, <a href="https://gitlab.com/Densett">Kevin Caborderie</a>, <a href="https://gitlab.com/gmcquat">Geoffrey McQuat</a>, <a href="https://gitlab.com/rbihore">Raphaël Bihore</a> from the <a href="https://www.sncf-connect-tech.fr/">SNCF Connect &amp; Tech team</a> for your contribution!</p>
<h3 id="support-for-additional-group-memberships-with-multiple-oidc-providers">Support for additional group memberships with multiple OIDC providers</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/auth/oidc/#configure-multiple-openid-connect-providers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/408248">Related issue</a></li></ul>
</div>

<p>You can now configure additional group memberships when using multiple OIDC providers. Previously, if you configured multiple OIDC providers, you were limited to a single group membership.</p>
<h3 id="custom-expiration-date-for-rotated-service-account-tokens">Custom expiration date for rotated service account tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/service_accounts/#rotate-a-personal-access-token-for-a-group-service-account">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/505671">Related issue</a></li></ul>
</div>

<p>When rotating an access token for a service account, you can now use the <code>expires_at</code> attribute to set a custom expiration date. Previously, tokens automatically expired seven days after rotation. This allows for more granular management of token lifetimes, enhancing your ability to maintain secure access controls.</p>
<h3 id="support-merge-request-variables-in-pipeline-execution-policies">Support merge request variables in pipeline execution policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/512916">Related epic</a></li></ul>
</div>

<p>Pipeline execution policies now support additional merge request variables, allowing you to create more sophisticated policies that take into account information related to the merge request. This provides more targeted and efficient control over CI/CD enforcement. The following variables are now supported:</p>
<ul>
<li><code>CI_MERGE_REQUEST_SOURCE_BRANCH_SHA</code></li>
<li><code>CI_MERGE_REQUEST_TARGET_BRANCH_SHA</code></li>
<li><code>CI_MERGE_REQUEST_DIFF_BASE_SHA</code></li>
</ul>
<p>With this enhancement, you can:</p>
<ul>
<li>Implement advanced security scans that compare changes between source and target branches, ensuring thorough code review and vulnerability detection.</li>
<li>Create dynamic pipeline configurations that adapt based on the specifics of each merge request, streamlining your development process.</li>
</ul>
<h3 id="new-permissions-for-custom-roles">New permissions for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14746">Related epic</a></li></ul>
</div>

<p>You can create custom roles with the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/465324">Read compliance dashboard</a> permission. Custom roles allow you to grant only the specific permissions users need to complete their tasks. This helps you define roles that are tailored to the needs of your group, and can reduce the number of users who need the Maintainer or Owner role.</p>
<h3 id="gitlab-runner-179">GitLab Runner 17.9</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 17.9 today! GitLab Runner is the highly-scalable build agent that runs
your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with
GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38271">Add health check for runner autoscaler instances</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37471">Add histogram metrics for runner prepare stage duration</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421131">Add support for custom service container names to the Kubernetes executor</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38484">GitLab Runner is unable to retrieve cache from S3 Express One Zone</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37911">GitLab Runner on Kubernetes reports ‘script_failure’ instead of ‘runner_system_failure’ for AWS Spot instances</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-9-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.9">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.9">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.9">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.8 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-8-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-8-released/</id><published>2025-01-16T00:00:00Z</published><updated>2025-01-16T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On January 16, 2025, GitLab 17.8 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Through the Co-Create Program, <a href="https://gitlab.com/oceane_scania">Océane Legrand</a> has been leading efforts to enhance the Conan package registry feature set, collaborating with Juan Pablo Gonzalez.
Their work has focused on bringing the feature closer to GA readiness while implementing Conan version 2 support.
This collaboration demonstrates how the Co-Create Program can drive significant improvements to GitLab’s package registry capabilities.</p>
<p>They were nominated by <a href="https://gitlab.com/stingrayza">Raimund Hook</a>, Senior Fullstack Engineer, Contributor Success at GitLab, who highlighted their persistent collaboration and continuous iteration on the Conan Package Registry features.
Their work exemplifies GitLab values and will benefit all Conan users on the platform.</p>
<p>Océane Legrand is a Full Stack Developer at Scania where she works on maintaining their self-hosted GitLab instance on AWS.
“The work I’m doing in open source impacts both GitLab and Scania,” says Océane.
“Contributing through the Co-Create Program has given me new skills, like experience with Ruby and background migrations. When my team at Scania faced an issue during an upgrade, I was able to help troubleshoot because I’d already encountered it through the program.”</p>
<p><a href="https://about.gitlab.com/community/co-create/">Learn more about GitLab’s Co-Create Program</a> where customers work directly with our product and engineering teams to develop new features and enhance existing ones.</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="enhance-security-with-protected-container-repositories">Enhance security with protected container repositories</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/container_registry/container_repository_protection_rules/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/480385">Related issue</a></li></ul>
</div>

<p>We’re thrilled to announce the rollout of protected container repositories, a new feature in GitLab’s container registry that addresses security and control challenges in managing container images. Organizations often struggle with unauthorized access to sensitive container repositories, accidental modifications, lack of granular control, and difficulties in maintaining compliance. This solution provides enhanced security through strict access controls, granular permissions for push, pull, and management operations, and seamless integration with GitLab CI/CD pipelines.</p>
<p>Protected container repositories offers value to users by reducing the risk of security breaches and accidental changes to critical assets. This feature streamlines workflows by maintaining security without sacrificing development speed, improves overall governance of the container registry, and provides peace of mind knowing that important container assets are protected according to organizational needs.</p>
<p>This feature and the <a href="https://gitlab.com/groups/gitlab-org/-/epics/5574">protected packages</a> feature are both community contributions from <code>gerardo-navarro</code> and the Siemens crew. Thank you Gerardo and the rest of the crew from Siemens for their many contributions to GitLab! If you are interesting in learning more about how Gerardo and the Siemens crew contributed this change, check out this <a href="https://www.youtube.com/watch?v=5-nQ1_Mi7zg">video</a> in which Gerardo shares his learnings and best practices for contributing to GitLab based on his experience as an external contributor.</p>
<h3 id="list-the-deployments-related-to-a-release">List the deployments related to a release</h3>
<!-- categories: Environment Management, Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/releases/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501169">Related issue</a></li></ul>
</div>

<p>While GitLab has long supported creating releases from Git tags and tracking deployments, this information previously lived in multiple separate places that were difficult to piece together. Now, you can see all deployments related to a release directly on the release page. Release managers can quickly verify where a release has been deployed and which environments are pending deployment. This complements the existing deployment page integration that shows release notes for tagged deployments.</p>
<p>We would like to express our gratitude to <a href="https://gitlab.com/antonkalmykov">Anton Kalmykov</a> for contributing both features to GitLab.</p>
<h3 id="machine-learning-model-experiments-tracking-in-ga">Machine learning model experiments tracking in GA</h3>
<!-- categories: MLOps -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/ml/experiment_tracking/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9341">Related epic</a></li></ul>
</div>

<p>When creating machine learning models, data scientists often experiment with different parameters, configurations, and feature engineering to improve the performance of the model. Keeping track of all this metadata and the associated artifacts so that the data scientist can later replicate the experiment is not trivial. Machine learning experiment tracking enables them to log parameters, metrics, and artifacts directly into GitLab, giving easy access later on while also keeping all experimental data within your GitLab environment. This feature is now generally available with enhanced data displays, enhanced permissions, deeper integration with GitLab, and bug fixes.</p>
<h3 id="hosted-runners-on-linux-for-gitlab-dedicated-now-in-limited-availability">Hosted runners on Linux for GitLab Dedicated now in limited availability</h3>
<!-- categories: GitLab Dedicated, GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/hosted_runners/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509142">Related issue</a></li></ul>
</div>

<p>We are excited to introduce the limited availability of hosted runners on Linux for GitLab Dedicated.</p>
<p>Managing fleets of runners can be complex and require significant experience to ensure all CI/CD jobs can
scale to meet the demands of developers.</p>
<p>Hosted runners for GitLab Dedicated allow you to use fully managed runners for CI/CD jobs.
They eliminate the need to maintain your own runner infrastructure, and provide the same
security, flexibility, and efficiency of GitLab Dedicated to runners.</p>
<p>Hosted runners scale automatically to meet your CI/CD demands to ensure
optimal performance during peak times and for large projects.
The limited availability release includes Linux runners in various sizes,
ranging from 2 to 32 vCPUs, with 8 to 128 GB of memory.</p>
<p>To request access to hosted runners for GitLab Dedicated during the limited availability phase,
contact your GitLab representative.</p>
<h3 id="large-m2-pro-hosted-runners-on-macos-beta">Large M2 Pro hosted runners on macOS (Beta)</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/macos/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/ci-cd/shared-runners/-/epics/19">Related epic</a></li></ul>
</div>

<p>We bring M2 Pro performance to mobile DevOps teams!</p>
<p>With up to 2 times the performance of M1 runners and 6 times the performance of x86-64 macOS runners,
you can increase your development team’s velocity when building and deploying applications.</p>
<p>Fully integrated to GitLab CI/CD and available on-demand, teams can now seamlessly create, test,
and deploy applications faster for the Apple ecosystem.</p>
<p>Try out the new M2 Pro runners today by using <code>saas-macos-large-m2pro</code> as the tag in your <code>.gitlab-ci.yml</code> file.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="gitlab-mlops-python-client-beta">GitLab MLOps Python Client Beta</h3>
<!-- categories: MLOps -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/gitlab-org/modelops/mlops/gitlab-mlops">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/16193">Related issue</a></li></ul>
</div>

<p>Data scientists and Machine Learning engineers primarily work in Python environments, but integrating their machine learning workflows with GitLab’s MLOps features often requires context switching and understanding of GitLab’s API structure. This can create friction in their development process and slow down their ability to track experiments, manage model artifacts, and collaborate with team members.</p>
<p>The new GitLab MLOps Python client provides a seamless, Pythonic interface to GitLab’s MLOps features. Data scientists can now interact with GitLab’s <a href="/user/project/ml/experiment_tracking/">experiment tracking</a> and <a href="/user/project/ml/model_registry/">model registry</a> capabilities directly from their Python scripts and notebooks. The client includes:</p>
<ul>
<li><strong>GitLab Experiment Tracking</strong>: Easily track machine learning experiments within GitLab.</li>
<li><strong>Model Registry Integration</strong>: Register and manage models in GitLab’s model registry.</li>
<li><strong>Experiment Management</strong>: Create and manage experiments directly from the client.</li>
<li><strong>Run Tracking</strong>: Initiate and monitor training runs with ease.</li>
</ul>
<p>This integration allows data scientists to focus on model development while automatically capturing their ML lifecycle metadata in GitLab. The Python client works seamlessly with existing ML workflows and requires minimal setup, making GitLab’s MLOps features more accessible to the data science community.</p>
<p>We welcome the wider Python and data science community to contributions and share feedback directly in our <a href="https://gitlab.com/gitlab-org/modelops/mlops/gitlab-mlops">project’s repository</a></p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="view-subgroups-and-projects-pending-deletion">View subgroups and projects pending deletion</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/#view-inactive-groups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/457718">Related issue</a></li></ul>
</div>

<p>When you mark a group for deletion, you need visibility into all affected subgroups and projects. Previously, only the group marked for deletion displayed a “Pending deletion” label, but not their subgroups and projects, making it difficult to identify which content was scheduled for deletion.</p>
<p>Now, when a group is marked for deletion, all of its subgroups and projects will display a “Pending deletion” label. This improved visibility helps you quickly distinguish between active and soon-to-be deleted content across your entire group hierarchy.</p>
<h3 id="track-multiple-to-do-items-in-an-issue-or-merge-request">Track multiple to-do items in an issue or merge request</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/todos/#actions-that-create-to-do-items">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/28355">Related issue</a></li></ul>
</div>

<p>You can now keep track of multiple discussions and mentions within a single issue or merge request. With the new multiple to-do items feature, you’ll receive separate to-do items for each mention or action, ensuring you don’t miss important updates or requests for your attention. This enhancement helps you manage your work more effectively and respond to your team’s needs more efficiently.</p>
<h3 id="project-creation-protection-for-groups-now-includes-owners">Project creation protection for groups now includes Owners</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/#specify-who-can-add-projects-to-a-group">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/354355">Related issue</a></li></ul>
</div>

<p>Project creation can be restricted to specific roles in a group using the <strong>Allowed to create projects</strong> setting. The Owner role is now available as an option, enabling you to restrict new project creation to users with the Owner role for the group. This role was previously unavailable in the selection options.</p>
<p>Thank you <a href="https://gitlab.com/yasuk">@yasuk</a> for this community contribution!</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="secret-detection-now-includes-remediation-steps">Secret detection now includes remediation steps</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/505757">Related issue</a></li></ul>
</div>

<p>It’s important to fix exposed secrets quickly to minimize the risk of attackers using exposed credentials to break into your systems. Proper remediation requires multiple steps beyond just removing the secret, such as rotating credentials and investigating potential unauthorized access. To help keep your systems secure, secret detection now includes specific remediation steps for each type of detected secret. This guidance helps you systematically address exposures and reduce the risk of security breaches. Remediation steps will appear on all vulnerabilities upon the completion of a pipeline.</p>
<h3 id="find-the-commit-that-resolved-a-vulnerability">Find the commit that resolved a vulnerability</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/#vulnerability-resolution">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/372799">Related issue</a></li></ul>
</div>

<p>Previously, when a vulnerability was no longer detected, we did not provide users a way to see when or where a vulnerability was resolved.
Now, we display a link to the commit SHA where the vulnerability was resolved, providing better traceability and insight into the resolution process. This makes it easier for security and development teams to collaborate and manage vulnerabilities more effectively.</p>
<h3 id="use-roles-to-define-project-members-as-code-owners">Use roles to define project members as Code Owners</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/codeowners/reference/#add-a-role-as-a-code-owner">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/282438">Related issue</a></li></ul>
</div>

<p>You can now use roles as Code Owners in your <code>CODEOWNERS</code> file to manage role-based expertise and approvals more efficiently. Instead of listing individual users or creating groups, you can use the following syntax:</p>
<ul>
<li><code>@@developers</code> - References all users with the Developer role.</li>
<li><code>@@maintainers</code> - References all users with the Maintainer role.</li>
<li><code>@@owners</code> - References all users with the Owner role.</li>
</ul>
<p>For example, add <code>* @@maintainers</code> to require approval from any maintainer for all changes in the repository.</p>
<p>This simplifies Code Owner management as team members join, leave, or change roles in your project. The <code>CODEOWNERS</code> file remains current without manual updates, because GitLab automatically includes all users who have the specified role.</p>
<h3 id="view-paused-flux-reconciliations-on-the-dashboard-for-kubernetes">View paused Flux reconciliations on the dashboard for Kubernetes</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501339">Related issue</a></li></ul>
</div>

<p>Previously, when you suspended Flux reconciliation from the dashboard for Kubernetes, there was no clear indicator of the suspended state. We’ve added a new “Paused” status to the existing set of status indicators, making it clear when Flux reconciliation is suspended and providing better visibility into the state of your deployments.</p>
<h3 id="search-for-pods-on-the-dashboard-for-kubernetes">Search for pods on the dashboard for Kubernetes</h3>
<!-- categories: Environment Management, Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/508010">Related issue</a></li></ul>
</div>

<p>On the dashboard for Kubernetes, finding specific pods in large deployments can be time-consuming. A new search bar lets you quickly filter pods by name. The search works across all available pods, and you can combine it with status filters to find exactly the pods you need to monitor or troubleshoot.</p>
<h3 id="support-multiple-distinct-approval-actions-in-merge-request-approval-policies">Support multiple distinct approval actions in merge request approval policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12319">Related epic</a></li></ul>
</div>

<p>Previously, merge request approval policies supported only a single approval rule per policy, allowing for one set of approvers stacked with an “OR” condition. As a result, it was more challenging to enforce layered security approvals from varied roles, individual approvers, or separate groups.</p>
<p>With this update, you can create up to five approval rules for each merge request approval policy, allowing for more flexible and robust approval policies. Each rule can specify different approvers or roles and each rule is evaluated independently. For example, security teams can define complex approval workflows such as requiring one approver from Group A and one from Group B, or one from a specific role and another from a specified group, ensuring compliance and enhanced control in sensitive workflows.</p>
<p>Example uses of this improvement include:</p>
<ul>
<li><strong>Distinct role approvals:</strong> One approval from a Developer role and another from a Maintainer role.</li>
<li><strong>Role and group approvals</strong>: One approval from Developer or Maintainer and a separate approval from a member of the Security Group.</li>
<li><strong>Distinct group approvals:</strong> One approval from a member of the Python Experts Group and another separate approval from a member of the Security Group.</li>
</ul>
<h3 id="primary-domain-redirect-for-gitlab-pages">Primary domain redirect for GitLab Pages</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/#primary-domain">Documentation</a></li></ul>
</div>

<p>You can now set a primary domain in GitLab Pages to automatically redirect all requests from custom domains to your primary domain. This helps maintain SEO rankings and provides a consistent brand experience by directing visitors to your preferred domain, regardless of which URL they initially use to access your site.</p>
<h3 id="safeguard-your-dependencies-with-protected-packages">Safeguard your dependencies with protected packages</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/package_protection_rules/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/323971">Related issue</a></li></ul>
</div>

<p>We’re thrilled to introduce support for protected PyPI packages, a new feature designed to enhance the security and stability of your GitLab package registry. In the fast-paced world of software development, accidental modification or deletion of packages can disrupt entire development processes. Protected packages address this issue by allowing you to safeguard your most important dependencies against unintended changes.</p>
<p>From GitLab 17.8, you can protect PyPI packages by creating protection rules. If a package is matched by a protection rule, only specified users can update or delete the package. With this feature, you can prevent accidental changes, improve compliance with regulatory requirements, and streamline your workflows by reducing the need for manual oversight.</p>
<h3 id="customizable-colors-for-epics">Customizable colors for epics</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#epic-color">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509924">Related issue</a></li></ul>
</div>

<p>You now have more flexibility in categorizing your epics with an expanded set of color options, including pre-existing values and custom RGB or hex codes. This enhanced visual customization allows you to easily associate epics with squads, company initiatives, or hierarchy levels, making it simpler to prioritize and organize your work on roadmaps and epic boards.</p>
<p>Your administrator must enable <a href="/user/group/epics/#epics-as-work-items">the new look for epics</a>.</p>
<h3 id="epic-ancestors">Epic ancestors</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/#relationships-between-epics-and-other-items">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509920">Related issue</a></li></ul>
</div>

<p>Navigating your <a href="/user/group/epics/#relationships-between-epics-and-other-items">epic hierarchy</a> just got easier with the redesigned Ancestry widget, now prominently displayed at the top of each epic in a breadcrumb-like format. You can quickly grasp the relationships between epics by seeing both immediate and ultimate parents at a glance, helping you maintain a clear overview of your project structure and easily move between related epics.</p>
<p>Your administrator must enable <a href="/user/group/epics/#epics-as-work-items">the new look for epics</a>.</p>
<h3 id="epic-health-status">Epic health status</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#health-status">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509922">Related issue</a></li></ul>
</div>

<p>You can now easily communicate the progress of your projects with the new health status feature for epics. By setting the status to “On track,” “Needs attention,” or “At risk,” you’ll have a quick visual indicator of your epic’s health, allowing you to manage risk and keep stakeholders informed about the project’s overall status.</p>
<p>Your administrator must enable <a href="/user/group/epics/#epics-as-work-items">the new look for epics</a>.</p>
<h3 id="epic-parent">Epic parent</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/#relationships-between-epics-and-other-items">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509923">Related issue</a></li></ul>
</div>

<p>You can now easily manage your epic hierarchy by adding a parent directly from an epic, just as you would for an issue. This streamlined process gives you more flexibility in organizing your work, allowing you to quickly establish relationships between epics and maintain a clear structure for your projects.</p>
<p>Your administrator must enable <a href="/user/group/epics/#epics-as-work-items">the new look for epics</a>.</p>
<h3 id="track-time-spent-on-epics">Track time spent on epics</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/time_tracking/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509930">Related issue</a></li></ul>
</div>

<p>You can now track time directly in epics, giving you more granular control over your project’s time management. This new feature allows you to log time spent on different aspects of your project, helping you monitor progress, stay on schedule, and keep your budget in check as you work through sprints and milestones.</p>
<h3 id="show-iteration-field-on-child-items-in-epics-issues-and-objectives">Show iteration field on child items in epics, issues, and objectives</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/iterations/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/510005">Related issue</a></li></ul>
</div>

<p>When viewing epic detail, planners need to be able to see which child issues are planned into iterations (sprints) and which are not yet planned. This will allow teams to more easily make sure that all defined work is slated into sprints.</p>
<p>For epics, your administrator must enable <a href="/user/group/epics/#epics-as-work-items">the new look for epics</a>.</p>
<h3 id="webhooks-for-epics">Webhooks for epics</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509928">Related issue</a></li></ul>
</div>

<p>Supercharge your workflow automation with the epic webhooks, allowing you to receive real-time updates in your preferred tools whenever changes occur in your epics. By integrating GitLab with your other services, you can enhance collaboration, stay on top of project developments, and streamline your processes without constantly switching between applications.</p>
<p>Your administrator must enable <a href="/user/group/epics/#epics-as-work-items">the new look for epics</a>.</p>
<h3 id="add-vulnerabilities-as-supported-webhook-events">Add vulnerabilities as supported webhook events</h3>
<!-- categories: Notifications, Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#vulnerability-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/366770">Related issue</a></li></ul>
</div>

<p>Introducing a webhook integration that generates events for actions related to vulnerabilities to allow you to automate and integrate with external resources. For example, events are generated when vulnerabilities are created or the status of a vunerability changes.</p>
<h3 id="enforce-centralized-workflow-rules-for-the-override_ci-strategy">Enforce centralized workflow rules for the <code>override_ci</code> strategy</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/#override_project_ci">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/512123">Related issue</a></li></ul>
</div>

<p>In pipeline execution policies, the <code>override_ci</code> strategy now supports the use of workflow rules to aid in policy enforcement for jobs defined in the policy, as well as jobs defined in the project’s configuration when using <code>include:project</code>. By defining workflow rules in the policy, you can filter out jobs executed by the pipeline execution policy based on particular rules, such as by configuring rules that prevent the use of branch pipelines in projects.</p>
<p>To isolate the use of workflow rules to target only jobs defined in your policy, the best practice is to define the rules for the job instead of globally in the policy. Alternatively, you can group jobs and rules using a separate <code>include</code> field.</p>
<p>Previously, when using the <code>override_ci</code> strategy, workflow rules could only be applied to jobs defined in the pipeline execution policy.</p>
<p>The <code>inject_ci</code> strategy remains unchanged and workflow rules can only be used to control when policy jobs are enforced, without affecting the project’s workflow rules.</p>
<h3 id="make-skip_ci-configurable-for-pipeline-execution-policies">Make <code>skip_ci</code> configurable for pipeline execution policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/#skip_ci-type">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15647">Related epic</a></li></ul>
</div>

<p>We’ve introduced a new configuration option for Pipeline Execution Policies (PEPs) that allows for more flexibility in handling the <code>[skip ci]</code> directive. This feature addresses scenarios where certain automated processes, such as semantic releases, where it’s necessary to bypass pipeline execution while still ensuring critical security and compliance checks are performed.</p>
<p>To use this feature, set <code>skip_ci</code> to <code>allowed: false</code> in the pipeline execution policy YAML configuration or enable <strong>Prevent users from skipping pipelines</strong> in the policy editor. Then, specify the users or service accounts that are allowed to use <code>[skip ci]</code>. By default all users will be blocked from skipping pipeline execution jobs unless they are excluded within the <code>skip_ci</code> configuration as an exception.</p>
<h3 id="manage-concurrency-of-scheduled-scan-execution-pipelines">Manage concurrency of scheduled scan execution pipelines</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/#concurrency-control">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13997">Related epic</a></li></ul>
</div>

<p>To improve the scalability of global scheduled scan execution policies, we have introduced a new capability to configure a time window in a scan execution policy. The <code>time_window</code> property defines the time period in which the policy creates and executes new schedules to ensure optimal performance.</p>
<p>To use the new property, update your policy using YAML mode and follow the <a href="/user/application_security/policies/scan_execution_policies/#time_window-schema"><code>time_window</code> schema</a>. You can provide a value in seconds for the window of time in which the schedules should run. For example, <code>86400</code> for a 24 hour time window. Then supply the <code>distribution: random</code> field and value to enforce the schedules to execute at random times across the defined time window.</p>
<h3 id="scaling-ui-performance-for-the-frameworks-report-tab-in-the-compliance-center">Scaling UI performance for the &lsquo;Frameworks&rsquo; report tab in the Compliance Center</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_frameworks_report/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/477394">Related issue</a></li></ul>
</div>

<p>With GitLab 17.8, we have made changes to the backend to ensure the compliance center remains quick and responsive,
even if you have 1,000’s of compliance frameworks in the <strong>Frameworks</strong> report tab of the compliance center.</p>
<p>Additionally, when looking for more information and clicking on a framework in the <strong>Frameworks</strong> tab, GitLab
returns up to 1,000 projects that are attached to that particular framework as part of the information in the
right-hand side pop up menu.</p>
<h3 id="pipeline-limits-available-in-gitlab-community-edition">Pipeline limits available in GitLab Community Edition</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/continuous_integration/#set-cicd-limits">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/287669">Related issue</a></li></ul>
</div>

<p>Administrators can now control pipeline resource usage by setting CI/CD limits for their GitLab Community Edition installations. Previously, this feature was only available in GitLab Enterprise Edition.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.8">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.8">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.8">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.7 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-7-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-7-released/</id><published>2024-12-19T00:00:00Z</published><updated>2024-12-19T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On December 19, 2024, GitLab 17.7 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-vedant-jain">This month’s Notable Contributor: Vedant Jain</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Vedant has been an outstanding community contributor, known for his proactive approach to contributing, his commitment to delivering, and his collaboration skills. He excels at taking on feedback, incorporating it into his work, and seeking assistance when needed, ensuring that his contributions are not only completed but also meet GitLab’s standards.</p>
<p>His contributions include streamlining project management processes with <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172191">Abstracted work item attributes to a single list/board</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173033">Ordering of metadata on work items</a>, and feature development in <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/171228">Remember the collapsed state of work item widgets</a>. Vedant also fixed links in the UI to documentation (<a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170633">1</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170534">2</a>), helping the technical writing team as part of an important effort to improve UX across the entire product.</p>
<p><a href="https://gitlab.com/amandarueda">Amanda Rueda</a>, Sr. Product Manager, Product Planning at GitLab, nominated Vedant and highlighted his proactive and community-oriented mindset, “Vedant’s work not only addresses user needs but through his contributions, he is co-creating a more stable and reliable GitLab environment. By contributing to bug fixes, usability improvements, and maintenance efforts, he has played a vital role in enhancing the overall quality of the product. His proactive approach and cross-group contributions embody GitLab’s core values of iteration, customer collaboration, and continuous improvement, making him a standout contributor in the community.”</p>
<p>“Thanks to everyone who helped me achieve my contributions,” says Vedant. “So grateful that I am able to make a good impact and looking forward to more contributions.”</p>
<p>Vedant is a Frontend Engineer at Atlan, an active metadata platform for modern data teams, and a Google Summer of Code 2024 Mentor.</p>
<p>We are so grateful to Vedant for all of his contributions and to all of our open source community for contributing to GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="new-planner-user-role">New Planner user role</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/482733">Related issue</a></li></ul>
</div>

<p>We’ve introduced the new Planner role to give you tailored access to Agile planning tools like epics, roadmaps, and Kanban boards without over-provisioning <a href="/user/permissions/">permissions</a>. This change helps you collaborate more effectively while keeping your workflows secure and aligned with the principle of least privilege.</p>
<h3 id="instance-administrators-can-control-which-integrations-can-be-enabled">Instance administrators can control which integrations can be enabled</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/project_integration_management/#integration-allowlist">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/500610">Related issue</a></li></ul>
</div>

<p>Instance administrators can now configure an allowlist to control which integrations can be enabled on a GitLab instance. If an empty allowlist is configured, no integrations are allowed on the instance. After an allowlist is configured, new GitLab integrations are not on the allowlist by default.</p>
<p>Previously enabled integrations that are later blocked by the allowlist settings are disabled. If these integrations are allowed again, they are re-enabled with their existing configuration.</p>
<h3 id="new-user-contribution-and-membership-mapping-available-in-direct-transfer">New user contribution and membership mapping available in direct transfer</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/direct_transfer_migrations/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/478054">Related epic</a></li></ul>
</div>

<p>The new method of user contribution and membership mapping is now available when you migrate between GitLab instances by <a href="/user/group/import/">direct transfer</a>. This feature offers flexibility and control for both users managing the import process and users receiving contribution reassignments. With the new method, you can:</p>
<ul>
<li>Reassign memberships and contributions to existing users on the destination instance after the import has completed. Any memberships and contributions you import are first mapped to placeholder users. All contributions appear associated with placeholders until you reassign them on the destination instance.</li>
<li>Map memberships and contributions for users with different email addresses on source and destination instances.</li>
</ul>
<p>When you reassign a contribution to a user on the destination instance, the user can accept or reject the reassignment.</p>
<p>For more information, see <a href="https://about.gitlab.com/blog/streamline-migrations-with-user-contribution-and-membership-mapping/">streamline migrations with user contribution and membership mapping</a>. To leave feedback, add a comment to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/502565">issue 502565</a>.</p>
<h3 id="auto-resolve-vulnerabilities-when-not-found-in-subsequent-scans">Auto-resolve vulnerabilities when not found in subsequent scans</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/vulnerability_management_policy/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/5708">Related epic</a></li></ul>
</div>

<p>GitLab’s <a href="/user/application_security/">security scanning tools</a> help identify known vulnerabilities and potential weaknesses in your application code. Scanning feature branches surfaces new weaknesses or vulnerabilities so they can be remediated before merging. In the case of vulnerabilities already in your project’s default branch, fixing these in a feature branch will mark the vulnerability as no longer detected when the next default branch scan runs. While it is informative to know which vulnerabilities are no longer detected, each must still be manually marked as Resolved to close them. This can be time consuming if there are many of these to resolve, even when using the new <a href="/user/application_security/vulnerability_report/#activity-filter">Activity filter</a> and <a href="/user/application_security/vulnerability_report/#change-status-of-vulnerabilities">bulk-changing status</a>.</p>
<p>We are introducing a new policy type <em>Vulnerability Management policy</em> for users who want vulnerabilities automatically set to Resolved when no longer detected by automated scanning. Simply configure a new policy with the new Auto-resolve option and apply it to the appropriate project(s). You can even configure the policy to only Auto-resolve vulnerabilities of a certain severity or from specific security scanners. Once in place, the next time the project’s default branch is scanned, any existing vulnerabilities that are no longer found will be marked as Resolved. The action updates the vulnerability record with an activity note, timestamp when the action occurred, and the pipeline the vulnerability was determined to be removed in.</p>
<h3 id="rotate-personal-project-and-group-access-tokens-in-the-ui">Rotate personal, project, and group access tokens in the UI</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/#rotate-a-personal-access-token">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/241523">Related issue</a></li></ul>
</div>

<p>You can now use the UI to rotate personal, project, and group access tokens. Previously, you had to use the API to do this.</p>
<p>Thank you <a href="https://gitlab.com/shangsuru">shangsuru</a> for your contribution!</p>
<h3 id="track-cicd-component-usage-across-projects">Track CI/CD component usage across projects</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#cicatalogresourcecomponentusage">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/466575">Related issue</a></li></ul>
</div>

<p>Central DevOps teams often need to track where their CI/CD components are used across pipelines to better manage and optimize them. Without visibility, it’s challenging to identify outdated component use, understand adoption rates, or support component life cycles.</p>
<p>To address this, we’ve added a new GraphQL query that enables DevOps teams to view a list of projects where a component is used across their organization’s pipelines.
This capability empowers DevOps teams to enhance productivity and make better decisions by providing crucial insights.</p>
<h3 id="small-hosted-runner-on-linux-arm-available-to-all-tiers">Small hosted runner on Linux Arm available to all Tiers</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/linux/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501423">Related issue</a></li></ul>
</div>

<p>We are excited to introduce the small hosted runner on Linux Arm for GitLab.com, available for all tiers.
This 2 vCPUs Arm runner is fully integrated with GitLab CI/CD and allows you to
build and test applications natively on the Arm architecture.</p>
<p>We are determined to provide the industry’s fastest CI/CD build speed and look forward to seeing teams achieve even shorter feedback cycles and ultimately deliver software faster.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>Because of a bug, FIPS Linux packages for GitLab 17.6 and earlier did not use the system Libgcrypt, but the same Libgcrypt bundled with regular Linux packages.</p>
<p>This issue is fixed for all FIPS Linux packages for GitLab 17.7, except for AmazonLinux 2. The Libgcrypt version of AmazonLinux 2 is not compatible with the GPGME and GnuPG versions shipped with the FIPS Linux packages.</p>
<p>FIPS Linux packages for AmazonLinux 2 will continue to use the same Libgcrypt bundled with the regular Linux packages, otherwise we would have to downgrade GPGME and GnuPG.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="improved-detection-accuracy-in-advanced-sast">Improved detection accuracy in Advanced SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14685">Related epic</a></li></ul>
</div>

<p>We’ve updated Advanced SAST to detect the following vulnerability classes more accurately:</p>
<ul>
<li>C#: OS command injection and SQL injection.</li>
<li>Go: path traversal.</li>
<li>Java: code injection, CRLF injection in headers or logs, cross-site request forgery (CSRF), improper certificate validation, insecure deserialization, unsafe reflection, and XML external entity (XXE) injection.</li>
<li>JavaScript: code injection.</li>
</ul>
<p>We’ve also improved detection of user input sources for C# (ASP.NET) and Java (JSF, HttpServlet) and updated severity levels for consistency.</p>
<p>To see which types of vulnerabilities Advanced SAST detects in each language, see <a href="/user/application_security/sast/advanced_sast_coverage/">Advanced SAST coverage</a>.
To use this improved cross-file, cross-function scanning, <a href="/user/application_security/sast/gitlab_advanced_sast/#turn-on-gitlab-advanced-sast">enable Advanced SAST</a>.
If you’ve already enabled Advanced SAST, the new rules are <a href="/user/application_security/sast/rules/#how-rule-updates-are-released">automatically activated</a>.</p>
<h3 id="efficient-risk-prioritization-with-kev">Efficient risk prioritization with KEV</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#cveenrichmenttype">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11912">Related issue</a></li></ul>
</div>

<p>In GitLab 17.7, we added support for the Known Exploited Vulnerabilities Catalog (KEV). The <a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog">KEV Catalog</a> is maintained by CISA and curates listings of CVEs that have been exploited in the wild. You can leverage KEV to better prioritize scan results and to help evaluate the potential impact a vulnerability may have on your environment.</p>
<p>This data is available to composition analysis users through GraphQL. There is <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/427441">planned work</a> to support displaying this data in the GitLab UI.</p>
<h3 id="expanded-code-flow-view-for-advanced-sast">Expanded Code Flow view for Advanced SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/#code-flow">Documentation</a></li></ul>
</div>

<p>The Advanced SAST <a href="/user/application_security/sast/gitlab_advanced_sast/#code-flow">code flow view</a> is now available wherever vulnerabilities are shown, including the:</p>
<ul>
<li><a href="/user/application_security/vulnerability_report/">Vulnerability Report</a>.</li>
<li><a href="/user/application_security/sast/#merge-request-widget">Merge request security widget</a>.</li>
<li><a href="/user/application_security/detect/security_scanning_results/">Pipeline security report</a>.</li>
<li><a href="/user/application_security/sast/#merge-request-changes-view">Merge request changes view</a>.</li>
</ul>
<p>The new views are enabled on GitLab.com. On GitLab self-managed, the new views are on by default starting in GitLab 17.7 (MR changes view) and GitLab 17.6 (all other views). For details on supported versions and feature flags, see <a href="/user/application_security/sast/gitlab_advanced_sast/#code-flow">code flow feature availability</a>.</p>
<p>To learn more about Advanced SAST, see <a href="https://about.gitlab.com/blog/gitlab-advanced-sast-is-now-generally-available/">the announcement blog</a>.</p>
<h3 id="new-help-command-in-gitlab-duo-chat">New <code>/help</code> command in GitLab Duo Chat</h3>
<!-- categories: Editor Extensions, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/examples/#gitlab-duo-chat-slash-commands">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/462122">Related issue</a></li></ul>
</div>

<p>Discover GitLab Duo Chat’s powerful features! Just type <code>/help</code> in the chat message field to explore everything it can do for you.</p>
<p>Give it a try and see how GitLab Duo Chat can make your work smoother and more efficient.</p>
<h3 id="setting-environmentaction-access-and-prepare-resets-the-auto_stop_in-timer">Setting <code>environment.action: access</code> and <code>prepare</code> resets the <code>auto_stop_in</code> timer</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#environmentauto_stop_in">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437133">Related issue</a></li></ul>
</div>

<p>Previously, when using the <code>action: prepare</code>, <code>action: verify</code>, and <code>action: access</code> jobs together with the <code>auto_stop_in</code> setting, the timer was not reset. Starting in 18.0, <code>action: prepare</code> and <code>action: access</code> will reset the timer, while <code>action: verify</code> leaves it untouched.</p>
<p>For now, you can change to the new implementation by enabling the <code>prevent_blocking_non_deployment_jobs</code> feature flag.</p>
<p>Multiple breaking changes are intended to differentiate the behavior of the <code>environment.action: prepare | verify | access</code> values. The <code>environment.action: access</code> keyword will remain the closest to its current behavior, except for the timer reset.</p>
<p>To prevent future compatibility issues, you should review your use of these keywords.
Learn more about these proposed changes in the following issues:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437132">Issue 437132</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437133">Issue 437133</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437142">Issue 437142</a></li>
</ul>
<h3 id="kubernetes-131-support">Kubernetes 1.31 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501390">Related issue</a></li></ul>
</div>

<p>This release adds full support for Kubernetes version 1.31, released in August 2024. If you deploy your apps to Kubernetes, you can now upgrade your connected clusters to the most recent version and take advantage of all its features.</p>
<p>For more information, see our <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">Kubernetes support policy and other supported Kubernetes versions</a>.</p>
<h3 id="set-namespace-and-flux-resource-path-from-cicd-job">Set namespace and Flux resource path from CI/CD job</h3>
<!-- categories: Environment Management, Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/500164">Related issue</a></li></ul>
</div>

<p>To use the dashboard for Kubernetes, you need to select an agent for Kubernetes connection from the environment settings, and optionally configure a namespace and a Flux resource to track the reconciliation status. In GitLab 17.6, we added support for selecting an agent with a CI/CD configuration. However, configuring the namespace and the Flux resource still required you to use the UI or make an API call. In 17.7, you can fully configure the dashboard using the CI/CD syntax with the <code>environment.kubernetes.namespace</code> and <code>environment.kubernetes.flux_resource_path</code> attributes.</p>
<h3 id="group-and-project-access-tokens-in-credentials-inventory">Group and project access tokens in credentials inventory</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/credentials_inventory/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/498333">Related issue</a></li></ul>
</div>

<p>Group and project access tokens are now visible in the credentials inventory on GitLab.com. Previously, only personal access tokens and SSH keys were visible. Additional token types in the inventory allow for a more complete picture of credentials across the group.</p>
<h3 id="extended-token-expiration-notifications">Extended token expiration notifications</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/464040">Related issue</a></li></ul>
</div>

<p>Previously, token expiration email notifications were only sent seven days before expiry. Now, these notifications are also sent 30 and 60 days before expiry. The increased frequency and date range of notifications makes users more aware of tokens that may be expiring soon.</p>
<h3 id="unicode-151-emoji-support-">Unicode 15.1 emoji support 🦖🍋‍🟩🐦‍🔥</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab-org.gitlab.io/ruby/gems/tanuki_emoji/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/ruby/gems/tanuki_emoji/-/issues/28">Related issue</a></li></ul>
</div>

<p>In previous versions of GitLab, emoji support was limited to an older Unicode standard, which meant some newer emojis were unavailable.</p>
<p>GitLab 17.7 introduces support for Unicode 15.1, bringing the latest emoji additions. This includes exciting new options like the t-rex 🦖, lime 🍋‍🟩, and phoenix 🐦‍🔥, allowing you to express yourself with the most up-to-date symbols.</p>
<p>Additionally, this update enhances emoji diversity, ensuring greater representation across cultures, languages,
and identities, helping everyone feel included when communicating on the platform.</p>
<h3 id="set-your-preferred-text-editor-as-default">Set your preferred text editor as default</h3>
<!-- categories: Text Editors -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/preferences/#set-the-default-text-editor">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/423104">Related issue</a></li></ul>
</div>

<p>In this version, we’re introducing the ability to set a default text editor for a more personalized editing experience. With this change, you can now choose between the rich text editor, the plain text editor, or opt for no default, allowing flexibility in how you create and edit content.</p>
<p>This update ensures smoother workflows by aligning the editor interface with individual preferences or team standards. With this enhancement, GitLab continues to prioritize customization and usability for all users.</p>
<h3 id="new-description-field-for-access-tokens">New description field for access tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/#create-a-personal-access-token">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/443819">Related issue</a></li></ul>
</div>

<p>When creating a personal, project, group, or impersonation access token, you can now optionally enter a description of that token. This helps provide extra context about the token, such as where and how is it used.</p>
<h3 id="enable-secret-push-protection-in-your-groups-with-apis">Enable secret push protection in your groups with APIs</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/group_security_settings/">Documentation</a></li></ul>
</div>

<p>With this release, you can now enable secret push protection on all projects in your group via the <a href="/api/group_security_settings/">REST API</a> and the <a href="/api/graphql/reference/#mutationsetgroupsecretpushprotection">GraphQL API</a>. This allows you to efficiently enable secret push protection on a per-group basis instead of project by project. Audit events are logged every time push protection is enabled or disabled.</p>
<h3 id="new-api-endpoint-to-list-enterprise-users">New API endpoint to list enterprise users</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/group_enterprise_users/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438366">Related issue</a></li></ul>
</div>

<p>Group Owners can now use a dedicated API endpoint to list enterprise users and any associated attributes.</p>
<h3 id="remove-owner-base-role-from-custom-roles">Remove Owner base role from custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/#create-a-custom-member-role">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/474273">Related issue</a></li></ul>
</div>

<p>The Owner base role is no longer available when creating a custom role as it provided no additional value because permissions are additive. Existing custom roles with the Owner base role are not impacted by this change.</p>
<h3 id="navigation-and-usability-improvements-for-the-compliance-center">Navigation and usability improvements for the compliance center</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_frameworks_report/">Documentation</a></li></ul>
</div>

<p>We continue to make iterative and important improvements to the compliance center’s user experience for both groups
and projects.</p>
<p>With GitLab 17.7, we shipped two key improvements:</p>
<ul>
<li>Users can now filter by groups in the <strong>Projects</strong> tab of the compliance center, which gives another option
to users to apply, filter, and search for the appropriate project, and the compliance framework attached to that
project.</li>
<li>A project’s compliance center now has a <strong>Frameworks</strong> tab, which allows users to search for compliance
frameworks attached to that particular project.</li>
</ul>
<p>Please note that adding or editing frameworks is still done on groups, not projects.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.7">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.7">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.7">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.6 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-6-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-6-released/</id><published>2024-11-21T00:00:00Z</published><updated>2024-11-21T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On November 21, 2024, GitLab 17.6 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-joel-gerber">This month’s Notable Contributor: Joel Gerber</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Joel was recognized for being an invaluable contributor to our CI components, offering insightful feedback on merge requests,
and thoughtful comments on complex discussions.
His contributions include <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/464703">UI polish for the CI/CD catalog</a>,
highly requested documentation improvements for the GitLab Terraform Provider, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164595">job log timestamps</a>,
and <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/482524#note_2089551197">providing feedback to the UI/UX team</a>.</p>
<p>Joel is a Staff Software Engineer at <a href="https://www.hackerone.com/">HackerOne</a> and was nominated by
<a href="https://gitlab.com/leetickett-gitlab">Lee Tickett</a>, Staff FullStack Engineer, Contributor Success at GitLab,
for his contributions and for providing valuable feedback.</p>
<p><a href="https://gitlab.com/gdoyle">Gina Doyle</a>, Senior Product Designer at GitLab, added to the nomination.
“There was a lot of discussion going on internally that led the MR process to be more complicated,” says Gina.
“But Joel stayed strong and active within the discussion and completed the contribution.”</p>
<p>“Joel also contributed to the UI polish on the CI/CD catalog issue,” says <a href="https://gitlab.com/sunjungp">Sunjung Park</a>,
Staff Product Designer at GitLab.
“It makes our user interface beautiful and consistent with other areas.”</p>
<p>We are so grateful to Joel for all of his contributions and to all of our open source community for contributing to GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="use-self-hosted-model-for-gitlab-duo-chat">Use self-hosted model for GitLab Duo Chat</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501267">Related issue</a></li></ul>
</div>

<p>You can now host selected large language models (LLMs) in your own infrastructure and configure those models as the source for GitLab Duo Chat. This feature is in beta and available with an Ultimate and Duo Enterprise subscription on self-managed GitLab environments.</p>
<p>With self-hosted models, you can use models hosted either on-premise or in a private cloud as the source for GitLab Duo Chat or Code Suggestions (introduced as a beta feature in GitLab 17.5). For Code Suggestions, we currently support open-source Mistral models on vLLM or AWS Bedrock, Claude 3.5 Sonnet on AWS Bedrock, and OpenAI models on Azure OpenAI. For Chat, we currently support open-source Mistral models on vLLM or AWS Bedrock, and Claude 3.5 Sonnet on AWS Bedrock. By enabling self-hosted models, you can leverage the power of generative AI while maintaining complete data sovereignty and privacy.</p>
<p>Please leave feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/501268">issue 501268</a>.</p>
<h3 id="enhanced-merge-request-reviewer-assignments">Enhanced merge request reviewer assignments</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/reviews/#request-a-review">Documentation</a></li></ul>
</div>

<p>After you’ve carefully crafted your changes and prepared a merge request, the next step is to identify reviewers who can help move it forward. Identifying the right reviewers for your merge request involves understanding who the right approvers are, and who might be a subject matter expert (CODEOWNER) for the changes you’re proposing.</p>
<p>Now, when assigning reviewers, the sidebar creates a connection between the approval requirements for your merge request and reviewers. View each approval rule, then select from approvers who can satisfy that approval rule and move the merge request forward for you. If you use <a href="/user/project/codeowners/reference/#optional-sections">optional CODEOWNER sections</a> those rules are also shown in the sidebar to help you identify appropriate subject matter experts for your changes.</p>
<p>Enhanced reviewer assignments is the next evolution of applying intelligence to assigned reviewers in GitLab. This iteration builds on what we’ve learned from suggested reviewers, and how to effectively identify the best reviewers for moving a merge request forward. In <a href="https://gitlab.com/groups/gitlab-org/-/epics/14808">upcoming iterations</a> of reviewer assignments, we’ll continue to enhance the intelligence used to recommend and rank possible reviewers.</p>
<h3 id="support-for-private-container-registries-in-workspaces">Support for private container registries in workspaces</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/configuration/#configure-support-for-private-container-registries">Documentation</a></li></ul>
</div>

<p>GitLab workspaces now offer support for private container registries. With this setup, you can pull container images from any private registry of your choice. As long as your Kubernetes cluster has a valid image pull secret, you can reference the secret in your <a href="/user/workspace/gitlab_agent_configuration/">GitLab agent configuration</a>.</p>
<p>This feature simplifies workflows, especially for teams that use custom or third-party container registries, and improves the flexibility and security of containerized development environments.</p>
<h3 id="extension-marketplace-now-available-in-workspaces">Extension marketplace now available in workspaces</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/web_ide/#manage-extensions">Documentation</a></li></ul>
</div>

<p>The extension marketplace is now available in workspaces. With the extension marketplace, you can discover, install, and manage third-party extensions to enhance your development experience. Choose from thousands of extensions to boost your productivity or customize your workflow.</p>
<p>The extension marketplace is disabled by default. To get started, go to your user preferences and <a href="/user/profile/preferences/#integrate-with-the-extension-marketplace">enable the extension marketplace</a>. For enterprise users, only users with the Owner role for a top-level group can <a href="/user/enterprise_user/#enable-the-extension-marketplace-for-enterprise-users">enable the extension marketplace</a>.</p>
<h3 id="improved-workspace-lifecycle-with-delayed-termination">Improved workspace lifecycle with delayed termination</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/#automatic-workspace-stop-and-termination">Documentation</a></li></ul>
</div>

<p>With this release, a workspace now stops rather than terminates after the configured timeout has elapsed. This feature means you can always restart your workspaces and pick up where you left off.</p>
<p>By default, a workspace automatically:</p>
<ul>
<li>Stops 36 hours after the workspace was last started or restarted</li>
<li>Terminates 722 hours after the workspace was last stopped</li>
</ul>
<p>You can configure these settings in your <a href="/user/workspace/gitlab_agent_configuration/">GitLab agent configuration</a>.</p>
<p>With this feature, a workspace remains available for approximately one month after it was stopped. This way, you get to keep your progress while optimizing workspace resources.</p>
<h3 id="display-release-notes-on-deployment-details-page">Display release notes on deployment details page</h3>
<!-- categories: Continuous Delivery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/deployment_approvals/#view-blocked-deployments">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/493260">Related issue</a></li></ul>
</div>

<p>Have you ever wondered what might be included in a deployment you’ve been asked to approve? In past versions, you could create a release with a detailed description about its content and instructions for testing, but the related environment-specific deployment did not show this data. We are happy to share that GitLab now displays the release notes under the related deployment details page.</p>
<p>Because GitLab releases are always created from a Git tag, the release notes are shown only on deployments related to the tag-triggered pipeline.</p>
<p>This feature was contributed to GitLab by <a href="https://gitlab.com/antonkalmykov">Anton Kalmykov</a>. Thank you!</p>
<h3 id="admin-setting-to-enforce-cicd-job-token-allowlist">Admin setting to enforce CI/CD job token allowlist</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/continuous_integration/#access-job-token-permission-settings">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/496647">Related issue</a></li></ul>
</div>

<p>Previously, we announced that the default CI/CD job token (<code>CI_JOB_TOKEN</code>) behavior <a href="/update/deprecations/#cicd-job-token---authorized-groups-and-projects-allowlist-enforcement">will change in GitLab 18.0</a>, requiring you to explicitly add indvidual <a href="/ci/jobs/ci_job_token/#add-a-group-or-project-to-the-job-token-allowlist">projects or groups to your project’s job token allowlist</a> if you want them to continue to be able to access your project.</p>
<p>Now, we are giving self-managed and Dedicated instance administrators the ability to enforce this more secure setting on all projects on an instance. After you enable this setting, all projects will need to make use of their allowlist if they want to use CI/CD job tokens for authentication. <em>Note: We recommend enabling this setting as part of a strong security policy.</em></p>
<h3 id="track-cicd-job-token-authentications">Track CI/CD job token authentications</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/ci_job_token/#job-token-authentication-log">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467292">Related issue</a></li></ul>
</div>

<p>Previously it was difficult to track which other projects were using accessing your project by authenticating with CI/CD job tokens. To make it easier for you to audit and control access to your project, we’ve added an authentication log.</p>
<p>With this authentication log, you can view the list of other projects that have used a job token to authenticate with your project, both in the UI and as a downloadable CSV file. This data can be used to audit project access and aid in populating the job token allowlist to enable stronger <a href="/ci/jobs/ci_job_token/#control-job-token-access-to-your-project">control over which projects can access your project</a>.</p>
<h3 id="vulnerability-report-grouping">Vulnerability report grouping</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#group-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10164">Related epic</a></li></ul>
</div>

<p>Users require the ability to view vulnerabilities in groups. This will help security analysts optimize their triage tasks by utilizing bulk actions. In addition users can see how many vulnerabilities match their group; i.e. how many OWASP Top 10 vulnerabilities are there?</p>
<h3 id="model-registry-now-generally-available">Model registry now generally available</h3>
<!-- categories: MLOps -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/ml/model_registry/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14998">Related epic</a></li></ul>
</div>

<p>GitLab’s model registry, now generally available, is your centralized hub for managing machine learning models as part of your existing GitLab workflow. You can track model versions, store artifacts and metadata, and maintain comprehensive documentation in the model card.</p>
<p>Built for seamless integration, the model registry works natively with <a href="/user/project/ml/experiment_tracking/mlflow_client/">MLflow clients</a> and connects directly to your CI/CD pipelines, enabling automated model deployment and testing. Data scientists can manage models through an intuitive UI or existing MLflow workflows, while MLOps teams can leverage semantic versioning and CI/CD integration for streamlined production deployments all within the <a href="/api/model_registry/">GitLab API</a>.</p>
<p>Please feel free to drop us a note in our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/504458">feedback issue</a> and we’ll get back in touch! Get started today by going to <strong>Deploy &gt; Model registry</strong> in your GitLab instance.</p>
<h3 id="new-tenant-networking-configurations-for-gitlab-dedicated">New tenant networking configurations for GitLab Dedicated</h3>
<!-- categories: GitLab Dedicated, Switchboard -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/configure_instance/network_security/#outbound-privatelink-connections">Documentation</a></li></ul>
</div>

<p>As a GitLab Dedicated tenant administrator, you can now use Switchboard to set up outbound private links and private hosted zones. You can also monitor your network connections by viewing periodic snapshots in Switchboard.</p>
<p>Outbound private links and private hosted zones establish secure network connectivity between resources in your AWS account and GitLab Dedicated.</p>
<h3 id="new-adherence-checks-for-sast-and-dast-security-scanners">New adherence checks for SAST and DAST security scanners</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_status_report/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12661">Related epic</a></li></ul>
</div>

<p>GitLab offers a wide range of security scanners such as SAST, secret detection, dependency scanning, container scanning, and more
so that you can check your applications for security vulnerabilities.</p>
<p>You need to have a way to show auditors and relevant compliance authorities that your applications have adhered to regulatory standards that require you to have security
scanners set up for your repositories.</p>
<p>To help you demonstrate adherence to these standards, this release includes two new checks as part of the standard adherence report in the Compliance Centre. These
new checks check whether SAST and DAST has been enabled for projects within a group. The checks confirm that the SAST and DAST security scanners
correctly ran in a project and the pipeline results has the correct resulting artifacts.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="project-events-for-group-webhooks">Project events for group webhooks</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#project-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/359044">Related issue</a></li></ul>
</div>

<p>In this release, we’ve added project events to group webhooks. Project events are triggered when:</p>
<ul>
<li>A project is created in a group.</li>
<li>A project is deleted in a group.</li>
</ul>
<p>These events are triggered for <a href="/user/project/integrations/webhooks/#group-webhooks">group webhooks</a> only.</p>
<h3 id="filter-gitlab-duo-users-by-assigned-seat">Filter GitLab Duo users by assigned seat</h3>
<!-- categories: Add-on Provisioning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: GitLab Duo Pro, GitLab Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/subscription-add-ons/#view-assigned-gitlab-duo-users">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14683">Related epic</a></li></ul>
</div>

<p>In previous versions of GitLab, the user list displayed on the GitLab Duo seat assignment page could not be filtered, making it difficult to see which users had previously been assigned a GitLab Duo seat. Now, you can filter your user list by Assigned seat = Yes or Assigned seat = No to see to see which users are currently assigned or not assigned a GitLab Duo seat, allowing for ease in adjusting seat allocations.</p>
<h3 id="gitlab-duo-seat-assignment-email-update">GitLab Duo seat assignment email update</h3>
<!-- categories: Seat Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/subscription-add-ons/#assign-gitlab-duo-seats">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170507">Related issue</a></li></ul>
</div>

<p>All users on self-managed instances will receive an email when they are assigned a GitLab Duo seat.</p>
<p>Previously, those assigned a Duo Enterprise seat or those granted access by bulk assignment would not be notified. You wouldn’t know you were assigned a seat unless someone told you, or you noticed new functionality in the GitLab UI.</p>
<p>To disable this email, an administrator can disable the <code>duo_seat_assignment_email_for_sm</code> feature flag.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="efficient-risk-prioritization-with-epss">Efficient risk prioritization with EPSS</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#cveenrichmenttype">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11544">Related issue</a></li></ul>
</div>

<p>In GitLab 17.6, we added support for the Exploit Prediction Scoring System (EPSS). EPSS gives each CVE a score between 0 and 1 indicating the probability of the CVE being exploited in the next 30 days. You can leverage EPSS to better prioritize scan results and to help evaluate the potential impact a vulnerability may have on your environment.</p>
<p>This data is available to composition analysis users through GraphQL.</p>
<h3 id="enable-secret-push-protection-in-your-projects-via-api">Enable Secret Push Protection in your projects via API</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/projects/">Documentation</a></li></ul>
</div>

<p>It’s now easier to programatically enable secret push protection. We’ve updated the application settings REST API, allowing you to:</p>
<ol>
<li>Enable the feature in your self-managed instance so that it can be enabled on a per-project basis.</li>
<li>Check whether the feature has been enabled on a project.</li>
<li>Enable the feature for a specified project.</li>
</ol>
<h3 id="secret-push-protection-audit-events-for-applied-exclusions">Secret Push Protection audit events for applied exclusions</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/exclusions/">Documentation</a></li></ul>
</div>

<p>Audit events are now logged when a secret push protection exclusion is applied. This enables security teams to audit and track any occurence when a secret on the project’s exclusions list is allowed to be pushed.</p>
<h3 id="automated-repository-x-ray">Automated Repository X-Ray</h3>
<!-- categories: Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/repository_xray/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14100">Related issue</a></li></ul>
</div>

<p>Repository X-Ray enriches code generation requests for GitLab Duo Code Suggestions by providing additional context about a project’s dependencies to improve the accuracy and relevance of code recommendations. This improves the quality of code generation. Previously, Repository X-Ray used a CI job that you had to configure and manage.</p>
<p>Now, when a new commit is pushed to your project’s default branch, Repository X-Ray automatically triggers a background job that scans and parses the applicable configuration files in your repository.</p>
<h3 id="corporate-network-support-for-gitlab-duo">Corporate network support for GitLab Duo</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/language_server/#enable-proxy-authentication">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp/-/issues/159">Related issue</a></li></ul>
</div>

<p>The latest update to the GitLab Duo plugin introduces advanced proxy authentication. This enables developers to connect seamlessly in environments with strict corporate firewalls. Building on our existing HTTP proxy support, this enhancement allows for authenticated connections. It ensures secure and uninterrupted access to Duo features in VS Code and JetBrains IDEs.</p>
<p>This update is crucial for developers needing secure, authenticated connections in restricted network environments. It ensures all Duo features remain available without compromising security.</p>
<h3 id="merge-at-a-scheduled-date-and-time">Merge at a scheduled date and time</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/auto_merge/#prevent-merge-before-a-specific-date">Documentation</a></li></ul>
</div>

<p>Some merge requests may need to be held for merging until after a certain date or time. When that date and time does pass you need to find someone with permissions to merge and hope they’re available to take care of it for you. If this is after hours or the timeline is critical you may need to prepare folks well in advance for the task.</p>
<p>Now, when you create or edit a merge request you can specify a <code>merge after</code> date. This date will be used to prevent the merge request from being merged until it has passed. Using this new capability with our previously released <a href="https://about.gitlab.com/releases/2024/09/19/gitlab-17-4-released/#auto-merge-when-all-checks-pass">improvements to auto-merge</a> gives you the flexibility to schedule merge requests to merge in the future.</p>
<p>A big thank you to <a href="https://gitlab.com/Taucher2003">Niklas van Schrick</a> for the amazing contribution!</p>
<h3 id="add-support-for-values-to-the-glab-agent-bootstrap-command">Add support for values to the <code>glab agent bootstrap</code> command</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/gitlab-org/cli/-/blob/main/docs/source/cluster/agent/bootstrap.md#options">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/482844">Related issue</a></li></ul>
</div>

<p>In the last release, we introduced support for easy agent bootstrapping to the GitLab CLI tool. GitLab 17.6 further improves the <code>glab cluster agent bootstrap</code> command with support for custom Helm values. You can use the <code>--helm-release-values</code> and <code>--helm-release-values-from</code> flags to customize the generated <code>HelmRelease</code> resource.</p>
<h3 id="select-a-gitlab-agent-for-an-environment-in-a-cicd-job">Select a GitLab agent for an environment in a CI/CD job</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/#configure-a-dashboard-for-a-dynamic-environment">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467912">Related issue</a></li></ul>
</div>

<p>To use the dashboard for Kubernetes, you need to select an agent for Kubernetes connection from the environment settings. Until now, you could select the agent only from the UI or (from GitLab 17.5) the API, which made configuring a dashboard from CI/CD difficult. In GitLab 17.6, you can configure an agent connection with the <code>environment.kubernetes.agent</code> syntax.
In addition, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/500164">issue 500164</a> proposes to add support for selecting a namespace and Flux resource from your CI/CD configuration.</p>
<h3 id="audit-events-for-privileged-actions">Audit events for privileged actions</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/#groups-and-projects">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/486532">Related issue</a></li></ul>
</div>

<p>There are now additional audit events for privileged settings-related administrator actions. A record of when these settings were changed can help improve security by providing an audit trail.</p>
<h3 id="new-audit-event-when-merge-requests-are-merged">New audit event when merge requests are merged</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/#compliance-management">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/442279">Related issue</a></li></ul>
</div>

<p>With this release, when a merge request is merged, a new audit event type called <code>merge_request_merged</code> is triggered that contains key information about
the merge request, including:</p>
<ul>
<li>The title of the merge request</li>
<li>The description or summary of the merge request</li>
<li>How many approvals were required for merge</li>
<li>How many approvals were granted for merge</li>
<li>Which users approved the merge request</li>
<li>Whether committers approve the merge request</li>
<li>Whether authors approved the merge request</li>
<li>The date/time of the merge</li>
<li>The list of SHAs from Commit history</li>
</ul>
<h3 id="disable-otp-authenticator-and-webauthn-devices-independently">Disable OTP authenticator and WebAuthn devices independently</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/account/two_factor_authentication/#disable-two-factor-authentication">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/393419">Related issue</a></li></ul>
</div>

<p>It is now possible to disable the OTP authenticator and WebAuthn devices individually or simultaneously. Previously, if you disabled the OTP authenticator, the WebAuthn device(s) were also disabled. Because the two now operate independently, there is more granular control over these authentication methods.</p>
<h3 id="use-api-to-get-information-about-tokens">Use API to get information about tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/admin/token/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/443597">Related issue</a></li></ul>
</div>

<p>Administrators can use the new token information API to get information about personal access tokens, deploy tokens, and feed tokens. Unlike other API endpoints that expose token information, this endpoint allows administrators to retrieve token information without knowing the type of the token.</p>
<p>Thank you <a href="https://gitlab.com/nwittstruck">Nicholas Wittstruck</a> and the rest of the crew from Siemens for your contribution!</p>
<h3 id="more-information-in-sign-in-emails-from-new-locations">More information in sign in emails from new locations</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/notifications/#notifications-for-unknown-sign-ins">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/296128">Related issue</a></li></ul>
</div>

<p>GitLab optionally sends an email when a sign-in from a new location is detected. Previously, this email only contained the IP address, which is difficult to correlate to a location. This email now contains city and country location information as well.</p>
<p>Thank you <a href="https://gitlab.com/shangsuru">Henry Helm</a> for your contribution!</p>
<h3 id="prevent-modification-of-group-protected-branches">Prevent modification of group protected branches</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#approval_settings">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13776">Related epic</a></li></ul>
</div>

<p>When a merge request approval policy is configured to prevent group branch modification, policies now account for protected branches configured for a group. This setting ensures that branches protected at the group level cannot be unprotected. Protected branches restrict certain actions, such as deleting the branch and force pushing to the branch. You can override this behavior and declare exceptions for specific top-level groups with the new <code>approval_settings.block_group_branch_modification</code> property to allow group owners to temporarily modify protected branches when necessary.</p>
<p>This new project override setting ensures that group protected branch settings cannot be modified to circumvent security and compliance requirements, ensuring more stable enforcement of protected branches.</p>
<h3 id="top-level-group-owners-can-create-service-accounts">Top-level group Owners can create service accounts</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/account_and_limit_settings/#allow-top-level-group-owners-to-create-service-accounts">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/468806">Related issue</a></li></ul>
</div>

<p>Currently, only administrators can create service accounts on GitLab self-managed. Now, there is an optional setting which allows top-level group Owners to create service accounts. This allows administrators to choose if they would like a wider range of roles that are allowed to create service accounts, or keep it as an administrator-only task.</p>
<h3 id="service-accounts-badge">Service accounts badge</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/439768">Related issue</a></li></ul>
</div>

<p>Service accounts now have a designated badge and can be easily identified in the users list. Previously, these accounts only had the <code>bot</code> badge, making it difficult to distinguish between them and group and project access tokens.</p>
<h3 id="deploy-your-pages-site-with-any-cicd-job">Deploy your Pages site with any CI/CD job</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/#user-defined-job-names">Documentation</a></li></ul>
</div>

<p>To give you more flexibility in designing your pipelines, you no longer
need to name your Pages deploy job <code>pages</code>. You can now simply use the
<code>pages</code> attribute in any CI/CD job to trigger a Pages deployment.</p>
<h3 id="ai-impact-analytics-api-for-gitlab-duo-pro">AI Impact Analytics API for GitLab Duo Pro</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#aimetrics">Documentation</a></li></ul>
</div>

<p>GitLab Duo Pro customers can now programmatically access AI Impact Analytics metrics with the <code>aiMetrics</code> GraphQL API. Metrics include the number of assigned GitLab Duo seats, Duo Chat users, and Code Suggestion users. The API also provides granular counts for code suggestions that are shown and accepted. With this data, you can calculate the acceptance rate for Code Suggestions, and better understand your Duo Pro users’ adoption of Duo Chat and Code Suggestions. You can also pair AI Impact Analytics metrics with Value Stream Analytics and DORA metrics to gain deeper insight into how adopting Duo Chat and Code Suggestions are impacting your team’s productivity.</p>
<h3 id="easily-remove-closed-items-from-your-view">Easily remove closed items from your view</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/456941">Related issue</a></li></ul>
</div>

<p>You can now hide closed items from the linked and child items lists by turning off the <strong>Show closed items</strong> toggle. With this addition, you have greater control over your view and can focus on active work while reducing visual clutter in complex projects.</p>
<h3 id="query-user-level-gitlab-duo-enterprise-usage-metrics">Query user-level GitLab Duo Enterprise usage metrics</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#aiusermetrics">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/483049">Related issue</a></li></ul>
</div>

<p>Prior to this release, it was not possible to get GitLab Duo Chat and Code Suggestions usage data per Duo Enterprise user. In 17.6, we’ve added a GraphQL API to provide visibility into the number of code suggestions accepted and Duo Chat interactions for each active Duo Enterprise user. The API can help you get more granular insight into who is using which Duo Enterprise features and how frequently. This is the first iteration toward our goal of <a href="https://gitlab.com/groups/gitlab-org/-/epics/15026">providing more comprehensive Duo Enterprise usage data</a> within GitLab.</p>
<h3 id="support-for-license-data-from-cyclonedx-sboms">Support for license data from CycloneDX SBOMs</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/artifacts_reports/#artifactsreportscyclonedx">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415935">Related issue</a></li></ul>
</div>

<p>The License Scanner now has the ability to consume a dependency’s license from a CycloneDX SBOM that includes <a href="/user/compliance/license_scanning_of_cyclonedx_files/#supported-languages-and-package-managers">supported package types</a>.</p>
<p>In cases where the <code>licenses</code> field of a CycloneDX SBOM is available, users will see license data from their SBOM. In cases where the SBOM lacks license information we will continue to provide this data from our License database.</p>
<h3 id="macos-sequoia-15-and-xcode-16-job-image">macOS Sequoia 15 and Xcode 16 job image</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/macos/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/502852">Related issue</a></li></ul>
</div>

<p>You can now create, test, and deploy applications for the newest
generations of Apple devices using macOS Sequoia 15 and Xcode 16.</p>
<p>GitLab’s <a href="/ci/runners/hosted_runners/macos/">hosted runners on macOS</a>
help your development teams build and deploy macOS applications faster in a secure,
on-demand build environment integrated with GitLab CI/CD.</p>
<p>Try it out today by using the <code>macos-15-xcode-16</code> image in your <code>.gitlab-ci.yml</code> file.</p>
<h3 id="jacoco-test-coverage-visualization-now-generally-available">JaCoCo test coverage visualization now generally available</h3>
<!-- categories: Code Testing and Coverage -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/testing/code_coverage/jacoco/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/227345">Related issue</a></li></ul>
</div>

<p>You can now see JaCoCo test coverage results directly in your merge request diff view. This visualization allows you to quickly identify which lines are covered by tests and which need additional coverage before merging.</p>
<h3 id="gitlab-runner-176">GitLab Runner 17.6</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 17.6 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38260">In GitLab Runner 17.5.0, pods fail to become attachable</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38247">Runner crashes with <code>exec format error</code> when installing the fleeting plugin</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38244">Kubernetes executor pods with cgroup v2 enabled hang when OOMKilled</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38231">Runner defaults are not honoured when registering runner with a configuration template</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37244">GitLab Runner waits for Kubernetes pods to become attachable during the polling period when using exec mode</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38268">Authentication issues occur when the feature flag <code>FF_GIT_URLS_WITHOUT_TOKENS</code> is enabled</a></li>
</ul>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.6">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.6">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.6">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.5 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-5-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-5-released/</id><published>2024-10-17T00:00:00Z</published><updated>2024-10-17T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On October 17, 2024, GitLab 17.5 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-jim-ender">This month’s Notable Contributor: Jim Ender</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Jim was recognized for leading an effort to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/?sort=updated_desc&amp;state=closed&amp;assignee_username%5B%5D=Jimender2&amp;first_page_size=100">close nearly 100 backlog issues</a>
on GitLab.
He is active in many of our weekly community pairing sessions that dive into some interesting discussions.
Jim also supports people across the <a href="https://discord.gg/gitlab">GitLab Community Discord</a>,
troubleshooting GitLab support requests and guiding new contributors.
Jim works for an industrial technology company writing software for Critical Infrastructure and ERP systems.</p>
<p>“Even small contributions add up to make projects better,” says Jim.
“Something as small as documentation contributions helps others out. You don’t have to champion a full new feature.”</p>
<p>Jim was nominated by <a href="https://gitlab.com/leetickett-gitlab">Lee Tickett</a>, Staff FullStack Engineer, Contributor Success at GitLab.
“Issue triage/curation has been toward the top of my list to get the wider community involved in and Jim is paving the way here,” says Lee.</p>
<p><a href="https://gitlab.com/daniel-murphy">Daniel Murphy</a>, Senior Program Manager, Contributor Success at GitLab, added to the nomination.
“Jim’s outstanding support for new contributors and guidance in getting them started helps us grow as a community to co-create GitLab.”</p>
<p>“Impressive work on the <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163849">merge request</a> I reviewed!” says <a href="https://gitlab.com/vanessaotto">Vanessa Otto</a>, Senior Frontend Engineer at GitLab.
“Jim responded quickly, understood the suggestions immediately, and implemented them seamlessly.
It was great to see such efficiency and clarity in Jim’s approach.”</p>
<p>We are so grateful to Jim and all of our open source community for contributing to GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="introducing-duo-quick-chat">Introducing Duo Quick Chat</h3>
<!-- categories: Editor Extensions, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/#in-an-editor-window">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/15218">Related epic</a></li></ul>
</div>

<p>Introducing Duo Quick Chat, an AI-powered chat designed to work exactly where you are in your code. Duo Quick Chat operates directly on the lines you’re editing, offering real-time assistance without ever moving you away from your code. Whether you’re refactoring, fixing bugs, or writing tests, Duo Quick Chat provides suggestions and explanations on the spot, ensuring that you stay fully focused without switching context.</p>
<h3 id="use-self-hosted-model-for-gitlab-duo-code-suggestions">Use self-hosted model for GitLab Duo Code Suggestions</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/498114">Related issue</a></li></ul>
</div>

<p>You can now host selected large language models (LLMs) in your own infrastructure and configure those models as the source for Code Suggestions. This feature is in beta and available with an Ultimate and Duo Enterprise subscription on self-managed GitLab environments.</p>
<p>With self-hosted models, you can use models hosted either on-premise or in a private cloud to enable GitLab Duo Code Suggestions. We currently support open-source Mistral models on vLLM or AWS Bedrock. By enabling self-hosted models, you can leverage the power of generative AI while maintaining complete data sovereignty and privacy.</p>
<p>Please leave feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/498376">the feedback issue</a>.</p>
<h3 id="export-code-suggestion-usage-events">Export code suggestion usage events</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#codesuggestionevent">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/477231">Related issue</a></li></ul>
</div>

<p>Previously, AI impact analytics were available only on GitLab.com to GitLab Duo Enterprise customers, and on GitLab self-managed with a ClickHouse integration. Additionally, the default metrics were aggregated.</p>
<p>Now, you can export raw code suggestion events from the GraphQL API. This way you can import the data into your data analysis tool to get deeper insights into acceptance rates across more dimensions, such as suggestion size, language, and user. The raw events are not stored in ClickHouse, so some AI Impact Analytics metrics become available to all GitLab deployments, including GitLab Dedicated and self-managed.</p>
<h3 id="have-a-conversation-with-gitlab-duo-chat-about-your-merge-request">Have a conversation with GitLab Duo Chat about your merge request</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/examples/#ask-about-a-specific-merge-request">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/464587">Related issue</a></li></ul>
</div>

<p>In response to your feedback, GitLab Duo Chat is now aware of merge requests. Whether you are a reviewer or an author, you can now converse with Chat about a merge request to quickly dig into it, or learn what to do next. Simply open your merge request and open Duo Chat, then start the conversation.</p>
<p>This new feature complements our existing feature, where you can quickly populate the description of a merge request by asking GitLab Duo to <a href="/user/project/merge_requests/duo_in_merge_requests/#generate-a-description-by-summarizing-code-changes">summarize code changes</a>, so that reviewers can get a general understanding of what the merge request is about.</p>
<h3 id="enhanced-branch-rules-editing-capabilities">Enhanced branch rules editing capabilities</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/branches/branch_rules/#create-a-branch-rule">Documentation</a></li></ul>
</div>

<p>In GitLab 15.10, we introduced a <a href="https://about.gitlab.com/releases/2023/03/22/gitlab-15-10-released/#see-all-branch-related-settings-together">consolidated view for branch-related settings and rules</a>. This view provided you with an easy way to understand the configuration of your project across multiple settings.</p>
<p>Building on this feature, you can now directly modify specific branch rules in this view, including branch protections, approval rules, and external status check configurations. These new capabilities lay the foundation for <a href="https://gitlab.com/groups/gitlab-org/-/epics/12546">continued improvements</a> in branch configuration that will allow for greater flexibility in the future.</p>
<p>We encourage you to explore these new capabilities and to provide feedback. You can do this by contributing to our dedicated <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/486050">feedback issue</a>.</p>
<h3 id="gitlab-dedicated-tenant-overview-in-switchboard">GitLab Dedicated Tenant Overview in Switchboard</h3>
<!-- categories: GitLab Dedicated, Switchboard -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/tenant_overview/">Documentation</a></li></ul>
</div>

<p>Switchboard’s new Tenant Overview now provides a single place to quickly access essential information about your GitLab Dedicated instance.</p>
<p>With this first release, you can now view your current GitLab version, instance URL, and the date and time of your upcoming and past maintenance windows all on the Tenant Overview page.</p>
<h3 id="secret-push-protection-is-generally-available">Secret Push Protection is generally available</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/secret_push_protection/">Documentation</a></li></ul>
</div>

<p>We’re excited to announce that Secret Push Protection is now generally available for all GitLab Ultimate customers.</p>
<p>If a secret, like a key or an API token, is accidentally committed to a Git repository, anyone with access to the repository can impersonate the user of the secret for malicious purposes. A leaked secret costs time and money, and potentially damages a company’s reputation. Secret push protection helps reduce the remediation time and reduce risk by protecting secrets from being pushed in the first place.</p>
<p>Secret push protection has been improved since the beta release. When commits are pushed by using the Git CLI, now only the changes (diff) are scanned for secrets. We’ve also added experimental support for excluding paths, rules, or specific values to avoid false positives.</p>
<p>To learn more, see <a href="https://about.gitlab.com/blog/prevent-secret-leaks-in-source-code-with-gitlab-secret-push-protection/">the blog</a>.</p>
<h3 id="credentials-inventory-available-on-gitlabcom">Credentials Inventory available on GitLab.com</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/credentials_inventory/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/297441">Related issue</a></li></ul>
</div>

<p>The Credentials Inventory is now available for top-level group Owners on GitLab.com. In the Credentials Inventory, you can view your <a href="/user/enterprise_user/">enterprise user’s</a> personal access tokens and SSH keys across your group. You can also revoke, delete, and view additional information about the credentials. Previously, this was only available for administrators on GitLab self-managed.</p>
<p>Group Owners can use the Credentials Inventory to understand the credentials that exist in their purview, and provide increased visibility and control.</p>
<h3 id="component-filter-on-the-dependency-list">Component filter on the Dependency List</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/#filter-dependency-list">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12652">Related epic</a></li></ul>
</div>

<p>Now, in GitLab, you can filter for specific dependency components quickly to identify whether or not they are used in your group or project.
It is time consuming and inconvenient to manually go through the entire list just to verify whether or not a particular package and version is present.
With the new <strong>filter by component</strong> on the dependency list, you isolate vulnerable dependencies so that you can assess open risks in your application.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="gitlab-chart-improvements">GitLab chart improvements</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/">Documentation</a></li></ul>
</div>

<p>GitLab 17.5 includes an update to our version of the NGINX Ingress Controller. The <code>nginx-controller</code> container image is now version 1.11.2. Please
note this includes new RBAC requirements because the new controller now uses endpointslices and requires an RBAC rule to access them.</p>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>GitLab 17.5 includes support for upgrading PostgreSQL from version 14.x to 16.x for single node installations. Automatic upgrades are not enabled and
so PostgreSQL upgrades must be triggered manually.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="elevate-your-coding-duo-chat-now-in-visual-studio-for-windows">Elevate your coding: Duo Chat now in Visual Studio for Windows</h3>
<!-- categories: Editor Extensions, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/#use-gitlab-duo-chat-in-visual-studio-for-windows">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/editor-extensions/-/epics/77">Related epic</a></li></ul>
</div>

<p>Empower your development workflow with Duo Chat, now seamlessly integrated into Visual Studio for Windows. Duo Chat enhances your coding experience by providing AI-powered capabilities to explain, refine, debug code, or write tests all in real-time. This integration allows you to leverage Duo Chat’s advanced AI tools directly within your familiar development environment, improving productivity and enabling faster, more efficient problem-solving.</p>
<h3 id="configure-agent-and-gitops-environment-settings-with-the-rest-api">Configure agent and GitOps environment settings with the REST API</h3>
<!-- categories: Environment Management, Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/environments/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/412677">Related issue</a></li></ul>
</div>

<p>You can check the status of your pods and Flux reconciliation from the GitLab environments UI.
However, this approach is hard to scale because the required settings are exposed only through GraphQL or the UI.
Now, GitLab ships with REST API support for configuring an agent for Kubernetes, as well as setting the namespace and Flux resource per environment.
To further improve support for dynamic environments, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467912">issue 467912</a> proposes adding support for configuring these settings in CI/CD pipelines.</p>
<h3 id="easy-bootstrapping-of-gitlab-kubernetes-integration">Easy bootstrapping of GitLab Kubernetes integration</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/install/#bootstrap-the-agent-with-flux-support-recommended">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/473987">Related issue</a></li></ul>
</div>

<p>GitLab offers flexible, reliable, and secure GitOps support with the <a href="/user/clusters/agent/">agent for Kubernetes</a> and its <a href="/user/clusters/agent/gitops/">Flux integration</a>.
Still, bootstrapping Flux with GitLab and setting up the agent for Kubernetes used to require a lot of documentation reading and switching between the GitLab UI and the terminal.
The GitLab CLI now offers <a href="https://gitlab.com/gitlab-org/cli/-/blob/main/docs/source/cluster/agent/bootstrap.md">the <code>glab cluster agent bootstrap</code> command</a> to simplify installing the agent on top of an existing Flux installation.
Now, you can configure Flux and the agent with just two simple commands.</p>
<h3 id="kubernetes-integration-support-for-firewalled-gitlab-installations">Kubernetes integration support for firewalled GitLab installations</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/#receptive-agents">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437014">Related issue</a></li></ul>
</div>

<p>Until now, the agent for Kubernetes could be used only if the Kubernetes cluster could connect to the GitLab instance.
This issue meant that some customers couldn’t use the agent if, for example, they ran GitLab on a private network or behind a firewall.
From GitLab 17.5, you can initiate the cluster-GitLab connection from GitLab, assuming that a properly configured <code>agentk</code> instance is already waiting for a connection initialization.</p>
<p>Once the initial connection is established, all the features of the agent are available. Initializing from a cluster is not changed with this development.</p>
<h3 id="stream-kubernetes-resource-events">Stream Kubernetes resource events</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/470042">Related issue</a></li></ul>
</div>

<p>GitLab provides a real-time view of your pods, as well as pod log streaming, all through the dashboard for Kubernetes.
In GitLab 17.4, we offered a static listing of resource-specific event information from the UI.
This release further improves the dashboard for Kubernetes by letting you stream incoming events as they emerge in the cluster.</p>
<h3 id="suspend-or-resume-gitops-reconciliation-from-the-gitlab-ui">Suspend or resume GitOps reconciliation from the GitLab UI</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/#suspend-or-resume-flux-reconciliation">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/478380">Related issue</a></li></ul>
</div>

<p>As a Flux user, have you ever needed to quickly stop an automatic reconciliation or drift remediation? Have you wanted to trigger a <code>HelmRelease</code> to synchronize manually removed resources? These actions are best achieved with the Flux suspend and resume functions. Until now, your best option was to use the Flux CLI, which required a context switch and several commands to ensure the right resource was affected. In GitLab 17.5, you can suspend or resume a reconciliation from the built-in dashboard for Kubernetes.</p>
<h3 id="improved-user-management-summary">Improved user management summary</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/account/create_accounts/#create-a-user-in-the-admin-area">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/456332">Related issue</a></li></ul>
</div>

<p>Administrators now have an enhanced, summarized view of the following critical pieces of information about the users on their instance:</p>
<ul>
<li>Pending approval.</li>
<li>Without two-factor authentication.</li>
<li>Administrators.</li>
</ul>
<p>This increases user management efficiency, because administrators can quickly see how many users are in these states from the summary view, and filter on them.</p>
<h3 id="add-groups-to-security-policy-scope">Add groups to security policy scope</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14149">Related epic</a></li></ul>
</div>

<p>You can now target groups/subgroups in security policy scopes. This extends the existing options allowing you to target all projects in a group/subgroup, projects based on a defined project list, and projects matching a list of compliance framework labels.</p>
<p>This gives you further flexibility in enabling policies across your groups, while also being able to apply exceptions to scope projects out of enforcement where necessary.</p>
<p>This improvement also precedes a number of <a href="https://gitlab.com/groups/gitlab-org/-/epics/5446">enhancements</a> that will simplify the process of linking security policy projects and granularly scoping enforcement of policies.</p>
<h3 id="disable-password-authentication-for-enterprise-users">Disable password authentication for enterprise users</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/saml_sso/#disable-password-and-passkey-authentication-for-enterprise-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/373718">Related issue</a></li></ul>
</div>

<p>Enterprise users can authenticate using a local account with username and password. Now, group Owners can disable password authentication for the group’s enterprise users. If password authentication is disabled, enterprise users can use either the group’s SAML identity provider to authenticate with GitLab web UI, or a personal access token to authenticate with GitLab API and Git using HTTP Basic Authentication.</p>
<h3 id="access-compliance-center-on-projects">Access compliance center on projects</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/441350">Related issue</a></li></ul>
</div>

<p>Previously, the compliance center was available only for top-level groups and subgroups.</p>
<p>With this release, we’ve added the compliance center to projects. At this level, compliance center provides
view-only capabilities for checks and violations that pertain to a particular project.</p>
<p>To add or edit a framework, you should access the compliance center on top-level groups instead.</p>
<h3 id="migration-process-for-compliance-pipelines-to-security-policies">Migration process for compliance pipelines to security policies</h3>
<!-- categories: Compliance Management, Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_pipelines/#pipeline-execution-policies-migration">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11275">Related issue</a></li></ul>
</div>

<p>In GitLab 17.3, we announced the deprecation of compliance pipelines and its eventual removal by the 18.0 release.
Instead of compliance pipelines, you should use the pipeline execution policy type instead, which was released in GitLab 17.2.</p>
<p>To help you migrate your existing compliance pipelines over to the pipeline execution policy type, this release includes a
warning banner that:</p>
<ul>
<li>Notifies users about the deprecation of compliance pipelines.</li>
<li>Provides a prompted and guided workflow to migrate existing compliance pipelines to the pipeline execution policy type.</li>
</ul>
<h3 id="view-token-associations-using-api">View token associations using API</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/personal_access_tokens/#list-all-token-associations">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/466046">Related issue</a></li></ul>
</div>

<p>You can now view which groups, subgroups, and projects a token is associated with. This makes it easier to determine the impact of token expirations or revocations, and to understand where a token is able to be used.</p>
<h3 id="selective-saml-single-sign-on-enforcement">Selective SAML single sign-on enforcement</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/sign_in_restrictions/#disable-password-and-passkey-authentication-for-users-with-an-sso-identity">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/382917">Related issue</a></li></ul>
</div>

<p>Previously, when SAML SSO was enabled, groups could choose to enforce SSO, which required all members to use SSO
authentication to access the group. However, some groups want the security of SSO enforcement for employees or
group members, while still allowing outside collaborators or contractors to access their groups without SSO.</p>
<p>Now, groups with SAML SSO enabled have SSO automatically enforced for all members
who have a SAML identity. Group members without SAML identities are not required to
use SSO unless SSO enforcement is explicitly enabled.</p>
<p>A member has a SAML identity if one or both of the following are true:</p>
<ul>
<li>They signed in to GitLab using their GitLab group’s single sign-on URL.</li>
<li>They were provisioned by SCIM.</li>
</ul>
<p>To ensure smooth operation of the selective SSO enforcement feature, ensure your SAML configuration is
working properly before selecting the <strong>Enable SAML authentication for this group</strong> checkbox.</p>
<h3 id="enhance-api-performance-when-working-with-container-registry-tags">Enhance API performance when working with container registry tags</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/container_registry/#list-all-registry-repository-tags">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/482399">Related issue</a></li></ul>
</div>

<p>We’re excited to announce a significant improvement to our Container Registry API for self-managed GitLab instances. With the release of GitLab 17.5, we’ve implemented keyset pagination for the <code>:id/registry/repositories/:repository_id/tags</code> endpoint, bringing it in line with the functionality already available on GitLab.com. This enhancement is part of our ongoing efforts to improve API performance and provide a consistent experience across all GitLab deployments.</p>
<p>Keyset pagination offers a more efficient method for handling large datasets, resulting in improved performance and a better user experience. This update is particularly useful when managing large container registries, as it allows for smoother navigation through repository tags. In order to use this feature, self-managed instances must upgrade to the <a href="/administration/packages/container_registry_metadata_database/">next-generation container registry</a>.</p>
<h3 id="safeguard-your-dependencies-with-protected-packages">Safeguard your dependencies with protected packages</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/package_protection_rules/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/472655">Related issue</a></li></ul>
</div>

<p>We’re thrilled to introduce support for protected npm packages, a new feature designed to enhance the security and stability of your GitLab package registry. In the fast-paced world of software development, accidental modification or deletion of packages can disrupt entire development processes. Protected packages address this issue by allowing you to safeguard your most important dependencies against unintended changes.</p>
<p>From GitLab 17.5, you can protect npm packages by creating protection rules. If a package is matched by a protection rule, only specified users can update or delete the package. With this feature, you can prevent accidental changes, improve compliance with regulatory requirements, and streamline your workflows by reducing the need for manual oversight.</p>
<h3 id="ruby-support-and-rule-updates-for-advanced-sast">Ruby support and rule updates for Advanced SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/">Documentation</a></li></ul>
</div>

<p>We’ve added Ruby support to GitLab Advanced SAST.
To use this new cross-file, cross-function scanning support, <a href="/user/application_security/sast/gitlab_advanced_sast/#turn-on-gitlab-advanced-sast">enable Advanced SAST</a>.
If you’ve already enabled Advanced SAST, Ruby support is automatically activated.</p>
<p>In the last month, we’ve also released updates to improve the detection rules for <a href="/user/application_security/sast/gitlab_advanced_sast/#supported-languages">the other languages Advanced SAST supports</a> by:</p>
<ul>
<li>Detecting additional Java path traversal, Java command injection, and JavaScript path traversal vulnerabilities.</li>
<li>Updating CWE mappings to more specifically and consistently identify vulnerability types.</li>
<li>Increasing the severity of path traversal vulnerabilities.</li>
</ul>
<p>To see which types of vulnerabilities Advanced SAST detects in each language, see the new <a href="/user/application_security/sast/advanced_sast_coverage/">Advanced SAST coverage page</a>.</p>
<p>To learn more about Advanced SAST, see <a href="https://about.gitlab.com/blog/gitlab-advanced-sast-is-now-generally-available/">last month’s announcement blog</a>.</p>
<h3 id="gitlab-runner-175">GitLab Runner 17.5</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 17.5 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26921">Support AWS S3 multipart uploads with scoped temporary credentials</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38035">Jobs with extra services don’t complete if one of the service container is not running</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/38034">The <code>gitlab-runner-fips-17.4.0-1</code> package fails to run on Amazon Linux 2 and returns a glibc error</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37394">Cache doesn’t work with Amazon S3 when using S3 Express One Zone endpoints</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28073">Jobs are unable to pull base images if the <code>DOCKER_AUTH_CONFIG</code> variable has multiple registries</a></li>
</ul>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.5">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.5">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.5">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.4 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-4-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-4-released/</id><published>2024-09-19T00:00:00Z</published><updated>2024-09-19T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On September 19, 2024, GitLab 17.4 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-archish-thakkar">This month’s Notable Contributor: Archish Thakkar</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Archish Thakkar is one of GitLab’s top contributors this year with <a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=created_date&amp;state=closed&amp;assignee_username%5B%5D=archish27&amp;first_page_size=100">46 closed issues</a> and <a href="https://gitlab.com/groups/gitlab-org/-/merge_requests?assignee_username%5B%5D=archish27&amp;first_page_size=100&amp;sort=created_date&amp;state=merged">119 merged MRs</a>. These contributions have helped Archish earn top spots in the last two <a href="https://gitlab-community.gitlab.io/community-projects/merge-request-leaderboard/?&amp;createdAfter=2024-08-26&amp;createdBefore=2024-09-02&amp;mergedBefore=2024-10-03&amp;label=Hackathon">GitLab Hackathons</a>. He is a Senior Software Engineer at <a href="https://middleware.io/">Middleware</a> and passionate open source contributor.</p>
<p>Archish was nominated by <a href="https://gitlab.com/splattael">Peter Leitzen</a>, Staff Backend Engineer, Engineering Productivity at GitLab. The nomination was supported by <a href="https://gitlab.com/mwoolf">Max Woolf</a>, Staff Backend Engineer at GitLab, and <a href="https://gitlab.com/jnutt">James Nutt</a>, Senior Backend Engineer at GitLab. Archish’s contributions have increased in the past two months where he has consistently demonstrated outstanding commitment to improving GitLab’s codebase, contributing multiple QoL (Quality of Life) fixes and reducing technical debt.</p>
<p>Many thanks to Archish and the rest of GitLab’s open source contributors for co-creating GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="more-context-aware-gitlab-duo-code-suggestions-using-open-tabs">More context-aware GitLab Duo Code Suggestions using open tabs</h3>
<!-- categories: Editor Extensions, Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/context/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp/-/issues/206">Related issue</a></li></ul>
</div>

<p>Elevate your coding workflow and receive more context-aware Code Suggestions using the contents of other open tabs.</p>
<p>This improvement to Code Suggestions now uses the content of your open editor tabs to provide more relevant and accurate code recommendations.</p>
<h3 id="auto-merge-when-all-checks-pass">Auto-merge when all checks pass</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/auto_merge/">Documentation</a></li></ul>
</div>

<p>Merge requests have many required checks that must pass before they are mergeable. These checks can include approvals, unresolved threads, pipelines, and other items that need to be satisfied. When you’re responsible for merging code, it can be hard to keep track of all of these events, and know when to come back and check to see if a merge request can be merged.</p>
<p>GitLab now supports <strong>Auto-merge</strong> for all checks in merge requests. Auto-merge enables any user who is eligible to merge to set a merge request to <strong>Auto-merge</strong>, even before all the required checks have passed. As the merge request continues through its lifecycle, the merge request automagically merges after the last failing check passes.</p>
<p>We’re really excited about this improvement to accelerate your merge request workflows. You can leave feedback about this feature in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438395">issue 438395</a>.</p>
<h3 id="extension-marketplace-now-available-in-the-web-ide">Extension marketplace now available in the Web IDE</h3>
<!-- categories: Web IDE -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/web_ide/#manage-extensions">Documentation</a></li></ul>
</div>

<p>We’re thrilled to announce the launch of the extension marketplace in the Web IDE on GitLab.com. With the extension marketplace, you can discover, install, and manage third-party extensions and enhance your development experience. Some extensions are not compatible with the web-only version because they require a local runtime environment. However, you can still choose from thousands of extensions to boost your productivity or customize your workflow.</p>
<p>The extension marketplace is disabled by default. To get started, you can enable the extension marketplace in the <strong>Integrations</strong> section of your <a href="https://gitlab.com/-/profile/preferences">user preferences</a>. For <a href="/user/enterprise_user/">enterprise users</a>, only users with the Owner role for a top-level group can enable the extension marketplace.</p>
<h3 id="secure-sudo-access-for-workspaces">Secure sudo access for workspaces</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/configuration/#configure-sudo-access-for-a-workspace">Documentation</a></li></ul>
</div>

<p>You can now configure sudo access for your workspace, making it easier than ever to install, configure, and run dependencies directly in your development environment. We’ve implemented three secure methods to ensure a seamless development experience:</p>
<ul>
<li>Sysbox</li>
<li>Kata Containers</li>
<li>User namespaces</li>
</ul>
<p>With this feature, you can fully customize your environment to match your workflow and project needs.</p>
<h3 id="list-kubernetes-resource-events">List Kubernetes resource events</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/470041">Related issue</a></li></ul>
</div>

<p>GitLab provides a real-time view into your pods and streaming pod logs. Until now, however, we didn’t show you resource-specific event information from the UI,
so you still had to use 3rd party tools to debug Kubernetes deployments.
This release adds events to the resource details view of <a href="/ci/environments/kubernetes_dashboard/">the dashboard for Kubernetes</a>.</p>
<p>This is the first time we’ve added events to the UI. Currently, events are refreshed every time you open the resource details view. You can track the development of real-time event streaming in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/470042">issue 470042</a>.</p>
<h3 id="gitlab-pages-without-wildcard-dns-is-generally-available">GitLab Pages without wildcard DNS is generally available</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/pages/#dns-configuration-for-single-domain-sites">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13404">Related epic</a></li></ul>
</div>

<p>Previously, to create a GitLab Pages project, you needed a domain formatted like <code>name.example.io</code>
or <code>name.pages.example.io</code>. This requirement meant you had to set up wildcard DNS records and
TLS certificate. In this release, setting up a GitLab Pages project without a DNS wildcard has
moved from beta to generally available.</p>
<p>Removing the requirement for wildcard certificates eases administrative overhead associated with
GitLab Pages. Some customers can’t use GitLab Pages because of organizational restrictions on
wildcard DNS records or certificates.</p>
<h3 id="gitlab-pages-parallel-deployments-in-beta">GitLab Pages parallel deployments in beta</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/#parallel-deployments">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10914">Related epic</a></li></ul>
</div>

<p>This release introduces Pages parallel deployments in beta. You can now easily preview changes and manage parallel deployments for your
GitLab Pages sites. This enhancement allows for seamless experimentation with new ideas, so you can test and refine your sites with confidence. By
catching any issues early, you can ensure that the live site remains stable and polished, building on the already great foundation of GitLab Pages.</p>
<p>Additionally, parallel deployments can be useful for localization when you deploy different language versions of an application or website.</p>
<h3 id="summarize-issue-discussions-with-gitlab-duo-chat">Summarize issue discussions with GitLab Duo Chat</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/discussions/#summarize-issue-discussions-with-gitlab-duo-chat">Documentation</a></li></ul>
</div>

<p>Getting up to speed on lengthy issue discussions can be a significant time investment. With this release, AI-generated issue discussion summarization has been integrated with Duo Chat and is now generally available for GitLab.com, Self-managed, and Dedicated customers.</p>
<h3 id="advanced-sast-is-generally-available">Advanced SAST is generally available</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/">Documentation</a></li></ul>
</div>

<p>We’re excited to announce that our Advanced Static Application Security Testing (SAST) scanner is now generally available for all GitLab Ultimate customers.</p>
<p>Advanced SAST is a new scanner powered by the technology we <a href="https://about.gitlab.com/blog/oxeye-joins-gitlab-to-advance-application-security-capabilities/">acquired from Oxeye</a> earlier this year. It uses a proprietary detection engine with rules informed by in-house security research to identify exploitable vulnerabilities in first-party code. It delivers more accurate results so developers and security teams don’t have to sort through the noise of false-positive results.</p>
<p>Along with the new scanning engine, GitLab 17.4 includes:</p>
<ul>
<li>A new <a href="/user/application_security/vulnerabilities/#vulnerability-code-flow">code-flow view</a> that traces a vulnerability’s path across files and functions.</li>
<li>An automatic migration that allows Advanced SAST to “take over” existing results from previous GitLab SAST scanners.</li>
</ul>
<p>To learn more, see <a href="https://about.gitlab.com/blog/gitlab-advanced-sast-is-now-generally-available/">the announcement blog</a>.</p>
<h3 id="hide-cicd-variable-values-in-the-ui">Hide CI/CD variable values in the UI</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://new.docs.gitlab.com/ci/variables/#define-a-cicd-variable-in-the-ui">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/29674">Related issue</a></li></ul>
</div>

<p>You might not want anyone to see the value of a variable after it is saved to project settings. You can now select the new <strong>Masked and hidden</strong> visibility option when creating a CI/CD variable. Selecting this option will permanently mask the value of the variable in the CI/CD settings UI, restricting the value from being displayed to anyone in the future and decreasing visibility of your data.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>GitLab 17.4 includes PostgreSQL 16 by default for fresh installations of GitLab.</p>
<p>GitLab 17.7 will include OpenSSL V3. This will affect Omnibus instances with external integration setup’s that do not meet the minimum requirements of TLS 1.2 or above for outbound connections, along with at least 112-bit encryption for TLS certificates. Please review our <a href="https://docs.gitlab.com/omnibus/settings/ssl/openssl_3.html">OpenSSL upgrade documentation</a> for more information or if your are unsure if your instance will be affected.</p>
<h3 id="list-groups-invited-to-a-group-or-project-using-the-groups-or-projects-api">List groups invited to a group or project using the Groups or Projects API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/groups/#list-invited-groups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/465207">Related issue</a></li></ul>
</div>

<p>We added new endpoints to the Groups API and Projects API to retrieve the groups that have been invited to a group or project. This functionality is available only on the Members page of a group or project. We hope that this addition will make it easier to automate membership management for your groups and projects. The endpoints are rate-limited to 60 requests per minute per user.</p>
<h3 id="restrict-group-access-by-domain-with-the-groups-api">Restrict group access by domain with the Groups API</h3>
<!-- categories: Source Code Management, Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/groups/#update-group-attributes">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/351494">Related issue</a></li></ul>
</div>

<p>Previously, you could only add domain restrictions at the group level in the UI. Now, you can also do this by using the new <code>allowed_email_domains_list</code> attribute in the Groups API.</p>
<h3 id="improved-source-display-for-group-and-project-members">Improved source display for group and project members</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/members/#membership-types">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431066">Related issue</a></li></ul>
</div>

<p>We have simplified the display of the source column on the Members page for groups and projects. Direct members are still indicated as <code>Direct member</code>. Inherited members are now listed as <code>Inherited from</code> followed by the group name. Members that were added by inviting a group to the group or project are listed as <code>Invited group</code> followed by the group name. For members that inherited from an invited group that was added to a parent group, we now display the last step to keep the display actionable for users managing membership.</p>
<h3 id="gitlab-duo-seat-assignment-email">GitLab Duo seat assignment email</h3>
<!-- categories: Seat Cost Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/subscription-add-ons/#assign-gitlab-duo-seats">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164104">Related issue</a></li></ul>
</div>

<p>Users on self-managed instances will now receive an email when they are assigned a GitLab Duo seat. Previously, you wouldn’t know you were assigned a seat unless someone told you, or you noticed new functionality in the GitLab UI.</p>
<p>To disable this email, an administrator can disable the <code>duo_seat_assignment_email_for_sm</code> feature flag.</p>
<h3 id="resend-failed-webhook-requests-with-the-api">Resend failed webhook requests with the API</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/project_webhooks/#resend-a-project-webhook-event">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/372826">Related issue</a></li></ul>
</div>

<p>Previously, GitLab provided the ability to resend webhook requests only in the UI, which was inefficient if many
requests failed.</p>
<p>So that you can handle failed webhook requests programmatically, in this release thanks to a community contribution, we
added API endpoints for resending them:</p>
<ul>
<li><a href="/api/project_webhooks/#resend-a-project-webhook-event">Project webhook requests</a></li>
<li><a href="/api/group_webhooks/#resend-group-hook-event">Group webhook requests</a> (Premium and Ultimate tier only)</li>
</ul>
<p>You can now:</p>
<ol>
<li>Get a list of <a href="/api/project_webhooks/#list-project-webhook-events">project hook</a> or <a href="/api/group_webhooks/#list-all-group-hook-events">group hook</a> events.</li>
<li>Filter the list to see failures.</li>
<li>Use the <code>id</code> of any event to resend it.</li>
</ol>
<p>Thanks to <a href="https://gitlab.com/lifez">Phawin</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/151130">this community contribution</a>!</p>
<h3 id="idempotency-keys-for-webhook-requests">Idempotency keys for webhook requests</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhooks/#delivery-headers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/388692">Related issue</a></li></ul>
</div>

<p>From this release, we support an idempotency key in the headers of webhook requests. An idempotency key is a unique ID that remains consistent across webhook retries, which
allows webhook clients to detect retries. Use the <code>Idempotency-Key</code> header to ensure the idempotency of webhook effects on integrations.</p>
<p>Thanks to <a href="https://gitlab.com/van.m.anderson">Van</a> for this <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/160952">community contribution</a>!</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="cicd-component-for-code-intelligence">CI/CD component for code intelligence</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/code_intelligence/#with-the-cicd-component">Documentation</a></li></ul>
</div>

<p>Code intelligence in GitLab provides code navigation features when browsing a repository. Getting started with code navigation is often complicated, as you must configure a CI/CD job. This job can require custom scripting to provide the correct output and artifacts.</p>
<p>GitLab now supports an official <a href="https://gitlab.com/explore/catalog/components/code-intelligence">Code intelligence CI/CD component</a> for easier setup. Add this component to your project by following the instructions for <a href="/ci/components/#use-a-component">using a component</a>. This greatly simplifies adopting code intelligence in GitLab.</p>
<p>Currently, the component supports these languages:</p>
<ul>
<li>Go version 1.21 or later.</li>
<li>TypeScript or JavaScript.</li>
</ul>
<p>We’ll continue to evaluate <a href="https://github.com/sourcegraph/scip?tab=readme-ov-file#tools-using-scip">available SCIP indexers</a> as we look to broaden language support for the new component. If you’re interested in adding support for a language, please open a merge request in the <a href="https://gitlab.com/components/code-intelligence">code intelligence component</a> project.</p>
<h3 id="linked-files-in-merge-request-show-first">Linked files in merge request show first</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/changes/#show-a-linked-file-first">Documentation</a></li></ul>
</div>

<p>When you share a link to a specific file in a merge request, it’s often because you want the person to look at something within that file. Merge requests previously needed to load all of the files before scrolling to the specific position you’ve referenced. Linking directly to a file is a great way to improve the speed of collaboration in merge requests:</p>
<ol>
<li>Find the file you want to show first. Right-click the name of the file to copy the link to it.</li>
<li>When you visit that link, your chosen file is shown at the top of the list. The file browser shows a link icon next to the file name.</li>
</ol>
<p>Feedback about linked files can be left in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/439582">issue 439582</a>.</p>
<h3 id="authenticate-with-oauth-for-gitlab-duo-in-jetbrains-ides">Authenticate with OAuth for GitLab Duo in JetBrains IDEs</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/jetbrains_ide/setup/#configure-gitlab-duo">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/editor-extensions/-/epics/70">Related epic</a></li></ul>
</div>

<p>Our GitLab Duo plugin for JetBrains now offers a more secure and streamlined onboarding process. Sign in quickly and securely with OAuth. It integrates seamlessly with your existing workflow, with no personal access token required!</p>
<h3 id="non-deployment-jobs-to-protected-environments-arent-turned-into-manual-jobs">Non-deployment jobs to protected environments aren&rsquo;t turned into manual jobs</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/job_control/#types-of-manual-jobs">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/390025">Related issue</a></li></ul>
</div>

<p>Due to an implementation issue, the <code>action: prepare</code>, <code>action: verify</code>, and <code>action: access</code> jobs
become manual jobs when they run against a protected environment. These jobs require manual interaction to run,
although they don’t require any additional approvals.</p>
<p><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/390025">Issue 390025</a> proposes to fix the implementation, so these jobs won’t be turned into manual jobs.
After this proposed change, to keep the current behavior, you will need to
<a href="/ci/jobs/job_control/#types-of-manual-jobs">explicitly set the jobs to manual</a>.</p>
<p>For now, you can change to the new implementation now by enabling the <code>prevent_blocking_non_deployment_jobs</code> feature flag.</p>
<p>Any proposed breaking changes are intended to differentiate the behavior of the
<code>environment.action: prepare | verify | access</code> values.
The <code>environment.action: access</code> keyword will remain the closest to its current behavior.</p>
<p>To prevent future compatibility issues, you should review your use of these keywords now.
You can learn more about these proposed changes in the following issues:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437132">Issue 437132</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437133">Issue 437133</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437142">Issue 437142</a></li>
</ul>
<h3 id="trigger-a-flux-reconciliation-from-the-cluster-ui">Trigger a Flux reconciliation from the cluster UI</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/434248">Related issue</a></li></ul>
</div>

<p>Although you can configure Flux to trigger reconciliations at specified intervals, there are situations where you might want an immediate reconciliation. In past releases, you could trigger the reconciliation from a CI/CD pipeline or from the command line. In GitLab 17.4, you can now trigger a reconciliation from a dashboard for Kubernetes with no additional configuration.</p>
<p>To trigger a reconciliation, go to a configured dashboard and select the Flux status badge.</p>
<h3 id="optional-token-expiration">Optional token expiration</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/account_and_limit_settings/#require-expiration-dates-for-new-access-tokens">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/470192">Related issue</a></li></ul>
</div>

<p>Administrators can now decide if they want to enforce a mandatory expiration date for personal, project, and group access tokens. If administrators disable this setting, any new access token generated will not be required to have an expiration date. By default this setting is enabled, and an expiration less than that of the maximum allowed lifetime is required. This setting is available in GitLab 16.11 and later.</p>
<h3 id="search-by-multiple-compliance-frameworks">Search by multiple compliance frameworks</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_projects_report/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/462943">Related issue</a></li></ul>
</div>

<p>In GitLab 17.3, we provided users with the ability to add multiple compliance frameworks to a project.</p>
<p>Now you can search by multiple compliance frameworks, which makes it easier to search for projects that have multiple compliance frameworks attached to them.</p>
<h3 id="grant-read-access-to-pipeline-execution-yaml-files-in-projects-linked-to-security-policies">Grant read access to pipeline execution YAML files in projects linked to security policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/469439">Related issue</a></li></ul>
</div>

<p>In GitLab 17.4, we added a setting to security policies you can use to grant read access to <code>pipeline-execution.yml</code> files for all linked projects. This setting gives you more flexibility to enable users, bots, or tokens that enforce pipeline execution globally across projects. For example, you can ensure a group or project access tokens can read security policy configurations in order to trigger pipelines during pipeline execution. You still can’t view the security policy project repository or YAML directly. The configuration is used only during pipeline creation.</p>
<p>To configure the setting, go to the security policy project you want to share. Select <strong>Settings &gt; General &gt; Visibility, project features, permissions</strong>, scroll to <strong>Pipeline execution policies</strong>, and enable the <strong>Grant access to this repository for projects linked to it as the security policy project source for security policies</strong> toggle.</p>
<h3 id="support-suffix-for-jobs-with-name-collisions-in-pipeline-execution-policy-pipelines">Support suffix for jobs with name collisions in pipeline execution policy pipelines</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/#pipeline_execution_policy-schema">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/473189">Related issue</a></li></ul>
</div>

<p>An enhancement to the <a href="https://about.gitlab.com/releases/2024/07/18/gitlab-17-2-released/#pipeline-execution-policy-type">17.2 release of pipeline execution policies</a>, policy creators may now configure pipeline execution policies to handle collisions in job names gracefully. With the <code>policy.yml</code> for the pipeline execution policy, you may now configure the following options:</p>
<ul>
<li><code>suffix: on_conflict</code> configures the policy to gracefully handle collisions by renaming policy jobs, which is the new default behavior</li>
<li><code>suffix: never</code> enforces all jobs names are unique and will fail pipelines if collisions occur, which has been the default behavior since 17.2</li>
</ul>
<p>With this improvement, you can ensure security and compliance jobs executed within a pipeline execution policy always run, while also preventing unnecessary impacts to developers downstream.</p>
<p>In a follow-up enhancement, we will introduce the configuration option within the policy editor.</p>
<h3 id="resizable-wiki-sidebar">Resizable wiki sidebar</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/154167">Related issue</a></li></ul>
</div>

<p>You can now adjust the wiki sidebar to see longer page titles, improving the overall discoverability of
content. As wiki content grows, having a resizable sidebar helps manage and browse through complex hierarchies or extensive
lists of pages more efficiently.</p>
<h3 id="support-for-ingesting-cyclonedx-16-sboms">Support for ingesting CycloneDX 1.6 SBOMs</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/artifacts_reports/#artifactsreportscyclonedx">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/472837">Related issue</a></li></ul>
</div>

<p>GitLab 15.3 added support for <a href="/ci/yaml/artifacts_reports/#artifactsreportscyclonedx">ingesting CycloneDX SBOMs</a>.</p>
<p>In GitLab 17.4 we have added support for ingesting CycloneDX version 1.6 SBOMs.</p>
<p>Fields relating to hardware (HBOM), services (SaaSBOM), and AI/ML models (AI/ML-BOM) are not currently supported. SBOMs that contain data relating to these BOMs will be processed, but the data will not be analyzed or presented to users. Support for these other BOM-types is being tracked in this <a href="https://gitlab.com/groups/gitlab-org/-/epics/14989">epic</a>.</p>
<h3 id="automatic-cleanup-for-removed-sast-analyzers">Automatic cleanup for removed SAST analyzers</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/analyzers/#analyzers-that-have-reached-end-of-support">Documentation</a></li></ul>
</div>

<p>In <a href="/update/deprecations/#sast-analyzer-coverage-changing-in-gitlab-170">GitLab 17.0</a>, <a href="/update/deprecations/#sast-analyzer-coverage-changing-in-gitlab-160">16.0</a>, and <a href="/update/deprecations/#sast-analyzer-consolidation-and-cicd-template-changes">15.4</a>, we streamlined GitLab SAST so it uses fewer separate analyzers to scan your code for vulnerabilities.</p>
<p>Now, after you upgrade to GitLab 17.3.1 or later, a one-time data migration will automatically resolve leftover vulnerabilities from the <a href="/user/application_security/sast/analyzers/#analyzers-that-have-reached-end-of-support">analyzers that have reached End of Support</a>.
This helps clean up your Vulnerability Report so you can focus on the vulnerabilities that are still detected by the most up-to-date analyzers.</p>
<p>The migration only resolves vulnerabilities that you haven’t confirmed or dismissed, and it doesn’t affect vulnerabilities that were <a href="/user/application_security/sast/analyzers/#transition-to-semgrep-based-scanning">automatically translated to Semgrep-based scanning</a>.</p>
<h3 id="secret-detection-support-for-anthropic-api-keys">Secret Detection support for Anthropic API keys</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/detected_secrets/">Documentation</a></li></ul>
</div>

<p>Both pipeline and client-side Secret Detection now support detection of <a href="https://www.anthropic.com/">Anthropic</a> API keys.</p>
<h3 id="jacoco-support-for-test-coverage-visualization-available-in-beta">JaCoCo support for test coverage visualization available in beta</h3>
<!-- categories: Code Testing and Coverage -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/testing/code_coverage/jacoco/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/227345">Related issue</a></li></ul>
</div>

<p>You can now use JaCoCo coverage reports, a popular standard for coverage calculation, inside your merge requests. The feature is available as beta, but ready for testing by anyone who wants to use JaCoCo coverage reports right away. If you have any feedback, feel free to contribute to the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/479804">feedback issue</a>.</p>
<h3 id="gitlab-runner-174">GitLab Runner 17.4</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 17.4 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29223">GitLab Runner fleeting plugin for Azure compute (GA)</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37952">The entire <code>step_script</code> contents appear in the job log’s <code>after_script</code> section when a Kubernetes executor job is cancelled before completion</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-4-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.4">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.4">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.4">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.3 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-3-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-3-released/</id><published>2024-08-15T00:00:00Z</published><updated>2024-08-15T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On August 15, 2024, GitLab 17.3 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-anton-kalmykov">This month’s Notable Contributor: Anton Kalmykov</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Anton Kalmykov is one of GitLab’s top contributors this year with 37 <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&amp;state=merged&amp;author_username=antonkalmykov">merged contributions</a>
since February and more in progress.
Anton is a Senior Frontend Engineer at <a href="https://yolo.com/">Yolo group (Bombay Games)</a>.</p>
<p>“Contributing to GitLab is one of the most challenging, ambitious, and exciting initiatives,” says Anton.
“I appreciate the opportunity to be involved in creating and improving such a great product.
Thanks to this chance, I have learned a lot of new things, and I still have a lot to do.
I am incredibly grateful to the GitLab team, especially those who have checked my MRs, guided me,
and helped me do things right.”</p>
<p>Anton was nominated by <a href="https://gitlab.com/lohrc">Christina Lohr</a>, Senior Product Manager at GitLab,
for helping out the Tenant Scale
group with several frontend issues.</p>
<p>“We have a lot of smaller UX improvements to work through for our basic workflows, and it is great
to get help from the community to complete these initiatives faster,” says Christina.
“All these improvements are helping to create a more cohesive user experience between groups and projects.
Thank you Anton.”</p>
<p>Many thanks to Anton and the rest of GitLab’s open source contributors for co-creating GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="troubleshoot-failed-jobs-with-root-cause-analysis">Troubleshoot failed jobs with root cause analysis</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/examples/#troubleshoot-failed-cicd-jobs-with-root-cause-analysis">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13080">Related epic</a></li></ul>
</div>

<p>Root cause analysis is now generally available. With root cause analysis, you can troubleshoot failed jobs in CI/CD pipelines faster. This AI-powered feature analyzes the failed job log, quickly determines the root cause of the job failure, and suggests a fix for you.</p>
<h3 id="health-check-for-gitlab-duo-in-beta">Health check for GitLab Duo in beta</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo/configure/#run-a-health-check-for-gitlab-duo">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14518">Related issue</a></li></ul>
</div>

<p>You can now troubleshoot the setup for GitLab Duo on your self-managed instance. In the <strong>Admin</strong> area, on the GitLab Duo page, select <strong>Run health check</strong>.
This health check performs a series of validations and suggests appropriate corrective actions to ensure GitLab Duo is operational.</p>
<p>The health check for GitLab Duo is available on Self-managed and GitLab Dedicated as a beta feature.</p>
<h3 id="delete-a-pod-from-the-gitlab-ui">Delete a pod from the GitLab UI</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/#delete-a-pod">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467653">Related issue</a></li></ul>
</div>

<p>Have you ever needed to restart or delete a failing pod in Kubernetes? Until now, you had to leave GitLab, use another tool to connect to the cluster, stop the pod, and wait for a new pod to start. GitLab now has built-in support for deleting pods, so you can smoothly troubleshoot your Kubernetes clusters.</p>
<p>You can stop a pod from a <a href="/ci/environments/kubernetes_dashboard/">dashboard for Kubernetes</a>, which lists all the pods across your cluster or namespace.</p>
<h3 id="easily-connect-to-a-cluster-from-your-local-terminal">Easily connect to a cluster from your local terminal</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/user_access/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/463769">Related issue</a></li></ul>
</div>

<p>Do you want to connect to a Kubernetes cluster from your local terminal or using one of the desktop Kubernetes GUI tools?
GitLab allows you to connect to a terminal using the <a href="/user/clusters/agent/user_access/">user access feature of the agent for Kubernetes</a>.
Previously, finding commands required navigating out of GitLab to browse the documentation. Now, GitLab provides the connect command from the UI. GitLab can even help you configure user access!</p>
<p>To retrieve the connection command, either go to a <a href="/ci/environments/kubernetes_dashboard/">Kubernetes dashboard</a>, or to the <a href="/user/clusters/agent/work_with_agent/#view-your-agents">agent list</a>.</p>
<h3 id="resolve-a-vulnerability-with-ai">Resolve a vulnerability with AI</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/#vulnerability-resolution">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10783">Related epic</a></li></ul>
</div>

<p>Vulnerability resolution uses AI to give specific code suggestions for users to fix vulnerabilities. With the click of a button you can open a merge request to get started resolving any SAST vulnerability from the <a href="/user/application_security/vulnerabilities/#supported-vulnerabilities-for-vulnerability-resolution">list of supported CWE identifiers</a>.</p>
<h3 id="add-multiple-compliance-frameworks-to-a-single-project">Add multiple compliance frameworks to a single project</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/#add-a-compliance-framework-to-a-project">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13294">Related epic</a></li></ul>
</div>

<p>You can create a compliance framework to identify that your project has certain compliance requirements or needs additional oversight.
The compliance framework can optionally enforce compliance pipeline configuration to the projects on which it is applied.</p>
<p>Previously, users could only apply one compliance framework to a project, which limited how many compliance requirements could be set on a project.
We have now provided the ability for a user to apply multiple compliance frameworks per project.
This will allow users to apply multiple different compliance frameworks onto a single project at a given time.
With this release, you can apply multiple compliance frameworks to a project. The project is then set with the compliance requirements of each framework.</p>
<h3 id="ai-impact-analytics-code-suggestions-acceptance-rate-and-gitlab-duo-seats-usage">AI Impact analytics: Code Suggestions acceptance rate and GitLab Duo seats usage</h3>
<!-- categories: Value Stream Management, Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/#dashboard-metrics-and-drill-down-reports">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/471168">Related issue</a></li></ul>
</div>

<p>These two new metrics highlight the effectiveness and utilization of GitLab Duo, and are now included in the <a href="https://about.gitlab.com/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/">AI Impact analytics in the Value Streams Dashboard</a>, which helps organizations understand the impact of GitLab Duo on delivering business value.</p>
<p>The <strong>Code Suggestions acceptance rate</strong> metric indicates how frequently developers accept code suggestions made by GitLab Duo. This metric reflects both the effectiveness of these suggestions and the level of trust contributors have in AI capabilities. Specifically, the metric represents the percentage of code suggestions provided by GitLab Duo that have been accepted by code contributors in the last 30 days.</p>
<p>The <strong>GitLab Duo seats assigned and used</strong> metric shows the percentage of consumed licensed seats, helping organizations plan effectively for license utilization, resource allocation, and understanding of usage patterns. This metric tracks the ratio of assigned seats that have used at least one AI feature in the last 30 days.</p>
<p>With the addition of these new metrics, we have also introduced new overview tiles — a new visualization which provides a clear summary of the metrics, helping you quickly assess the current state of your AI features.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>GitLab 17.3 includes packages for supporting <a href="https://www.raspberrypi.com/news/bookworm-the-new-version-of-raspberry-pi-os/">Raspberry Pi OS 12</a>.</p>
<p>Debian 10 has reached <a href="https://www.debian.org/releases/buster/">EOL on June 30th, 2024</a>. GitLab will remove support for Debian 10 in GitLab 17.6.</p>
<h3 id="improved-sorting-and-filtering-for-projects-and-groups-in-your-work">Improved sorting and filtering for projects and groups in Your Work</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/#explore-all-projects-on-an-instance">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/25368">Related issue</a></li></ul>
</div>

<p>We have updated the sorting and filtering functionality of the project and group overview in <strong>Your Work</strong>.
Previously, in the <strong>Your Work</strong> page for projects, you could filter by name and language, and use a pre-defined set of sorting options. We have standardized the sorting options to include <strong>Name</strong>, <strong>Created date</strong>, <strong>Updated date</strong>, and <strong>Stars</strong>. We also added a navigation element to sort in ascending or descending order, and moved the language filter to the filter menu. Now you can find archived projects in the new <strong>Inactive</strong> tab. Additionally, we added a <strong>Role</strong> filter that allows you to search for projects you are the Owner of.</p>
<p>In the Your Work page for groups, we have standardized the sorting options to include <strong>Name</strong>, <strong>Created date</strong>, and <strong>Updated date</strong>, and added a navigation element to sort in ascending or descending order.</p>
<p>We welcome feedback about these changes in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438322">#438322</a>.</p>
<h3 id="end-to-end-instance-indexing-for-advanced-search">End-to-end instance indexing for advanced search</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/advanced_search/elasticsearch/#index-the-instance">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/271532">Related issue</a></li></ul>
</div>

<p>When you enable advanced search in GitLab, you can now select <strong>Index the instance</strong> to perform initial indexing or re-create an index from scratch. This setting achieves functional parity with the <code>gitlab:elastic:index</code> rake task by indexing all supported types of data into the integrated Elasticsearch or OpenSearch cluster.</p>
<p><strong>Index the instance</strong> replaces the setting to index all projects, which was limited to the initial indexing only.</p>
<h3 id="toggle-inheriting-settings-for-integrations-by-using-the-api">Toggle inheriting settings for integrations by using the API</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467089">Related issue</a></li></ul>
</div>

<p>Until now, you could only control whether a project inherited integration settings, or used its
own settings, using the UI.</p>
<p>In this milestone, we are introducing a new <code>use_inherited_settings</code> parameter to the REST API of all integrations. This parameter allows you to use the API to set
whether or not a project inherits integration settings. If not set, the default behavior is <code>false</code> (use the project’s own settings).</p>
<h3 id="list-group-or-project-webhook-events-with-the-api">List group or project webhook events with the API</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/project_webhooks/#list-project-webhook-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437188">Related issue</a></li></ul>
</div>

<p>Since GitLab 9.3 you can view project webhook request history in the UI, and since GitLab 15.3 you can also <a href="/user/project/integrations/webhooks/#view-webhook-request-history">view group webhook request history in the UI</a>.</p>
<p>In this release, that data is now exposed in the REST API, which can help you automate processes to discover and respond to webhook errors. You can get a list of events for a specific <a href="/api/project_webhooks/#list-project-webhook-events">project hook</a> and <a href="/api/group_webhooks/#list-all-group-hook-events">group hook</a> in the past 7 days.</p>
<p>Thanks to <a href="https://gitlab.com/lifez">Phawin</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/151048">this community contribution</a>!</p>
<h3 id="find-group-settings-by-using-the-command-palette">Find group settings by using the command palette</h3>
<!-- categories: Settings, Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/command_palette/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/448646">Related issue</a></li></ul>
</div>

<p>In 17.2, we added the ability to <a href="https://about.gitlab.com/releases/2024/07/18/gitlab-17-2-released/#find-project-settings-by-using-the-command-palette">search for project settings by using the command palette</a>. This change made it easier to quickly find the settings you need.</p>
<p>With 17.3, you can now search for group settings from the command palette as well. Try it out by visiting a group, selecting <strong>Search or go to</strong>, entering command mode with <code>&gt;</code>, and typing the name of a settings section, like <strong>Merge request approvals</strong>. Select a result to jump right to the setting itself.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="granular-control-of-code-suggestions-by-language-in-vs-code">Granular control of code suggestions by language in VS Code</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/supported_extensions/#manage-languages-for-code-suggestions">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/1388">Related issue</a></li></ul>
</div>

<p>Get more control over your coding experience in VS Code by enabling or disabling code suggestions for specific programming languages. This granular control allows you to customize your workflow, reducing irrelevant or intrusive suggestions while maintaining the benefits of code suggestions for your preferred languages.</p>
<h3 id="improved-tls-support-in-jetbrains-ides">Improved TLS support in JetBrains IDEs</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/jetbrains_ide/jetbrains_troubleshooting/#certificate-errors">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-jetbrains-plugin/-/issues/371">Related issue</a></li></ul>
</div>

<p>For tighter security in sensitive environments, you can now configure custom HTTP agent options, including client certificates and certificate authorities, directly in your JetBrains IDE settings.</p>
<h3 id="more-easily-remove-content-from-repositories">More easily remove content from repositories</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/repository_size/#remove-blobs">Documentation</a></li></ul>
</div>

<p>Currently, the process for removing content from a repository is complicated, and you might have to force push the project to GitLab.
This is prone to errors and can cause you to temporarily turn off protections to enable the push.
It can be even harder to delete files that use too much space within the repository.</p>
<p>You can now use the new repository maintenance option in project settings to remove blobs based on a list of object IDs.
With this new method, you can selectively remove content without the need to force push a project back to GitLab.</p>
<p>In the event that secrets or other content has been pushed that needs to be redacted from a project, we’re also introducing a new option to redact text.
Provide a string that GitLab will replace with <code>***REMOVED***</code> in files across the project.
After the text has been redacted, run housekeeping to remove old versions of the string.</p>
<p>This new UI streamlines the way you can manage your repositories when content needs to be removed.</p>
<h3 id="audit-event-when-agent-for-kubernetes-is-created-and-deleted">Audit event when agent for Kubernetes is created and deleted</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/#deployment-management">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/462749">Related issue</a></li></ul>
</div>

<p>Because the agent for Kubernetes allows bi-directional data flow between a Kubernetes cluster and GitLab, it’s important to know when a component that can access your systems is added or removed.
In past releases, compliance teams had to use custom tooling or search for this data in GitLab directly. GitLab now provides the following audit events:</p>
<ul>
<li><code>cluster_agent_created</code> records who registered a new agent for Kubernetes.</li>
<li><code>cluster_agent_create_failed</code> records who tried to register a new agent for Kubernetes but failed.</li>
<li><code>cluster_agent_deleted</code> records who removed an agent for Kubernetes registration.</li>
<li><code>cluster_agent_delete_failed</code> records who tried to remove an agent for Kubernetes registration but failed.</li>
</ul>
<p>These audit events extend the <code>cluster_agent_token_created</code> and <code>cluster_agent_token_revoked</code> audit events to further improve the ability to audit your GitLab instance.</p>
<h3 id="kubernetes-130-support">Kubernetes 1.30 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/456929">Related issue</a></li></ul>
</div>

<p>This release adds full support for Kubernetes version 1.30, released in April 2024. If you deploy your apps to Kubernetes, you can now upgrade your connected clusters to the most recent version and take advantage of all its features.</p>
<p>You can read more about <a href="/user/clusters/agent/#supported-kubernetes-versions-for-gitlab-features">our Kubernetes support policy and other supported Kubernetes versions</a>.</p>
<h3 id="add-authentication-to-merge-request-external-status-checks">Add authentication to merge request external status checks</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/status_checks/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/433035">Related issue</a></li></ul>
</div>

<p>External status checks can now be configured with HMAC (Hash-based Message Authentication Code) authentication. This will provide a more secure way to verify the authenticity of requests from GitLab to external services.</p>
<p>When enabled for your status check, a shared secret is used to generate a unique signature for each request. The signature is sent in the <code>X-Gitlab-Signature</code> header, using SHA256 as the hash algorithm.</p>
<ul>
<li>Improved Security: HMAC authentication prevents tampering with requests and ensures they come from a legitimate source.</li>
<li>Compliance: This feature is particularly valuable for regulated industries, such as banking, where security is paramount.</li>
<li>Backwards Compatibility: The feature will be optional and backwards compatible. Users can choose to enable HMAC authentication for new or existing checks, but existing external status checks will continue to function without changes.</li>
</ul>
<p>In a <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/476163">future iteration</a>, GitLab plans to add an option to also verify and block HTTP requests.</p>
<h3 id="filter-the-member-list-in-a-group-or-project-by-role">Filter the member list in a group or project by role</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/members/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431397">Related issue</a></li></ul>
</div>

<p>Users can now filter the Members page by role. Use the filter to find members with a specific role.</p>
<h3 id="view-role-details-in-the-right-drawer">View role details in the right drawer</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13061">Related issue</a></li></ul>
</div>

<p>Previously, if you wanted to view permissions for the custom roles of a user, you had to have the Owner role in the group. This requirement made it difficult to troubleshoot and understand what actions a user can perform when assigned a custom role. Now, any user can view the permissions of a user assigned a custom role in the Members page.</p>
<h3 id="ldap-group-link-support-for-custom-roles">LDAP group link support for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/access_and_permissions/#manage-group-memberships-with-ldap">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435229">Related issue</a></li></ul>
</div>

<p>Organizations that use LDAP group links to manage user permissions for groups can already use default roles for membership.</p>
<p>In this release, we’re extending that support to <a href="/user/custom_roles/">custom roles</a>. This configuration makes it easier to map access to a
large group of users.</p>
<h3 id="new-permission-for-custom-roles">New permission for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391760">Related issue</a></li></ul>
</div>

<p>You can create custom roles with the following new permission:</p>
<ul>
<li><a href="/user/custom_roles/abilities/#runner">Read Runners</a></li>
</ul>
<p>With custom roles, you can reduce the number of users with the Owner role by creating users with equivalent permissions. This helps you define roles that are tailored to the needs of your group, and prevents users from being given more privileges than they need.</p>
<h3 id="disable-personal-access-tokens-using-admin-ui">Disable personal access tokens using Admin UI</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/#view-token-usage-information">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/436991">Related issue</a></li></ul>
</div>

<p>Administrators can now disable or re-enable instance personal access tokens through the Admin UI. Previously, administrators had to use the application settings API or the GitLab Rails console to do this.</p>
<h3 id="bluesky-identifier-in-user-profile">Bluesky identifier in user profile</h3>
<!-- categories: User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/#add-external-accounts-to-your-user-profile-page">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/451690">Related issue</a></li></ul>
</div>

<p>You can now add your Bluesky did:plc identifier to your GitLab profile.</p>
<p>Thank you <a href="https://domi.zip/">Dominique</a> for your contribution!</p>
<h3 id="subdomain-cookies-preserved-on-sign-out">Subdomain cookies preserved on sign out</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/active_sessions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/471097">Related issue</a></li></ul>
</div>

<p>GitLab’s sign out process has been improved so that cookies from sibling subdomains are not deleted on sign out. Previously, these cookies were deleted, causing users to be signed out of other subdomain services on the same top-level domain as GitLab. For example, if a user has Kibana set up on <code>kibana.example.com</code> and GitLab set up on <code>gitlab.example.com</code>, signing out from GitLab will no longer sign the user out from Kibana.</p>
<p>Thank you <a href="https://gitlab.com/GCSBOSS">Guilherme C. Souza</a> for your contribution!</p>
<h3 id="ai-impact-analytics-with-enhanced-sparklines-trend-visualization">AI Impact analytics with enhanced sparklines trend visualization</h3>
<!-- categories: Value Stream Management, Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/duo_and_sdlc_trends/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/464692">Related issue</a></li></ul>
</div>

<p>We are excited to announce a significant improvement to our <a href="https://about.gitlab.com/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/">AI Impact analytics</a> with the introduction of sparklines. These small, simple graphs embedded in data tables enhance the readability and accessibility of AI Impact data. By transforming numerical values into visual representations, the new sparklines make it easier to identify trends over time, so you can spot upward or downward movements. This new visual approach also streamlines the process of comparing trends across multiple metrics, reducing the time and effort required when relying solely on numbers.</p>
<h3 id="add-merge-requests-to-tasks">Add merge requests to tasks</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/tasks/#add-a-merge-request-and-automatically-close-tasks">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440851">Related issue</a></li></ul>
</div>

<p>Tasks are frequently used to break down issues into engineering implementation steps. Before this release, there was no way to connect a merge request to a task it implements. You can now use the same <a href="/user/project/issues/managing_issues/#closing-issues-automatically">closing pattern</a> that you would when referencing issues from a merge request description to connect a merge request to a task. From the task view, connected merge requests are visible from the sidebar. If your project has the <a href="/user/project/issues/managing_issues/#disable-automatic-issue-closing">auto-close setting enabled</a>, the task will automatically close when the connected merge request is merged into your default branch.</p>
<h3 id="set-parent-items-for-okrs-and-tasks">Set parent items for OKRs and tasks</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/okrs/#set-an-objective-as-a-parent">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11198">Related epic</a></li></ul>
</div>

<p>You can now effortlessly update parent assignments for <a href="/user/okrs/#set-an-objective-as-a-parent">OKRs</a> and <a href="/user/tasks/#set-an-issue-as-a-parent">tasks</a>, directly from the child record, eliminating the need to navigate back and forth. This is a great step towards our goal of <a href="https://gitlab.com/groups/gitlab-org/-/epics/10501">improving efficiency with your workflows</a>.</p>
<h3 id="report-abuse-for-task-objective-and-key-result-items">Report abuse for task, objective and key result items</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/report_abuse/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/461848">Related issue</a></li></ul>
</div>

<p>You can now easily report abuse for work items directly from the <strong>Actions</strong> menu, just like you can with legacy issues. This new feature helps keep your workspace clean and safe by allowing you to quickly flag inappropriate content, ensuring a better collaborative environment for your team.</p>
<h3 id="resolve-threads-in-tasks-objectives-and-key-results">Resolve threads in tasks, objectives, and key results</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/discussions/#resolve-a-thread">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/458818">Related issue</a></li></ul>
</div>

<p>You can now resolve threads in tasks, objectives, and key results, making it easier to manage and track important conversations. Resolved threads are collapsed by default, helping you focus on active discussions and streamline your collaboration workflows.</p>
<h3 id="new-value-stream-analytics-stage-events-for-cycle-time-reduction">New Value Stream Analytics stage events for Cycle Time Reduction</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/value_stream_analytics/#value-stream-stage-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/466383">Related issue</a></li></ul>
</div>

<p>To improve the tracking of merge request (MR) review time in GitLab, we added a new stage event to <a href="https://about.gitlab.com/solutions/value-stream-management/">Value Stream Analytics</a>: <strong>MR first reviewer assigned</strong>.
With this new event teams can identify where delays occur in the review process, find opportunities to improve collaboration, and encourage a culture of responsiveness and accountability among team members. Reducing the review time directly impacts the overall cycle time of development, <a href="https://about.gitlab.com/blog/three-steps-to-optimize-software-value-streams/">leading to faster software delivery</a>. For example, you can now add a new custom <strong>Review Time to Merge (RTTM)</strong> stage that starts with <strong>MR first reviewer assigned</strong> and ends with <strong>MR merged</strong>.</p>
<h3 id="rust-support-for-dependency-and-license-scanning">Rust support for Dependency and License Scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/license_scanning_of_cyclonedx_files/#supported-languages-and-package-managers">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13093">Related issue</a></li></ul>
</div>

<p>Composition Analysis has delivered Rust support for Dependency and License Scanning. Rust scanning supports the <code>Cargo.lock</code> file type.</p>
<p>To enable Rust scanning for your Project use the <code>cargo</code> template from the <a href="https://gitlab.com/explore/catalog/components/dependency-scanning">Dependency Scanning CI/CD Component</a>.</p>
<h3 id="display-sbom-ingestion-errors-in-gitlab-ui">Display SBOM ingestion errors in GitLab UI</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14408">Related issue</a></li></ul>
</div>

<p>GitLab 15.3 added support for <a href="/ci/yaml/artifacts_reports/#artifactsreportscyclonedx">ingesting CycloneDX SBOMs</a>. While the SBOM reports are validated against the CycloneDX schema, any warnings and errors produced as part of validation were not displayed to the user.</p>
<p>In GitLab 17.3 these validation messages appear in the GitLab UI on the project-level Vulnerability Report and Dependency List pages.</p>
<p>Users will be able to view SBOM ingestion errors in the following areas of the GitLab UI: the project level vulnerability report and dependency list pages, the licenses and security tabs of the pipeline page.</p>
<h3 id="enforce-the-ruleset-used-in-sast-iac-scanning-and-secret-detection">Enforce the ruleset used in SAST, IaC Scanning, and Secret Detection</h3>
<!-- categories: SAST, Secret Detection, Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/customize_rulesets/#use-a-remote-ruleset-file">Documentation</a></li></ul>
</div>

<p>You can customize the rules used in <a href="/user/application_security/sast/customize_rulesets/">SAST</a>, <a href="/user/application_security/iac_scanning/#optimize-iac-scanning">IaC Scanning</a>, and <a href="/user/application_security/secret_detection/pipeline/configure/#customize-analyzer-behavior">Secret Detection</a> by creating a local configuration file committed in the repository or by setting a CI/CD variable to apply a shared configuration across multiple projects.</p>
<p>Previously, scanners preferred the local configuration file, even if you also set a shared ruleset reference.
This precedence order made it difficult to ensure that scans would use a known, trusted ruleset.</p>
<p>Now, we’ve added a new CI/CD variable, <code>SECURE_ENABLE_LOCAL_CONFIGURATION</code>, to control whether local configuration files are allowed.
It defaults to <code>true</code>, which keeps the existing behavior: local configuration files are allowed and are preferred over shared configurations.
If you set the value to <code>false</code> when you <a href="/user/application_security/policies/scan_execution_policies/">enforce scan execution</a>, you can be sure that scans use your shared ruleset, or the default ruleset, even if project developers add a local configuration file.</p>
<h3 id="filter-jobs-by-job-name">Filter jobs by job name</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/387547">Related issue</a></li></ul>
</div>

<p>You can now quickly find a specific job by searching for a job name.</p>
<p>Previously, you could only filter the list of jobs by status, requiring manual scrolling to find a specific job. With this release, you can now enter a job name to filter the results. The results will only include jobs in pipelines that ran after the release of GitLab 17.3.</p>
<h3 id="merge-train-visualization">Merge train visualization</h3>
<!-- categories: Merge Trains -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/merge_trains/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13705">Related epic</a></li></ul>
</div>

<p>You can now visualize the merge train to gain better insight into the status and order of merge requests in the pipeline. With merge train visualization, you can identify conflicts earlier, take actions on merge requests directly in the merge train, and minimize the risk of breaking the default branch.</p>
<h3 id="gitlab-runner-173">GitLab Runner 17.3</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re releasing GitLab Runner 17.3 today! GitLab Runner is the lightweight, highly scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="bug-fixes">Bug fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37780">Jobs appear to hang when canceled in the Kubernetes runner</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37490">Log level not updated when not specified</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27099">Job log adds extra newlines when using the runner Kubernetes executor</a></li>
</ul>
<p>For a list of all changes, see the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-3-stable/CHANGELOG.md">changelog</a>.</p>
<h3 id="improved-performance-for-hosted-runners-on-macos">Improved performance for hosted runners on macOS</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/macos/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/job-images/-/issues/6">Related issue</a></li></ul>
</div>

<p>We have shipped performance improvements with the recent upgrade to macOS 14.5 and Xcode 15.4. With this change, Xcode build jobs are significantly faster compared to previous job executions.</p>
<h3 id="description-and-type-added-to-cicd-catalog-component-input-details">Description and type added to CI/CD catalog component input details</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#cicd-catalog">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/426870">Related issue</a></li></ul>
</div>

<p>The details page for a CI/CD component in the catalog provides useful information about the component. In this release we’ve added two more columns to the table that shows information about available inputs. The new <strong>Description</strong> and <strong>Type</strong> columns make it much easier to understand what an input is used for, and what type of value is expected.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.3">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.3">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.3">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.2 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-2-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-2-released/</id><published>2024-07-18T00:00:00Z</published><updated>2024-07-18T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On July 18, 2024, GitLab 17.2 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-phawin-khongkhasawan">This month’s Notable Contributor: Phawin Khongkhasawan</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Phawin Khongkhasawan is a Tech Lead at <a href="https://www.jitta.com/">Jitta</a> and started contributing
to GitLab in February of 2024.
In just a few months, Phawin has merged over 20 contributions and his contributions have also been
featured in <a href="https://about.gitlab.com/releases/2024/04/18/gitlab-16-11-released/#test-project-hooks-with-the-rest-api">16.11</a>,
<a href="https://about.gitlab.com/releases/2024/05/16/gitlab-17-0-released/#customize-avatars-for-users">17.0</a>,
and <a href="https://about.gitlab.com/releases/2024/06/20/gitlab-17-1-released/#require-confirmation-for-manual-jobs">17.1</a>.</p>
<p>Phawin was first nominated by <a href="https://gitlab.com/m_frankiewicz">Magdalena Frankiewicz</a>, Product Manager at GitLab,
for improving Webhook related features like the request to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/455589">Allow triggering of project test webhooks via the API</a>.
GitLab engineers <a href="https://gitlab.com/marc_shaw">Marc Shaw</a> and <a href="https://gitlab.com/jivanvl">Jose Ivan Vargas</a>,
and GitLab Product Manager <a href="https://gitlab.com/rutshah">Rutvik Shah</a>, highlighted Phawin’s patience
in collaboration and iteration, two of <a href="https://handbook.gitlab.com/handbook/values/">GitLab’s core values</a>.</p>
<p>“I really appreciate Phawin’s work, patience and perseverance on pushing the feature to <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147052">Add order by merged_at</a>
to the finish line,” says <a href="https://gitlab.com/patrickbajao">Patrick Bajao</a>, Staff Backend Engineer at GitLab.
“It took a couple of milestones before it got merged and deployed, but he didn’t stop and he continued
to collaborate with us.”</p>
<p>A big thank you to Phawin for showing how new contributors can make an immediate impact and help
co-create GitLab.</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="log-streaming-for-kubernetes-pods-and-containers">Log streaming for Kubernetes pods and containers</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13793">Related epic</a></li></ul>
</div>

<p>In GitLab 16.1, we introduced the Kubernetes pod list and detail views. However, you still had to use third-party tools for an in-depth analysis of your workloads.
GitLab now ships with a log streaming view for pods and containers, so you can quickly check and troubleshoot issues across your environments without leaving your application delivery tool.</p>
<h3 id="gitlab-duo-disabling-input-and-output-logging-by-default">GitLab Duo disabling input and output logging by default.</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: GitLab Duo Pro, GitLab Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/data_usage/#data-retention">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13401">Related epic</a></li></ul>
</div>

<p>GitLab is now disabling AI input and output logging for GitLab Duo by default.</p>
<p>At GitLab, we aim to ensure that customers have sovereignty over their data.
We’ve now disabled input and output logging by default and will only log inputs and outputs with customers’ explicit
consent via a GitLab Support ticket.</p>
<h3 id="block-a-merge-request-by-requesting-changes">Block a merge request by requesting changes</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/reviews/#prevent-merge-when-you-request-changes">Documentation</a></li></ul>
</div>

<p>When you perform a review, you can complete it by choosing whether to <code>approve</code>, <code>comment</code>, or <code>request changes</code> (<a href="https://about.gitlab.com/releases/2024/02/15/gitlab-16-9-released/#request-changes-on-merge-requests">released in GitLab 16.9</a>). While reviewing, you might find changes that should prevent a merge request from merging until they’re resolved, and so you complete your review with <code>request changes</code>.</p>
<p>When requesting changes, GitLab now adds a merge check that prevents merging until the request for changes has been resolved. The request for changes can be resolved when the original user who requested changes re-reviews the merge request and subsequently approves the merge request. If the user who originally requested changes is unable to approve, the request for changes can be <strong>Bypassed</strong> by anyone with merge permissions, so development can continue.</p>
<p>Leave us feedback about this new feature in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/455339">issue 455339</a>.</p>
<h3 id="vulnerability-explanation">Vulnerability Explanation</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/analyze/duo/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10642">Related epic</a></li></ul>
</div>

<p>Vulnerability Explanation is now a part of GitLab Duo Chat and is generally available. With Vulnerability Explanation, you can open chat from any SAST vulnerability to better understand the vulnerability, see how it could be exploited, and review a potential fix.</p>
<h3 id="oauth-20-device-authorization-grant-support">OAuth 2.0 device authorization grant support</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/oauth2/#device-authorization-grant-flow">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/332682">Related issue</a></li></ul>
</div>

<p>GitLab now supports the <a href="https://datatracker.ietf.org/doc/html/rfc8628">OAuth 2.0 device authorization grant flow</a>. This flow makes it possible to securely authenticate your GitLab identity from input constrained devices where browser interactions are not an option.
This makes the device authorization grant flow ideal for users attempting to use GitLab services from headless servers or other devices with no, or limited, UI.
Thank you <a href="https://kitware.com/">John Parent</a> for your contribution!</p>
<h3 id="pipeline-execution-policy-type">Pipeline execution policy type</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/pipeline_execution_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13266">Related epic</a></li></ul>
</div>

<p>The pipeline execution policy type is a new type of <a href="/user/application_security/policies/">security policy</a> that allows users to support enforcement of generic CI jobs, scripts, and instructions.</p>
<p>The pipeline execution policy type enables security and compliance teams to enforce customized <a href="https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Jobs">GitLab security scanning templates</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates">GitLab or partner-supported CI templates</a>, 3rd party security scanning templates, custom reporting rules through CI jobs, or custom scripts/rules through GitLab CI.</p>
<p>The pipeline execution policy has two modes: inject and override. The <em>inject</em> mode injects jobs into the project’s CI/CD pipeline. The <em>override</em> mode replaces the project’s CI/CD pipeline configuration.</p>
<p>As with all GitLab policies, enforcement can be managed centrally by designated security and compliance team members who create and manage the policies. <a href="/user/application_security/policies/pipeline_execution_policies/">Learn how to get started by creating your first pipeline execution policy</a>!</p>
<h3 id="expanded-support-of-custom-rulesets-in-pipeline-secret-detection">Expanded support of custom rulesets in pipeline secret detection</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/pipeline/configure/#customize-analyzer-rulesets">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/336395">Related issue</a></li></ul>
</div>

<p>We have expanded support of custom rulesets in pipeline secret detection.</p>
<p>You can use two new types of passthroughs, <code>git</code> and <code>url</code>, to configure remote rulesets. This makes it easier to manage workflows such as sharing ruleset configurations across multiple projects.</p>
<p>You can also extend the default configuration with a remote ruleset by using one of those new types of passthroughs.</p>
<p>The analyzer also now supports:</p>
<ul>
<li>Chaining up to 20 passthroughs into a single configuration to replace predefined rules.</li>
<li>Including environment variables in passthroughs.</li>
<li>Setting a timeout when loading a passthrough.</li>
<li>Validating TOML syntax in ruleset configuration.</li>
</ul>
<h3 id="gitlab-duo-chat-and-code-suggestions-available-in-workspaces">GitLab Duo Chat and Code Suggestions available in workspaces</h3>
<!-- categories: Workspaces, Duo Chat, Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Pro, Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/">Documentation</a></li></ul>
</div>

<p><a href="/user/gitlab_duo_chat/">GitLab Duo Chat</a> and <a href="/user/project/repository/code_suggestions/">Code Suggestions</a> are now available in workspaces! Whether you’re seeking quick answers or efficient code improvements, Duo Chat and Code Suggestions are designed to boost productivity and streamline your workflow, making remote development in workspaces more efficient and effective than ever.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="improved-sorting-and-filtering-in-group-overview">Improved sorting and filtering in group overview</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/#view-a-group">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437013">Related issue</a></li></ul>
</div>

<p>We have updated the sorting and filtering functionality of the group overview page. The search element now stretches across the whole page, allowing you to see your search strings better. We have standardized the sorting options to <code>Name</code>, <code>Created date</code>, <code>Updated date</code>, and <code>Stars</code>.</p>
<p>We welcome feedback about these changes in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438322">issue 438322</a>.</p>
<h3 id="list-groups-that-a-group-was-invited-to-using-the-groups-api">List groups that a group was invited to using the Groups API</h3>
<!-- categories: Source Code Management, Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/groups/#list-shared-groups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/424959">Related issue</a></li></ul>
</div>

<p>We added a new endpoint to the Groups API to list the groups a group has been invited to.
This functionality complements the <a href="/api/groups/#list-shared-projects">endpoint to list the projects that a group has been invited to</a>, so you can now get a complete overview of all the groups and projects that your group has been added to.
The endpoint is rate-limited to 60 requests per minute per user.</p>
<p>Thank you <a href="https://gitlab.com/imskr">@imskr</a> for this community contribution!</p>
<h3 id="resolve-to-do-items-one-discussion-at-a-time">Resolve to-do items, one discussion at a time</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/todos/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/461111">Related issue</a></li></ul>
</div>

<p>Discussions on GitLab issues can get busy. GitLab helps you manage these conversations by raising a to-do item for comments that are relevant to you, and automatically resolves the item when you take an action on the issue.</p>
<p>Previously, when you took action on a thread in the issue, all to-do items were resolved, even if you were mentioned in several different threads. Now, GitLab resolves only the to-do item for the thread you interacted with.</p>
<h3 id="indicate-imported-items-in-ui">Indicate imported items in UI</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/import/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13825">Related epic</a></li></ul>
</div>

<p>You can import projects to GitLab from <a href="/user/import/">other SCM solutions</a>. However, it was difficult to know
if project items were imported or created on the GitLab instance.</p>
<p>With this release, we’ve added visual indicators to items imported from GitHub, Gitea, Bitbucket Server, and Bitbucket Cloud where the creator is identified as a specific
user. For example, merge requests, issues, and notes.</p>
<h3 id="deleted-branches-are-removed-from-jira-development-panel">Deleted branches are removed from Jira development panel</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/jira/development_panel/#feature-availability">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/351625">Related issue</a></li></ul>
</div>

<p>Previously, when using <a href="/integration/jira/connect-app/">GitLab for Jira Cloud app</a>, if you deleted a branch in GitLab, that branch still
appeared in Jira development panel. Selecting that branch caused a <code>404</code> error on GitLab.</p>
<p>From this release, branches deleted in GitLab are removed from the Jira development panel.</p>
<h3 id="find-project-settings-by-using-the-command-palette">Find project settings by using the command palette</h3>
<!-- categories: Settings, Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/command_palette/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/448637">Related issue</a></li></ul>
</div>

<p>GitLab offers many settings across projects, groups, the instance, and for yourself personally. To find the setting you’re looking for, you often have to spend time clicking through many different areas of the UI.</p>
<p>With this release, you can now search for project settings from the command palette. Try it out by visiting a project, selecting <strong>Search or go to…</strong>, entering command mode with <code>&gt;</code>, and typing the name of a settings section, like <strong>Protected tags</strong>. Select a result to jump right to the setting itself.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="merge-commit-message-generation-now-ga">Merge commit message generation now GA</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/duo_in_merge_requests/#generate-a-merge-commit-message">Documentation</a></li></ul>
</div>

<p>Crafting commit messages is an important part of ensuring that future users understand what and why changes were made to the codebase. It’s challenging to come up with a message that communicates your changes effectively and takes into account everything you might have changed.</p>
<p>Generation of merge commits with GitLab Duo is now Generally Available to help ensure every merge request has quality commit messages. Before you merge, select <strong>Edit commit message</strong> in the merge widget, then use the <strong>Generate commit message</strong> option to have a commit message drafted.</p>
<p>This new GitLab Duo capability is a great way to make sure your project’s commit history is a valuable resource for future developers.</p>
<h3 id="gitlab-duo-for-the-cli-now-ga">GitLab Duo for the CLI now GA</h3>
<!-- categories: GitLab CLI -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Add-ons</span>: Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/cli/">Documentation</a></li></ul>
</div>

<p>GitLab Duo for the CLI is now generally available for all users. You can now <code>ask</code> GitLab Duo to help you with finding the right <code>git</code> command for your need.</p>
<p>Use <code>glab duo ask &lt;git question&gt;</code> to have GitLab Duo provide you with formatted <code>git</code> commands to achieve your goals. The GitLab CLI then provides additional details on the commands and what they will do, including information on any flags being passed. You’re then able to run the commands and get their output directly in your workflow.</p>
<p>The <code>ask</code> command for the GitLab CLI is a great way to speed up your workflow with <code>git</code> commands you need a little extra help remembering.</p>
<h3 id="pure-ssh-transfer-protocol-for-lfs">Pure SSH transfer protocol for LFS</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/lfs/#pure-ssh-transfer-protocol">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11872">Related epic</a></li></ul>
</div>

<p>Back in September 2021, <a href="https://github.com/git-lfs/git-lfs/blob/main/CHANGELOG.md#300-24-sep-2021"><code>git-lfs</code> 3.0.0</a>
released support for using SSH as the transfer protocol instead of HTTP.
Prior to <code>git-lfs</code> 3.0.0, HTTP was the only supported transfer protocol
which meant using <code>git-lfs</code> at GitLab was not possible for some users.
With this release, we’re very excited to offer the ability to
enable support for SSH over HTTP as the transfer protocol for <code>git-lfs</code>.</p>
<p>Thank you to <a href="https://gitlab.com/KyleFromKitware">Kyle Edwards</a> and
<a href="https://gitlab.com/joe-snyder">Joe Snyder</a> for this contribution!</p>
<h3 id="deployments-and-approvals-to-protected-environments-trigger-an-audit-event">Deployments and approvals to protected environments trigger an audit event</h3>
<!-- categories: Continuous Delivery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/#continuous-delivery">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/456687">Related issue</a></li></ul>
</div>

<p>An accessible record of deployment events, like deployment approvals, is essential for compliance management. Until now, GitLab did not provide deployment-related audit events, so compliance managers had to use custom tooling or search for this data in GitLab directly. GitLab now provides three audit events:</p>
<ul>
<li><code>deployment_started</code> records who started a deployment job, and when it was started.</li>
<li><code>deployment_approved</code> records who approved a deployment job, and when it was approved.</li>
<li><code>deployment_rejected</code> records who rejected a deployment job, and when it was rejected.</li>
</ul>
<h3 id="assigning-frameworks-at-subgroup-compliance-center">Assigning frameworks at subgroup compliance center</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate, Premium</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_projects_report/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/469004">Related epic</a></li></ul>
</div>

<p>The compliance center is the central location for compliance teams to
manage their compliance standards adherence reporting, violations reporting,
and compliance frameworks for their group.</p>
<p>Previously, all of the associated features of the compliance center were only available for top-level groups.
This meant that for subgroups, owners didn’t have access to any of the functionality provided by the compliance center on the top-level group.</p>
<p>To help address these key pain points, we’ve added the ability to assign and unassign compliance frameworks for subgroups. Now, group owners can
visualize their compliance posture at the subgroup level in addition to the full top-group-level compliance centre dashboard that was already available.</p>
<h3 id="expand-scan-execution-policies-to-run-latest-templates-for-each-gitlab-analyzer">Expand &ldquo;Scan Execution Policies&rdquo; to run <code>latest</code> templates for each GitLab analyzer</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415427">Related issue</a></li></ul>
</div>

<p><a href="/user/application_security/policies/scan_execution_policies/">Scan execution policies</a> have been expanded to allow you to choose between <code>default</code> and <code>latest</code> GitLab templates when defining the policy rules. While <code>default</code> reflects the current behavior, you may update your policy to <code>latest</code> to use features available only in the latest template of the given security analyzer.</p>
<p>By utilizing the <code>latest</code> template, you may now ensure scans are enforced on merge request pipelines, along with any other rules enabled in the <code>latest</code> template. Previously this was limited to branch pipelines or a specified schedule.</p>
<p>Note: Be sure to review all changes between <code>default</code> and <code>latest</code> templates before modifying the policy to ensure this suits your needs!</p>
<h3 id="identify-dates-when-multiple-access-tokens-expire">Identify dates when multiple access tokens expire</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467313">Related issue</a></li></ul>
</div>

<p>Administrators can now run a script that identifies dates when multiple access tokens expire. You can use this script in combination with other scripts on the <a href="/security/tokens/token_troubleshooting/">token troubleshooting page</a> to identify and extend large batches of tokens that might be approaching their expiration date, if token rotation has not yet been implemented.</p>
<h3 id="oauth-authorization-screen-improvements">OAuth authorization screen improvements</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/oauth_provider/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/462655">Related issue</a></li></ul>
</div>

<p>The OAuth authorization screen now more clearly describes the authorization you are granting. It also includes a “verified by GitLab” section for applications that are provided by GitLab. Previously, the user experience was the same, regardless of whether an application was provided by GitLab or not. This new functionality provides an extra layer of trust.</p>
<h3 id="streamlined-instance-administrator-setup">Streamlined instance administrator setup</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/458985">Related issue</a></li></ul>
</div>

<p>The administrator setup experience for a new install of GitLab has been streamlined and made more secure. The initial administrator root email address is now randomzied, and administrators are forced to change this email address to an account that they can access. Previously, this step could have been delayed, and an administrator might forget to change the email address.</p>
<h3 id="user-api-added-to-the-snowflake-data-connector">User API added to the Snowflake Data Connector</h3>
<!-- categories: Audit Events, Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/snowflake/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13004">Related epic</a></li></ul>
</div>

<p>In GitLab 17.2, we’ve added support for the <a href="/api/users/#list-all-users">Users API</a> to the <a href="https://app.snowflake.com/marketplace/listing/GZTYZXESENG/gitlab-gitlab-data-connector">GitLab Data Connector</a>,
which is available in the Snowflake Marketplace app. You can now stream user data from self-managed GitLab instances to Snowflake using the Users API.</p>
<h3 id="simplified-setup-for-google-cloud-integration">Simplified setup for Google Cloud integration</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/tutorials/set_up_gitlab_google_integration/#secure-your-usage-with-google-cloud-identity-and-access-management-iam">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/454343">Related issue</a></li></ul>
</div>

<p>Google Cloud CLI commands are now natively available when setting up workload identity federation for the Google Cloud IAM integration. Previously, the guided setup used a script downloaded through cURL commands. Also, help text has been added to better describe the setup process. These improvements help group owners set up the Google Cloud IAM integration more quickly.</p>
<h3 id="separate-wiki-page-title-and-path-fields">Separate wiki page title and path fields</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/30758">Related issue</a></li></ul>
</div>

<p>In GitLab 17.2, wiki page titles are separate from their paths. In previous releases, if a page title changed, the path would also change, which could cause links to the page to break. Now, if a wiki page’s title changes, the path remains unchanged. Even if a wiki page path changes, an automatic redirect is set up to prevent broken links.</p>
<h3 id="improvements-to-the-wiki-sidebar">Improvements to the wiki sidebar</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/281570">Related issue</a></li></ul>
</div>

<p>GitLab 17.2 adds several enhancements to how wikis display the sidebar. Now, a wiki displays all pages in the sidebar (up to 5000 pages), displays a table of contents (TOC), and provides a search bar to quickly find pages.</p>
<p>Previously, the sidebar lacked a TOC, making it challenging to navigate to sections of a page. The new TOC feature helps to see the page structure clearly, as well as navigate quickly to different sections, greatly improving usability.</p>
<p>The addition of a search bar makes discovering content easier. And because the sidebar now displays all pages, you can seamlessly browse an entire wiki.</p>
<h3 id="document-modules-in-the-terraform-module-registry">Document modules in the Terraform module registry</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/terraform_module_registry/#view-terraform-modules">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/451054">Related issue</a></li></ul>
</div>

<p>The Terraform module registry now displays Readme files! With this highly requested feature, you can transparently document the purpose, configuration, and requirements of each module.</p>
<p>Previously, you had to search other sources for this critical information, which made it difficult to properly evaluate and use modules. Now, with the module documentation readily available, you can quickly understand a module’s capabilities before you use it. This accessibility empowers you to confidently share and reuse Terraform code across your organization.</p>
<h3 id="add-type-attribute-to-issues-events-webhook">Add type attribute to issues events webhook</h3>
<!-- categories: Team Planning, Notifications, Incident Management, Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#work-item-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467415">Related issue</a></li></ul>
</div>

<p>Issues, tasks, incidents, requirements, objectives, and key results
all trigger payloads under the <strong>Issues Events</strong> webhook category. Until now, there has been no way to quickly determine the type of object that triggered the webhook within the event payload. This release introduces an <code>object_attributes.type</code> attribute available on payloads within the <strong>Issues events</strong>, <strong>Comments</strong>, <strong>Confidential issues events</strong>, and <strong>Emoji events</strong> triggers.</p>
<h3 id="gitlab-advanced-sast-available-in-beta-for-go-java-and-python">GitLab Advanced SAST available in Beta for Go, Java, and Python</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/gitlab_advanced_sast/">Documentation</a></li></ul>
</div>

<p>GitLab Advanced SAST is now available as a Beta feature for Ultimate customers.
Advanced SAST uses cross-file, cross-function analysis to deliver higher-quality results.
It now supports Go, Java, and Python.</p>
<p>During the Beta phase, we recommend running Advanced SAST in test projects, not replacing existing SAST analyzers.
To enable Advanced SAST, see the <a href="/user/application_security/sast/gitlab_advanced_sast/#turn-on-gitlab-advanced-sast">instructions</a>.
Starting in GitLab 17.2, Advanced SAST is included in the <a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/SAST.latest.gitlab-ci.yml"><code>SAST.latest</code> CI/CD template</a>.</p>
<p>This is part of our iterative <a href="https://about.gitlab.com/blog/oxeye-joins-gitlab-to-advance-application-security-capabilities/">integration of Oxeye technology</a>.
In upcoming releases, we plan to move Advanced SAST to General Availability, add support for <a href="https://gitlab.com/groups/gitlab-org/-/epics/14312">other languages</a>, and introduce new UI elements to trace how vulnerabilities flow.
We welcome any testing feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/466322">issue 466322</a>.</p>
<h3 id="api-security-testing-now-supports-signed-authentication-requests">API Security Testing now supports signed authentication requests</h3>
<!-- categories: API Security -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/api_security_testing/configuration/variables/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/458825">Related issue</a></li></ul>
</div>

<p>API Security already has support for “overrides” which can modify the requests sent by the scanner. However these overrides must be set ahead of time and cannot change based on the request itself. GitLab 17.2 adds a “per-request script” (<code>APISEC_PER_REQUEST_SCRIPT</code>), which allows a user to provide a C# script that is called prior to sending each request. This provides support for “signing” the request with a secret as a form of authentication.</p>
<h3 id="container-scanning-continuous-vulnerability-scanning-os-support">Container Scanning: Continuous Vulnerability Scanning OS support</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/container_scanning/continuous_container_scanning/#supported-package-types">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10174">Related issue</a></li></ul>
</div>

<p>As a follow up to the Continuous Vulnerability Scanning for Container scanning MVC, during 17.2 we added support for APK and RPM operating system package versions.</p>
<p>This enhancement allows our analyzer to fully support Continuous Vulnerability Scans for Container Scanning advisories by comparing the package versions for <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428703">APK</a> and <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428941">RPM</a> operating system purl types.</p>
<p>As a note, RPM versions containing a caret (<code>^</code>) are not supported. Work to support these versions is being tracked in this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/459969">issue</a>.</p>
<h3 id="dast-analyzer-updates">DAST analyzer updates</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/checks/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13411">Related issue</a></li></ul>
</div>

<p>During the 17.2 release milestone, we published the following updates.</p>
<ol>
<li>We added three new checks:</li>
</ol>
<ul>
<li>Check 506.1 is a passive check that identifies request URLs that are likely compromised by the Polyfill.io CDN takeover.</li>
<li>Check 384.1 is a passive check that identifies session fixation weaknesses, which could allow a valid session identifier to be reused by malicious actors.</li>
<li>Check 16.11 is an active check that identifies when the TRACE HTTP debugging method is enabled on a production server, which could inadvertently expose sensitive information.</li>
</ul>
<ol>
<li>We addressed the following bugs to reduce false positives:</li>
</ol>
<ul>
<li>DAST checks 614.1 (Sensitive cookie without Secure attribute) and 1004.1 (Sensitive cookie without HttpOnly attribute) no longer create findings when a site has cleared a cookie by setting an expiry date in the past.</li>
<li>DAST check 1336.1 (Server-Side Template Injection) no longer relies on a 500 HTTP response status code to determine attack success.</li>
</ul>
<ol>
<li>We added the following enhancements:</li>
</ol>
<ul>
<li>All response headers are now presented as evidence in a DAST vulnerability finding. This additional context reduces time spent on triaging findings.</li>
<li>Sitemap.xml files are now crawled for additional URLs, leading to better coverage of target websites.</li>
</ul>
<h3 id="api-fuzz-testing-now-supports-signed-authentication-requests">API Fuzz Testing now supports signed authentication requests</h3>
<!-- categories: Fuzz Testing -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/api_fuzzing/configuration/variables/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/458825">Related issue</a></li></ul>
</div>

<p>API Fuzzing already has support for “overrides” which can modify the requests sent by the scanner. However these overrides must be set ahead of time and cannot change based on the request itself. GitLab 17.2 adds a “per-request script” (<code>FUZZAPI_PER_REQUEST_SCRIPT</code>), which allows a user to provide a C# script that is called prior to sending each request. This provides support for “signing” the request with a secret as a form of authentication.</p>
<h3 id="secret-push-protection-now-available-for-self-managed-and-improved-warnings-of-potential-leaks">Secret push protection now available for Self-Managed, and improved warnings of potential leaks</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13107">Related epic</a></li></ul>
</div>

<p>During the 17.2 release milestone, we published the following updates:</p>
<ul>
<li>Secret Push Protection beta is now available for self-managed customers. After an administrator <a href="/user/application_security/secret_detection/secret_push_protection/#allow-the-use-of-secret-push-protection-in-your-gitlab-instance">enables the feature instance-wide</a>, follow our documentation to <a href="/user/application_security/secret_detection/secret_push_protection/#enable-secret-push-protection-in-a-project">enable push protection</a> on your projects.</li>
<li><a href="/user/application_security/secret_detection/client/">Warnings for potential leaks in text content</a> have been enriched with more detail, making it easier to understand which type of secret is about to be leaked in a description or comment in either an issue, epic, or MR.</li>
</ul>
<h3 id="sort-options-for-pipeline-schedules">Sort options for pipeline schedules</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/schedules/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/37246">Related issue</a></li></ul>
</div>

<p>You can now sort the pipeline schedules list by description, ref, next run, created date, and updated date.</p>
<h3 id="ruleschangescompare_to-now-supports-cicd-variables"><code>rules:changes:compare_to</code> now supports CI/CD variables</h3>
<!-- categories: Pipeline Composition, Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#ruleschangescompare_to">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/369916">Related issue</a></li></ul>
</div>

<p>In GitLab 15.3 we introduced the <a href="/ci/yaml/#ruleschangescompare_to"><code>compare_to</code> keyword</a> for <code>rules:change</code>. This made it possible to define the exact ref to compare against. Beginning in GitLab 17.2, you can now use CI/CD variables with this keyword, making it easier to define and reuse <code>compare_to</code> values in multiple jobs.</p>
<h3 id="gitlab-runner-172">GitLab Runner 17.2</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re releasing GitLab Runner 17.2 today! GitLab Runner is the lightweight, highly scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29222">GitLab Runner fleeting plugin for AWS EC2 instances (GA)</a></li>
<li><a href="https://gitlab.com/gitlab-org/charts/gitlab-runner/-/issues/545">Permit configuration of Runner <code>livenessProbe</code> and <code>readinessProbe</code></a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28867">Ability to enable and disable the <code>umask 0000</code> command for the Kubernetes executor</a></li>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/203">Support for Red Hat OpenShift 4.16 for the GitLab Runner Operator</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/30876">GitLab Runner upgrade removes all cache volumes</a></li>
</ul>
<p>For a list of all changes, see the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-2-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h3 id="new-agent-authorization-strategy-for-workspaces">New agent authorization strategy for workspaces</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/gitlab_agent_configuration/">Documentation</a></li></ul>
</div>

<p>With this release, we’ve implemented a new authorization strategy for workspaces to address the limitations of the legacy strategy while providing group owners and administrators more control and flexibility. With the new authorization strategy, group owners and administrators can control which cluster agents to use for hosting workspaces.</p>
<p>To ensure a smooth transition, users on the legacy authorization strategy are migrated automatically to the new strategy. Existing agents that support workspaces are allowed automatically in the root group where these agents are located. This migration also occurs even if these agents have been allowed in different groups in a root group.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.2">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.2">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.2">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.1 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-1-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-1-released/</id><published>2024-06-20T00:00:00Z</published><updated>2024-06-20T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On June 20, 2024, GitLab 17.1 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination! 🙌</p>
<p>Shubham Kumar <a href="https://gitlab.com/dashboard/issues?sort=due_date_desc&amp;state=closed&amp;assignee_username%5B%5D=imskr&amp;milestone_title=17.1">completed 7 issues during 17.1</a>
and has been consistently contributing to GitLab since 2021.
He has now reached over 50 merged contributions!
Shubham is a <a href="https://contributors.gitlab.com/docs/previous-heroes">GitLab Hero</a> and a former Google Summer of Code contributor.</p>
<p>Shubham was nominated by <a href="https://gitlab.com/lohrc">Christina Lohr</a>, Senior Product Manager at GitLab.
“Shubham has helped with a lot of issues over the past weeks and months, specifically with closing gaps in our API offering,” says Christina.
“I cannot write release posts fast enough for all the additions that Shubham is pushing through!”</p>
<p>“The open-source community is amazing,” says Shubham.
“I am grateful for the opportunity and recognition, and I look forward to continuing my contributions to the GitLab platform.”</p>
<p>Joe Snyder was nominated by <a href="https://gitlab.com/phikai">Kai Armstrong</a>, Principal Product Manager at GitLab,
for building a much requested feature for <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/24733">restricting diffs from being included in emails</a>.
This contribution took more than 10 merge requests going back to GitLab 15.3.
“This is a massive feature that’s taken many milestones, complicated migrations, and changes to the product to enable it’s support,” says Kai.
“Joe worked tirelessly with many maintainers and collaborators over the milestones to get this work done.”</p>
<p><a href="https://gitlab.com/jocelynjane">Jocelyn Eillis</a>, Product Manager at GitLab, supported Joe’s nomination
by highlighting additional work to fix a bug where <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/361438">nested variables in <code>build:resource_group</code> are not expanded</a>.
“This bug had 23 upvotes in addition to documented customer demand in the issue itself,” says Jocelyn.
“The quick turnaround on reviewer feedback means we were able to get this into GitLab 17.1!”</p>
<p>This is Joe’s second GitLab MVP after previously being awarded in <a href="https://about.gitlab.com/releases/2023/11/16/gitlab-16-6-released/#mvp">GitLab 16.6</a>.
Joe is a Senior R&amp;D Engineer at <a href="https://www.kitware.com/">Kitware</a> and has been contributing to GitLab since 2021.</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="model-registry-available-in-beta">Model registry available in beta</h3>
<!-- categories: MLOps -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/ml/model_registry/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9423">Related epic</a></li></ul>
</div>

<p>GitLab now officially supports model registry in beta as a first-class concept. You can add and edit models directly via the UI, or use the MLflow integration to use GitLab as a model registry backend.</p>
<p>A model registry is a hub that helps data science teams manage machine learning models and their related metadata. It serves as a centralized location for organizations to store, version, document, and discover trained machine learning models. It ensures better collaboration, reproducibility, and governance over the entire model lifecycle.</p>
<p>We think of the model registry as a cornerstone concept that enables teams to collaborate, deploy, monitor, and continuously train models, and are very interested in your feedback. Please feel free to drop us a note in our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/465405">feedback issue</a> and we’ll get back in touch!</p>
<h3 id="see-multiple-gitlab-duo-code-suggestions-in-vs-code">See multiple GitLab Duo Code Suggestions in VS Code</h3>
<!-- categories: Editor Extensions, Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/#view-multiple-code-suggestions">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/1325">Related issue</a></li></ul>
</div>

<p>GitLab Duo Code Suggestions in VS Code will now show you if there are multiple suggestions available. Simply hover over the suggestion and use the arrows or keyboard shortcut to cycle through the suggestions.</p>
<h3 id="secret-push-protection-available-in-beta">Secret Push Protection available in beta</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/secret_push_protection/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12729">Related issue</a></li></ul>
</div>

<p>If a secret, like a key or an API token, is accidentally committed to a Git repository, anyone with repository access can impersonate the user of the secret for malicious purposes. To address this risk, most organizations require exposed secrets to be revoked and replaced, but you can save remediation time and reduce risk by preventing secrets from being pushed in the first place.</p>
<p>Secret push protection checks the content of each commit pushed to GitLab. <a href="/user/application_security/secret_detection/secret_push_protection/#detected-secrets">If any secrets are detected</a>, the push is blocked and displays information about the commit, including:</p>
<ul>
<li>The commit ID that contains the secret.</li>
<li>The filename and line number that contains the secret.</li>
<li>The type of secret.</li>
</ul>
<p>Need to bypass secret push protection for testing? When you skip secret push detection, GitLab logs an audit event so you can investigate.</p>
<p>Secret push protection is available on GitLab.com and for Dedicated customers as a Beta feature and can be enabled on a <a href="/user/application_security/secret_detection/secret_push_protection/#enable-secret-push-protection-in-a-project">per project basis</a>. You can help us improve secret push protection by providing feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/467408">issue 467408</a>.</p>
<h3 id="gitlab-runner-autoscaler-is-generally-available">GitLab Runner Autoscaler is generally available</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner/runner_autoscale/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29221">Related issue</a></li></ul>
</div>

<p>In earlier versions of GitLab, some customers needed an autoscaling solution for GitLab Runner on virtual machine instances on public cloud platforms. These customers had to rely on the legacy <a href="https://docs.gitlab.com/runner/configuration/autoscale.html">Docker Machine executor</a> or custom solutions stitched together by using cloud provider technologies.</p>
<p>Today, we’re pleased to announce the general availability of the GitLab Runner Autoscaler. The GitLab Runner Autoscaler is composed of GitLab-developed taskscaler and <a href="https://docs.gitlab.com/runner/fleet_scaling/fleeting.html">fleeting</a> technologies and the cloud provider plugin for Google Compute Engine.</p>
<h3 id="gitlab-connector-application-now-available-on-the-snowflake-marketplace">GitLab connector application now available on the Snowflake Marketplace</h3>
<!-- categories: Audit Events, Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/snowflake/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13004">Related epic</a></li></ul>
</div>

<p>Audit events are created and stored in GitLab. Before this release, audit events could only be accessed from in GitLab, with results reviewed using the GitLab UI or set a streaming destination to receive all audit events as structured JSON.</p>
<p>However, customers also wanted the ability to have audit events in third-party destinations (such as SIEM solutions like Snowflake) to make it easier to:</p>
<ul>
<li>See, combine, manipulate, and report on all of the audit event data from an organization’s multiple systems, including GitLab.</li>
<li>Look only at specific audit events that they care about so that they can quickly answer the questions they are interested in.</li>
<li>Have a full picture of what goes on inside GitLab, and be able to review it after the fact.</li>
</ul>
<p>To help customers with these tasks, we have created a GitLab connector application for the <a href="https://app.snowflake.com/marketplace/listing/GZTYZXESENG/gitlab-gitlab-data-connector">Snowflake Marketplace</a>, which uses the Audit events API.
To make use of this functionality, customers must deploy and manage the application using the Snowflake Marketplace.</p>
<h3 id="improved-wiki-user-experience">Improved wiki user experience</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/452225">Related issue</a></li></ul>
</div>

<p>The wiki feature in GitLab 17.1 provides a more unified and efficient workflow:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/281830">Easier and quicker cloning</a> with a new repository clone button. This improves collaboration, and speeds up access to the wiki content for editing or viewing.</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/335169">A more obvious delete option</a> in a more discoverable location. This reduces the time spent searching for it, and minimizes potential errors or confusion when managing wiki pages.</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/221061">Allowing empty pages to be valid</a>, improving flexibility. Create empty placeholders when you need them. Focus on better planning and organization of wiki content, and fill in the empty pages later.</li>
</ul>
<p>These enhancements improve ease of use, discoverability, and content management in your wiki’s workflow. We want your wiki experience to be efficient and user-friendly. By making cloning repositories more accessible, relocating key options for better visibility, and allowing for the creation of empty placeholders, we’re refining our platform to better meet your users’ needs.</p>
<h3 id="new-value-stream-management-report-generator-tool">New Value Stream Management report generator tool</h3>
<!-- categories: Value Stream Management, DORA Metrics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/#schedule-reports">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10880">Related issue</a></li></ul>
</div>

<p>With the addition of the new Reports Generation Tool for Value Stream Management, we empower decision-makers to be more efficient and effective in the software development life cycle (SDLC) optimization.</p>
<p>You can now schedule <a href="https://gitlab.com/components/vsd-reports-generator#example-for-monthly-executive-value-streams-report">DevSecOps comparison metrics reports</a> or the <a href="https://about.gitlab.com/releases/2024/05/16/gitlab-17-0-released/#ai-impact-analytics-in-the-value-streams-dashboard">AI Impact analytics</a> report to be delivered automatically, proactively, and with relevant information in GitLab issues. With scheduled reports, managers can focus on analyzing insights and making informed decisions, rather than spending time manually searching for the right dashboard with the required data.</p>
<p>You can access the scheduled reports tool using the <a href="https://gitlab.com/explore/catalog">CI/CD Catalog</a>.</p>
<h3 id="container-images-linked-to-signatures">Container images linked to signatures</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/container_registry/#container-image-signatures">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/7856">Related epic</a></li></ul>
</div>

<p>The GitLab container registry now associates signed container images with their signatures. With this improvement, users can more easily:</p>
<ul>
<li>Identify which images are signed and which are not.</li>
<li>Find and validate the signatures that are associated with a container image.</li>
</ul>
<p>This improvement is generally available only on GitLab.com. Self-managed support is in beta and requires users to enable the
<a href="/administration/packages/container_registry_metadata_database/">next-generation container registry</a>, which is also in beta.</p>
<h3 id="require-confirmation-for-manual-jobs">Require confirmation for manual jobs</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/job_control/#require-confirmation-for-manual-jobs">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/18906">Related issue</a></li></ul>
</div>

<p>Manual jobs can be used to trigger highly critical operations in your CI pipeline, such as deploying to production. With this release, you can now configure a manual job to require confirmation before it runs. Use <code>manual_confirmation</code> with <code>when: manual</code> to display a confirmation dialog in the UI when a job is run manually. Requiring confirmation for manual jobs provides an additional layer of security and control.</p>
<p>Special thanks to <a href="https://gitlab.com/lifez">Phawin</a> for this community contribution!</p>
<h3 id="runner-fleet-dashboard-for-groups">Runner fleet dashboard for groups</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/runner_fleet_dashboard_groups/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/424789">Related issue</a></li></ul>
</div>

<p>Operators of self-managed runner fleets at the group level need observability and the ability to quickly answer critical questions about their runner fleet infrastructure at a glance. With the runner fleet dashboard for groups, you directly have runner fleet observability and actionable insights in the GitLab UI. You can now quickly determine the runner health, and gain insights into runner usage metrics as well as CI/CD job queue service capabilities, in your organization’s target service-level objectives.</p>
<p>Customers on GitLab.com can use all of the fleet dashboard metrics available for groups today. Self-managed customers can use most of the fleet dashboard metrics, but must configure the ClickHouse analytics database to use the <strong>Runner usage</strong> and <strong>Wait time to pick a job</strong> metrics.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>GitLab 17.1 includes packages for supporting <a href="/install/package/">Ubuntu Noble 24.04</a>.</p>
<h3 id="new-graphql-api-argument-markedfordeletionon-for-groups-and-projects">New GraphQL API argument <code>markedForDeletionOn</code> for groups and projects</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#querygroups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/463809">Related issue</a></li></ul>
</div>

<p>You can now use the new GraphQL API argument <code>markedForDeletionOn</code> to list the groups or projects that were marked for deletion at a specific date.</p>
<p>Thank you <a href="https://gitlab.com/imskr">@imskr</a> for this community contribution!</p>
<h3 id="new-placeholders-for-group-and-project-badges">New placeholders for group and project badges</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/badges/#placeholders">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/22278">Related issue</a></li></ul>
</div>

<p>You can now create badge links and image URLs using four new placeholders:</p>
<ul>
<li><code>%{project_namespace}</code> - referencing the full path of a project namespace</li>
<li><code>%{group_name}</code> - referencing the group name</li>
<li><code>%{gitlab_server}</code> - referencing the group’s or project’s server name</li>
<li><code>%{gitlab_pages_domain}</code> - referencing the group’s or project’s domain name</li>
</ul>
<p>Thank you <a href="https://gitlab.com/TamsilAmani">@TamsilAmani</a> for this community contribution!</p>
<h3 id="new-latest_tag-placeholder-for-badges">New <code>%{latest_tag}</code> placeholder for badges</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/badges/#placeholders">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/26420">Related issue</a></li></ul>
</div>

<p>You can now create badge links and image URLs using a <code>%{latest_tag}</code> placeholder. This placeholder references the latest tag that was published for a repository.</p>
<p>Thank you <a href="https://gitlab.com/TamsilAmani">@TamsilAmani</a> for this community contribution!</p>
<h3 id="filter-groups-by-marked_for_deletion_on-date-with-the-groups-api">Filter groups by <code>marked_for_deletion_on</code> date with the Groups API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/groups/#list-groups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/429315">Related issue</a></li></ul>
</div>

<p>You can now filter responses in the Groups API using the attribute <code>marked_for_deletion_on</code>, which returns groups that were marked for deletion at a specific date.</p>
<p>Thank you <a href="https://gitlab.com/imskr">@imskr</a> for this community contribution!</p>
<h3 id="list-contributed-projects-of-a-user-with-graphql-api">List contributed projects of a user with GraphQL API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#usercontributedprojects">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/450191">Related issue</a></li></ul>
</div>

<p>You can now use the new GraphQL API field <code>User.contributedProjects</code> to list the projects a user has contributed to.</p>
<p>Thank you <a href="https://gitlab.com/yasuk">@yasuk</a> for this community contribution!</p>
<h3 id="add-members-by-username-with-the-members-api">Add members by username with the Members API</h3>
<!-- categories: User Management, Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/group_members/#add-a-group-member">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/28208">Related issue</a></li></ul>
</div>

<p>Previously, when using the Members API, you could add members to groups and projects only by their user ID. With this release, you can now add members also by their username.</p>
<p>Thank you <a href="https://gitlab.com/imskr">@imskr</a> for this community contribution!</p>
<h3 id="updated-sorting-and-filtering-functionality-in-explore">Updated sorting and filtering functionality in Explore</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/#explore-all-projects-on-an-instance">Documentation</a></li></ul>
</div>

<p>We have updated the sorting and filtering functionality of the group and project Explore pages. The filtering bar is now wider for better readability.</p>
<p>In the Explore page for projects, you can now use standardized sorting options that include <strong>Name</strong>, <strong>Created date</strong>, <strong>Updated date</strong>, and <strong>Stars</strong>, and a navigation element to sort in ascending or descending order. The language filter has moved to the filter menu. A new <strong>Inactive</strong> tab displays archived projects for a more focused search. Additionally, you can use a <strong>Role</strong> filter to search for projects you are the Owner of.</p>
<p>In the Explore page for groups, we have standardized the sorting options to include <strong>Name</strong>, <strong>Created date</strong>, and <strong>Updated date</strong>, and added a navigation element to sort in ascending or descending order.</p>
<p>We welcome feedback about these changes in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438322">issue 438322</a>.</p>
<h3 id="improved-visibility-level-selection">Improved visibility level selection</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/public_access/#change-group-visibility">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/455668">Related issue</a></li></ul>
</div>

<p>Previously, a group’s or project’s general settings displayed only permitted visibility levels. This view often confused users who tried to understand why the other options were not available, and could lead to information being displayed incorrectly. The new view shows all visibility levels, greying out the options that are not available for selection. In addition, a popover gives further context about why an option is not available. For example, a visibility level could be unavailable because an administrator restricted it, or it would cause a conflict with a project’s or parent group’s visibility setting.</p>
<p>We hope these changes help you resolve the conflicts in selecting your desired visibility option. Thank you <a href="https://gitlab.com/gerardo-navarro">@gerardo-navarro</a> for this community contribution!</p>
<h3 id="filter-projects-by-marked_for_deletion_on-date-with-the-projects-api">Filter projects by <code>marked_for_deletion_on</code> date with the Projects API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/projects/#list-all-projects">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/463939">Related issue</a></li></ul>
</div>

<p>You can now filter responses in the Projects API using the attribute <code>marked_for_deletion_on</code>, which returns projects that were marked for deletion at a specific date.</p>
<p>Thank you <a href="https://gitlab.com/imskr">@imskr</a> for this community contribution!</p>
<h3 id="audit-event-on-webhook-creation">Audit event on webhook creation</h3>
<!-- categories: Notifications, Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/#webhooks">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/8068">Related issue</a></li></ul>
</div>

<p>Audit events make a record of important actions that are performed in GitLab. Until now, no audit event was created when a system, group, or
project webhook was added by a user.</p>
<p>In this release, we’ve added an audit event for when a user creates a system, group, or project webhook.</p>
<h3 id="use-rest-api-to-cancel-a-running-direct-transfer-migration">Use REST API to cancel a running direct transfer migration</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/bulk_imports/#cancel-a-migration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438281">Related issue</a></li></ul>
</div>

<p>Until now cancelling a running direct transfer migration
<a href="/user/group/import/direct_transfer_migrations/#cancel-a-running-migration">required access to a Rails console</a>.</p>
<p>In this release, we’ve added the ability for Administrators to cancel a migration by using the REST API.</p>
<h3 id="test-group-hooks-with-the-rest-api">Test group hooks with the REST API</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/group_webhooks/#trigger-a-test-group-hook">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/455589">Related issue</a></li></ul>
</div>

<p>Previously, you could test only project hooks with the REST API. With this release, you can also trigger test hooks for specified groups.</p>
<p>This endpoint has a special rate limit of three requests per minute per group hook. To disable this limit on self-managed GitLab and GitLab Dedicated, an administrator can disable the <code>web_hook_test_api_endpoint_rate_limit</code> feature flag.</p>
<p>Thanks to <a href="https://gitlab.com/lifez">Phawin</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150486">this community contribution</a>!</p>
<h3 id="re-import-a-chosen-project-relation-by-using-the-api">Re-import a chosen project relation by using the API</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/project_import_export/#import-project-resources">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/455889">Related issue</a></li></ul>
</div>

<p>When importing projects from export files with many items of the same type (for example, merge requests or pipelines), sometimes some of those items aren’t imported.</p>
<p>In this release, we’ve added an API endpoint that re-imports a named relation, skipping items that have already been imported. The API requires both:</p>
<ul>
<li>A project export archive.</li>
<li>A type. Either issues, merge requests, pipelines, or milestones.</li>
</ul>
<h3 id="keep-inherited-membership-structure-when-importing-by-direct-transfer">Keep inherited membership structure when importing by direct transfer</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/direct_transfer_migrations/#user-membership-mapping">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/458834">Related issue</a></li></ul>
</div>

<p>Until now, <a href="/user/project/members/#membership-types">inherited memberships</a> were not imported reliably when migrating
by direct transfer. This meant that inherited members of projects were imported as direct members.</p>
<p>From this release, GitLab now first migrates group membership before migrating project memberships. This replicates the inherited memberships on
the source GitLab instance.</p>
<h3 id="use-the-rest-api-to-set-custom-webhook-headers">Use the REST API to set custom webhook headers</h3>
<!-- categories: Source Code Management, Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/project_webhooks/#set-a-custom-header">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/455528">Related issue</a></li></ul>
</div>

<p>In GitLab 16.11, we introduced the ability to
<a href="https://about.gitlab.com/releases/2024/04/18/gitlab-16-11-released/#custom-webhook-headers">add custom headers when you create or edit a webhook</a>.</p>
<p>With this release, you can now use the GitLab REST API to set custom webhook headers.</p>
<p>Thanks to <a href="https://gitlab.com/Taucher2003">Niklas</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153768">this community contribution</a>!</p>
<h3 id="backups-include-external-merge-request-diffs-stored-on-disk">Backups include external merge request diffs stored on disk</h3>
<!-- categories: Backup/Restore of GitLab instances -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/backup_restore/backup_gitlab/#backup-command">Documentation</a></li></ul>
</div>

<p>The <code>gitlab-backup</code> tool now supports backing up <a href="/administration/merge_request_diffs/">external merge request diffs</a> stored on local disk. Note, the <code>gitlab-backup</code> tool does not backup files stored on object storage. Therefore, if external merge diffs are stored on object storage they will need to be backed up manually.</p>
<p>The <code>backup-utility</code> for Cloud Native Hybrid environments already supported backing up external merge request diffs and this functionality remains unchanged.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="disable-diff-previews-in-code-review-emails">Disable diff previews in code review emails</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/manage/#disable-diff-previews-in-email-notifications">Documentation</a></li></ul>
</div>

<p>When you review code in a merge request and comment on a line of code, GitLab includes a few lines of the diff in the email notification to participants. Some organizational policies treat email as a less secure system, or might not control their own infrastructure for email. This can present risks to IP or access control of source code.</p>
<p>New settings are available in groups and projects to enable organizations to remove diff previews from merge request emails. This can help ensure that sensitive information isn’t available outside of GitLab.</p>
<p>A gigantic thank you to <a href="https://gitlab.com/joe-snyder">Joe Snyder</a> for contributing this!</p>
<h3 id="administrators-can-search-users-by-partial-email-address">Administrators can search users by partial email address</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/admin_area/#administering-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/20381">Related issue</a></li></ul>
</div>

<p>Administrators can now search users by partial email address in the User overview of the Admin Area. For instance, you can filter users by a specific email domain to find all users from a distinct institution. This feature is limited to administrators to prevent unprivileged users from accessing email addresses of other accounts.</p>
<p>Thanks <a href="https://gitlab.com/zzaakiirr">@zzaakiirr</a> for this community contribution!</p>
<h3 id="show-release-rss-icon-on-releases-page">Show Release RSS icon on Releases page</h3>
<!-- categories: Release Orchestration -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/releases/#track-releases-with-an-rss-feed">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/30988">Related issue</a></li></ul>
</div>

<p>Do you need to be notified when a new release is posted? GitLab now provides an RSS feed for releases. You can subscribe to a release feed with the RSS icon on the project release page.</p>
<p>Thanks to <a href="https://gitlab.com/schurzi">Martin Schurz</a> for the contribution!</p>
<h3 id="new-permissions-for-custom-roles">New permissions for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391760">Related issue</a></li></ul>
</div>

<p>In GitLab 17.1, you can create custom roles with the following new permissions:</p>
<ul>
<li><a href="/user/custom_roles/abilities/#code-review-workflow">Manage merge request settings</a></li>
<li><a href="/user/custom_roles/abilities/#integrations">Manage integrations</a></li>
<li><a href="/user/custom_roles/abilities/#continuous-delivery">Manage deploy tokens</a></li>
<li><a href="/user/custom_roles/abilities/#team-planning">Read CRM Contacts</a></li>
</ul>
<p>With custom roles, you can reduce the number of users with the Owner role by creating users with equivalent permissions. This helps you define roles that are tailored specifically to the needs of your group, and prevents unnecessary privilege escalation.</p>
<h3 id="merge-request-approval-policies-fail-openclosed-policy-editor">Merge request approval policies fail open/closed (Policy editor)</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#fallback_behavior">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13227">Related epic</a></li></ul>
</div>

<p>Building on the previous <a href="https://gitlab.com/groups/gitlab-org/-/epics/10816">iteration</a>, we are introducing a new option within the policy editor allowing users to toggle security policies to fail open or fail closed. This enhancement extends the YAML support to allow for simpler configuration within the policy editor view.</p>
<p>For example, a merge request policy configured to fail open allows a merge request to merge if there is not enough evidence to evaluate the criteria. The lack of evidence might be because an analyzer is not enabled for the project, or the analyzer failed to produce results for the policy to evaluate. This approach allows for progressive rollout of policies as teams work to ensure proper scan execution and enforcement.</p>
<h3 id="project-owners-receive-expiring-access-token-notifications">Project Owners receive expiring access token notifications</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/tokens/#project-access-tokens">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/460818">Related issue</a></li></ul>
</div>

<p>Both project Owners and Maintainers with direct membership now receive email notifications when their project access tokens are close to expiring. Previously, only project Maintainers received this notification. This helps keep more people informed about upcoming token expiration.</p>
<p>Thank you <a href="https://gitlab.com/arcesium-henner">Jacob Henner</a> for your contribution!</p>
<h3 id="downscale-pasted-images-on-image-upload">Downscale pasted images on image upload</h3>
<!-- categories: Team Planning, Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/#change-image-or-video-dimensions">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/419913">Related issue</a></li></ul>
</div>

<p>GitLab 17.1 enhances the handling of high-resolution images, enabling them to be downscaled during upload. Previously, images displayed in their original size, resulting in suboptimal display quality. This improvement ensures large images don’t break the visual flow of the pages they are included in.</p>
<h3 id="draggable-media-in-the-rich-text-editor">Draggable media in the rich text editor</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/rich_text_editor/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/452233">Related issue</a></li></ul>
</div>

<p>Previously, moving media in the rich text editor required you to copy and paste each item manually. This often slowed down the inclusion of media in issues, epics, and wikis. In GitLab 17.1, you can now drag and drop media in the rich text editor, significantly enhancing efficiency during editing.</p>
<h3 id="pages-support-for-mutual-tls-in-gitlab-api-calls">Pages support for mutual TLS in GitLab API calls</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/pages/#support-mutual-tls-when-calling-the-gitlab-api">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-pages/-/issues/548">Related issue</a></li></ul>
</div>

<p>GitLab can be configured to <a href="https://docs.gitlab.com/omnibus/settings/ssl/#enable-2-way-ssl-client-authentication">enforce client authentication with SSL certificates</a>. However, the GitLab Pages service was incompatible with that feature, because it couldn’t be configured to use client certificates, and calls to the internal API were rejected.</p>
<p>From GitLab 17.1, you can configure a client certificate for GitLab Pages. This allows you to enable client authentication with the GitLab API, strengthening the security of your GitLab instance.</p>
<h3 id="redirect-wiki-pages-to-new-url-when-renamed">Redirect wiki pages to new URL when renamed</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/257892">Related issue</a></li></ul>
</div>

<p>GitLab 17.1 introduces a significant enhancement to wiki page redirects. When you rename a wiki page, anyone trying to access the old page is automatically redirected to the new page, ensuring all existing links remain functional. This improvement streamlines the workflow for managing page name changes and enhances the overall knowledge management experience.</p>
<h3 id="updated-pages-ui">Updated Pages UI</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153250">Related issue</a></li></ul>
</div>

<p>In GitLab 17.1 we’ve improved the Pages user interface. Improvements include more efficient use of screen space. These UI improvements are focused on improving user experience and efficiency when managing Pages.</p>
<h3 id="display-the-last-published-date-for-container-images">Display the last published date for container images</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/container_registry/#view-the-container-registry">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/290949">Related issue</a></li></ul>
</div>

<p>Previously, the published timestamp was often incorrect in the container registry user interface. This meant that you couldn’t rely on this important data to find and validate your container images.</p>
<p>In GitLab 17.1, we’ve updated the UI to include accurate <code>last_published_at</code> timestamps. You can find this information by navigating to <strong>Deploy &gt; Container Registry</strong> and selecting a tag to view more details. The last published date is available at the top of the page.</p>
<p>This improvement is generally available only on GitLab.com. Self-managed support is in beta and available only on instances that have enabled the beta <a href="/administration/packages/container_registry_metadata_database/">next-generation container registry</a>.</p>
<h3 id="sort-container-registry-tags-by-publish-date">Sort container registry tags by publish date</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/container_registry/#view-the-container-registry">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/7856">Related issue</a></li></ul>
</div>

<p>You use the GitLab container registry to view, push, and pull Docker or OCI images alongside your source code as well as pipelines. After a container image has been built, you often need to find and validate that it has been built correctly. For many customers, finding the correct container image using the user interface can be challenging.</p>
<p>You can now sort the container registry tags list by publish date. You can use this feature to quickly find and validate the most recently published container image.</p>
<p>This improvement is generally available only on GitLab.com. Self-managed support is in Beta because it requires the next-generation container registry, which is also in Beta. To learn more, see the <a href="/administration/packages/container_registry_metadata_database/">container registry metadata database documentation</a>.</p>
<h3 id="real-time-board-updates-for-a-smoother-workflow">Real-time board updates for a smoother workflow</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issue_board/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/468187">Related issue</a></li></ul>
</div>

<p>You’ll now notice a smoother experience when updating issues on <a href="/user/project/issue_board/">boards</a>! Changes you make in the sidebar will instantly appear on the board itself, no more refreshing required. This reactive boards experience streamlines your workflow, allowing you to quickly make updates while seeing them reflected in real-time.</p>
<h3 id="track-time-on-tasks">Track time on tasks</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/time_tracking/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438577">Related issue</a></li></ul>
</div>

<p>With this release, you can now set time estimates and record time spent on tasks with a <a href="/user/project/quick_actions/">quick action</a> or in the time tracking widget in the task’s sidebar. Time spent on a task can be viewed with the task’s time tracking report.</p>
<h3 id="understand-an-epics-progress-percentage">Understand an epic&rsquo;s progress percentage</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#manage-issues-assigned-to-an-epic">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/5163">Related issue</a></li></ul>
</div>

<p>You can now easily see the overall progress of an epic based on the weight completion of its child items. This new progress rollup in the hierarchy widget makes it easier to understand the full scope of work for an epic and track progress as you go.</p>
<h3 id="api-security-testing-analyzer-updates">API Security Testing analyzer updates</h3>
<!-- categories: API Security -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/api_security_testing/configuration/variables/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/14170">Related issue</a></li></ul>
</div>

<p>GitLab 17.1 adds the following configuration variables for API Security Testing:</p>
<ol>
<li><code>APISEC_SUCCESS_STATUS_CODES</code> creates a comma-separated list of HTTP success status codes that define whether an API security testing scanning job has passed.</li>
<li><code>APISEC_TARGET_CHECK_DISABLED</code> disables waiting for the target API to become available before scanning begins.</li>
<li><code>APISEC_TARGET_CHECK_STATUS_CODE</code> specifies the expected status code for the API target availability check. If not provided, any non-500 status code is acceptable to the scanner.</li>
</ol>
<p>These new variables provide greater customization and flexibility to ensure scans run successfully.</p>
<p>DAST API was renamed API Security Testing in 16.10. Variable names now begin with the prefix <code>APISEC</code>. Previously, they began with <code>DAST_API</code>. Variables prefixed with <code>DAST_API</code> will be supported until 18.0 (May 2025). To ensure your configurations work as expected, you should update your variable names as soon as possible.</p>
<h3 id="container-scanning-for-registry">Container Scanning for Registry</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/container_scanning/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/2340">Related epic</a></li></ul>
</div>

<p>GitLab Composition Analysis now supports Container Scanning for Registry.</p>
<p>If Container Scanning for Registry has been enabled on a project, and a container image is pushed to the container registry in your project, GitLab checks its tag and scan limit.</p>
<p>If the tag is <code>latest</code>, and the number of scans is under the limit (50 scans/day), then GitLab creates a new pipeline that runs a <code>container_scanning</code> job on the image. The pipeline is associated with the user who pushed the image to the registry.</p>
<p>The scan job generates a CycloneDX SBOM that is uploaded to GitLab. The Continuous Vulnerability Scanning features are activated and scan the packages detected in the SBOM.</p>
<p>Note: a vulnerability scan is only perfomed when a new advisory is published. This occurs when the <a href="/administration/settings/security_and_compliance/">package metadata is synchronized</a>.</p>
<p>As always, we appreciate feedback on our newly released features. To provide feedback, please comment on this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/466117">feedback issue</a>.</p>
<h3 id="fuzz-testing-analyzer-updates">Fuzz Testing analyzer updates</h3>
<!-- categories: Fuzz Testing -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/api_fuzzing/configuration/variables/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/442699">Related issue</a></li></ul>
</div>

<p>GitLab 17.1 adds the following configuration variables for Fuzz Testing:</p>
<ol>
<li><code>FUZZAPI_SUCCESS_STATUS_CODES</code> creates a comma-separated list of HTTP success status codes that define whether a Fuzz Testing job has passed.</li>
<li><code>FUZZAPI_TARGET_CHECK_SKIP</code> disables waiting for the target API to become available before scanning begins.</li>
<li><code>FUZZAPI_TARGET_CHECK_STATUS_CODE</code> specifies the expected status code for the API target availability check. If not provided, any non-500 status code is acceptable to the scanner.</li>
</ol>
<p>These new variables provide greater customization and flexibility for ensuring scans run.</p>
<h3 id="enhanced-control-over-who-can-override-user-defined-variables">Enhanced control over who can override user-defined variables</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/variables/#restrict-pipeline-variables">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440338">Related issue</a></li></ul>
</div>

<p>To better control who can override user-defined variables, we are introducing the <code>ci_pipeline_variables_minimum_role</code> project setting. This new setting provides greater flexibility than the existing <a href="/ci/variables/#restrict-pipeline-variables"><code>restrict_user_defined_variables</code></a> setting. You can now restrict override permissions to no users, or only users with at least the Developer, Maintainer, or Owner roles.</p>
<h3 id="gitlab-runner-171-released">GitLab Runner 17.1 released</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36942">Related issue</a></li></ul>
</div>

<p>Today we’re releasing GitLab Runner 17.1! GitLab Runner is the lightweight, highly scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29221">GitLab Runner fleeting plugin for GCP Compute Engine</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37689">Runner helper images missing the entry point</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-1-stable/CHANGELOG.md">change log</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.1">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.1">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.1">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 17.0 release notes</title><link href="https://docs.gitlab.com/releases/17/gitlab-17-0-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/17/gitlab-17-0-released/</id><published>2024-05-16T00:00:00Z</published><updated>2024-05-16T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On May 16, 2024, GitLab 17.0 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>Everyone can <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues/490">nominate GitLab’s community contributors</a>!
Show your support for our active candidates or add a new nomination 🙌</p>
<p>Niklas van Schrick now has the hat trick with three MVPs and has become one of GitLab’s most consistent contributors with at least one merge request per milestone since GitLab 14.3.</p>
<p>Niklas was nominated by <a href="https://gitlab.com/m_frankiewicz">Magdalena Frankiewicz</a>, Product Manager at GitLab, for contributing a feature to create custom webhook payload templates and then following it up with the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/17290">ability to specify custom webhook headers</a>.
“This solved a highly demanded 7-year-old feature request with 65 upvotes,” says Magdalena.
“Users can now fully design custom webhooks!”</p>
<p>Niklas is a member of the <a href="https://about.gitlab.com/community/core-team/">GitLab Core Team</a> and helps the wider community and GitLab live up to our mission to enable everyone to contribute.</p>
<p>“During my journey, I interacted with a lot of different reviewers, maintainers, designers, technical writers, product managers, and probably more,” Niklas says.
“Everyone was helpful and did their best to help move issues and merge requests forward.”</p>
<p>Gerardo Navarro has been contributing to GitLab for over a year and takes home a second GitLab MVP award.</p>
<p>Gerardo was nominated for creating ongoing contributions towards a feature to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437926">show protected packages in the package registry list</a>. This feature is part of a series of contributions related to the <a href="https://gitlab.com/groups/gitlab-org/-/epics/5574">protected packages epic</a> that intends to increase security by enabling fine-grained permissions to create, update, and delete packages from the package registry.</p>
<p>Many thanks to Gerardo Navarro and the rest of the team from Siemens for helping co-create GitLab.</p>
<p>“Thank you very much for appreciating our work with such a cool award,” says Gerardo.
“I feel honored. I am still learning a lot with every contribution.”</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="cicd-catalog-with-components-and-inputs-now-generally-available">CI/CD Catalog with components and inputs now generally available</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#cicd-catalog">Documentation</a></li></ul>
</div>

<p>The CI/CD Catalog is now generally available. As part of this release, we’re also making <a href="/ci/components/">CI/CD components</a> and <a href="/ci/yaml/#inputs">inputs</a> generally available.</p>
<p>With the CI/CD Catalog, you gain access to a vast array of components created by the community and industry experts.
Whether you’re seeking solutions for continuous integration, deployment pipelines, or automation tasks, you’ll find a diverse selection of components tailored to suit your requirements.
You can read more about the Catalog and its features in the following <a href="https://about.gitlab.com/blog/ci-cd-catalog-goes-ga-no-more-building-pipelines-from-scratch/">blog post</a>.</p>
<p>You’re invited to contribute CI/CD components to the Catalog and help expand this new and growing part of GitLab.com!</p>
<h3 id="ai-impact-analytics-in-the-value-streams-dashboard">AI Impact analytics in the Value Streams Dashboard</h3>
<!-- categories: Value Stream Management, Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/duo_and_sdlc_trends/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12978">Related issue</a></li></ul>
</div>

<p>AI Impact is a dashboard available in the Value Streams Dashboard that helps organizations understand the <a href="https://about.gitlab.com/blog/measuring-ai-effectiveness-beyond-developer-productivity-metrics/">impact of GitLab Duo on their productivity</a>.
This new month-over-month metric view compares the AI Usage trends with SDLC metrics like lead time, cycle time, DORA, and vulnerabilities. Software leaders can use the AI Impact dashboard to measure how much time is saved in their end-to-end workstream, while staying focused on business outcomes rather than developer activity.</p>
<p>In this first release, the AI usage is measured as the monthly <a href="/user/project/repository/code_suggestions/">Code Suggestions</a> usage rate, and is calculated as the number of monthly unique Code Suggestions users divided by total monthly unique <a href="/user/group/contribution_analytics/">contributors</a>.</p>
<p>The AI Impact dashboard is available to users on the Ultimate tier for a limited time. Afterwards, a GitLab Duo Enterprise license will be required to use the dashboard.</p>
<h3 id="introducing-hosted-runners-on-linux-arm">Introducing hosted runners on Linux Arm</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/linux/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/365300">Related issue</a></li></ul>
</div>

<p>We are excited to introduce hosted runners on Linux Arm for GitLab.com.
The now available <code>medium</code> and <code>large</code> Arm machine types, equipped with 4 and 8 vCPUs respectively, and fully integrated with GitLab CI/CD, will allow you to build and test your application faster and more cost-efficient than ever before.</p>
<p>We are determined to provide the industry’s fastest CI/CD build speed and look forward to seeing teams achieve even shorter feedback cycles and ultimately deliver software faster.</p>
<h3 id="introducing-deployment-detail-pages">Introducing deployment detail pages</h3>
<!-- categories: Release Orchestration, Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/deployment_approvals/#approve-or-reject-a-deployment">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/374538">Related issue</a></li></ul>
</div>

<p>You can now link directly to a deployment in GitLab. Previously, if you were collaborating on a deployment, you had to look up the deployment from the deployment list. Because of the number of deployments listed, finding the correct deployment was difficult and prone to error.</p>
<p>From 17.0, GitLab offers a deployment details view that you can link to directly. In this first version, the deployment details page offers an overview of the deployment job and the possibility to approve, reject, or comment on a deployment in a continuous delivery setting. We are looking into further avenues to enhance the deployment details page, including by linking to it from the related pipeline job. We would love to hear your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/450700">issue 450700</a>.</p>
<h3 id="gitlab-duo-chat-now-uses-anthropic-claude-3-sonnet">GitLab Duo Chat now uses Anthropic Claude 3 Sonnet</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13297">Related epic</a></li></ul>
</div>

<p>GitLab Duo Chat just got a lot better. It now uses Anthropic Claude 3 Sonnet as the base model, replacing Claude 2.1 for answering most questions.</p>
<p>At GitLab, we apply a test-driven approach when choosing the best model for a set of tasks and authoring well-performing prompts. With recent adjustments to the chat prompts, we have achieved significant improvements in the correctness, comprehensiveness, and readability of chat answers based on Claude 3 Sonnet compared to the previous chat version built on Claude 2.1. Hence, we have now switched to this new model version.</p>
<h3 id="how-to-questions-in-gitlab-duo-chat-supported-on-self-managed-deployments">How-to questions in GitLab Duo Chat supported on self-managed deployments</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/examples/#ask-about-gitlab">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/451215">Related issue</a></li></ul>
</div>

<p>A popular capability of GitLab Duo Chat is answering questions about how to use GitLab. While Chat offers various other capabilities, this particular functionality was previously only available on GitLab.com. With this release, we’re making it accessible to GitLab self-managed deployments as well, aligning with our commitment to delivering a delightful experience across all types of deployments.</p>
<p>Whether you’re a newcomer or an expert, you can ask Chat for help with queries like “How do I change my password in GitLab?” or “How do I connect a Kubernetes cluster to GitLab?”. Chat aims to provide helpful information to solve your problems more efficiently.</p>
<h3 id="new-usage-overview-panel-in-the-value-streams-dashboard">New usage overview panel in the Value Streams Dashboard</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/#overview">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438256">Related issue</a></li></ul>
</div>

<p>We enhanced the Value Streams Dashboard with an Overview panel. This new visualization addresses the need for executive-level insights into software delivery performance, and gives a clear picture of GitLab usage in the context of software development life cycle (SDLC).</p>
<p>The Overview panel displays metrics for the group level, such as number of (sub)groups, projects, users, issues, merge requests, and pipelines.</p>
<h3 id="add-a-group-to-the-cicd-job-token-allowlist">Add a group to the CI/CD job token allowlist</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/ci_job_token/#control-job-token-access-to-your-project">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415519">Related issue</a></li></ul>
</div>

<p>Introduced in GitLab 15.9, the CI/CD job token allowlist prevents unauthorized access from other projects to your project. Previously, you could allow access at the project level from other specific projects only, with a maximum limit of 200 total projects.</p>
<p>In GitLab 17.0, you can now add groups to a project’s CI/CD job token allowlist. The maximum limit of 200 now applies to both projects and groups, meaning a project allowlist can now have up to 200 projects and groups authorized for access. This improvement makes it easier to add large numbers of projects associated with a group.</p>
<h3 id="enhanced-context-control-with-the-rulesexists-cicd-keyword">Enhanced context control with the <code>rules:exists</code> CI/CD keyword</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#rulesexistsproject">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/386040">Related issue</a></li></ul>
</div>

<p>The <code>rules:exists</code> CI/CD keyword has default behaviors that vary based on where the keyword is defined, which can make it harder to use with more complex pipelines. When defined in a job, <code>rules:exists</code> searches for specified files in the project running the pipeline. However, when defined in an <code>include</code> section, <code>rules:exists</code> searches for specified files in the project hosting the configuration file containing the <code>include</code> section. If configuration is split over multiple files and projects, it can be hard to know which exact project will be searched for defined files.</p>
<p>In this release, we have introduced <code>project</code> and <code>ref</code> subkeys to <code>rules:exists</code>, providing you a way to explicitly control the search context for this keyword. These new subkeys help you ensure accurate rule evaluation by precisely specifying the search context, mitigating inconsistencies, and enhancing clarity in your pipeline rule definitions.</p>
<h3 id="change-log-for-configuration-changes-made-using-switchboard">Change log for configuration changes made using Switchboard</h3>
<!-- categories: GitLab Dedicated, Switchboard -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/configure_instance/#view-the-configuration-change-log">Documentation</a> | <a href="https://about.gitlab.com/dedicated/">Related issue</a></li></ul>
</div>

<p>You can now view the status of configuration changes made to your GitLab Dedicated instance infrastructure using the Switchboard <a href="/administration/dedicated/configure_instance/#configure-your-instance-using-switchboard">configuration page</a>.</p>
<p>All users with access to view or edit your tenant in Switchboard will be able to view changes in the Configuration Change log and track their progress as they are applied to your instance.</p>
<p>Currently, the Switchboard configuration page and change log are available for changes like managing access to your instance by adding an <a href="/administration/dedicated/configure_instance/network_security/#ip-allowlist">IP to the allowlist</a> or configuring your instance’s <a href="/administration/dedicated/configure_instance/authentication/saml/">SAML settings</a>.</p>
<p>We will be extending this functionality to enable self-serve updates for additional configurations in <a href="https://about.gitlab.com/releases/whats-new/#whats-coming">coming quarters</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="gitlab-chart-improvements">GitLab chart improvements</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/">Documentation</a></li></ul>
</div>

<p>The <a href="https://docs.gitlab.com/operator/">GitLab Operator</a> is now available for production use for cloud-native hybrid installations. See the <a href="https://docs.gitlab.com/operator/installation.html">installation documentation</a> before adopting the GitLab Operator.</p>
<p>Support for a fallback to BusyBox images when you specify custom BusyBox values (<code>global.busybox</code>) is removed. Support for BusyBox-based init containers was deprecated in GitLab 16.2 (Helm chart 7.2) in favor of a common GitLab-based init image.</p>
<p>Support for <code>gitlab.kas.privateApi.tls.enabled</code> and <code>gitlab.kas.privateApi.tls.secretName</code> is also removed. You must use <code>global.kas.tls.enabled</code> and <code>global.kas.tls.secretName</code> instead.</p>
<p>The deprecated queue selector and negate options are removed from the Sidekiq chart.</p>
<h3 id="linux-package-improvements">Linux package improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>CentOS Linux 7 will reach <a href="https://www.redhat.com/en/topics/linux/centos-linux-eol">end of life</a> on June 30, 2024. This makes GitLab 17.6 the last GitLab version in which we can provide packages for CentOS 7.</p>
<h3 id="two-database-mode-is-available-in-beta">Two database mode is available in Beta</h3>
<!-- categories: Cell -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/postgresql/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/432391">Related issue</a></li></ul>
</div>

<p>Currently, most self-managed customers only utilize a single database.
In order to ensure that the setup between GitLab.com and self-managed is the same, we ask self-managed customers to migrate and run two databases by default.
In 16.0, two database connections became the default for self-managed installations.
In 17.0, we <a href="/administration/postgresql/">release two database mode as a limited Beta</a>, with the goal to make running decomposed generally available by 19.0.
Migration to two databases remains optional in 17.0, but needs to be performed before upgrading to 19.0.</p>
<p>The migration requires downtime.
Self-managed customers can use a <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/368729">tool</a> that executes this migration with some downtime.
We introduced a new <code>gitlab-ctl</code> command that allows you to upgrade your single-database GitLab instances to a decomposed setup.
This setup contains commands that will work with our Linux package.
The <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135585">actual migration</a> (copying the database) is part of a rake task in the GitLab project.</p>
<h3 id="private-shared-group-members-are-listed-on-members-tab-for-all-members">Private shared group members are listed on Members tab for all members</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/members/sharing_projects_groups/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/418888">Related issue</a></li></ul>
</div>

<p>Previously, when a public group or project invited a private group, the private group was listed only in the Groups tab of the Members page, and private members were not visible to members of the public group. To enable better collaboration between members of these groups, we are now also listing all invited group members in the Members tab, including members from private invited groups. The source of membership will be masked from members that do not have access to the private group. However, the source of membership will be visible to users who have at least the Maintainer role in the project or Owner role in the group, so that they can manage members in their project or group. If the current user viewing the Members tab is unauthenticated or not a member of the group or project, they will not see the private group members. We hope this change will make it easier for group and project members to understand at a glance who has access to a group or project.</p>
<h3 id="members-page-displays-members-from-invited-groups">Members page displays members from invited groups</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/members/#share-a-project-with-a-group">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/219230">Related issue</a></li></ul>
</div>

<p>Previously, members of groups that were invited to a group or project were visible only in the Groups tab of the Members page. This meant users had to check both the Groups and Members tabs to understand who has access to a certain group or project. Now, shared members are listed also in the Members tab, giving a complete overview of all the members that are part of a group or project at a glance.</p>
<h3 id="import-from-bitbucket-cloud-by-using-rest-api">Import from Bitbucket Cloud by using REST API</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/import/#import-repository-from-bitbucket-cloud">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/215036">Related issue</a></li></ul>
</div>

<p>In this milestone, we added the ability to import Bitbucket Cloud projects by using the REST API.</p>
<p>This can be a better solution for importing a lot of projects than importing by using the UI.</p>
<h3 id="re-import-a-chosen-project-relation-by-using-the-api">Re-import a chosen project relation by using the API</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/project_import_export/#import-project-resources">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/425798">Related issue</a></li></ul>
</div>

<p>When importing projects from export files with many items of the same type (for example, merge requests or pipelines), sometimes some of those items weren’t imported.</p>
<p>In this release, we added an API endpoint that re-imports a named relation, skipping items that have already been imported. The API requires both:</p>
<ul>
<li>A project export archive.</li>
<li>A type (issues, merge requests, pipelines, or milestones).</li>
</ul>
<h3 id="view-issues-from-multiple-jira-projects-in-gitlab">View issues from multiple Jira projects in GitLab</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/jira/configure/#view-jira-issues">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12609">Related epic</a></li></ul>
</div>

<p>For larger repositories, you can now view issues from multiple Jira projects in GitLab when you set up the Jira issue integration. With this release, you can:</p>
<ul>
<li>Enter up to 100 Jira project keys separated by commas.</li>
<li>Leave <strong>Jira project keys</strong> blank to include all available keys.</li>
</ul>
<p>When you view Jira issues in GitLab, you can <a href="/integration/jira/configure/#filter-jira-issues">filter the issues</a> by project.</p>
<p>To <a href="/integration/jira/configure/#create-a-jira-issue-for-a-vulnerability">create Jira issues for vulnerabilities</a> in GitLab Ultimate, you can specify only one Jira project.</p>
<h3 id="enable-viewing-jira-issues-in-gitlab-with-the-rest-api">Enable viewing Jira issues in GitLab with the REST API</h3>
<!-- categories: Source Code Management, Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/project_integrations/#jira-issues">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/267015">Related issue</a></li></ul>
</div>

<p>With this release, you can use the REST API to enable <a href="/integration/jira/configure/#view-jira-issues">viewing Jira issues</a> in GitLab. You can also specify one or more Jira projects to view issues from.</p>
<p>Thanks to <a href="https://gitlab.com/ivantedja">Ivan</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150209">this community contribution</a>!</p>
<h3 id="multiple-external-participants-for-service-desk">Multiple external participants for Service Desk</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/external_participants/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/3758">Related issue</a></li></ul>
</div>

<p>Sometimes there is more than one person involved in resolving a support ticket or
the requester wants to keep colleagues up-to date on the state of the ticket.</p>
<p>Now you can have a maximum of 10 external participants without a GitLab account on a
Service Desk ticket and regular issues.</p>
<p>External participants receive Service Desk notification emails for each public comment
on the ticket, and their replies will appear as comments in the GitLab UI.</p>
<p>Simply use the quick actions <a href="/user/project/service_desk/external_participants/#add-an-external-participant"><code>/add_email</code></a>
and <a href="/user/project/service_desk/external_participants/#add-an-external-participant"><code>remove_email</code></a>
to add or remove external participants with a few keystrokes.</p>
<p>You can also configure GitLab to
<a href="/user/project/service_desk/external_participants/#add-external-participants-from-the-cc-header">add all email addresses from the <code>Cc</code> header</a>
of the initial email to the Service Desk ticket.</p>
<p>You can <a href="/user/project/service_desk/configure/#customize-emails-sent-to-external-participants">tailor all Service Desk email templates to your liking</a>,
using Markdown, HTML, and dynamic placeholders.
An <a href="/user/project/service_desk/external_participants/#add-an-external-participant">unsubscribe link placeholder</a>
is available to make it easy for external participants to opt out of a conversation.</p>
<h3 id="indicate-that-items-were-imported-using-direct-transfer">Indicate that items were imported using direct transfer</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/direct_transfer_migrations/#review-results-of-the-import">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/443492">Related issue</a></li></ul>
</div>

<p>You can migrate GitLab groups and projects between GitLab instances <a href="/user/group/import/">by using direct transfer</a>.</p>
<p>Until now, imported items were not easily identifiable. With this release, we’ve added visual indicators to items imported with direct transfer, where the creator is identified as a specific user:</p>
<ul>
<li>Notes (system notes and user comments)</li>
<li>Issues</li>
<li>Merge requests</li>
<li>Epics</li>
<li>Designs</li>
<li>Snippets</li>
<li>User profile activity</li>
</ul>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="1password-secrets-integration-in-gitlab-duo-plugin-for-jetbrains-ides">1Password secrets integration in GitLab Duo Plugin for JetBrains IDEs</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/jetbrains_ide/#integrate-with-1password-cli">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-jetbrains-plugin/-/issues/291">Related issue</a></li></ul>
</div>

<p>You can now integrate 1Password secrets management with the GitLab Duo plugin for JetBrains.</p>
<p>Developers can replace their personal access tokens in their JetBrains IDE settings with 1Password secrets references. This simplifies managing secrets, and enables seamless secrets rotation without manual token updates.</p>
<h3 id="access-gitlab-duo-chat-faster-with-customizable-shortcuts">Access GitLab Duo Chat faster with customizable shortcuts</h3>
<!-- categories: Editor Extensions, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/jetbrains_ide/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-jetbrains-plugin/-/issues/332">Related issue</a></li></ul>
</div>

<p>Opening Duo Chat directly from your editor in JetBrains is now even easier.</p>
<p>Use the default Alt+D keyboard shortcut (or set your own) to open Duo Chat quickly and type your question. Use the same keyboard shortcut to close the window.</p>
<h3 id="project-comment-templates">Project comment templates</h3>
<!-- categories: Code Review Workflow, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/comment_templates/#for-a-project">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440818">Related issue</a></li></ul>
</div>

<p>Following the release of <a href="https://about.gitlab.com/releases/2024/04/18/gitlab-16-11-released/#group-comment-templates">group comment templates in GitLab 16.11</a>, we’re bringing these to projects in GitLab 17.0.</p>
<p>Across an organization, it can be helpful to have the same templated response in issues, epics, and merge requests. These responses might include standard questions that need to be answered, responses to common problems, or good structure for merge request review comments. Project-level comment templates give you an additional way to scope the availability of templates, bringing organizations more control and flexibility in sharing these across users.</p>
<p>To create a comment template, go to any comment box on GitLab and select <strong>Insert comment template &gt; Manage project comment templates</strong>. After you create a comment template, it’s available for all project members. Select the <strong>Insert comment template</strong> icon while making a comment, and your saved response will be applied.</p>
<p>We’re really excited about this iteration of comment templates and if you have any feedback, please leave it in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/451520">issue 451520</a>.</p>
<h3 id="commit-signing-for-gitlab-ui-commits">Commit signing for GitLab UI commits</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitaly/configure_gitaly/#configure-commit-signing-for-gitlab-ui-commits">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitaly/-/issues/5361">Related issue</a></li></ul>
</div>

<p>Previously, web commits and automated commits made by GitLab could not be signed. Now you can configure your self-managed instance with a signing key, a committer name, and email address to sign web and automated commits.</p>
<h3 id="increase-kubernetes-agent-authorization-limit">Increase Kubernetes agent authorization limit</h3>
<!-- categories: Continuous Delivery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431133">Related issue</a></li></ul>
</div>

<p>With the GitLab agent for Kubernetes, you can share a single agent connection with a group. We aim to support a single agent across a large multi-tenant cluster. However, you might have faced a limitation on the number of connection sharing. Until now, an agent could be shared with only 100 projects and groups using <a href="/user/clusters/agent/ci_cd_workflow/">CI/CD</a>, and 100 projects and groups using the <a href="/user/clusters/agent/user_access/"><code>user_access</code></a> keyword. In GitLab 17.0, the number of projects and groups you can share with is raised to 500.</p>
<p>If you need to run multiple agents in a cluster, we would like to hear your feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/454110">issue 454110</a>.</p>
<h3 id="support-for-gitlab-agent-for-kubernetes-in-fips-mode">Support for GitLab agent for Kubernetes in FIPS mode</h3>
<!-- categories: Continuous Delivery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/clusters/kas/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/375327">Related issue</a></li></ul>
</div>

<p>From GitLab 17.0, you can install GitLab in FIPS mode with the agent for Kubernetes components enabled. Now, FIPS-compliant users can benefit from all the <a href="/user/clusters/agent/">Kubernetes integrations with GitLab</a>.</p>
<h3 id="track-fast-forward-merge-requests-in-deployments">Track fast-forward merge requests in deployments</h3>
<!-- categories: Continuous Delivery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/deployments/#track-newly-included-merge-requests-per-deployment">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/384104">Related issue</a></li></ul>
</div>

<p>In past releases, merge requests were tracked in a deployment only if the project’s merge method was <strong>Merge commit</strong> or <strong>Merge commit with semi-linear history</strong>. From GitLab 17.0, merge requests are tracked in deployments, including in projects with the merge method <strong>Fast-forward merge</strong>.</p>
<h3 id="identify-sessions-initiated-by-admin-mode">Identify sessions initiated by Admin Mode</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/sign_in_restrictions/#check-if-your-session-has-admin-mode-enabled">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438674">Related issue</a></li></ul>
</div>

<p>As an instance administrator, when you use multiple browsers or different computers, it is difficult to know which sessions are in Admin Mode and which aren’t. Now, administrators can go to <strong>User Settings &gt; Active Sessions</strong> to identify which sessions use Admin Mode.</p>
<p>Thank you <a href="https://gitlab.com/bufferoverflow">Roger Meier</a> for your contribution!</p>
<h3 id="customize-avatars-for-users">Customize avatars for users</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/users/#upload-an-avatar-for-yourself">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/356868">Related issue</a></li></ul>
</div>

<p>You can now use the API to upload a custom avatar for any user type, including bot users. This can be especially helpful for visually distinguishing bot users, such as group and project access tokens or service accounts, from human users in the UI.
Thank you <a href="https://gitlab.com/lifez">Phawin</a> for your contribution!</p>
<h3 id="edit-a-custom-role-and-its-permissions">Edit a custom role and its permissions</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/#edit-a-custom-role">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437590">Related issue</a></li></ul>
</div>

<p>Previously, you could not edit an existing custom role and its permissions. Now, you can edit a custom role and its permissions without having to re-create the role to make a change.</p>
<h3 id="new-permissions-for-custom-roles">New permissions for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391760">Related issue</a></li></ul>
</div>

<p>There are new permissions available you can use to create custom roles:</p>
<ul>
<li><a href="/user/custom_roles/abilities/#security-policy-management">Assign security policy links</a></li>
<li><a href="/user/custom_roles/abilities/#compliance-management">Manage and assign compliance frameworks</a></li>
<li><a href="/user/custom_roles/abilities/#webhooks">Manage webhooks</a></li>
<li><a href="/user/custom_roles/abilities/#source-code-management">Manage push rules</a></li>
</ul>
<p>With the release of these custom permissions, you can reduce the number of Owners needed in a group by creating a custom role with these Owner-equivalent permissions. Custom roles allow you to define granular roles that give a user only the permissions they need to do their jobs, and reduce unnecessary privilege escalation.</p>
<h3 id="manage-custom-roles-at-self-managed-instance-level">Manage custom roles at self-managed instance level</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11851">Related issue</a></li></ul>
</div>

<p>Before this release, on self-managed GitLab, custom roles had to be created at the group level. This meant administrators could not centrally manage custom roles for the instance, which resulted in duplicate roles across the instance. Now custom roles are managed at the self-managed instance level. Only administrators can create custom roles, but both administrators and group Owners can assign these custom roles.</p>
<p>For more information on migrating existing custom roles, API endpoints, and workflows, see <a href="https://gitlab.com/groups/gitlab-org/-/epics/11851">epic 11851</a>.</p>
<p>This update does not impact custom role workflows on GitLab.com.</p>
<h3 id="ux-improvements-to-custom-roles">UX improvements to custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11947">Related issue</a></li></ul>
</div>

<p>A series of improvements have been made to the user experience for custom roles, specifically:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/393238">A new page opens when creating a new custom role</a>.</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437592">Improved design for the custom role table</a>.</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/434431">Improved design for the delete custom role dialog</a>.</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/430915">Precheck permissions of the base role</a>.</li>
</ul>
<h3 id="improved-branch-protection-settings-for-administrators-and-for-groups">Improved branch protection settings for administrators and for groups</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/branches/default/#for-all-projects-in-an-instance">Documentation</a></li></ul>
</div>

<p>Previously, setting up default branch protection options did not allow for the same level of configuration that the settings for protected branches did.</p>
<p>In this release, we have updated the default branch protection settings to provide the same experience that you have with protected branches.
This allows more flexibility in protecting your default branch and simplifies the process to match what already exists in the protected branch settings.</p>
<h3 id="optional-configuration-for-policy-bot-comment">Optional configuration for policy bot comment</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438272">Related issue</a></li></ul>
</div>

<p>The security policy bot posts a comment on merge requests when they violate a policy to help users understand when policies are enforced on their project, when evaluation is completed, and if there are any violations blocking an MR, with guidance to resolve them. These comments are now optional and can be enabled or disabled within each policy. This gives organizations the flexibility and control to determine how they want to communicate about these policies to their users.</p>
<h3 id="updated-filtering-on-the-vulnerability-report">Updated filtering on the Vulnerability Report</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#filtering-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13339">Related epic</a></li></ul>
</div>

<p>The old implementation of the Vulnerability Report filters wasn’t scalable.
We were limited by horizontal space on the page. You can now use the filtered
search component to filter the Vulnerability Report by any combination of
status, severity, tool, or activity. This change allows us to add new filters,
like this proposed <a href="https://gitlab.com/groups/gitlab-org/-/epics/13340">filter by identifier</a>.</p>
<h3 id="toggle-merge-request-approval-policies-to-fail-open-or-fail-closed">Toggle merge request approval policies to fail open or fail closed</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10816">Related epic</a></li></ul>
</div>

<p>Compliance operates on a sliding scale for many organizations as they strike a balance between meeting requirements and ensuring developer velocity is not impacted. Merge request approval policies help to operationalize security and compliance in the heart of the DevSecOps workflow - the merge request. We’re introducing a new <code>fail open</code> option for merge request approval policies to offer flexibility to teams who want to ease the transition to policy enforcement as they roll out controls in their organization.</p>
<p>When a merge request approval policy is configured to fail open, MRs will now only be blocked if a policy rule is violated <strong>and</strong> if that project has the security analyzer properly configured. If an analyzer is not enabled for a project or if the analyzer does not successfully produce results, the policy will no longer consider this a violation for the given rule and analyzer. This approach allows for progressive rollout of policies as teams work to ensure proper scan execution and enforcement.</p>
<h3 id="automatic-deletion-of-unverified-secondary-email-addresses">Automatic deletion of unverified secondary email addresses</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/#delete-email-addresses-from-your-user-profile">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/367823">Related issue</a></li></ul>
</div>

<p>If you add a secondary email address to your user profile and do not verify it, that email address is now automatically deleted after three days. Previously, these email addresses were in a reserved state and could not be released without manual intervention. This automatic deletion reduces administrator overhead and prevents users from reserving email addresses that they do not have ownership of.</p>
<h3 id="filter-package-registry-ui-for-packages-with-errors">Filter package registry UI for packages with errors</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/#view-packages">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/451054">Related issue</a></li></ul>
</div>

<p>You can use the GitLab package registry to publish and download packages. Sometimes, packages fail to upload due to an error. Previously, there was no way to quickly view packages that failed to upload. This made it challenging to get a holistic view of your organization’s package registry.</p>
<p>Now you can filter the package registry UI for packages that failed to upload. This improvement makes it easier to investigate and resolve any issues you encounter.</p>
<h3 id="new-median-time-to-merge-metric-in-value-streams-dashboard">New median time to merge metric in Value Streams Dashboard</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/#dashboard-metrics-and-drill-down-reports">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435451">Related issue</a></li></ul>
</div>

<p>We added a new metric to the Value Streams Dashboard: median time to merge. In GitLab, this metric represents the median time between when a merge request was created and when it was merged. This new metric measures DevOps health by identifying the efficiency and productivity of your merge request and code review processes.</p>
<p>By analyzing how this metric evolves in the <a href="https://www.youtube.com/watch?v=yNZRac7gyYo">context of other SDLC metrics</a>, teams can identify low or high productivity months, understand the impact of new DevOps practices on the development speed and delivery process, reduce their overall lead time, and increase the velocity of their software delivery.</p>
<h3 id="design-management-features-extended-to-product-teams">Design Management features extended to Product teams</h3>
<!-- categories: Design Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issues/design_management/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438829">Related issue</a></li></ul>
</div>

<p>GitLab is expanding collaboration by updating our permissions. Now, users with the Reporter role can access Design Management features, enabling product teams to engage more directly in the design process. This change simplifies workflows and accelerates innovation by inviting broader participation from across your organization.</p>
<h3 id="enhanced-epic-deletion-protection">Enhanced epic deletion protection</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#delete-an-epic">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/452189">Related issue</a></li></ul>
</div>

<p>We’ve updated what happens when you delete an epic to better safeguard your project’s structure and data. It’s all about giving you more control and peace of mind while managing your projects.</p>
<p>Now, when you delete a parent epic, instead of deleting all its child records automatically, we preserve them by detaching the parent relationship first. This change provides you with a safer way to manage your epics, ensuring accidental deletions don’t result in losing valuable information.</p>
<h3 id="sort-the-roadmap-by-created-date-last-updated-date-and-title">Sort the Roadmap by created date, last updated date, and title</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/roadmap/#sort-and-filter-the-roadmap">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/460492">Related issue</a></li></ul>
</div>

<p>We expanded the epic sorting options available in the Roadmap view, providing you more flexibility in organizing and prioritizing your projects. You can now sort epics by <strong>created date</strong>, <strong>last updated date</strong>, and <strong>title</strong>. This enhancement lays the groundwork for even more advanced sorting capabilities in the future to help you manage epics more dynamically.</p>
<h3 id="simplified-configuration-file-schema-for-value-streams-dashboard">Simplified configuration file schema for Value Streams Dashboard</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/#customize-dashboard-panels">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/432185">Related issue</a></li></ul>
</div>

<p>You can now customize Value Streams Dashboard panels using a simplified schema-driven customizable UI framework. In the new format, the fields provide more flexibility of displaying the data and laying out the dashboard panels. With the new framework, administrators can track changes to the dashboard over time. This version history can help you revert to previous versions and compare changes between dashboard versions.</p>
<p>Using this customization, decision-makers can focus on the most relevant information for their business, while teams can better organize and display key DevSecOps metrics.</p>
<h3 id="guests-in-groups-can-link-issues">Guests in groups can link issues</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10267">Related epic</a></li></ul>
</div>

<p>We reduced the minimum role required to relate issues and tasks from Reporter to Guest, giving you more flexibility to organize work across your GitLab instance while maintaining <a href="/user/permissions/">permissions</a>.</p>
<h3 id="milestones-and-iterations-visible-on-issue-boards">Milestones and iterations visible on issue boards</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issue_board/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/25758">Related issue</a></li></ul>
</div>

<p>We’ve improved issue boards to offer you clearer insights into your project’s timeline and phases. Now, with milestone and iteration details directly visible on issue cards, you can easily track progress and adjust your team’s workload on the fly. This enhancement is designed to make your planning and execution more efficient, keeping you in the loop and ahead of schedule.</p>
<h3 id="api-security-testing-analyzer-updates">API Security Testing analyzer updates</h3>
<!-- categories: API Security -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/api_security_testing/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13644">Related issue</a></li></ul>
</div>

<p>We published the following API Security Testing analyzer updates during the 17.0 release milestone:</p>
<ul>
<li>System environment variables are now passed from the CI runner to the custom Python scripts used for certain advanced scenarios (like request signing). This will make implementing these scenarios easier. See <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/457795">issue 457795</a> for more details.</li>
<li>API Security containers now run as a non-root user, which improves flexibility and compliance. See <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/287702">issue 287702</a> for more details.</li>
<li>Support for servers that only offer TLSv1.3 ciphers, which enables more customers to adopt API Security Testing. See <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/441470">issue 441470</a> for more details.</li>
<li>Upgrade to Alpine 3.19, which addresses security vulnerabilities. See <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/456572">issue 456572</a> for more details.</li>
</ul>
<p>As <a href="/update/deprecations/#secure-analyzers-major-version-update">previously announced</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/456874">we increased the major version number of API Security Testing to version 5</a> in GitLab 17.0.</p>
<h3 id="dependency-scanning-support-for-android">Dependency Scanning support for Android</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#use-cicd-components">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12968">Related epic</a></li></ul>
</div>

<p>Users of Dependency Scanning can now scan Android projects. To configure Android scanning, use the <a href="https://gitlab.com/explore/catalog/components/android-dependency-scanning">CI/CD Catalog component</a>. Android scanning is also supported for users of the <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#edit-the-gitlab-ciyml-file-manually">CI/CD template</a>.</p>
<h3 id="dependency-scanning-default-python-image">Dependency Scanning default Python image</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#supported-languages-and-package-managers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/441491">Related issue</a></li></ul>
</div>

<p>Following the deprecation of Python 3.9 as the default Python image, Python 3.11 is now the default image.</p>
<p>As outlined in the <a href="/update/deprecations/#deprecate-python-39-in-dependency-scanning-and-license-scanning">deprecation notice</a>, the target for the new default Python version was 3.10. The direct move to Python 3.11 was required to ensure FIPS compliance.</p>
<h3 id="dast-now-supports-both-arm64-and-amd64-architectures-by-default">DAST now supports both arm64 and amd64 architectures by default</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13757">Related issue</a></li></ul>
</div>

<p>DAST 5 supports both arm64 and amd64 architectures by default. This enables customers to choose the Runner host architecture and optimize cost savings.</p>
<h3 id="streamlined-sast-analyzer-coverage-for-more-languages">Streamlined SAST analyzer coverage for more languages</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#supported-languages-and-frameworks">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/412060">Related issue</a></li></ul>
</div>

<p>GitLab Static Application Security Testing (SAST) now scans the same <a href="/user/application_security/sast/#supported-languages-and-frameworks">languages</a> with fewer <a href="/user/application_security/sast/analyzers/">analyzers</a>, offering a simpler, more customizable scan experience.</p>
<p>In GitLab 17.0, we’ve replaced language-specific analyzers with <a href="/user/application_security/sast/rules/">GitLab-managed rules</a> in the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep">Semgrep-based analyzer</a> for the following languages:</p>
<ul>
<li>Android</li>
<li>C and C++</li>
<li>iOS</li>
<li>Kotlin</li>
<li>Node.js</li>
<li>PHP</li>
<li>Ruby</li>
</ul>
<p>As <a href="/update/deprecations/#sast-analyzer-coverage-changing-in-gitlab-170">announced</a>, we’ve updated the <a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml">SAST CI/CD template</a> to reflect the new scanning coverage and to remove language-specific analyzer jobs that are no longer used.</p>
<h3 id="secret-detection-now-supports-remote-rulesets-when-overriding-or-disabling-rules">Secret Detection now supports remote rulesets when overriding or disabling rules</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/pipeline/configure/#with-a-remote-ruleset">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/425251">Related issue</a></li></ul>
</div>

<p>We resolved a Secret Detection bug that impacted remote rulesets. It’s now possible to override or disable rules via remote rulesets. Remote rulesets offer a scalable way to configure rules in a single place, which can be applied across multiple projects.</p>
<h3 id="introducing-advanced-vulnerability-tracking-for-secret-detection">Introducing advanced vulnerability tracking for Secret Detection</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/pipeline/#duplicate-vulnerability-tracking">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/434096">Related issue</a></li></ul>
</div>

<p>Secret Detection now uses an advanced vulnerability tracking algorithm to more accurately identify when the same secret has moved within a file due to refactoring or unrelated changes. A new finding is no longer created if:</p>
<ul>
<li>A leak moves within a file.</li>
<li>A new leak of the same value appears within the same file.</li>
</ul>
<p>Otherwise, the existing workflow (merge request widget, pipeline report, and vulnerability report) will treat the findings the same as before. By ensuring that duplicate vulnerabilities are not reported as secrets shift locations, teams are more easily able to manage leaked secrets.</p>
<h3 id="semantic-version-ranges-for-published-cicd-components">Semantic version ranges for published CI/CD components</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#semantic-versioning">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/450835">Related issue</a></li></ul>
</div>

<p>When using a CI/CD Catalog component, you might want to have it automatically use the latest version. For example, you don’t want to have to manually monitor all the components you use and manually switch to the next version every time there is a minor update or security patch. But using <code>~latest</code> is also a bit risky because minor version updates could have undesired behavior changes, and major version updates have a higher risk of breaking changes.</p>
<p>With this release, you can opt to use the latest major or minor version of a CI/CD component. For example, specify <code>2</code> for the component version, and you’ll get all updates for that major version, like <code>2.1.1</code>, <code>2.1.2</code>, <code>2.2.0</code>, but not <code>3.0.0</code>. Specify <code>2.1</code> and you’ll only get patch updates for that minor version, like <code>2.1.1</code>, <code>2.1.2</code>, but not <code>2.2.0</code>.</p>
<h3 id="standardized-cicd-catalog-component-publishing-process">Standardized CI/CD Catalog component publishing process</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#publish-a-new-release">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/442066">Related issue</a></li></ul>
</div>

<p>We have been hard at work on CI/CD components, including making the process of releasing components to the CI/CD Catalog a consistent experience. As part of that work, we’ve made releasing versions from a CI/CD job with the <a href="/ci/yaml/#release"><code>release</code> keyword</a> and the <code>release-cli</code> image the only method. All improvements to the release process will apply to this method only. To avoid breaking changes introduced by this restriction, make sure you always use the latest version of the image (<code>release-cli:latest</code>) or at least a version greater than <code>v0.17</code>. The <a href="/user/project/releases/#create-a-release-in-the-releases-page"><strong>Releases</strong> option in the UI</a> is now disabled for CI/CD component projects.</p>
<h3 id="always-run-after_script-commands-for-canceled-jobs">Always run <code>after_script</code> commands for canceled jobs</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/script/#set-a-default-before_script-or-after_script-for-all-jobs">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10158">Related epic</a></li></ul>
</div>

<p>The <a href="/ci/yaml/#after_script"><code>after_script</code></a> CI/CD keyword is used to run additional commands after the main <code>script</code> section of a job. This is often used for cleaning up environments or other resources that were used by the job. However, <code>after_script</code> commands did not run if a job was canceled.</p>
<p>As of GitLab 17.0, <code>after_script</code> commands will always run when a job is canceled. To opt out, see the <a href="/ci/yaml/script/#skip-after_script-commands-if-a-job-is-canceled">documentation</a>.</p>
<h3 id="gitlab-runner-170">GitLab Runner 17.0</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 17.0 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/-/issues/123">Documentation for installing the Runner Operator in disconnected network environments</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/17-0-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.0">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=17.0">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=17.0">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.11 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-11-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-11-released/</id><published>2024-04-18T00:00:00Z</published><updated>2024-04-18T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On April 18, 2024, GitLab 16.11 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p><a href="https://gitlab.com/bahek2462774">Ivan Shtyrliaiev</a> has made <a href="https://gitlab.com/groups/gitlab-org/-/merge_requests?scope=all&amp;state=merged&amp;author_username=bahek2462774">half a dozen contributions</a> to GitLab so far in 2024.
He was nominated by <a href="https://gitlab.com/hsutor">Hannah Sutor</a>, Principal Product Manager at GitLab, who highlighted his contribution to <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144907">improve the Users list search and filter experience</a>.</p>
<p>“This is a huge user experience improvement that helps us go from a horizontally scrollable list of tabs to a much more elegant UX with only 2 tabs and a search box,” Hannah said.
“Now users are able to filter down via the search box rather than horizontally scroll tabs!”</p>
<p>Ivan was noted for picking up this challenging request, working with the GitLab UX team to refine the proposal, and being super responsive to reviews.
<a href="https://gitlab.com/adil.farrukh">Adil Farrukh</a>, Engineering Manager at GitLab, supported the nomination, noting that this feature was not trivial and that Ivan was very responsive to feedback.
<a href="https://gitlab.com/eduardosanz">Eduardo Sanz García</a>, Sr. Frontend Engineer at GitLab, also supported the nomination and commended Ivan’s resilience.</p>
<p>“Really appreciate Eduardo’s review and the GitLab team putting in so much effort to make contributions happen,” Ivan said.
“It was very helpful and I realise how much time it takes.”</p>
<p>Ivan is a frontend software engineer at <a href="https://www.politico.com/">Politico</a>.</p>
<p><a href="https://gitlab.com/BaptisteLalanne">Baptiste Lalanne</a> picked up a three-year-old issue with nearly seventy upvotes to contribute a <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/262674">highly requested feature</a> that adds <code>retry:exit codes</code> to the CI/CD configuration.
This contribution empowers our users with enhanced flexibility in managing failed pipeline jobs and jobs with different exit codes.</p>
<p>Baptiste was nominated by <a href="https://gitlab.com/dhershkovitch">Dov Hershkovitch</a>, Product Manager at GitLab.
“Baptiste’s diligent work on this project went above and beyond mere implementation,” Dov said.
“This accomplishment serves as a prime example of our community’s collaborative strength.
Through Baptiste’s efforts, GitLab has not only fulfilled a critical need but also reinforced its commitment to openness and transparency, enriching our open-core mentality.”</p>
<p>“This is heart warming and really appreciated,” Baptiste said.
“I’m really looking forward to continuing my contributions in my spare time as I love it so much.”</p>
<p>Over the past year, Baptiste has merged six merge requests to GitLab and is looking to <a href="https://docs.gitlab.com/runner/development/">contribute to the GitLab Runner</a> next.
Baptiste is a software engineer for <a href="https://www.datadoghq.com/">DataDog</a>.</p>
<p>A big thanks to our newest MVPs, Ivan and Baptiste, and to the rest of GitLab’s community contributors! 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-chat-now-generally-available">GitLab Duo Chat now generally available</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13516">Related epic</a></li></ul>
</div>

<p>GitLab Duo Chat is now generally available. As part of this release, we are also making these capabilities generally available:</p>
<ul>
<li>Code explanation helps developers and less technical users understand unfamiliar code faster</li>
<li>Code refactoring enables developers to simplify and improve existing code</li>
<li>Test generation automates repetitive tasks and helps teams catch bugs sooner</li>
</ul>
<p>Users can access GitLab Duo Chat in the GitLab UI, in the Web IDE, in VS Code, or in JetBrains IDEs.</p>
<p>Learn more about this release of GitLab Duo Chat from this <a href="https://about.gitlab.com/blog/gitlab-duo-chat-now-generally-available/">blog post</a>.</p>
<p>Chat is currently freely accessible by all Ultimate and Premium users. Instance administrators, group owners, and project owners can choose to <a href="/user/gitlab_duo/turn_on_off/">restrict Duo features from accessing and processing their data</a>.</p>
<p>The GitLab Duo Chat is part of <a href="https://about.gitlab.com/gitlab-duo/#pricing">GitLab Duo Pro</a>. To ease the transition for Chat beta users who have yet to purchase GitLab Duo Pro, Duo Chat will remain available to existing Premium and Ultimate customers (without the add-on) for a short period of time. We will announce when access will be restricted to Duo Pro subscribers at a later date.</p>
<p>Feel free to share your thoughts by clicking the feedback button in the chat or by creating an issue and mentioning GitLab Duo Chat. We’d love to hear from you!</p>
<h3 id="gitlab-duo-chat-available-in-jetbrains-ides">GitLab Duo Chat available in JetBrains IDEs</h3>
<!-- categories: Editor Extensions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/jetbrains_ide/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/editor-extensions/gitlab-jetbrains-plugin/-/issues/307">Related issue</a></li></ul>
</div>

<p>We are happy to announce the availability of GitLab Duo Chat in JetBrains IDEs.</p>
<p>As part of GitLab’s AI offerings, Duo Chat further streamlines the developer experience by directly bringing an interactive chat window into any supported JetBrains IDE and the ability to explain code, write tests, and refactor existing code.</p>
<p>For a complete list of capabilities, see our <a href="/user/gitlab_duo_chat/">Duo Chat documentation</a>.</p>
<h3 id="security-policy-scopes">Security policy scopes</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/5510">Related epic</a></li></ul>
</div>

<p>Policy scoping provides granular management and enforcement of policies. Across both merge request approval (scan result) policies and scan execution policies, this new feature enables security and compliance teams to scope policy enforcement to a compliance framework or to a set of included/excluded projects in a group.</p>
<p>While today all policies managed in a security policy project are enforced against all linked groups, subgroups, and projects, policy scoping will allow you to refine that enforcement policy by policy. This allows security and compliance teams to:</p>
<ul>
<li>More easily manage policies centrally across their organization, while still enforcing policies granularly.</li>
<li>Get a better sense of how the controls they are implementing and enforcing in GitLab roll up to the compliance frameworks they’ve defined.</li>
<li>View and manage which policies are linked to a compliance framework through the compliance center.</li>
<li>Better organize and understand their security and compliance posture.</li>
</ul>
<h3 id="understand-your-users-better-with-product-analytics">Understand your users better with Product Analytics</h3>
<!-- categories: Product Analytics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/productivity_analytics/">Documentation</a></li></ul>
</div>

<p>It is critical to understand how your users are engaging with your application in order to make data-driven decisions about future innovations and optimizations. Are you seeing an uptick in usage for your top business critical URLs, is there an unusual dip in monthly active users, are you seeing more customers engaging with a mobile Android device? By having the answers to questions like this and making them accessible to your engineering teams from the GitLab platform, your teams can stay in sync with how their development work is affecting user outcomes.</p>
<p>With GitLab’s new Product Analytics feature, you can instrument your applications, collect key usage and adoption data about your users, and then display it inside GitLab. You can visualize data in dashboards, report on it, and filter it in a variety of different ways to find insights about your users. Your team can now quickly identify and respond to unexpected dips or spikes in customer usage that signify an issue, as well as celebrate the success of their recent releases.</p>
<p>To use Product Analytics, you will need a Kubernetes cluster to install this <a href="https://gitlab.com/gitlab-org/analytics-section/product-analytics/helm-charts">helm chart</a> and
instrument your application to send traffic to it. GitLab will then connect to the cluster to retrieve the
data for visualization.</p>
<h3 id="disable-personal-access-tokens-for-enterprise-users">Disable personal access tokens for Enterprise Users</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/#disable-personal-access-tokens-for-enterprise-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/369504">Related issue</a></li></ul>
</div>

<p>GitLab.com group Owners can now disable the creation and use of personal access tokens for any enterprise users in their groups. Due to the powerful privileges that can be associated with personal access tokens, some Owners may want to disable these tokens for security reasons.</p>
<p>This granular control gives options when it comes to balancing security and accessibility on GitLab.com.</p>
<h3 id="autocomplete-support-for-links-to-wiki-pages">Autocomplete support for links to wiki pages</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/#gitlab-specific-references">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/442229">Related issue</a></li></ul>
</div>

<p>We’re thrilled to introduce autocomplete support for links to wiki pages in GitLab 16.11! With this new feature, linking to wiki pages from your epics and issues
has never been easier - it’s just a matter of a few keystrokes.</p>
<p>Gone are the days of having to copy and paste wiki page URLs into epic and issue comments. Now, simply navigate to any group or project with wiki pages, access an epic or
issue, and use the autocomplete shortcut to seamlessly link to your wiki pages from the epic or issue!</p>
<h3 id="sidebar-for-metadata-on-the-project-overview-page">Sidebar for metadata on the project overview page</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/">Documentation</a></li></ul>
</div>

<p>We’ve redesigned the project overview page. Now you can find all of the project information and links in one sidebar rather than multiple areas.</p>
<h3 id="email-notifications-for-changes-made-using-switchboard">Email notifications for changes made using Switchboard</h3>
<!-- categories: GitLab Dedicated, Switchboard -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/configure_instance/users_notifications/">Documentation</a> | <a href="https://about.gitlab.com/dedicated/">Related issue</a></li></ul>
</div>

<p>Configuration changes made to your GitLab Dedicated instance by tenant administrators using Switchboard will now generate email notifications when complete.</p>
<p>All users with access to view or edit your tenant in Switchboard will receive a notification for each change made.</p>
<h3 id="option-to-cancel-a-pipeline-immediately-if-any-jobs-fails">Option to cancel a pipeline immediately if any jobs fails</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#workflowauto_cancelon_job_failure">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/23605">Related issue</a></li></ul>
</div>

<p>Sometimes after you notice a job fails, you might manually cancel the rest of the pipeline to save resources while you work on the issue causing the failure. With GitLab 16.11, you can now configure pipelines to be cancelled automatically when any job fails. With large pipelines that take a long time to run, especially with many long-running jobs that run in parallel, this can be an effective way to reduce resource usage and costs.</p>
<p>You can even configure a pipeline to immediately <a href="/ci/pipelines/downstream_pipelines/#auto-cancel-the-parent-pipeline-from-a-downstream-pipeline">cancel if a downstream pipeline fails</a>, which cancels the parent pipeline and all other downstream pipelines.</p>
<p>Special thanks to <a href="https://gitlab.com/zillemarco">Marco</a> for contributing to the feature!</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<ul>
<li>In GitLab 17.0, the minimum-supported version of PostgreSQL will become 14. In preparation for this change, in GitLab 16.11 we have changed the
<code>attempt_auto_pg_upgrade?</code> setting to <code>true</code>, which will attempt to automatically upgrade the version of PostgreSQL to 14.This process is the same as for last time we bumped the minimum-supported PostgreSQL version.</li>
</ul>
<h3 id="updated-project-archiving-functionality">Updated project archiving functionality</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/#archive-a-project">Documentation</a></li></ul>
</div>

<p>Now it’s easier to identify archived projects in project lists. From 16.11, archived projects display an <strong>Archived</strong> badge in the <strong>Archived</strong> tab of the group overview. This badge is also part of the project title on the project overview page.</p>
<p>An alert message clarifies that archived projects are read-only. This message is visible on all project pages to ensure that this context is not lost even when working on sub-pages of the archived project.</p>
<p>In addition, when deleting a group, the confirmation modal now lists the number of archived projects to prevent accidental deletions.</p>
<h3 id="custom-webhook-headers">Custom webhook headers</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhooks/#custom-headers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/17290">Related issue</a></li></ul>
</div>

<p>Previously, GitLab webhooks did not support custom headers. This meant you could not use them with systems that accept authentication tokens from headers with specific names.</p>
<p>With this release, you can add up to 20 custom headers when you create or edit a webhook. You can use these custom headers for authentication to external services.</p>
<p>With this feature and the <a href="/user/project/integrations/webhooks/#custom-webhook-template">custom webhook template</a> introduced in GitLab 16.10, you can now fully design custom webhooks. You can configure your webhooks to:</p>
<ul>
<li>Post custom payloads.</li>
<li>Add any required authentication headers.</li>
</ul>
<p>Like secret tokens and URL variables, custom headers are reset when the target URL changes.</p>
<p>Thanks to <a href="https://gitlab.com/Taucher2003">Niklas</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146702">this community contribution</a>!</p>
<h3 id="test-project-hooks-with-the-rest-api">Test project hooks with the REST API</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/projects/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/25329">Related issue</a></li></ul>
</div>

<p>Previously, you could test project hooks in the GitLab UI only. With this release, you can now trigger test hooks for specified projects by using the REST API.</p>
<p>Thanks to <a href="https://gitlab.com/lifez">Phawin</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147656">this community contribution</a>!</p>
<h3 id="gitlab-for-slack-app-configurable-for-groups-and-instances">GitLab for Slack app configurable for groups and instances</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/gitlab_slack_application/#from-the-project-or-group-settings">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391526">Related issue</a></li></ul>
</div>

<p>Previously, you could configure the GitLab for Slack app for one project at a time only. With this release, it’s now possible to configure the integration for groups or instances and make changes to many projects at once.</p>
<p>This improvement brings the GitLab for Slack app closer to feature parity with the deprecated <a href="/user/project/integrations/slack/">Slack notifications integration</a>.</p>
<h3 id="configurable-import-jobs-limit">Configurable import jobs limit</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/import_and_export_settings/#maximum-number-of-simultaneous-import-jobs">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/439286">Related issue</a></li></ul>
</div>

<p>Until now, the maximum number of import jobs for:</p>
<ul>
<li>GitHub importer was 1000.</li>
<li>Bitbucket Cloud and Bitbucket Server importers was 100.</li>
</ul>
<p>These limits were hard-coded and couldn’t be changed. These limits might have slowed down imports, because they might have been insufficient
to allow the import jobs to be processed at the same rate they were enqueued.</p>
<p>In this release, we’ve moved the hard-coded limits to application settings. Although we are not increasing these limits on GitLab.com, administrators
of self-managed GitLab instances can now configure the number of import jobs according to their needs.</p>
<h3 id="explore-your-product-analytics-data-with-gitlab-duo">Explore your Product Analytics data with GitLab Duo</h3>
<!-- categories: Product Analytics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/productivity_analytics/">Documentation</a></li></ul>
</div>

<p><a href="https://docs.gitlab.com/#understand-your-users-better-with-product-analytics">Product Analytics is now generally available</a>, and this release includes a <a href="/user/analytics/analytics_dashboards/">custom visualization designer</a>. You can use it to explore your application event data, and build dashboards to help you understand your customers’ usage and adoption patterns.</p>
<p>In the visualization designer, you can now ask GitLab Duo to build visualizations for you by entering plain text requests, for example &ldquo;Show me the count of monthly active users in 2024&rdquo; or &ldquo;List the top urls this week.&rdquo;</p>
<p>GitLab Duo in Product Analytics is available as an Experimental feature.</p>
<p>You can help us mature this feature by providing feedback about your experience with GitLab Duo in the custom visualization designer in this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/455363">feedback issue</a>.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="group-comment-templates">Group comment templates</h3>
<!-- categories: Code Review Workflow, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/comment_templates/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440817">Related issue</a></li></ul>
</div>

<p>Across an organization it can be helpful to have the same templated response in issues, epics, or merge requests. These responses might include standard questions that need to be answered, responses to common problems, or maybe structure for merge request review comments.</p>
<p>Group comment templates enable you to create saved responses that you can apply in comment boxes around GitLab to speed up your workflow. This new addition to comment templates allows organizations to create and manage templates centrally, so all of their users benefit from the same templates.</p>
<p>To create a comment template, go to any comment box on GitLab and select <strong>Insert comment template &gt; Manage group comment templates</strong>. After you create a comment template, it’s available for all group members. Select the <strong>Insert comment template</strong> icon while making a comment, and your saved response will be applied.</p>
<p>We’re really excited about this next iteration of comment templates and will also be adding <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440818">project-level comment templates</a> soon too. If you have any feedback, please leave it in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/451520">issue 45120</a>.</p>
<h3 id="build-step-of-auto-devops-upgraded">Build step of Auto DevOps upgraded</h3>
<!-- categories: Auto DevOps -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/topics/autodevops/troubleshooting/#builder-sunset-error">Documentation</a> | <a href="https://gitlab.com/gitlab-org/cluster-integration/auto-build-image/-/issues/73">Related issue</a></li></ul>
</div>

<p>Because the <code>heroku/buildpacks:20</code> image used by the Auto Build component of Auto DevOps was deprecated upstream, we are moving to the <code>heroku/builder:20</code> image.</p>
<p>This breaking change arrives outside a GitLab major release to accommodate a breaking change upstream. The upgrade is unlikely to break your pipelines. As a temporary workaround, you can also manually configure the <code>heroku/builder:20</code> image and <a href="/topics/autodevops/troubleshooting/#skipping-errors">skip the builder sunset errors</a>.</p>
<p>Additionally, we’re planning another major upgrade from <code>heroku/builder:20</code> to <code>heroku/builder:22</code> in GitLab 17.0.</p>
<h3 id="users-list-search-and-filter-improvements">Users list search and filter improvements</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/admin_area/#administering-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/238183">Related issue</a></li></ul>
</div>

<p>The Admin Area users page has been improved.</p>
<p>Previously, tabs horizontally spanned across the top of the users list, making it difficult to navigate to the desired filter.</p>
<p>Now, filters have been combined into the search box, making it much easier to search and filter users.</p>
<p>Thank you <a href="https://www.linkedin.com/in/bahek2462774/">Ivan Shtyrliaiev</a> for your contribution!</p>
<h3 id="webhook-notifications-for-expiring-group-and-project-access-tokens">Webhook notifications for expiring group and project access tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#project-and-group-access-token-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/426147">Related issue</a></li></ul>
</div>

<p>Webhook events for project and group access tokens are now available.</p>
<p>Previously, email was the only way to get notifications about expiring tokens. A webhook event, if triggered, will be triggered seven days before an access token expires.</p>
<h3 id="display-linked-security-policies-in-compliance-frameworks">Display linked Security Policies in Compliance Frameworks</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11480">Related epic</a></li></ul>
</div>

<p>As the compliance center becomes the battle station for compliance managers, you can now manage compliance frameworks, and also gain insight into controls that have
been created through security policies and linked to a compliance framework.</p>
<p>Enforce security scanners to run in projects that are in-scope for your compliance, enforce two-person approval, or enable vulnerability management workflows
through these extensive controls and then roll them up to a compliance framework, ensuring relevant projects within the framework are properly enforced by the control.</p>
<h3 id="renew-application-secret-with-api">Renew application secret with API</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/applications/#renew-an-application-secret">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/422420">Related issue</a></li></ul>
</div>

<p>You can now use the Applications API to renew application secrets. Previously, you had to use the UI to do this. Now you can use the API to rotate secrets programatically.</p>
<p>Thank you <a href="https://gitlab.com/lifez">Phawin</a> for your contribution!</p>
<h3 id="extend-policy-bot-comment-with-violation-data">Extend policy bot comment with violation data</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/433403">Related issue</a></li></ul>
</div>

<p>The security policy bot gives users context to understand when policies are enforced on their project, when evaluation is completed, and if there are any violations blocking an MR, with guidance to resolve them. We have now extended support in the bot comment to supply additional insight into why an MR may be blocked by a policy, with more granular feedback on how to resolve. Details provided by the comment include:</p>
<ul>
<li>Security findings that are specifically blocking the MR</li>
<li>Out-of-policy licenses</li>
<li>Policy errors that may default in a “fail closed” and blocking behavior</li>
<li>Details regarding the pipelines that are being considered in the evaluation for security findings</li>
</ul>
<p>With these extra details, you can now more quickly understand the state of your MR and self-serve to troubleshoot any issues.</p>
<h3 id="authenticate-to-google-cloud-with-workload-identity-federation">Authenticate to Google Cloud with workload identity federation</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/google_cloud_iam/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12758">Related epic</a></li></ul>
</div>

<p>Workload identity federation allows you to securely connect workloads between GitLab and Google Cloud without the use of service account keys. This improves security, because keys can potentially be long-lived credentials that expose a vector for attack. Keys also come with management overhead for creating, securing, and rotating.</p>
<p>Workload identity federation allows you to map IAM roles between GitLab and Google Cloud.</p>
<p>This feature is in Beta and is currently available only on GitLab.com.</p>
<h3 id="issue-with-duplicate-security-policies-resolved">Issue with duplicate security policies resolved</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416903">Related issue</a></li></ul>
</div>

<p>In GitLab 16.9 and earlier, it was possible for a project to both inherit security policies from a parent group or subgroup and link to the same security policies project. The result was that policies were duplicated in the policies list.</p>
<p>This issue has been resolved and it is no longer possible to link to a security policies project from which policies are already inherited.</p>
<h3 id="more-username-options">More username options</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/#change-your-username">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/429283">Related issue</a></li></ul>
</div>

<p>Usernames can only include non-accented letters, digits, underscores (<code>_</code>), hyphens (<code>-</code>), and periods (<code>.</code>).
Usernames must not start with a hyphen (<code>-</code>), or end in a period (<code>.</code>), <code>.git</code>, or <code>.atom</code>.</p>
<p>Username validation now more accurately states this criteria. This improved validation means that you are clearer on your options when choosing your username.</p>
<p>Thank you <a href="https://www.linkedin.com/in/jzeng88/">Justin Zeng</a> for your contribution!</p>
<h3 id="improved-gitlab-pages-visibility-in-sidebar">Improved GitLab Pages visibility in sidebar</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/18027">Related issue</a></li></ul>
</div>

<p>In previous releases, for projects with a GitLab Pages site, it was difficult to find the site URL.</p>
<p>From GitLab 16.11, the right sidebar has a shortcut link to the site, so you can find the URL without needing to check the docs.</p>
<h3 id="connect-google-artifact-registry-to-your-gitlab-project">Connect Google Artifact Registry to your GitLab project</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/google_artifact_management/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12365">Related epic</a></li></ul>
</div>

<p>You use the GitLab container registry to view, push, and pull Docker and OCI images alongside your source code and pipelines. For many GitLab customers, this works great for container images during the <code>test</code> and <code>build</code> phases. But, it’s common for organizations to publish their production images to a cloud provider, like Google.</p>
<p>Previously, to push images from GitLab to Google Artifact Registry, you had to create and maintain custom scripts to connect and deploy to Artifact Registry. This was inefficient and error prone. In addition, there was no way easy way to get a holistic view of all of your container images.</p>
<p>Now, you can leverage the new Google Artifact Management feature to easily connect your GitLab project to an Artifact Registry repository. Then you can use GitLab CI/CD pipelines to publish images to the Artifact Registry. You can also view images that have published to the Artifact Registry in GitLab by going to <strong>Deploy &gt; Google Artifact Registry</strong>. To view details about an image, simply select an image.</p>
<p>This feature is in Beta and is currently available only on GitLab.com.</p>
<h3 id="visually-distinguish-epics-using-colors">Visually distinguish epics using colors</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/epics/manage_epics/#epic-color">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9033">Related epic</a></li></ul>
</div>

<p>To further improve the ability to use portfolio management features across the organization, you can now distinguish epics using colors on <a href="/user/group/roadmap/">roadmaps</a> and <a href="/user/group/epics/epic_boards/">epic boards</a>.</p>
<p>Quickly distinguish between group ownership, stage in a lifecycle, development towards maturity, or a number of other categorizations with this lightweight but versatile feature.</p>
<h3 id="value-stream-events-can-now-be-calculated-cumulatively">Value stream events can now be calculated cumulatively</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/value_stream_analytics/#cumulative-label-event-duration">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12088">Related issue</a></li></ul>
</div>

<p>We introduced a more robust method for calculating durations between label events. This change accommodates scenarios where events occur multiple times, such as label changes in merge requests back and forth between development to review states. Previously, the duration was calculated as the total time elapsed between the first and last label event.</p>
<p>Now, the duration is calculated as cumulative time, meaning it now correctly represents only the time when an issue or merge request had a given label.</p>
<h3 id="dependency-graph-support-for-dependency-scanning-sboms">Dependency graph support for dependency scanning SBOMs</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/366168">Related epic</a></li></ul>
</div>

<p>Users can access dependency graph information in CycloneDX SBOMs generated as a part of their dependency scanning report. Dependency graph information is available for the following package managers:</p>
<ul>
<li>NuGet</li>
<li>Yarn 1.x</li>
<li>sbt</li>
<li>Conan</li>
</ul>
<h3 id="dependency-scanning-support-for-yarn-v4">Dependency Scanning support for Yarn v4</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#supported-languages-and-package-managers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431752">Related epic</a></li></ul>
</div>

<p>Dependency Scanning supports Yarn v4. This enhancement allows our analyzer to parse Yarn v4 lockfiles.</p>
<h3 id="dast-analyzer-performance-updates">DAST analyzer performance updates</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12194">Related issue</a></li></ul>
</div>

<p>During the 16.11 release milestone we completed the following DAST improvements:</p>
<ul>
<li>Snip navigation paths to improve crawler performance, which reduced scan time by 20% according to our benchmark test. <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/430815">See the issue</a> for more details.</li>
<li>Optimize DAST reporting to reduce memory usage, which reduced runner memory spikes during DAST scans. <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/444180">See the issue</a> for more details.</li>
</ul>
<h3 id="automate-the-creation-of-google-compute-engine-runners-from-gitlab---public-beta">Automate the creation of Google Compute Engine Runners from GitLab - Public Beta</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/provision_runners_google_cloud/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/13494">Related epic</a></li></ul>
</div>

<p>Previously, creating GitLab Runners in Google Compute Engine required multiple context switches from GitLab and Google Cloud.</p>
<p>Now, you can easily provision GitLab Runners in Google Compute Engine with a terraform template from the GitLab Runner Infrastructure Toolkit and GitLab to deploy a GitLab runner and provision the Google Cloud infrastructure - without having to switch between multiple systems.</p>
<h3 id="improve-automatic-retry-for-failed-ci-jobs-with-specific-exit-codes">Improve automatic retry for failed CI jobs with specific exit codes</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#retry">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/262674">Related issue</a></li></ul>
</div>

<p>Previously, you could use <code>retry:when</code> in addition to <code>retry:max</code> to configure how many times a job is retried
when specific failures occur, like when a script fails.</p>
<p>With this release, you can now use <a href="/ci/yaml/#retryexit_codes"><code>retry:exit_codes</code></a>
to configure automatic retries of failed jobs based on specific script exit codes.
You can use <code>retry:exit_codes</code> with <code>retry:when</code> and <code>retry:max</code> to fine-tune your pipeline’s behavior
according to your specific needs and improve your pipeline execution.</p>
<p>Thanks to <a href="https://gitlab.com/BaptisteLalanne">Baptiste Lalanne</a> for this community contribution!</p>
<h3 id="gitlab-runner-1611">GitLab Runner 16.11</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.11 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/31077">Crash: fatal error: concurrent map read and map write</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37243">FF_KUBERNETES_HONOR_ENTRYPOINT feature not working</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-11-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h3 id="expanded-hashicorp-vault-secrets-support-including-artifactory-and-aws">Expanded Hashicorp Vault Secrets support, including Artifactory and AWS</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/secrets/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/366492">Related issue</a></li></ul>
</div>

<p>The GitLab integration with HashiCorp Vault has been expanded to support more types of secrets. You can now select a <code>generic</code> type of secrets engine, introduced in GitLab Runner 16.11. This generic engine supports HashiCorp Vault <a href="https://jfrog.com/help/r/jfrog-integrations-documentation/hashicorp-vault-artifactory-secrets-plugin">Artifactory Secrets Plugin</a> and <a href="https://developer.hashicorp.com/vault/docs/secrets/aws">AWS secrets engine</a>. Use this option to safely retrieve the secrets you need and use them in GitLab CI/CD pipelines!</p>
<p>Thanks so much to <a href="https://gitlab.com/urbanwax">Ivo Ivanov</a> for this great contribution!</p>
<h3 id="control-who-can-download-job-artifacts">Control who can download job artifacts</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#artifactsaccess">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428677">Related issue</a></li></ul>
</div>

<p>By default, all generated artifacts from CI/CD jobs in a public pipeline are available for download by all users with access to the pipeline. However, there are cases where artifacts should never be downloaded, or only be accessible for download by team members with a higher access level.</p>
<p>So in this release, we’ve added the <code>artifacts:access</code> keyword. Now, users can control whether artifacts can be downloaded by all users with access to the pipeline, only users with the Developer role or higher, or no user at all.</p>
<h3 id="improved-pipeline-details-page">Improved pipeline details page</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/#view-pipelines">Documentation</a></li></ul>
</div>

<p>The pipeline graph offers a comprehensive overview of your pipelines, showing job statuses, runtime updates, multi-project pipelines, and parent-child pipelines.</p>
<p>Today, we’re excited to announce the release of the redesigned pipeline graph with enhanced aesthetics, grouped jobs visualization, improved mobile expirence and expanded downstream pipeline visibility within your existing view.</p>
<p>We’d greatly appreciate it if you could try it out and share your feedback through this dedicated <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/450676">issue</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.11">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.11">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.11">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.10 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-10-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-10-released/</id><published>2024-03-21T00:00:00Z</published><updated>2024-03-21T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On March 21, 2024, GitLab 16.10 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p><a href="https://gitlab.com/X_Sheep">Lennard Sprong</a> previously won the GitLab MVP award in 15.4 and
was also nominated in 16.9.
He continues to provide contributions to GitLab Workflow for VS Code, merging 8 contributions
in the past two months.
Some of his past contributions include the ability to <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/merge_requests/674">watch the trace of running CI jobs</a>,
<a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/merge_requests/1336">view downstream pipelines</a>,
and <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/merge_requests/1319">compare images in merge requests</a>.
Lennard is also actively involved in issues inside the <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension">GitLab-vscode-extension</a>
project.</p>
<p><a href="https://gitlab.com/erran">Erran Carey</a>, Staff Fullstack Engineer at GitLab, nominated Lennard and
noted that “Lennard resolved an <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/1000">issue viewing pipelines</a>
affecting GitLab Community Edition users.
He pointed impacted users to the existing workaround before <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/merge_requests/1417">creating a merge request</a>
to address the issue.”</p>
<p><a href="https://gitlab.com/viktomas">Tomas Vik</a>, Staff Fullstack Engineer at GitLab, additionally supported Lennard and highlighted a contribution
to <a href="https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/merge_requests/1319">add support for image diff</a>
that allows people to view image changes during merge request review.</p>
<p><a href="https://gitlab.com/zillemarco">Marco Zille</a> also wins his second GitLab MVP award, previously winning in 15.3.
Marco was recognized not only for code contributions this release, but also for ongoing efforts supporting GitLab’s wider
community of contributors, running community pairing sessions, collaborating with GitLab team members, and
reviewing merge requests.</p>
<p>Marco added the ability to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/23605">cancel a pipeline immediately after one job fails</a>.
The feature is enabled and available on GitLab.com but still behind a feature flag
for self-hosted instances.
It will be made available for everyone in 16.11.</p>
<p><a href="https://gitlab.com/allison.browne">Allison Browne</a>, Senior Backend Engineer at GitLab, nominated Marco for picking up this long
standing and highly requested feature request in pipeline execution.
<a href="https://gitlab.com/fabiopitino">Fabio Pitino</a>, Principal Engineer at GitLab, added that “Marco
not only implemented the fix but also was instrumental to the design of the feature,
bringing use cases and discussing them with customers interested in the feature.”</p>
<p><a href="https://gitlab.com/splattael">Peter Leitzen</a> additionally supported Marco’s nomination by highlighting how Marco helped to <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112813#note_1737719869">review
and then finish a fix</a>
for loading the stack trace from Sentry.</p>
<p>We are so grateful for the continued support from Lennard and Marco to improve GitLab and support our
open source community! 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="semantic-versioning-in-the-cicd-catalog">Semantic versioning in the CI/CD catalog</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#component-versions">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/442238">Related issue</a></li></ul>
</div>

<p>To enforce consistent behavior across published components, in GitLab 16.10 we will enforce Semantic versioning for components that are published to the CI/CD catalog. When publishing a component, the tag must follow the 3-digit semantic versioning standard (for example <code>1.0.0</code>).</p>
<p>When using a component with the <code>include: component</code> syntax, you should use the published semantic version. Using <code>~latest</code> continues to be supported, but it will always return the latest published version, so you must use it with caution as it could include breaking changes. Shorthand syntax is not supported, but it will be in an upcoming milestone.</p>
<h3 id="gitlab-duo-access-governance-control">GitLab Duo access governance control</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/turn_on_off/">Documentation</a></li></ul>
</div>

<p>Generative AI is revolutionizing work processes, and you can now facilitate the adoption of these technologies without compromising privacy, compliance, or intellectual property (IP) protections.</p>
<p>You can now disable GitLab Duo AI features for a project, a group, or an instance by using the API. You can then enable GitLab Duo for specific projects or groups when you’re ready. These changes are part of a suite of expected work to make AI features more granular to control.</p>
<h3 id="wiki-templates">Wiki templates</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/#wiki-page-templates">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/16608">Related issue</a></li></ul>
</div>

<p>This version of GitLab introduces all-new templates to the Wiki. Now, you can create templates to streamline creating new pages or modifying existing ones. Templates are wiki pages that are stored in the templates directory in the wiki repository.</p>
<p>With this enhancement, you can make your wiki page layouts more consistent, create or restructure pages faster, and ensure that information is presented clearly and coherently in your knowledge base.</p>
<h3 id="new-clickhouse-integration-for-high-performance-devops-analytics">New ClickHouse integration for high-performance DevOps Analytics</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/contribution_analytics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428260">Related issue</a></li></ul>
</div>

<p>The <a href="/user/group/contribution_analytics/">Contribution Analytics report</a> is now more performant and backed by an advanced analytics database using ClickHouse on GitLab.com. This upgrade set the foundation for new extensive analytics and reporting features, allowing us to deliver high-performance analytics aggregations, filtering, and slicing across multiple dimensions. Support for self-managed customers to be able to add to this capability is proposed in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/441626">issue 441626</a>.</p>
<p>Although ClickHouse enhances GitLab’s analytics capabilities, it’s not meant to replace PostgreSQL or Redis, and the existing capabilities remain unchanged.</p>
<h3 id="gitlab-pages-and-advanced-search-available-on-gitlab-dedicated">GitLab Pages and Advanced Search available on GitLab Dedicated</h3>
<!-- categories: GitLab Dedicated -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_dedicated/#available-features">Documentation</a> | <a href="https://about.gitlab.com/dedicated/">Related issue</a></li></ul>
</div>

<p><a href="/user/project/pages/">GitLab Pages</a> and <a href="/user/search/advanced_search/">Advanced Search</a> have been enabled for all <a href="https://about.gitlab.com/dedicated/">GitLab Dedicated instances</a>. These features are included in your GitLab Dedicated subscription.</p>
<p>Advanced Search enables faster, more efficient search across your entire GitLab Dedicated instance. All capabilities of Advanced Search can be used with GitLab Dedicated instances.</p>
<p>With GitLab Pages, you can publish static websites directly from a repository in GitLab Dedicated. Some capabilities of Pages are <a href="/subscriptions/gitlab_dedicated/#gitlab-pages">not yet available</a> for GitLab Dedicated instances.</p>
<h3 id="offload-ci-traffic-to-geo-secondaries">Offload CI traffic to Geo secondaries</h3>
<!-- categories: Geo Replication -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/secondary_proxy/runners/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9779">Related epic</a></li></ul>
</div>

<p>You can now offload CI runner traffic to Geo secondary sites. Locate runner fleets where they are more convenient and economical to operate and manage, while reducing cross-region traffic. Distribute the load across multiple secondary Geo sites. Reduce load on the primary site, reserving resources for serving developer traffic. After this setup, the developer experience is transparent and seamless. Developer workflows for the setup and configuration of jobs remain unchanged.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="gitlab-chart-improvements">GitLab chart improvements</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/">Documentation</a></li></ul>
</div>

<p>In GitLab 16.10, we’ve removed support for installing GitLab on Kubernetes 1.24 and older. Kubernetes maintenance support of Kubernetes 1.24 ended
in July 2023.</p>
<p>GitLab 16.10 includes support for installing GitLab on Kubernetes 1.27. For more information, see our new <a href="https://handbook.gitlab.com/handbook/engineering/careers/matrix/infrastructure/core-platform/distribution/">Kubernetes version support policy</a>. Our goal is to support newer versions of
Kubernetes closer to their official release.</p>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>GitLab 16.10 introduces a new major version of Patroni, version 3.0.1. This version upgrade will require downtime. For more
information and instructions, see the
<a href="/update/versions/gitlab_16_changes/#16100">16.10 section of our GitLab 16 changes page</a>.</p>
<p>GitLab 16.10 also includes a new version of Alertmanager, namely version 0.27. Most notably, this version includes the removal of API v1. For more information on this
release, see the <a href="https://github.com/prometheus/alertmanager/blob/v0.27.0/CHANGELOG.md#0270--2024-02-28">Alertmanager changelog</a>.</p>
<p>GitLab 16.10 also includes <a href="https://docs.mattermost.com/deploy/mattermost-changelog.html#release-v9-5-extended-support-release">Mattermost 9.5</a>.
Mattermost 9.5 includes various security updates and the deprecation of support for MySQL 5.7. Users on this version of MySQL must update.</p>
<h3 id="filter-members-by-enterprise-users-with-graphql-api">Filter members by Enterprise users with GraphQL API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/graphql/reference/#groupgroupmembers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/356062">Related issue</a></li></ul>
</div>

<p>With the GraphQL API you can now filter group members by Enterprise users.</p>
<h3 id="blocked-users-are-excluded-from-the-followers-list">Blocked users are excluded from the followers list</h3>
<!-- categories: User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/#follow-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/441774">Related issue</a></li></ul>
</div>

<p>Previously, when a user who followed you was blocked, they still appeared in the followers list of your User Profile. From GitLab 16.10, blocked users are hidden from the followers list. If the user is unblocked, they will reappear in the followers list.</p>
<p>Thank you @SethFalco for this community contribution!</p>
<h3 id="filter-groups-by-visibility-in-the-rest-api">Filter groups by visibility in the REST API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/groups/#list-groups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/429314">Related issue</a></li></ul>
</div>

<p>You can now filter groups by visibility in the <a href="/api/groups/">Groups API</a>. You can use filtering to focus on groups with a specific visibility level, making it easier to audit GitLab implementations.</p>
<p>Thank you @imskr for this community contribution!</p>
<h3 id="updated-project-deletion-functionality">Updated project deletion functionality</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/443682">Related issue</a></li></ul>
</div>

<p>Now it’s easier to identify deleted projects in project lists. From GitLab 16.10, deleted projects display a <code>Pending deletion</code> badge next to the project title on the project overview page. An alert message clarifies that deleted projects are read-only. This message is visible on all project pages to ensure that this context is not lost even when working on sub-pages of the deleted project.</p>
<h3 id="threaded-notifications-supported-in-google-chat">Threaded notifications supported in Google Chat</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/hangouts_chat/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438452">Related issue</a></li></ul>
</div>

<p>Previously, notifications sent from GitLab to a space in Google Chat could not be created as replies to specified threads.
With this release, threaded notifications are enabled by default in Google Chat for the same GitLab object (for example, an issue or merge request).</p>
<p>Thanks to <a href="https://gitlab.com/robbie-demuth">Robbie Demuth</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145187">this community contribution</a>!</p>
<h3 id="custom-payload-template-for-webhooks">Custom payload template for webhooks</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhooks/#custom-webhook-template">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/362504">Related issue</a></li></ul>
</div>

<p>Previously, GitLab webhooks could send only specific JSON payloads, which meant the receiving endpoints had to understand the webhook format. To use those webhooks, you had to either use an app to specifically support GitLab or write your own endpoint.</p>
<p>With this release, you can set a custom payload template in the webhook configuration. The request body is rendered from the template with the data for the current event.</p>
<p>Thanks to <a href="https://gitlab.com/Taucher2003">Niklas</a> for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142738">this community contribution</a>!</p>
<h3 id="create-service-desk-tickets-from-the-ui-and-api">Create Service Desk tickets from the UI and API</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/using_service_desk/#create-a-service-desk-ticket-in-gitlab-ui">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/433376">Related issue</a></li></ul>
</div>

<p>Now you can create Service Desk tickets from the UI and the API using the <code>/convert_to_ticket user@example.com</code> quick action on a regular issue.</p>
<p>Create a regular issue and add a comment with the <code>/convert_to_ticket user@example.com</code> quick action. The provided email address becomes the external author of the ticket. GitLab doesn’t send the <a href="/user/project/service_desk/configure/">default thank you email</a>. You can add a public comment on the ticket to let the external participant know that the ticket has been created.</p>
<p>Adding a Service Desk ticket using the API follows the same concept: Create an issue using the <a href="/api/issues/">Issues API</a> and use the <code>issue_iid</code> to add a note with the quick action using the <a href="/api/notes/">Notes API</a>.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="automatically-collapse-generated-files-in-merge-requests">Automatically collapse generated files in merge requests</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/changes/#collapse-generated-files">Documentation</a></li></ul>
</div>

<p>Merge requests can contain changes from users and automated processes or compilers. Files like <code>package-lock.json</code>, <code>Gopkg.lock</code>, and minified <code>js</code> and <code>css</code> files increase the number of files shown in a merge request review, and distract reviewers from the human-generated changes. Merge requests now display these files collapsed by default, to help:</p>
<ul>
<li>Focus reviewer attention on important changes, but enable a full review if desired.</li>
<li>Reduce the amount of data needed to load the merge request, which might help larger merge requests perform better.</li>
</ul>
<p>For examples of the file types that are collapsed by default, see the <a href="/user/project/merge_requests/changes/#collapse-generated-files">documentation</a>. To collapse more files and file types in the merge request, specify them as <code>gitlab-generated</code> in your project’s <code>.gitattributes</code> file.</p>
<p>You can leave feedback on this change in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438727">issue 438727</a>.</p>
<h3 id="expanded-checks-in-merge-widget">Expanded checks in merge widget</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/auto_merge/">Documentation</a></li></ul>
</div>

<p>The merge widget explains clearly if your merge request is not mergeable, and why. Previously, only one merge blocker was displayed at a time. This increased review cycles and forced you to resolve problems individually, without knowing if more blockers remained.</p>
<p>When you view a merge request, the merge widget now gives you a comprehensive view of problems, both remaining and resolved. Now you can understand at a glance if multiple blockers exist, fix them all in a single iteration, and increase your confidence that no hidden blockers have been missed.</p>
<h3 id="manually-refresh-the-dashboard-for-kubernetes">Manually refresh the dashboard for Kubernetes</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/429531">Related issue</a></li></ul>
</div>

<p>GitLab 16.10 adds a dedicated refresh feature to the dashboard for Kubernetes. Now you can manually fetch Kubernetes resource data, and ensure you have access to the most recent information about your clusters.</p>
<h3 id="improved-environment-details-page">Improved environment details page</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431746">Related issue</a></li></ul>
</div>

<p>The environment details page is improved in GitLab 16.10. When you select an environment from the environment list, you can review up-to-date information about your deployments and connected Kubernetes clusters, all in one convenient layout.</p>
<h3 id="improved-error-message-for-authentication-rate-limit">Improved error message for authentication rate limit</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/rate_limits/#failed-authentication-ban-for-git-and-container-registry">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/22787">Related issue</a></li></ul>
</div>

<p>When authenticating with GitLab, it is possible to hit the authentication attempt rate limit, such as when using a script. Previously, if you hit the authentication rate limit, a <code>403 Forbidden</code> message was returned, which did not explain why you are getting this error. We now return a more descriptive error message which tells you that you’ve hit the authentication rate limit.</p>
<h3 id="audit-event-scope-attribute">Audit event <code>scope</code> attribute</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>Audit events now include a <code>scope</code> attribute that indicates if the event is associated with an entire instance, a group, a project, or a user.</p>
<p>This new attribute helps users determine where an event originated in audit event payloads. It also allows our
<a href="/administration/compliance/audit_event_reports/">audit event type documentation</a> to list all available scopes for an audit event
type.</p>
<p>You can use this new attribute to parse through external streaming destinations or to better understand context around events.</p>
<h3 id="custom-names-for-service-accounts">Custom names for service accounts</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/service_accounts/#create-a-service-account">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415973">Related issue</a></li></ul>
</div>

<p>You can now customize a service account’s username and display name. Previously, these were auto-generated by GitLab. With a custom name, it is easier to understand the purpose of the service account, and distinguish it from other accounts in the user list.</p>
<h3 id="audit-event-for-assigning-a-custom-role">Audit event for assigning a custom role</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/427954">Related issue</a></li></ul>
</div>

<p>GitLab now records an audit event when a user is assigned a different role, regardless of whether that role is a default role or a custom role. This event is important to identify if user permissions have been added or changed in case of privilege escalation.</p>
<h3 id="new-permissions-for-custom-roles">New permissions for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391760">Related issue</a></li></ul>
</div>

<p>To create custom roles, you can now choose two new permissions:</p>
<ul>
<li>Manage CI/CD Variables</li>
<li>Ability to delete a group</li>
</ul>
<p>With the release of these custom permissions, you can reduce the number of Owners needed in a group by creating a custom role with these Owner-equivalent permissions. Custom roles let you define granular roles that give a user only the permissions they need to do their job, and reduce unnecessary privilege escalation.</p>
<h3 id="scan-result-policies-are-now-merge-request-approval-policies">Scan result policies are now &ldquo;Merge request approval policies&rdquo;</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9850">Related epic</a></li></ul>
</div>

<p>As we’ve expanded capabilities of the policy type to support overriding project settings and enforce approval requirements, we’ve updated the policy name to the more apt “merge request approval policy”.</p>
<p>Merge request approval policies do not replace or conflict with existing merge request approval rules. Instead they provide Ultimate tier customers the ability to create global enforcement across projects through policies managed by central security and compliance teams - an increasingly challenging task for large-scale organizations.</p>
<h3 id="webhooks-support-mutual-tls">Webhooks support mutual TLS</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhooks/#configure-webhooks-to-support-mutual-tls">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/27450">Related issue</a></li></ul>
</div>

<p>You can now configure webhooks to support mutual TLS. This configuration establishes the authenticity of the webhook source and enhances security. You configure the client certificate in PEM format, which is presented to the server during the TLS handshake. You can also protect the certificate with a PEM passphrase.</p>
<h3 id="sign-in-page-improvements">Sign-in page improvements</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/412845">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/412845">Related issue</a></li></ul>
</div>

<p>The GitLab sign-in page has been refreshed with improvements that fix spacing issues, broken elements, and alignment. There is also additional support for dark mode, and a button to manage cookie preferences. The combination of these improvements gives a fresh look and improved functionality on the sign-in page.</p>
<h3 id="smart-card-support-for-active-directory-ldap">Smart card support for Active Directory LDAP</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/auth/smartcard/#authentication-against-an-active-directory-ldap-server">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/328074">Related issue</a></li></ul>
</div>

<p>Smart card authentication against an LDAP server now supports Entra ID (formerly known as Azure Active Directory). This makes it easy to sync user identity data from Entra ID, and authenticate against LDAP with smart cards.</p>
<h3 id="use-merge-base-pipeline-for-merge-request-approval-policy-comparison">Use merge base pipeline for merge request approval policy comparison</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#understanding-merge-request-approval-policy-approvals">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428518">Related issue</a></li></ul>
</div>

<p>This enhancement aligns the logic of the merge request approval policy evaluation with the security MR widget, ensuring that findings that violate a merge request approval policy align with the results displayed in the widget. By aligning the logic, security, compliance, and development teams can more consistently identify which findings violate a policy and require approval.
Rather than comparing to the target branch’s latest completed <code>HEAD</code> pipeline, scan result policies now compare to a common ancestor’s latest completed pipeline, the “merge base”.</p>
<h3 id="support-domain-level-redirects-for-gitlab-pages">Support domain-level redirects for GitLab Pages</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/redirects/#domain-level-redirects">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-pages/-/issues/601">Related issue</a></li></ul>
</div>

<p>Previously, GitLab focused on supporting simple redirect rules. In GitLab 14.3, we <a href="https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/458">introduced</a> support for splat and placeholder redirects.</p>
<p>From GitLab 16.10, GitLab Pages supports domain-level redirects. You can combine domain-level redirects with <a href="https://gitlab.com/gitlab-org/gitlab-pages/-/issues/601">splat rules</a> to dynamically rewrite the URL path. This improvement helps prevent confusion and ensure that you can still find your information after a domain change, even if you use an old domain.</p>
<h3 id="list-repository-tags-with-the-new-container-registry-api">List repository tags with the new container registry API</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/container_registry/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10208">Related epic</a></li></ul>
</div>

<p>Previously, the container registry relied on the Docker/OCI <a href="https://gitlab.com/gitlab-org/container-registry/-/blob/5208a0ce1600b535e529cd857c842fda6d19ad59/docs/spec/docker/v2/api.md#listing-image-tags">listing image tags registry API</a> to display tags in GitLab. This API had significant performance and discoverability limitations.</p>
<p>This API performed slowly because the number of network requests against the registry scaled with the number of tags in the tags list. In addition, because the API didn’t track publish time, the published timestamp was often incorrect. There were also limitations when displaying images based on Docker manifest lists or OCI indexes, such as for multi-architecture images.</p>
<p>To address these limitations, we introduced a new registry <a href="https://gitlab.com/gitlab-org/container-registry/-/blob/5208a0ce1600b535e529cd857c842fda6d19ad59/docs/spec/gitlab/api.md#list-repository-tags">list repository tags API</a>. In GitLab 16.10, we’ve completed the migration to the new API. Now, whether you use the UI or the REST API, you can expect improved performance, accurate publication timestamps, and robust support for multi-architecture images.</p>
<p>This improvement is available only on GitLab.com. Self-managed support is blocked until the next-generation container registry is generally available. To learn more, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/423459">issue 423459</a>.</p>
<h3 id="new-contributor-count-metric-in-the-value-streams-dashboard">New contributor count metric in the Value Streams Dashboard</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/433353">Related issue</a></li></ul>
</div>

<p>To enable software leaders to gain insights into the relationship between team velocity, software stability, security exposures, and team productivity, we introduced a new <a href="/user/analytics/value_streams_dashboard/#dashboard-metrics-and-drill-down-reports"><strong>Contributor count</strong> metric in the Value Streams Dashboard</a>. The contributor count represents the number of monthly unique users with contributions in the group. This metric is designed to track adoption trends over time, and is based on <a href="/user/profile/contributions_calendar/#user-contribution-events">contributions calendar events</a>.</p>
<p>The <strong>Contributor count</strong> metric is available only on GitLab.com, and requires the <a href="/user/group/contribution_analytics/#contribution-analytics-with-clickhouse">contribution analytics report to be configured to run through ClickHouse</a>. <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/441626">Issue 441626</a> tracks efforts to make this feature available to self-managed customers as well.</p>
<h3 id="inherited-filters-in-value-stream-analytics-for-seamless-and-accurate-workflow-analysis">Inherited filters in Value Stream Analytics for seamless and accurate workflow analysis</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/issues_analytics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/439615">Related issue</a></li></ul>
</div>

<p><a href="/user/group/value_stream_analytics/">Value stream analytics</a> now applies the same filters when drilling down from the <strong>Lead time</strong> tile to the <a href="/user/group/issues_analytics/"><strong>Issue Analytics</strong> report</a>. The filter inheritance helps you dive deeper and seamlessly into data as you switch between analytics views.</p>
<h3 id="add-an-issue-to-the-current-or-next-iteration-with-a-quick-action">Add an issue to the current or next iteration with a quick action</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/quick_actions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/384885">Related issue</a></li></ul>
</div>

<p>The <code>/iteration</code> quick action now accepts a cadence reference with <code>--current</code> or <code>--next</code> arguments. If your group has a single iteration cadence, you can quickly assign an issue to the current or next iteration by using <code>/iteration --current|next</code>. If your group contains many iteration cadences, you can specify the desired cadence in the quick action by referencing the cadence name or ID. For example, <code>/iteration [cadence:&quot;&lt;cadence name&gt;&quot;|&lt;cadence ID&gt;] --next|current</code>.</p>
<h3 id="continuous-vulnerability-scanning-available-by-default-for-container-scanning">Continuous Vulnerability Scanning available by default for Container Scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/continuous_vulnerability_scanning/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10174">Related epic</a></li></ul>
</div>

<p>Continuous Vulnerability Scanning for Container Scanning is now available by default. The default availability removes the need to opt into this functionality through a feature flag. To learn more about the benefits of Continuous Vulnerability Scanning, see the documentation link.</p>
<h3 id="improved-dependency-scanning-support-for-sbt">Improved Dependency Scanning support for sbt</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#supported-languages-and-package-managers">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/390287">Related issue</a></li></ul>
</div>

<p>We have updated the mechanism we use to generate the list of dependencies for projects using sbt. This change is only applicable to projects using sbt version 1.7.2 and later. To fully leverage Dependency Scanning for sbt projects, you should upgrade to sbt version 1.7.2 and later.</p>
<h3 id="dast-analyzer-performance-updates">DAST analyzer performance updates</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12194">Related issue</a></li></ul>
</div>

<p>During the 16.10 release milestone, proxy-based DAST was:</p>
<ul>
<li>Upgraded ZAP to version 2.14.0. For more information, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/442056">issue 442056</a>.</li>
</ul>
<p>We also completed the following browser-based DAST crawler performance improvements:</p>
<ul>
<li>Limit the number of goroutines created when crawling. For more information, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440151">issue 440151</a>.</li>
<li>Optimize finding elements to interact with. This reduced scan time by 6%. For more information, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440295">issue 440295</a>.</li>
<li>Optimize JSON unmarshalling of DevTools messages. This reduced scan time by 7%. For more information, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/439726">issue 439726</a>.</li>
</ul>
<h3 id="gitlab-runner-1610">GitLab Runner 16.10</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.10 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<p>Bug fixes:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27857">Memory leak when jobs are cancelled in the Runner Kubernetes executor</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-10-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.10">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.10">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.10">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.9 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-9-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-9-released/</id><published>2024-02-15T00:00:00Z</published><updated>2024-02-15T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On February 15, 2024, GitLab 16.9 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>Ravi is actively working with GitLab’s Vulnerability Research group
to address high false-positive results in <a href="https://gitlab.com/gitlab-org/security-products/sast-rules">GitLab SAST.</a></p>
<p>Ravi was nominated by <a href="https://gitlab.com/rmsrohan">Rohan Shah</a>, Customer Success Manager at GitLab, who noted
Ravi’s significant improvements to the <a href="/user/application_security/sast/rules/">detection rules</a> used in GitLab SAST.
<a href="https://gitlab.com/dbolkensteyn">Dinesh Bolkensteyn</a>, Senior Vulnerability Researcher at GitLab, added
“Ravi’s feedback is spot on, directly actionable and enabled us to improve many of our SAST rules.”</p>
<p>Ravi Dharmawan a.k.a ravidhr works at GoTo Group as an Information Security Architect.
He works mostly on handling secure design review, source code review, and penetration testing.
Ravi is OSCP + eWPTXv2 certified.</p>
<p>Ian is the first GitLab MVP recognized for work <a href="https://forum.gitlab.com/u/iwalker/activity">supporting users on the GitLab Forum.</a><a href="https://gitlab.com/dnsmichi">Michael Friedrich</a>, Senior Developer Advocate at GitLab, and
<a href="https://gitlab.com/sugaroverflow">Fatima Sarah Khalid</a>, Developer Advocate at GitLab both nominated Ian
for continued efforts in helping make our forum a better place for the community by answering questions for users who are setting up and using GitLab.</p>
<p>Ian works at UpWare Sp. z o.o. as a System and Security Consultant, working mostly on Red Hat OpenShift and anything Linux-related.
He is Red Hat Certified RHCSA + RHCE and has been managing, maintaining and supporting his own self-hosted GitLab installation since 2017.
Ian has been regularly active on the GitLab forums for 3+ years with 2,600+ helpful responses, 480 helpful community moderation flags, and 240 solutions.</p>
<p>Thank you Ravi and Ian! 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-chat-beta-now-available-in-premium">GitLab Duo Chat Beta now available in Premium</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11251">Related epic</a></li></ul>
</div>

<p>In 16.8, we made GitLab Duo Chat available for self-managed instances. In 16.9, we are making Chat available to Premium customers while it is still in Beta.</p>
<p>GitLab Duo Chat can:</p>
<ul>
<li>Explain or summarize issues, epics, and code.</li>
<li>Answer specific questions about these artifacts like “Collect all the arguments raised in comments regarding the solution proposed in this issue.”</li>
<li>Generate code or content based on the information in these artifacts. For example, “Can you write documentation for this code?”</li>
<li>Help you start a process. For example, “Create a .GitLab-ci.yml configuration file for testing and building a Ruby on Rails application in a GitLab CI/CD pipeline.”</li>
<li>Answer all your DevSecOps related question, whether you are a beginner or an expert. For example, “How can I set up Dynamic Application Security Testing for a REST API?”</li>
<li>Answer follow-up questions so you can iteratively work through all the previous scenarios.</li>
</ul>
<p>GitLab Duo Chat is available as a Beta feature. It is also integrated into our Web IDE and GitLab Workflow extension for VS Code as Experimental features. In these IDEs, you can also use <a href="/user/gitlab_duo_chat/examples/">predefined chat commands that help you do standard tasks more quickly</a> like writing tests.</p>
<p>You can help us mature these features by providing feedback about your experiences with GitLab Duo Chat, either within the product or through our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/430124">feedback issue</a>.</p>
<h3 id="request-changes-on-merge-requests">Request changes on merge requests</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/reviews/#submit-a-review">Documentation</a></li></ul>
</div>

<p>The last part of reviewing a merge request is communicating the outcome. While approving was unambiguous, leaving comments was not. They required the author to read your comments, then determine if the comments were purely informational, or described needed changes. Now, when you complete your review, you can select from three options:</p>
<ul>
<li><strong>Comment</strong>: Submit general feedback without explicitly approving.</li>
<li><strong>Approve</strong>: Submit feedback and approve the changes.</li>
<li><strong>Request changes</strong>: Submit feedback that should be addressed before merging.</li>
</ul>
<p>The sidebar now shows the outcome of your review next to your name. Currently, ending your review with <strong>Request changes</strong> doesn’t block the merge request from being merged, but it provides extra context to other participants in the merge request.</p>
<p>You can leave feedback about the <strong>Request changes</strong> feature in our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438573">feedback issue</a>.</p>
<h3 id="improvements-to-the-cicd-variables-user-interface">Improvements to the CI/CD variables user interface</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/variables/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/418331">Related issue</a></li></ul>
</div>

<p>In GitLab 16.9, we have released a series of improvements to the CI/CD variables user experience. We have improved the variables creation flow through changes including:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/365934">Improved validation when variable values do not meet the requirements</a>.</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/410220">Help text during variable creation</a>.</li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/434667">Allow resizing of the value field in the variables form</a>.</li>
</ul>
<p>Other improvements include a new, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/378938">optional description field for group and project variables</a> to assist with the management of variables. We have also made it easier to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/434666">add or edit multiple variables</a>, lowering the friction in the software development workflow and enabling developers to perform their job more efficiently.</p>
<p>Your <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/441177">feedback for these changes</a> is always valued and appreciated.</p>
<h3 id="expanded-options-for-auto-canceling-pipelines">Expanded options for auto-canceling pipelines</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#workflowauto_cancelon_new_commit">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/412473">Related issue</a></li></ul>
</div>

<p>Currently, to use the <a href="/ci/pipelines/settings/#auto-cancel-redundant-pipelines">auto-cancel redundant pipeline feature</a>, you must set jobs that can be cancelled as <a href="/ci/yaml/#interruptible"><code>interruptible: true</code></a> to determine whether or not a pipeline can be cancelled. But this only applies to jobs that are actively running when GitLab tries to cancel the pipeline. Any jobs that have not yet started (are in “pending” status) are also considered safe to cancel, regardless of their <code>interruptible</code> configuration.</p>
<p>This lack of flexibility hinders users who want more control over which exact jobs can be cancelled by the auto-cancel pipeline feature. To address this limitation, we are pleased to announce the introduction of the <code>auto_cancel:on_new_commit</code> keywords with more granular control over job cancellation. If the legacy behavior did not work for you, you now have the option to configure the pipeline to only cancel jobs that are explicitly set with <code>interruptible: true</code>, even if they haven’t started yet. You can also set jobs to never be automatically cancelled.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="limit-concurrent-code-indexing-jobs-for-advanced-search">Limit concurrent code-indexing jobs for advanced search</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/advanced_search/elasticsearch/#advanced-search-configuration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435402">Related issue</a></li></ul>
</div>

<p>As a GitLab administrator, you can now set the maximum number of Elasticsearch code-indexing background jobs that can run concurrently. Previously, you could only limit the number of concurrent jobs by creating dedicated Sidekiq processes.</p>
<h3 id="custom-guidelines-for-managing-group-and-project-members">Custom guidelines for managing group and project members</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/appearance/#member-guidelines">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/433093">Related issue</a></li></ul>
</div>

<p>Administrators can now add text guidelines that are visible to users with permissions to manage members on the <strong>Members</strong> page of a group or project. Administrators can access these guidelines in the <strong>Appearance</strong> section of the <strong>Admin Area</strong> settings.</p>
<p>Guidelines are helpful for teams that use external tooling to manage members of groups or projects. For instance, the guideline can link to predefined groups that users should use instead of managing membership for individual members.</p>
<p>Thank you @bufferoverflow for this community contribution!</p>
<h3 id="show-import-stats-for-direct-transfer">Show import stats for direct transfer</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437874">Related issue</a></li></ul>
</div>

<p>Completed migrations of GitLab groups and projects by direct transfer have displayed badges (<strong>Complete</strong>, <strong>Partially completed</strong>, and <strong>Failed</strong>)
to inform users about the general end result of the migration. Users could also access a list of items that were not imported, by clicking on the <strong>See failures</strong> link.</p>
<p>However, for a partially-imported project, there was no quick way to understand how many items of each type were successfully imported and how many were not.</p>
<p>In this release, we added import results statistics for groups and projects. To access the statistics, select the <strong>Details</strong> link on the direct transfer history page.</p>
<h3 id="enable-jira-issues-at-the-group-level">Enable Jira issues at the group level</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/jira/configure/#view-jira-issues">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/325715">Related issue</a></li></ul>
</div>

<p>With this release, you can enable Jira issues for all projects in a GitLab group. Previously, you could only enable Jira issues for each GitLab project individually.</p>
<h3 id="rest-api-support-for-the-gitlab-for-slack-app">REST API support for the GitLab for Slack app</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/group_integrations/#gitlab-for-slack-app">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/364440">Related issue</a></li></ul>
</div>

<p>With this release, we’ve added REST API support for the GitLab for Slack app.</p>
<p>You cannot create a GitLab for Slack app from the API. Instead, you must <a href="/user/project/integrations/gitlab_slack_application/#install-the-gitlab-for-slack-app">install the app</a> from the GitLab UI. You can then retrieve the integration settings and update or disable the app for a project.</p>
<h3 id="access-gitlab-usage-data-through-the-rest-api">Access GitLab usage data through the REST API</h3>
<!-- categories: Application Instrumentation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/usage_data/#export-service-ping-data">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12251">Related epic</a></li></ul>
</div>

<p>Self-managed users can now seamlessly access Service Ping data through a REST API connection, facilitating direct integration with downstream systems. This represents a significant improvement over the previous method of file download. The new approach offers self-managed users a more efficient and real-time means of conducting customized analysis and deriving specific insights from their GitLab usage data.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="authenticate-and-sign-commits-with-ssh-certificates">Authenticate and sign commits with SSH certificates</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/ssh_certificates/">Documentation</a></li></ul>
</div>

<p>Previously, Git access control options on GitLab.com relied on credentials set up in the user account. Now you can set up a process to make Git access possible using only SSH certificates. You can also use these certificates to sign commits.</p>
<h3 id="limit-workspaces-per-user-on-the-gitlab-agent">Limit workspaces per user on the GitLab agent</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/gitlab_agent_configuration/">Documentation</a></li></ul>
</div>

<p>In GitLab 16.8, we introduced settings for the GitLab agent for Kubernetes to limit the CPU and memory usage per workspace.</p>
<p>Now in 16.9, you can also limit the number of workspaces per user. With this new setting, you have even more control over your cloud resources and can prevent individual developers from inflating cloud spend.</p>
<h3 id="allow-users-to-cleanup-partial-resources-from-failed-deployments">Allow users to cleanup partial resources from failed deployments</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/#run-a-pipeline-job-when-environment-is-stopped">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435128">Related issue</a></li></ul>
</div>

<p>The Environment <a href="/ci/yaml/#environmentauto_stop_in"><code>auto_stop_in</code></a> functionality was updated to run the job from the last finished pipeline, instead of the last successful pipeline. This avoids edge cases where the auto stop job can not run because of not having any successful pipelines.</p>
<p>This behaviour might be considered a breaking change in some situations. The new behaviour is currently behind a feature flag, and will become the default in 17.0, and at the same time, we are going to deprecate the old behaviour to be removed from GitLab in 18.0. We recommend everyone to start transitioning or to configure the feature flag immediately to minimize the risks of the breaking change at the first 17.x upgrade.</p>
<h3 id="kubernetes-129-support">Kubernetes 1.29 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435293">Related issue</a></li></ul>
</div>

<p>This release adds full support for Kubernetes version 1.29, released in December 2023. If you deploy your apps to Kubernetes, you can now upgrade your connected clusters to the most recent version and take advantage of all its features.</p>
<p>You can read more about our Kubernetes support policy and other supported Kubernetes versions.</p>
<h3 id="enterprise-user-email-address-accessible-through-ui-and-api">Enterprise user email address accessible through UI and API</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/enterprise_user/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391453">Related issue</a></li></ul>
</div>

<p>Group Owners that have <a href="/user/enterprise_user/">enterprise users</a> can now use both the user management UI and the <a href="/api/group_members/">group and project members API</a> to see those users’ email addresses. Previously, only provisioned users’ email addresses were returned.</p>
<h3 id="add-or-remove-service-accounts-from-groups-with-ldap-group-sync">Add or remove service accounts from groups with LDAP group sync</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/access_and_permissions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/425947">Related issue</a></li></ul>
</div>

<p>Previously, if a group had LDAP sync enabled, administrators were not able to invite or remove any users from that group. Now, administrators can use the group and project members API to invite service account users to or remove those users from a group with LDAP sync. Administrators still cannot invite human users to or remove those users from a group with LDAP sync. This ensures that LDAP group sync is the single source of truth for human user account membership, while allowing the flexibility to use service accounts to add automations to LDAP-synced groups.</p>
<h3 id="audit-event-for-updating-or-deleting-a-custom-role">Audit event for updating or deleting a custom role</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437672">Related issue</a></li></ul>
</div>

<p>GitLab now records an audit event when a custom role is updated or deleted. This event is important to identify if permissions have been added or changed in case of privilege escalation.</p>
<h3 id="improved-ux-for-expired-saml-sso-sessions">Improved UX for expired SAML SSO sessions</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/saml_sso/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/414475">Related issue</a></li></ul>
</div>

<p>If you belong to a group that requires SAML SSO authentication, but you do not have a valid session for that group, a banner is displayed that prompts you to refresh your session. Previously, issues and merge requests were not displayed when a session had expired, but this was not clear to the user. Now, it is clear to users when they must reauthenticate to see all of their work items.</p>
<h3 id="standards-adherence-report-improvements">Standards Adherence Report Improvements</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11053">Related epic</a></li></ul>
</div>

<p>The <a href="/user/compliance/compliance_center/">standards adherence report</a>, within the
<a href="/user/compliance/compliance_center/">compliance center</a>, is the destination for compliance teams to monitor their compliance posture.</p>
<p>In GitLab 16.5, we introduced the report with the GitLab Standard - a set of common compliance requirements all compliance teams should monitor. The standard helps
you understand which projects meet these requirements, which ones fall short, and how to bring them into compliance. Over time, we’ll be introducing more standards
into the reporting.</p>
<p>In this milestone, we’ve made some improvements which will make reporting more robust and actionable. These include:</p>
<ul>
<li>Grouping results by check</li>
<li>Filtering by project, check, and standard</li>
<li>Export to CSV (delivered via email)</li>
<li>Improved pagination</li>
</ul>
<h3 id="rich-text-editor-broader-availability">Rich text editor broader availability</h3>
<!-- categories: Team Planning, Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/rich_text_editor/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/7098">Related epic</a></li></ul>
</div>

<p>In GitLab 16.2, <a href="https://about.gitlab.com/releases/2023/07/22/gitlab-16-2-released/">we released</a> the rich text editor as an alternative to the plain text editor. The rich text editor provides a “what you see is what you get” editing interface, and an extensible foundation for additional development. Until this release, however, the rich text editor was available only in issues, epics, and merge requests.</p>
<p>With GitLab 16.9, the rich text editor is now available in:</p>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/407493">Requirements descriptions</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/407491">Vulnerability findings</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/407494">Release descriptions</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/407505">Design notes</a></li>
</ul>
<p>With improved access to the rich text editor, you can collaborate more efficiently and without previous Markdown experience.</p>
<h3 id="allow-duplicate-terraform-modules">Allow duplicate Terraform modules</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/terraform_module_registry/#allow-duplicate-terraform-modules">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/368040">Related issue</a></li></ul>
</div>

<p>You can use the GitLab package registry to publish and download Terraform modules. By default, you cannot publish the same module name and version more than once per project.</p>
<p>However, you might want to allow duplicate uploads, especially for releases. In this release, GitLab expands the group setting for the package registry so you can allow or deny duplicate modules.</p>
<h3 id="validate-terraform-modules-from-your-group-or-subgroup">Validate Terraform modules from your group or subgroup</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/#view-packages">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/352041">Related issue</a></li></ul>
</div>

<p>When using the GitLab Terraform registry, it is important to have a cross-project view of all your modules. Until recently, the user interface has been available only at the project level. If your group had a complex structure, you might have had difficulty finding and validating your modules.</p>
<p>From GitLab 16.9, you can view all of your group and subgroup modules in GitLab. The increased visibility provides a better understanding of your registry, and decreases the likelihood of name collisions.</p>
<h3 id="boards-work-in-progress-line">Boards work in progress line</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issue_board/#work-in-progress-limits">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440540">Related issue</a></li></ul>
</div>

<p>You can now visualize your work in progress limits in a board list. When a limit has been exceeded, an indicator line will appear in the list to help you understand which items are over the limit and manage the list accordingly.</p>
<h3 id="new-stage-events-for-custom-value-stream-analytics">New stage events for custom Value Stream Analytics</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/value_stream_analytics/#value-stream-stage-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431934">Related issue</a></li></ul>
</div>

<p>To improve the <a href="https://about.gitlab.com/blog/value-stream-total-time-chart/">tracking of development workflows in GitLab</a>, the Value Stream Analytics has been extended with a new stage event: <code>Issue first added to iteration</code>. You can use this event to detect problems caused by a lack of agility from teams planning too far ahead or execution challenges in teams that have issues rolling over from iteration to iteration. For example, you can now add a “Planned” stage that starts when <code>Issue first added to iteration</code> and ends when the <code>Issue first assigned</code>.</p>
<h3 id="improvements-to-operational-container-scanning">Improvements to Operational Container Scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/vulnerabilities/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11968">Related epic</a></li></ul>
</div>

<p>We’ve made reporting and stability improvements to Operational Container Scanning (OCS). Notably, the Trivy report size limit has been increased, which provides a more stable experience for users. Expanding the Trivy report size from 10MB to 100MB allows customers who were constrained by the report size limit to leverage OCS in securing container images in their cluster.</p>
<p>With this change to OCS, users who run <code>gitlab-agent</code> in FIPS mode cannot run Operational Container Scanning. For more details on this, see our documentation and please provide feedback in issue <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/440849">#440849</a>.</p>
<h3 id="dast-analyzer-updates">DAST analyzer updates</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/12685">Related epic</a></li></ul>
</div>

<p>We resolved the following bugs during the 16.9 release milestone:</p>
<ul>
<li>Browser-based DAST errors when attempting to get the response body for cached resources when the browser has transitioned to a new page. <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435175">See the issue</a> for more details.</li>
<li>Browser-based DAST crawl tasks are not running in parallel, causing performance degradation. <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435325">See the issue</a> for more details.</li>
</ul>
<h3 id="updated-sast-rules-for-higher-quality-results">Updated SAST rules for higher-quality results</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/rules/#important-rule-changes">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10971">Related epic</a></li></ul>
</div>

<p>We’ve updated more than 40 default GitLab SAST rules to:</p>
<ul>
<li>Increase true-positive results (correctly identified vulnerabilities) and reduce false-negative results (incorrectly identified vulnerabilities) by updating the detection logic rules for C#, Go, Java, JavaScript, and Python.</li>
<li>Add <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438561">OWASP mappings</a> for C#, Go, Java, and Python rules.</li>
</ul>
<p>The rule changes are included in updated versions of the Semgrep-based GitLab SAST <a href="/user/application_security/sast/analyzers/">analyzer</a>.
This update is automatically applied on GitLab 16.0 or newer unless you’ve <a href="/user/application_security/sast/">pinned SAST analyzers to a specific version</a>.
We’re working on more SAST rule improvements in <a href="https://gitlab.com/groups/gitlab-org/-/epics/10907">epic 10907</a>.</p>
<h3 id="more-detailed-security-findings-in-vs-code">More detailed security findings in VS Code</h3>
<!-- categories: Editor Extensions, API Security, Container Scanning, DAST, Fuzz Testing, SAST, Secret Detection, Software Composition Analysis, Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/visual_studio_code/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10996">Related epic</a></li></ul>
</div>

<p>We’ve improved how security findings are shown in the <a href="https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow#security-findings">GitLab Workflow extension</a> for Visual Studio Code (VS Code).
You can now see more details of your security findings that weren’t previously shown, including:</p>
<ul>
<li>Full descriptions, with rich-text formatting.</li>
<li>The solution to the vulnerability, if one is available.</li>
<li>A link to the location where the problem occurs in your codebase.</li>
<li>Links to more information about the type of vulnerability discovered.</li>
</ul>
<p>We’ve also:</p>
<ul>
<li>Improved how the extension shows the status of security scans before results are ready.</li>
<li>Made other usability improvements.</li>
</ul>
<h3 id="control-which-roles-can-cancel-pipelines-or-jobs">Control which roles can cancel pipelines or jobs</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/settings/#restrict-roles-that-can-cancel-pipelines-or-jobs">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/410634">Related issue</a></li></ul>
</div>

<p>Organizations might want to control which user roles are able to cancel a pipeline. Previously, anyone who could run a pipeline could also cancel a pipeline. Now, a project Maintainer is able to update a setting which restricts pipeline and job cancellation to specific roles, or even prevents cancellation completely!</p>
<h3 id="fleet-dashboard-compute-minutes-used-on-instance-runners-per-project-metric-card">Fleet Dashboard: Compute minutes used on instance runners per project metric card</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/runner_fleet_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421457">Related issue</a></li></ul>
</div>

<p>When managing a GitLab Runner Fleet at scale, you have told us that knowing which projects use the most compute minutes on the runners is critical. For you, this information is essential to help teams optimize CI/CD pipelines and also help you make the right decisions about fleet cost optimization.</p>
<p>Now, the runner compute usage by project metric card, a complement to the previously released CI/CD compute minutes export by CSV feature, is available in the Runner Fleet Dashboard. You can see the top projects that consume instance runner minutes, and the most used instance runners in your GitLab environment.</p>
<h3 id="gitlab-runner-169">GitLab Runner 16.9</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.9 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37349">Make Kubernetes API retries configurable</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3185">Random warning: failed to remove ***: Directory not empty</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-9-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h3 id="show-mr-link-for-branch-based-pipelines">Show MR link for branch based pipelines</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/#view-pipelines">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416134">Related issue</a></li></ul>
</div>

<p>If you use branch pipelines, you can now quickly view and access the related merge requests from the pipeline details page.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.9">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.9">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.9">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.8 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-8-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-8-released/</id><published>2024-01-18T00:00:00Z</published><updated>2024-01-18T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On January 18, 2024, GitLab 16.8 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>Ted has made significant contributions <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420057">removing old and unused code</a>
from our helper files and addressing other maintenance tasks.
He was nominated by <a href="https://gitlab.com/kerrizor">Kerri Miller</a>, Staff Engineer at GitLab, who said,
“It’s not always glamorous work, but it’s important work”.</p>
<p>Ted is a freelance software engineer, avid climber, and cat enthusiast based in Orange County.</p>
<p>Martin was nominated by <a href="https://gitlab.com/nagyv-gitlab">Viktor Nagy</a>, Product Manager at GitLab, who said,
“He added many missing tests to the Auto Deploy jobs template and improved the <a href="/user/clusters/agent/install/#customize-the-helm-installation">agentk Helm chart documentation</a>”.</p>
<p><a href="https://gitlab.com/leetickett-gitlab">Lee Tickett</a>, Engineer at GitLab, added that he
“has been joining community pairing sessions on <a href="https://discord.gg/gitlab">Discord</a> and collaborating
closely with team members to contribute a heavily requested <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/140002">search enhancement</a> for merge requests”.</p>
<p>Martin is an IT Architect at Deutsche Telekom MMS GmbH based in Dresden, Germany.</p>
<p>Helio was nominated by <a href="https://gitlab.com/hsutor">Hannah Sutor</a>, Principal Product Manager at GitLab, who said,
“he has pushed our entire team forward by proposing the <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135324">ability to sign in using passkeys</a>.
Helio’s MR was closed, but his contribution was deep, thought provoking, and his questions and open discussion will make our Passwordless implementation better”.</p>
<p>Helio is a software engineer with passion for Ruby and OSS.</p>
<p>Thank you Ted, Martin, and Helio! 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="static-analysis-findings-in-merge-request-changes-view">Static Analysis Findings in Merge request changes view</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#merge-request-changes-view">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10959">Related epic</a></li></ul>
</div>

<p>Static Analysis now supports displaying the findings in the Merge request changes view.
No need to navigate elsewhere – it’s all consolidated in one place. The UI is refined for a more straightforward encounter. For specifics, just open the drawer. Learn more from the linked documentation, demo video and rollout issue.</p>
<h3 id="google-cloud-secret-manager-support">Google Cloud Secret Manager support</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/secrets/gcp_secret_manager/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11739">Related epic</a></li></ul>
</div>

<p>Secrets stored in Google Cloud Secret Manager can now be easily retrieved and used in CI/CD jobs. Our new integration simplifies the process of interacting with Google Cloud Secret Manager through GitLab CI/CD, helping you streamline your build and deploy processes! This is just one of the many ways <a href="https://about.gitlab.com/blog/gitlab-google-partnership-s3c/">GitLab and Google Cloud are better together</a>!</p>
<h3 id="workspaces-are-now-generally-available">Workspaces are now generally available</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/">Documentation</a></li></ul>
</div>

<p>We’re thrilled to share that Workspaces are now generally available and ready to improve your developer efficiency!</p>
<p>By creating secure, on-demand remote development environments, you can reduce the time you spend managing dependencies and onboarding new developers and focus on delivering value faster. With our platform-agnostic approach, you can use your existing cloud infrastructure to host your workspaces and keep your data private and secure.</p>
<p>Since their introduction in GitLab 16.0, workspaces have received improvements to error handling and reconciliation, support for private projects and SSH connections, additional configuration options, and a new administrator interface. These improvements mean that workspaces are now more flexible, more resilient, and more easily managed at scale.</p>
<h3 id="enforce-2fa-for-gitlab-administrators">Enforce 2FA for GitLab administrators</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/two_factor_authentication/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/427549">Related issue</a></li></ul>
</div>

<p>You can now enforce whether GitLab administrators are required to use two-factor authentication (2FA) in their self-managed instance. It is good security practice to use 2FA for all accounts, especially for privileged accounts like administrators. If this setting is enforced, and an administrator does not already use 2FA, they must set up 2FA on their next sign-in.</p>
<h3 id="speed-up-your-builds-with-the-maven-dependency-proxy">Speed up your builds with the Maven dependency proxy</h3>
<!-- categories: Dependency Management, Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/dependency_proxy/">Documentation</a></li></ul>
</div>

<p>A typical software project relies on a variety of dependencies, which we call packages. Packages can be internally built and maintained, or sourced from a public repository. Based on our user research, we’ve learned that most projects use a 50/50 mix of public and private packages. Package installation order is very important, as using an incorrect package version can introduce breaking changes and security vulnerabilities into your pipelines.</p>
<p>Now you can add one external Java repository to your GitLab project. After adding it, when you install a package using the dependency proxy, GitLab first checks for the package in the project. If it’s not found, GitLab then attempts to pull the package from the external repository.</p>
<p>When a package is pulled from the external repository, it’s imported into the GitLab project. The next time that particular package is pulled, it’s pulled from GitLab and not the external repository. Even if the external repository is having connectivity issues and the package is present in the dependency proxy, pulling the package still works, making your pipelines faster and more reliable.</p>
<p>If the package changes in the external repository (for example, a user deletes a version and publishes a new one with different files) the dependency proxy detects it. It invalidates the package, so GitLab pulls the newer one. This ensures the correct packages are downloaded, and helps reduce security vulnerabilities.</p>
<h3 id="deeper-insights-into-velocity-in-the-issue-analytics-report">Deeper insights into velocity in the Issue Analytics report</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/issues_analytics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/233905">Related issue</a></li></ul>
</div>

<p>The <strong>Issue Analytics</strong> report now contains information on the number of closed issues in a month to allow for a detailed velocity analysis. With this valuable addition, GitLab users can now gain insights into trends associated with their projects, and improve the overall turn-around time and value delivered to their customers. The <strong>Issue Analytics</strong> visualization contains a bar chart with the number of issues for each month, with a default time span of 13 months. You can access this chart from the drill-down in the <a href="/user/analytics/value_streams_dashboard/#dashboard-metrics-and-drill-down-reports">Value Streams Dashboard</a>.</p>
<h3 id="new-organization-level-devops-view-with-dora-based-industry-benchmarks">New organization-level DevOps view with DORA-based industry benchmarks</h3>
<!-- categories: Value Stream Management, DORA Metrics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/426516">Related issue</a></li></ul>
</div>

<p>We added a new <strong>DORA Performers score</strong> panel to the <a href="https://www.youtube.com/watch?v=EA9Sbks27g4">Value Streams Dashboard</a> to visualize the status of the organization’s DevOps performance across different projects. This new visualization displays a breakdown of the DORA score (high, medium, or low) so that executives can understand the organization’s DevOps health top to bottom.</p>
<p>The <a href="https://about.gitlab.com/solutions/value-stream-management/dora/#overview">four DORA metrics</a> are available out-of-the-box in GitLab, and now with the new DORA scores organizations can compare their DevOps performance against <a href="https://dora.dev/">industry benchmarks</a> or peers. This benchmarking helps executives understand where they stand in relation to others, and identify best practices or areas where they might be lagging behind.</p>
<p>To help us improve the Value Streams Dashboard, please share feedback about your experience in this <a href="https://gitlab.fra1.qualtrics.com/jfe/form/SV_50guMGNU2HhLeT4">survey</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<p>From GitLab 16.8, you can specify commands to generate configurations for the following services in the
<code>gitlab.rb</code> file so that plaintext passwords are not exposed:</p>
<ul>
<li>GitLab Kubernetes Agent Server</li>
<li>GitLab Workhorse</li>
<li>GitLab Exporter</li>
</ul>
<p>This means plaintext passwords for Redis no longer need to be stored in <code>gitlab.rb</code>.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="smarter-approval-resets-with-patch-id-support">Smarter approval resets with <code>patch-id</code> support</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/approvals/settings/#remove-all-approvals-when-commits-are-added-to-the-source-branch">Documentation</a></li></ul>
</div>

<p>To ensure all changes are reviewed and approved, it’s common to remove all approvals when new commits are added to a merge request. However, rebases also unnecessarily invalidated existing approvals, even if the rebase introduced no new changes, requiring authors to seek re-approval.</p>
<p>Merge request approvals now align to a <a href="https://git-scm.com/docs/git-patch-id"><code>git-patch-id</code></a>. It’s a reasonably stable and reasonably unique identifier that enables smarter decisions about resetting approvals. By comparing the <code>patch-id</code> before and after the rebase, we can determine if new changes were introduced that should reset approvals and require a review.</p>
<p>If you have feedback about your experiences with resets now, let us know in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/435870">issue #435870</a>.</p>
<h3 id="view-blame-information-directly-in-the-file-page">View blame information directly in the file page</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/files/git_blame/#view-blame-for-a-file">Documentation</a></li></ul>
</div>

<p>In previous versions of GitLab, viewing file blame required you to access a different page. Now you can view the file blame information directly from the file page.</p>
<h3 id="set-cpu-and-memory-usage-per-workspace">Set CPU and memory usage per workspace</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/gitlab_agent_configuration/">Documentation</a></li></ul>
</div>

<p>Improved developer experience, onboarding, and security are driving more development toward cloud IDEs and on-demand development environments. However, these environments might contribute to increased infrastructure costs. You can already configure CPU and memory usage per project in your <a href="/user/workspace/#devfile">devfile</a>.</p>
<p>Now you can also set CPU and memory usage per workspace. By configuring requests and limits at the GitLab agent level, you can prevent individual developers from using an excessive amount of cloud resources.</p>
<h3 id="kubernetes-128-support">Kubernetes 1.28 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/432070">Related issue</a></li></ul>
</div>

<p>This release adds full support for Kubernetes version 1.28, released in August 2023. If you deploy your apps to Kubernetes, you can now upgrade your connected clusters to the most recent version and take advantage of all its features.</p>
<p>You can read more about our Kubernetes support policy and other supported Kubernetes versions.</p>
<h3 id="new-customizable-permissions">New customizable permissions</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391760">Related issue</a></li></ul>
</div>

<p>There are five new abilities available you can use to create custom roles:</p>
<ul>
<li>Manage project access tokens.</li>
<li>Manage group access tokens.</li>
<li>Manage group members.</li>
<li>Ability to archive a project.</li>
<li>Ability to delete a project.</li>
</ul>
<p>Add these abilities, along with other pre-existing custom abilities, to any base role to create a custom role. Custom roles allow you to define granular roles that only give a user the abilities they need to do their jobs, and reduce unnecessary privilege escalation.</p>
<h3 id="assign-a-custom-role-with-saml-sso">Assign a custom role with SAML SSO</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/saml_sso/#configure-gitlab">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/417285">Related issue</a></li></ul>
</div>

<p>Users can be assigned a custom role as the default role they are created with when they are provisioned with SAML SSO. Previously, only static roles could be chosen as the default. This allows automatically provisioned users to be assigned a role that best aligns with the principle of least privilege.</p>
<h3 id="filter-streaming-audit-events-by-sub-groupproject-at-group-level">Filter streaming audit events by sub group/project at group level</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11384">Related epic</a></li></ul>
</div>

<p>Streaming audit events have been extended to support filtering by sub-group or project at the group level, in addition to the existing support for event type filtering.</p>
<p>This additional filter will allow you to separate out events in your streams to send to different destinations, or to exclude irrelevant sub-groups/projects, ensuring you have the most actionable events for your team to monitor.</p>
<h3 id="compliance-framework-management-improvements">Compliance framework management improvements</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_frameworks/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11240">Related epic</a></li></ul>
</div>

<p>Our compliance center is becoming the central destination for understanding
compliance posture and managing compliance frameworks. We’re moving framework
management into a new tab in the compliance center, as well as adding more exciting
capabilities:</p>
<ul>
<li>View frameworks in a list view in the <strong>Frameworks</strong> tab.</li>
<li>Search and filter to find specific frameworks.</li>
<li>Use the new compliance framework sidebar to explore more details for each framework.</li>
<li>Edit your framework to view all settings, including managing name, description, linked projects, and more.</li>
<li>Create a quick report of your frameworks with an export to CSV.</li>
</ul>
<h3 id="instance-level-audit-event-streaming-to-aws-s3">Instance-level audit event streaming to AWS S3</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>Previously, you could configure only top-level group streaming audit events for AWS S3.</p>
<p>With GitLab 16.8, we’ve extended support for AWS S3 to instance-level streaming destinations.</p>
<h3 id="enforce-policy-to-prevent-branches-being-deleted-or-unprotected">Enforce policy to prevent branches being deleted or unprotected</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9705">Related epic</a></li></ul>
</div>

<p>One of several new settings added to scan result policies to aide in <a href="https://gitlab.com/groups/gitlab-org/-/epics/9704">compliance enforcement of security policies</a>, branch modification controls will limit the ability to circumvent policies by changing project-level settings.</p>
<p>For each existing or new scan result policy, you can enable <code>Prevent branch modification</code> to take effect for the branches defined within the policy to prevent users from deleting or unprotecting those branches.</p>
<h3 id="saml-group-sync-for-custom-roles">SAML Group Sync for custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/saml_sso/group_sync/#configure-saml-group-links">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/417201">Related issue</a></li></ul>
</div>

<p>You can now use SAML Group Sync to map custom roles to groups of users. Previously, you could only map SAML groups to GitLab’s static roles. This gives more flexibility to customers who use SAML Group Links to manage group membership and member roles.</p>
<h3 id="saml-sso-authentication-for-merge-request-approval">SAML SSO authentication for merge request approval</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/approvals/settings/#require-user-re-authentication-to-approve">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11084">Related epic</a></li></ul>
</div>

<p>For those using SAML SSO and SCIM for user account management in GitLab, you can now use SSO to meet the merge request authentication requirement
over password-based authentication for approving merge requests.</p>
<p>This method ensures only authenticated users can approve a merge request for security and compliance, without having to use a separate
password-based solution.</p>
<h3 id="introduce-group-level-landing-page-for-analytics-dashboards">Introduce group-level landing page for Analytics Dashboards</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/433420">Related issue</a></li></ul>
</div>

<p>We are introducing a new landing page for the group-level analytics dashboard. This enhancement ensures a more consistent and user-friendly navigation experience. In the first phase this page includes the <a href="https://www.youtube.com/watch?v=8pLEucNUlWI">Value Streams Dashboard</a>, but it also sets the groundwork for future features, allowing you to personalize your dashboards. These improvements aim to streamline your experience, and provide more flexibility in managing and interpreting your data.</p>
<h3 id="view-all-ancestor-items-of-a-task-or-okr">View all ancestor items of a task or OKR</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/tasks/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11197">Related epic</a></li></ul>
</div>

<p>With this release, you can now view the entire hierarchy lineage of a work item instead of just the immediate parent.</p>
<p>Work items include:</p>
<ul>
<li>Tasks, in all tiers.</li>
<li><a href="/user/okrs/">Objectives and key results</a>, in the Ultimate tier and behind a feature flag.</li>
</ul>
<h3 id="runner-fleet-dashboard-csv-export-of-compute-minutes-used-by-instance-runners">Runner Fleet Dashboard: CSV export of compute minutes used by instance runners</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/runner_fleet_dashboard/#export-compute-minutes-used-by-instance-runners">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/425853">Related issue</a></li></ul>
</div>

<p>You might need to run a report of CI/CD compute minutes used by projects on instance runners for various reasons. However, there wasn’t a simple to use mechanism in GitLab for you to generate a CI/CD compute minutes usage report. With this feature, you can export a report of CI/CD compute minutes used by each project on shared runners as a CSV file.</p>
<h3 id="gitlab-runner-168">GitLab Runner 16.8</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.8 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29659">Overwrite generated Kubernetes pod specifications - Beta</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37224">GitLab Runner authentication token exposed in the runner log file</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/37197">Registering multiple autoscaling runners results in a partial config.toml file</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36988">Interrupt of the restore_cache helper task corrupts the cache</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-8-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h3 id="predefined-variables-for-merge-request-description">Predefined variables for merge request description</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/variables/predefined_variables/#predefined-variables-for-merge-request-pipelines">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/432846">Related issue</a></li></ul>
</div>

<p>If you use automation to work with merge requests in CI/CD pipelines, you might have wanted an easier way to fetch a merge request’s description without an API call. In GitLab 16.7 we introduced the <code>CI_MERGE_REQUEST_DESCRIPTION</code> predefined variable, making the description easily accessible in all jobs. In GitLab 16.8 we tweaked the behavior to truncate <code>CI_MERGE_REQUEST_DESCRIPTION</code> at 2700 characters, because very large descriptions can cause runner errors. You can check if the description was truncated with the newly introduced <code>CI_MERGE_REQUEST_DESCRIPTION_IS_TRUNCATED</code> predefined variable, which is set to <code>true</code> when the description was truncated.</p>
<h3 id="windows-2022-support-for-saas-runners-on-windows">Windows 2022 support for SaaS runners on Windows</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/windows/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/438554">Related issue</a></li></ul>
</div>

<p>Teams can now build, test, and deploy applications on Windows Server 2022.</p>
<p>SaaS runners on Windows allow you to increase your development teams’ velocity in building and deploying applications that require Windows in a secure, on-demand GitLab Runner build environment integrated with GitLab CI/CD.</p>
<p>Try it out today by using <code>saas-windows-medium-amd64</code> as the tag in your .GitLab-ci.yml file.</p>
<h3 id="cicd-components-catalog-section-for-your-internal-components">CI/CD Components Catalog section for your internal components</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#cicd-catalog">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/437768">Related issue</a></li></ul>
</div>

<p>As the number of items in the CI/CD catalog continues to expand, it is increasingly challenging for you to locate the CI/CD components released by your teams and available to you. In this release, we are introducing a dedicated <strong>Your groups</strong> tab, empowering you to effortlessly filter and identify the components associated with your organization. This simplified search process enhances efficiency, as you can more quickly find and use released CI/CD components.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.8">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.8">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.8">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.7 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-7-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-7-released/</id><published>2023-12-21T00:00:00Z</published><updated>2023-12-21T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On December 21, 2023, GitLab 16.7 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>As we continue to focus on growing our wider community, we are incredibly happy to see both MVPs nominated by members of <a href="https://about.gitlab.com/community/core-team/">the Core team</a>.</p>
<p>Muhammed was nominated for adding support for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112907">specifying platform when using Docker images with GitLab Runner</a>.
This contribution took 9 months of collaboration and showed Muhammed’s commitment and perseverance when a bug required a <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137100">follow-up</a>.
This solved a popular two-year-old <a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27919">issue</a>. “Great shoutout to the GitLab Runner team” Muhammed said, “for supporting me on bringing a long awaited feature to fruition”.
Muhammed is an Automation Engineer at <a href="https://www.airtimerewards.co.uk/">Airtime Rewards</a>, working mainly with Terraform and promoting CI/CD and automation practices within the engineering teams.</p>
<p>Niklas was nominated for his continued contributions and support in many different forms.
Today marks exactly 1 year since his last MVP award.
Niklas tackles daunting work which proves challenging even for GitLab team members and plays a huge part in maintaining our wider community contributors.
Read more in the <a href="https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/34762#note_1681021745">nomination issue</a>.</p>
<p>Thank you Muhammed and Niklas! 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-code-suggestions-is-generally-available">GitLab Duo Code Suggestions is generally available</h3>
<!-- categories: Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/">Documentation</a></li></ul>
</div>

<p><a href="https://about.gitlab.com/solutions/code-suggestions/">GitLab Duo Code Suggestions</a> is now generally available!</p>
<p>GitLab Duo Code Suggestions helps teams create software faster and more efficiently, by completing lines of code and defining and generating logic for functions.</p>
<p>Code Suggestions is built with privacy as a critical foundation. Private, non-public customer code stored in GitLab is not used as training data. Learn about <a href="/user/gitlab_duo/data_usage/">data usage</a> when using Code Suggestions.</p>
<p>In the general release, we’ve made <a href="/user/project/repository/code_suggestions/">Code Suggestions available across several IDEs</a>. Code Suggestions is also now more intuitive and responsive.</p>
<p>GitLab Duo Code Suggestions is <a href="/user/project/repository/code_suggestions/">free to try</a> subject to the <a href="https://handbook.gitlab.com/handbook/legal/testing-agreement/">GitLab Testing Agreement</a> until February 15, 2024. Starting today, you can buy Code Suggestions as an add-on to GitLab subscriptions for an introductory price of $9 USD per user/per month. Please <a href="https://about.gitlab.com/solutions/gitlab-duo-pro/sales/">contact us</a> to get started with Code Suggestions.</p>
<h3 id="use-gitlab-pages-without-a-wildcard-dns">Use GitLab pages without a wildcard DNS</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/pages/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/17584">Related issue</a></li></ul>
</div>

<p>Previously, to create a GitLab Pages project, you needed a domain formatted like name.example.io or name.pages.example.io. This requirement meant you had to set up wildcard DNS records and SSL/TLS certificates. In GitLab 16.7, you can set up a GitLab Pages project without a DNS wildcard. This feature is an experiment.</p>
<p>Removing the requirement for wildcard certificates eases administrative overhead associated with GitLab pages. Some customers can’t use GitLab Pages because of organizational restrictions on wildcard DNS records or certificates.</p>
<p>We welcome feedback related to this feature in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/434372">issue 434372</a>.</p>
<h3 id="new-drill-down-view-from-insights-report-charts">New drill-down view from Insights report charts</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/insights/#drill-down-on-charts">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/372215">Related issue</a></li></ul>
</div>

<p>With the <a href="https://www.youtube.com/watch?v=OMTfPsLa98I">Insights report</a> you can analyze patterns over time using customizable charts. The new drill-down capability added to the “Bugs created by priority” and “Bugs created by severity” Insights reports allows you to drill down on the <a href="/user/group/issues_analytics/">Issue analytics</a> report for deeper analysis.</p>
<p>We plan to include this capability in the other Insight reports as a custom option in a later version.</p>
<h3 id="sast-results-in-mr-changes-view">SAST results in MR changes view</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#merge-request-changes-view">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10959">Related epic</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/432704">Related issue</a></li></ul>
</div>

<p>SAST findings now appear in the merge request Changes view.
This makes it easier to see, understand, and fix potential weaknesses during the code review process.</p>
<p>Lines containing SAST issues are marked by a symbol beside the gutter.
Select the symbol to see the list of issues, then select an issue to see its details.</p>
<p>We’ve enabled this feature on GitLab.com.
We plan to enable the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/410191">feature flag</a> by default for Self-Managed instances in GitLab 16.8.</p>
<h3 id="cicd-catalog---beta-release">CI/CD Catalog - Beta release</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#cicd-catalog">Documentation</a></li></ul>
</div>

<p>GitLab 16.7 sees the Beta release of the CI/CD catalog! The catalog is where you can search for <a href="/ci/components/">CI/CD components</a> maintained by you, your organization, or the public community. This is the place where DevOps engineers come together to create, contribute, and share reusable pipeline configurations.</p>
<p>Unlike other methods of reusing CI/CD configuration, CI/CD components published in the catalog have an improved experience, and are easily added to your pipeline. We invite you to start testing this new and exciting feature! You can try out components that others have created and shared in the catalog, or create your own components and share them with everyone.</p>
<p>While this is our initial beta release of the feature, we continue to work on making the experience even better. Our goal is to make the CI/CD catalog a fundamental part of the GitLab CI/CD experience.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="add-a-mastodon-handle-to-your-user-profile">Add a Mastodon handle to your User Profile</h3>
<!-- categories: User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/#add-external-accounts-to-your-user-profile-page">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428442">Related issue</a></li></ul>
</div>

<p>You can now list your Mastodon handle on the User Profile. With this enhancement we are now supporting a fediverse social network, which will help in advancing <a href="https://gitlab.com/groups/gitlab-org/-/epics/11247">ActivityPub for GitLab</a>.</p>
<h3 id="group-descriptions-extended-to-500-characters">Group descriptions extended to 500 characters</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416146">Related issue</a></li></ul>
</div>

<p>Group descriptions can now contain up to 500 characters. If you try to save a group description with more than 500 characters, a warning message appears stating that the description is too long. Thanks to @freznicek for this community contribution!</p>
<h3 id="search-bar-more-prominent-on-the-search-results-page">Search bar more prominent on the search results page</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/424619">Related issue</a></li></ul>
</div>

<p>The search bar is now more prominent on the search results page. To increase the search bar visibility, the group and project filters have been moved to the left sidebar.</p>
<h3 id="issues-with-code-more-discoverable-in-advanced-search">Issues with code more discoverable in advanced search</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/advanced_search/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421012">Related issue</a></li></ul>
</div>

<p>In GitLab 16.7, issues with code have become more discoverable. With advanced search, you can now find issues that contain code snippets and logs in their descriptions.</p>
<h3 id="customize-time-format-for-display">Customize time format for display</h3>
<!-- categories: User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/preferences/#customize-time-format">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/15206">Related issue</a></li></ul>
</div>

<p>Until now, GitLab only displayed time in 12 hour format, which could not be changed.</p>
<p>From this release, thanks to the community contribution, you can customize the format used to display time in places like issue lists, overview pages or when setting your status.
You can display times as:</p>
<ul>
<li>12 hour format, for example <code>2:34 PM</code>.</li>
<li>24 hour format, for example <code>14:34</code>.</li>
</ul>
<p>Thanks to <a href="https://gitlab.com/n0rdlicht">Thorben Westerhuys</a> for this <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130789">community contribution</a>!</p>
<p>In the following milestone we will <a href="https://gitlab.com/groups/gitlab-org/-/epics/12215">audit all timestamps</a> shown across the GitLab product to make them respect the setting.</p>
<h3 id="access-the-admin-area-from-the-left-sidebar">Access the Admin Area from the left sidebar</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/admin_area/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415854">Related issue</a></li></ul>
</div>

<p>Administrators can now access the Admin Area in one step, by using a link at the bottom of the left sidebar. Previously, you had to select <strong>Search or go to</strong> and then select <strong>Admin Area</strong>. This change should save you time when accessing the Admin Area.</p>
<h3 id="remove-hardcoded-time-limit-for-migrations-to-complete">Remove hardcoded time limit for migrations to complete</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/#limits">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/429867">Related issue</a></li></ul>
</div>

<p>GitLab groups and project migrations done by direct transfer can become stuck for various reasons. In the past, to avoid leaving these migrations in an incomplete state
indefinitely, GitLab periodically executed a worker to identify migrations that hadn’t completed within 8 hours. GitLab marked these migrations as timed out.</p>
<p>For large organizations, the migration process can take longer than 8 hours, so this amount of time was not always sufficient to properly determine if a migration was stuck.
As a result, this worker might have incorrectly marked a migration as stuck.</p>
<p>In this milestone, instead of using an 8 hour time limit, GitLab now only marks the migration as stuck if the child workers stop working for 24 hours.</p>
<h3 id="comprehensive-results-of-imports-by-direct-transfer">Comprehensive results of imports by direct transfer</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/394727">Related issue</a></li></ul>
</div>

<p>Knowing how crucial for our users is to understand the results of the import process, in this milestone we further improved on information presented for imports by
direct transfer. We now display import status badges next to GitLab groups and projects on:</p>
<ul>
<li>The <a href="/user/group/import/">page where you can select groups and projects to import</a>.</li>
<li>The <a href="/user/group/import/">page listing imported groups and projects</a>.</li>
</ul>
<p>The import status badges are:</p>
<ul>
<li><strong>Not started</strong></li>
<li><strong>Pending</strong></li>
<li><strong>Importing</strong></li>
<li><strong>Failed</strong></li>
<li><strong>Timeout</strong></li>
<li><strong>Cancelled</strong></li>
<li><strong>Complete</strong></li>
<li><strong>Partially completed</strong></li>
</ul>
<p>The <strong>Partially completed badge</strong> was added in this release and identifies a completed import process that has some items (such as merge requests or issues) not imported.</p>
<p>Groups that an import process was started for have a <strong>View details</strong> link that shows imported subgroups and projects for that particular group. From there, you can see
the list of items that couldn’t be imported (if any) by clicking a <strong>See failures</strong> link. <strong>See failures</strong> was
<a href="https://about.gitlab.com/releases/2023/11/16/gitlab-16-6-released/#comprehensive-list-of-items-that-failed-to-be-imported">released in the last release</a>.</p>
<p>In this milestone we also improved navigation with the breadcrumbs between those pages.</p>
<h3 id="reopen-service-desk-issues-when-an-external-participant-comments">Reopen Service Desk issues when an external participant comments</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/configure/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/8549">Related issue</a></li></ul>
</div>

<p>You can now configure GitLab to reopen closed issues when an external participant adds
a new comment on an issue by email. This gives you full visibility into ongoing conversations,
even after an issue has been resolved.</p>
<p>It also adds an internal comment that mentions the assignees of the issue and creates to-do
items for them. This way you can make sure you never miss a follow-up email again.</p>
<h3 id="backups-supports-alternate-compression-libraries">Backups supports alternate compression libraries</h3>
<!-- categories: Backup/Restore of GitLab instances -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/backup_restore/backup_gitlab/#backup-compression">Documentation</a></li></ul>
</div>

<p>You can now override the default single-threaded gzip compression library with an alternate compression library of your choice for backups using the <code>COMPRESS_CMD</code> and <code>DECOMPRESS_CMD</code> commands. This allows you to leverage parallel compression libraries to speed up the compression stage of the backup by using the power of modern multi-core processors. The commands include support for passing options to the compression library allowing you to adjust parameters such as compression levels and speed.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="define-a-network-policy-with-egress-rules">Define a network policy with egress rules</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/gitlab_agent_configuration/">Documentation</a></li></ul>
</div>

<p>In GitLab 16.7, you can now define a network policy with egress rules when you configure the GitLab agent for Kubernetes to support Workspaces. Use this feature for your self-hosted installation where the GitLab instance resolves to a private IP or when a workspace must access a cloud resource on a private IP range.</p>
<h3 id="add-custom-emoji-to-groups">Add custom emoji to groups</h3>
<!-- categories: Code Review Workflow, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/emoji_reactions/">Documentation</a></li></ul>
</div>

<p>Who doesn’t love a good emoji to really express yourself? When commenting on items across GitLab, you’ve used our default set of emoji to add reactions, but sometimes those emoji just weren’t enough to express your emotions.
Groups can now add custom emoji to use across their projects. Custom emoji allow you to express your true feelings and communicate more clearly with the rest of your team. We can’t wait to see how you’ll react next.</p>
<h3 id="complex-merge-request-dependency-chains-now-supported">Complex merge request dependency chains now supported</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/dependencies/#nested-dependencies">Documentation</a></li></ul>
</div>

<p>GitLab merge request dependencies are a great way to ensure that code changes that rely on other changes aren’t merged in a way that could break the codebase. Previously, GitLab didn’t allow complex dependency chains, which could result in circular references or deep nesting.</p>
<p>The limitations around dependency hierarchy, and items in the chain, have been removed. Merge request dependencies can now be more complex: a single merge request can be blocked by up to 10 merge requests, and in turn, block to 10 other merge requests. Deeper dependency chains make it possible to represent more complex workflows via dependencies. We’re excited to see how you continue to expand your usage of this feature.</p>
<h3 id="notify-me-when-any-merge-request-needs-approval">Notify me when any merge request needs approval</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/notifications/#edit-notification-settings">Documentation</a></li></ul>
</div>

<p>When your approval is required for a merge request, you need to be notified to take action. Some users only want notifications when their approval is required, which is typically done by adding a user by name to review the changes. However, some users want a notification for any merge request they are eligible to approve, <em>even if they aren’t added by name as reviewers.</em></p>
<p>Enable the <strong>Added as approver</strong> custom notification level to trigger an email and to-do for each merge request you are eligible to approve. This helps you be aware of merge requests sooner in the process, and take action to get the proposal merged.</p>
<h3 id="beta-support-for-opentofu">Beta support for OpenTofu</h3>
<!-- categories: Infrastructure as Code -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/infrastructure/iac/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/terraform-images/-/issues/114">Related issue</a></li></ul>
</div>

<p>If you’re switching from Terraform to OpenTofu, this release of GitLab adds preliminary support for OpenTofu. Because OpenTofu is a fork of Terraform, the MR widget integration, module registry, and GitLab-managed Terraform state work by default. We added support for OpenTofu in the <code>gitlab-terraform</code> helper image to simplify the usage of the GitLab IaC offering.</p>
<p>GitLab continues to support Terraform for the MR widget, module registry, and GitLab-managed Terraform state.</p>
<h3 id="custom-time-period-for-access-tokens-rotation">Custom time period for access tokens rotation</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/personal_access_tokens/#rotate-a-personal-access-token">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416795">Related issue</a></li></ul>
</div>

<p>You can now optionally input a new parameter, <code>expires_at</code>, when rotating an access token. This allows you to create a custom expiry date for the token. Previously, each rotation extended the expiration one week from the previous expiry date. This new option provides flexibility in rotation interval.</p>
<h3 id="use-the-ui-to-assign-users-to-custom-roles">Use the UI to assign users to custom roles</h3>
<!-- categories: Permissions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/393239">Related issue</a></li></ul>
</div>

<p>You can now use the UI to assign a custom role to a new user, or change an existing user’s role to a custom role. You can do this in any part of the UI where you can currently assign or change a user’s role. Previously, you could only do this through the API.</p>
<h3 id="enforce-variables-in-scan-execution-policies-with-the-highest-precedence">Enforce variables in Scan Execution Policies with the highest precedence</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/variables/#cicd-variable-precedence">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/424028">Related issue</a></li></ul>
</div>

<p>CI/CD variable precedence has been improved to first prioritize variables defined in scan execution policies.</p>
<p>As organizations work to meet compliance requirements, a common need is to ensure that security scanners are enabled in business critical applications.</p>
<p>Scan execution policies allow teams to enforce scanners and to define default and custom CI/CD variables. With this enhancement to CI/CD variable precedence, teams can be confident that regardless of how pipelines are triggered, the variables defined with compliance in mind remain intact.</p>
<h3 id="saml-attribute-statements-support-microsoft-saml-attribute-format">SAML attribute statements support Microsoft SAML attribute format</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/saml/#configure-assertions">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420766">Related issue</a></li></ul>
</div>

<p>SAML attribute statements now support the Microsoft SAML attribute format, which is in URL form. Previously, self-managed instance administrators had to manually configure attribute statements, and GitLab.com group owners had to add custom attributes to their SAML responses. This change allows both self-managed GitLab and GitLab.com to work with Microsoft without any manual configuration.</p>
<h3 id="improvements-to-rich-text-editor">Improvements to rich text editor</h3>
<!-- categories: Team Planning, Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/rich_text_editor/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136437">Related issue</a></li></ul>
</div>

<p>In GitLab 16.2 we released the rich text editor as an alternative to the existing Markdown editing experience. The rich text editor provides a “what you see is what you get” editing experience and an extensible foundation on which we can build custom editing interfaces for things like diagrams, content embeds, media management, and more.</p>
<p>With GitLab 16.7, we’ve changed the rich text editor to match the behavior with our Markdown editing experience and fix reported bugs. We’ve <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/419097">changed the sorting order in the labels autocomplete modal to be consistent between the Markdown and rich-text editor</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420344">addressed a bug in the options returned in the unassign quick action in the rich-text editor</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/422958">added support for custom emojis</a>, and <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/406714">updated the look and feel of the quick action selection dropdown to be consistent in the two editing experiences</a>, among other improvements.</p>
<h3 id="list-repository-tags-with-new-container-registry-api">List repository tags with new Container Registry API</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/container_registry/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/411387">Related issue</a></li></ul>
</div>

<p>Previously, the Container Registry relied on the Docker/OCI <a href="https://gitlab.com/gitlab-org/container-registry/-/blob/5208a0ce1600b535e529cd857c842fda6d19ad59/docs/spec/docker/v2/api.md#listing-image-tags">listing image tags registry API</a> to list and display tags in GitLab. This API had significant performance and discoverability limitations.</p>
<p>This API performed slowly because the number of network requests against the registry scaled with the number of tags in the tags list. In addition, because the API didn’t track publish time, the published timestamp was often incorrect. There were also limitations when displaying images based on Docker manifest lists or OCI indexes, such as for multi-architecture images.</p>
<p>To address these limitations, we introduced a new registry <a href="https://gitlab.com/gitlab-org/container-registry/-/blob/5208a0ce1600b535e529cd857c842fda6d19ad59/docs/spec/gitlab/api.md#list-repository-tags">list repository tags API</a>. By updating the user interface to use the new API, the number of requests to the Container Registry is reduced to just one. Publish timestamps are also accurate, and there is more robust support for multi-architecture images.</p>
<p>This feature is available only on GitLab.com. Self-managed support is blocked until the next-generation Container Registry is generally available. To learn more, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/423459">issue 423459</a>.</p>
<h3 id="rename-projects-with-container-images-in-the-container-registry-on-gitlabcom">Rename projects with container images in the container registry on GitLab.com</h3>
<!-- categories: Container Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/working_with_projects/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10433">Related epic</a></li></ul>
</div>

<p>Before this release, you could not rename a project that had a container repository with at least one tag without having first deleted all container images associated with that project.</p>
<p>This was a real problem that forced users to rely on custom scripts to manually delete/move all tags before a different project name could be used, but now you can rename projects on GitLab.com, even if they have container images in the registry!</p>
<h3 id="filter-by-predefined-date-ranges-in-value-stream-analytics">Filter by predefined date ranges in Value Stream Analytics</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/value_stream_analytics/#data-filters">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/408656">Related issue</a></li></ul>
</div>

<p>The value stream analytics report now has a set of filter options for data in the last 30, 60, 90, or 180 days. These new filter options simplify the date selection process, making it more efficient and user-friendly to understand <a href="https://about.gitlab.com/blog/value-stream-total-time-chart/">where time is spent during the development lifecycle</a>.</p>
<h3 id="support-for-continuous-vulnerability-scanning-for-dependency-scanning">Support for Continuous Vulnerability Scanning for Dependency Scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/continuous_vulnerability_scanning/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11474">Related issue</a></li></ul>
</div>

<p>Continuous Vulnerability Scanning is now Generally Available. With CVS enabled, your projects are automatically scanned when advisories are added to the GitLab Advisory Database. If new dependency-related vulnerabilities are identified, vulnerabilities are created automatically.</p>
<h3 id="dast-vulnerability-check-updates">DAST vulnerability check updates</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/checks/#active-checks">Documentation</a></li></ul>
</div>

<p>During the 16.7 release milestone, we enabled the following active checks for browser-based DAST by default:</p>
<ul>
<li>Check 89.1 replaces ZAP checks 40018, 40019, 40020, 40021, 40022, 40024, 40027, 40033, and 90018 and identifies SQL Injection.</li>
<li>Check 918.1 replaces ZAP check 40046 and identifies Server Side Request Forgery.</li>
<li>Check 98.1 replaces ZAP check 7 and identifies PHP Remote File Inclusion.</li>
<li>Check 917.1 replaces ZAP check 90025 and identifies Expression Language Injection.</li>
<li>Check 1336.1 replaces ZAP check 90035 and Server-Side Template Injection.</li>
</ul>
<h3 id="dast-authentication-now-supports-multi-step-login-forms">DAST authentication now supports multi-step login forms</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/configuration/authentication/#configuration-for-a-multi-step-login-form">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11585">Related issue</a></li></ul>
</div>

<p>The new <code>DAST_AFTER_LOGIN_ACTIONS</code> variable enables you to provide a list of actions to be executed after login. This allows for multi step login interactions, for example Azure AD’s “Keep Me Signed In” workflow.</p>
<h3 id="updated-sast-rules-to-reduce-false-positive-results">Updated SAST rules to reduce false-positive results</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/rules/#important-rule-changes">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8170">Related epic</a></li></ul>
</div>

<p>We’ve updated the default ruleset used in GitLab SAST to provide higher-quality results.
We analyzed each rule that was previously included by default, then removed rules that did not provide enough value in most codebases.</p>
<p>The rule changes are included in updated versions of the Semgrep-based GitLab SAST <a href="/user/application_security/sast/analyzers/">analyzer</a>.
This update is automatically applied on GitLab 16.0 or newer unless you’ve <a href="/user/application_security/sast/">pinned SAST analyzers to a specific version</a>.</p>
<p>Existing scan results from the removed rules are <a href="/user/application_security/sast/#automatic-vulnerability-resolution">automatically resolved</a> after your pipeline runs a scan with the updated analyzer.</p>
<p>We’re working on more SAST rule improvements in <a href="https://gitlab.com/groups/gitlab-org/-/epics/10907">epic 10907</a>.</p>
<h3 id="artifactspublic-cicd-keyword-now-generally-available"><code>artifacts:public</code> CI/CD keyword now generally available</h3>
<!-- categories: Job Artifacts -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#artifactspublic">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11667">Related issue</a></li></ul>
</div>

<p>Previously, the <code>artifacts:public</code> keyword was only available as a default disabled feature for self-managed instances. Now in GitLab 16.7 we’ve made the <code>artifacts:public</code> keyword generally available for all users. You can now use the <code>artifacts:public</code> keyword in CI/CD configuration files to control whether job artifacts should be publicly accessible.</p>
<h3 id="improved-ability-to-keep-the-latest-job-artifacts">Improved ability to keep the latest job artifacts</h3>
<!-- categories: Job Artifacts -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/job_artifacts/#keep-artifacts-from-most-recent-successful-jobs">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428408">Related issue</a></li></ul>
</div>

<p>In GitLab 13.0 we introduced the ability to keep the job artifacts from the most recent successful pipeline. Unfortunately, the feature also marked all <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/266958">failed</a> and <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/387087">blocked</a> pipelines as the latest pipeline regardless of whether they were the most recent or not. This led to a buildup of artifacts in storage which had to be deleted manually.</p>
<p>In GitLab 16.7 the bugs causing this unintended behavior are resolved. Job artifacts from failed and blocked pipelines are only kept if they are from the most recent pipeline, otherwise they will follow the <code>expire_in</code> configuration. Affected GitLab.com customers should see artifacts which were inadvertently kept now unlocked and removed after a new pipeline run.</p>
<p>The <strong>Keep artifacts from most recent successful jobs</strong> setting overrides the job’s <code>artifacts: expire_in</code> configuration and can result in a large number of artifacts stored without expiry. If your pipelines create many large artifacts, they can fill up your project storage quota quickly. We recommend disabling this setting if this feature is not required.</p>
<h3 id="gitlab-runner-167">GitLab Runner 16.7</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.7 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/6359">Implement graceful shutdown for Docker executor</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27835">Dynamically create PVC volumes with storage classes for Kubernetes</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28658">allow_failure:exit codes unusable with custom executor because exit code is always 1</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36996">Add better handling of signals in the runner helper and build container for the Kubernetes executor</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-7-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h3 id="gitlab-runner-supports-slsa-v10-statement">GitLab Runner supports SLSA v1.0 statement</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/configure_runners/#artifact-provenance-metadata">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36869">Related issue</a></li></ul>
</div>

<p>Runners can now generate provenance metadata with a statement that adheres to <a href="https://slsa.dev/spec/v1.0/">SLSA 1.0</a>. To enable SLSA 1.0, set the <code>SLSA_PROVENANCE_SCHEMA_VERSION=v1</code> variable in the <code>.gitlab-ci.yml</code> file. The SLSA version 1.0 statement is planned to become the default version in GitLab 17.0.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.7">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.7">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.7">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.6 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-6-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-6-released/</id><published>2023-11-16T00:00:00Z</published><updated>2023-11-16T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On November 16, 2023, GitLab 16.6 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-joe-snyder">This month’s Notable Contributor: Joe Snyder</h2>
<p>Joe Snyder was awarded GitLab’s 16.6 MVP for consistent contributions across GitLab, including
recent merge requests to <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135025">allow admins to filter runners by version</a>.</p>
<p>Joe was nominated by <a href="https://gitlab.com/mrincon">Miguel Rincon</a>, Staff Frontend Engineer at GitLab.
Miguel recognized Joe’s efforts through several required rewrites due to GitLab’s evolving architecture
and commented on Joe’s “thoughtful consideration of performance and usability.”</p>
<p><a href="https://gitlab.com/pedropombeiro">Pedro Pombeiro</a>, Sr. Backend Engineer at GitLab, added that “Joe Snyder drove this change over the
finish line after taking over from a former colleague, requiring learning all the context around the problem.
He also proved very responsive and patient with our feedback in successive reviews.”</p>
<p>“Joe has been a pleasure to work with,” said <a href="https://gitlab.com/terrichu">Terri Chu</a>, Staff Backend Engineer at GitLab.
Terri highlighted Joe’s ongoing work on <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127899"><code>emails_enabled</code> changes</a>
over the last (and previous) milestone.</p>
<p>Joe Snyder is a Senior R&amp;D Engineer at <a href="https://www.kitware.com/">Kitware</a> and has been contributing to GitLab since 2021.
Our many thanks to Joe for continuing to improve GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="gitlab-duo-chat-available-in-beta">GitLab Duo Chat available in Beta</h3>
<!-- categories: Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10550">Related epic</a></li></ul>
</div>

<p>Everyone involved in the software development process can spend a significant amount of time familiarizing themselves with code, epics, issues, and lengthy discussion threads. You can often find yourself slowed down by routine tasks like writing summaries, documentation, tests, or even code. Having an expert at your side that can answer DevSecOps questions without judgment and address follow-ups could help you accelerate the software development process.</p>
<p>GitLab Duo Chat aims to actively address these pain points and accelerate your workflows. Its capabilities include:</p>
<ul>
<li>Explain or summarize issues, epics, and code.</li>
<li>Answer specific questions about these artifacts like “Collect all the arguments raised in comments regarding the solution proposed in this issue.”</li>
<li>Generate code or content based the information in these artifacts. For instance, “Can you write documentation for this code?”</li>
<li>Or simply get you started from scratch like “Create a .GitLab-ci.yml configuration file for testing and building a Ruby on Rails application in a GitLab CI/CD pipeline.”</li>
<li>Answer all your DevSecOps related question, whether you are beginner or an expert. For example, “How can I set up Dynamic Application Security Testing for a REST API?”</li>
<li>Answer follow-up questions so you can iteratively work through all the above scenarios.</li>
</ul>
<p>GitLab Duo Chat is available on GitLab.com as a Beta feature. It is also integrated into our Web IDE and GitLab Workflow extension for VS Code as Experimental features.</p>
<p>You can also help us mature these features by providing feedback about your experiences with Duo Chat, either within the product or via our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/430124">feedback issue</a>.</p>
<h3 id="automatic-claims-of-enterprise-users">Automatic claims of enterprise users</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/enterprise_user/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9675">Related epic</a></li></ul>
</div>

<p>When a GitLab.com user’s primary email address matches an existing verified domain, the user is automatically claimed as an enterprise user. This gives the group Owner more user management controls and visibility into the user’s account. After a user becomes an enterprise user, they can only change their primary email to an email their organization owns as per its verified domains.</p>
<h3 id="minimal-forking---only-include-the-default-branch">Minimal forking - only include the default branch</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/forking_workflow/#create-a-fork">Documentation</a></li></ul>
</div>

<p>In previous versions of GitLab, when forking a repository, the fork always included all branches within the repository.
Now you can create a fork with only the default branch, reducing complexity and storage space.
Create minimal forks if you don’t need the changes that are currently being worked on in other branches.</p>
<p>The default method of forking will not change and continue to include all branches within the repository.
The new option shows which branch is the default, so that you are aware of exactly which branch will be included in the new fork.</p>
<h3 id="allow-users-to-enforce-mr-approvals-as-a-compliance-policy">Allow users to enforce MR approvals as a compliance policy</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#any_merge_request-rule-type">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9696">Related epic</a></li></ul>
</div>

<p>There is an increasing scrutiny on code changes that can potentially land in production applications and open businesses up to compliance risk and security vulnerability. With scan result policies, you can ensure unilateral changes cannot be made by enforcing two person approval on all merge requests.</p>
<p>Scan results policies have a new option to target <code>Any merge request</code> which can be paired with defining <a href="/user/application_security/policies/merge_request_approval_policies/#require_approval-action-type">role-based approvers</a> to ensure each MR for the defined branches require approval by two (or more) users with a given role (Owner, Maintainer, or Developer).</p>
<p>Available in SaaS in 16.6. Available for Self-managed behind the feature flag <code>scan_result_any_merge_request</code> and will be enabled by default in 16.7.</p>
<h3 id="switchboard-portal-for-gitlab-dedicated-is-now-generally-available">Switchboard portal for GitLab Dedicated is now generally available</h3>
<!-- categories: Switchboard, GitLab Dedicated -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/dedicated/">Documentation</a> | <a href="https://about.gitlab.com/dedicated/">Related issue</a></li></ul>
</div>

<p>Switchboard, a new self-service portal, is now available for customers and team members to onboard, configure and maintain their <a href="https://about.gitlab.com/dedicated/">GitLab Dedicated</a> instances.</p>
<p>Using Switchboard, you can now make some <a href="/administration/dedicated/">configuration changes</a> to your GitLab Dedicated instance. This functionality will expand in future releases.</p>
<h3 id="cicd-components-beta-release">CI/CD components Beta release</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9897">Related issue</a></li></ul>
</div>

<p>In GitLab 16.1, we <a href="https://about.gitlab.com/blog/introducing-ci-components/">announced</a> the release of an exciting experimental feature called CI/CD components. The component is a pipeline building block that can be listed in the upcoming CI/CD catalog.</p>
<p>Today we are excited to announce the Beta availability of CI/CD components. With this release, we have also improved the components folder structure from the initial experimental version. If you are already testing the experimental version of CI/CD components, it’s essential to migrate to the <a href="/ci/components/#directory-structure">new folder structure</a>. You can see some examples <a href="https://gitlab.com/gitlab-components/">here</a>. The old folder structure is deprecated and we plan to remove it within the next couple of releases.</p>
<p>If you try out CI/CD components, you are also welcome to try the new CI/CD catalog, currently available as an experimental feature. You can search the <a href="/ci/components/">Global CI/CD catalog</a> for components that others have created and published for public use. Additionally, if you create your own components, you can choose to publish them in the catalog too!</p>
<h3 id="improved-ui-for-cicd-variable-management">Improved UI for CI/CD variable management</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/variables/#define-a-cicd-variable-in-the-ui">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/418005">Related issue</a></li></ul>
</div>

<p>CI/CD variables are a fundamental part of GitLab CI/CD, and we felt that we could offer a better experience for working with variables from the settings UI. So in this release we’ve updated the UI to use a new drawer that improves the flow of adding and editing CI/CD variables.</p>
<p>For example, the masking validation used to only happen when you tried to save the CI/CD variable, and if it failed you’d have to restart from scratch. But now with the new drawer, you get real time validation so you can adjust on the fly without needed to redo anything!</p>
<p>Your <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/428807">feedback for this change</a> is always valued and appreciated.</p>
<h3 id="runner-fleet-dashboard---starter-metrics-beta">Runner Fleet Dashboard - Starter metrics (Beta)</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/runner_fleet_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/424495">Related issue</a></li></ul>
</div>

<p>Operators of self-managed runner fleets need observability and the ability to quickly answer critical questions about their runner fleet infrastructure at a glance. Now, with the Runner Fleet Dashboard - Admin View (Beta), you have actionable insights to help you quickly answer critical fleet management and developer experience questions, starting with instance runners. These include answers to questions like which runners have errors, the performance of the runner queues for CI job execution, and which runners are most actively used. Ultimate customers can enable this feature independently, but are encouraged to participate in the <a href="https://gitlab.com/groups/gitlab-org/-/epics/11180">early adopter’s program</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="hide-archived-projects-in-search-results-by-default">Hide archived projects in search results by default</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/#include-archived-projects-in-search-results">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10957">Related epic</a></li></ul>
</div>

<p>Previously, users saw many archived projects in their project search results. This was problematic, especially when archived projects took up many of the top results. We now filter out archived projects by default, and users can select <strong>Include archived</strong> to see all projects.</p>
<h3 id="private-group-names-are-hidden-from-unauthorized-users">Private group names are hidden from unauthorized users</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/manage/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415165">Related issue</a></li></ul>
</div>

<p>Previously, the names of private groups were visible to all users when accessing the <strong>Groups</strong> tab of a project’s or group’s members page. To enhance security, we are now masking private groups’ name and source from users who are not members of the shared group, shared project, or invited group. Instead, this information will be displayed as <strong>Private</strong>.</p>
<h3 id="comprehensive-list-of-items-that-failed-to-be-imported">Comprehensive list of items that failed to be imported</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/386138">Related issue</a></li></ul>
</div>

<p>Previously, when migrating GitLab projects and groups by direct transfer had completed and some items (such as a merge requests or issues) were not
successfully imported, you could select a <strong>Details</strong> button on the
<a href="/user/group/import/">page listing imported groups and projects</a> and see related errors there.</p>
<p>However, a list of errors is not helpful to understand how many items in total, and which items in particular, were not imported. Having this
information is crucial to understanding the results of the import process.</p>
<p>In this release, we replaced the <strong>Details</strong> button with a <strong>See failures</strong> link. Selecting the <strong>See failures</strong> link takes you to a new page listing all items that failed
to import for a given group or project. For each item that wasn’t imported, you can see:</p>
<ul>
<li>The type of the item. For example, merge request or issue.</li>
<li>What kind of error occurred.</li>
<li>The correlation ID, which is useful for debugging purposes.</li>
<li>The URL of the item on the source instance, if available (items with <code>iid</code>).</li>
<li>The title of the item on the source instance, if available. For example, the merge request title or the issue title.</li>
</ul>
<h3 id="consistent-navigation-experience-for-all-users">Consistent navigation experience for all users</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/tutorials/left_sidebar/">Documentation</a></li></ul>
</div>

<p>The 16.0 release introduced a new navigation experience, which became the default for all users on June 2, 2023. In subsequent milestones, many improvements were made based on a wealth of user feedback. The ability to fall back to the old navigation has now been removed. More exciting changes are planned for the navigation, but for now, all users have a consistent navigation experience.</p>
<p>As a recap, with the new GitLab navigation, you can:</p>
<ul>
<li>Pin menu items to save your most-used project or group items at the top</li>
<li>Hide and “peek” the navigation to expose a wider screen</li>
<li>Easily search for menu items by using keyboard shortcuts</li>
<li>Continue to use all the themes you had with the previous navigation</li>
<li>Use better-organized sections that align with a DevOps workflow</li>
</ul>
<h3 id="gitlab-silent-mode">GitLab Silent Mode</h3>
<!-- categories: Disaster Recovery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/silent_mode/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9826">Related epic</a></li></ul>
</div>

<p>When GitLab Silent Mode is enabled, it blocks all major outbound traffic such as notification emails, integrations, webhooks, and mirroring from a GitLab instance. This allows you to perform testing against a GitLab site without generating traffic towards users and other integrations. You can use Silent Mode to test a restored backup or a promoted Geo DR site without impacting your primary GitLab site or your end users.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="real-time-kubernetes-status-updates-in-the-gitlab-ui">Real-time Kubernetes status updates in the GitLab UI</h3>
<!-- categories: Deployment Management, Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/422945">Related issue</a></li></ul>
</div>

<p>In GitLab 16.6, you can use the cluster UI integration on your environment page to determine the status of currently running applications without leaving GitLab. Previously, the status was updated by a one-time request when the UI loaded, which made tracking deployment progress unwieldy. The current version of GitLab upgrades the underlying connection to use the Kubernetes watch API for the Flux reconciliation and Pod statuses, and provides near real-time updates of the cluster state in the GitLab UI.</p>
<h3 id="connect-to-kubernetes-clusters-with-the-gitlab-cli">Connect to Kubernetes clusters with the GitLab CLI</h3>
<!-- categories: GitLab CLI, Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/user_access/#access-a-cluster-with-the-kubernetes-api">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11455">Related epic</a></li></ul>
</div>

<p>From GitLab version 16.4, you can connect to a Kubernetes cluster from a local terminal using the agent for Kubernetes and a personal access token. In the initial version, setting up the local cluster configuration required several commands and a long lived access token. In the past month, we worked to streamline and improve the security of the set up process by extending the GitLab CLI.</p>
<p>The GitLab CLI can now list the agent connections available from a GitLab project checkout directory or the specified project. You can set up the connection through a selected agent with a dedicated command. When <code>kubectl</code> or any other tool needs to authenticate with the cluster, the GitLab CLI generates a temporary, restricted token for the signed-in user.</p>
<h3 id="allow-compliance-teams-to-prevent-pushing-and-force-pushing-into-protected-branches">Allow compliance teams to prevent pushing and force pushing into protected branches</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9706">Related epic</a></li></ul>
</div>

<p>One of several new settings being added to scan result policies to aide in <a href="https://gitlab.com/groups/gitlab-org/-/epics/9704">compliance enforcement of security policies</a>, this control will limit the ability to leverage project-level settings to circumvent policies.</p>
<p>For each existing or new scan result policy, you can enable <code>Prevent pushing and force pushing</code> to take effect for the branches defined within the policy to prevent users from circumventing the merge request flow to push changes directly to a branch.</p>
<p>Available in SaaS in 16.6. Available for Self-managed behind the feature flag <code>scan_result_policies_block_force_push</code> and will be enabled by default in 16.7.</p>
<h3 id="group-level-audit-event-streaming-to-aws-s3">Group-level audit event streaming to AWS S3</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>Building on our integrations with external logging or data aggregation tools, you can now select AWS S3 as a destination for audit event streams
for top-level groups. This feature provides relevant information for an easier and more trouble-free integration.</p>
<p>Previously, you had to use custom HTTP headers to try to build a request that AWS S3 would accept. This method was prone to errors and could be difficult to troubleshoot.</p>
<h3 id="improved-handling-of-unresponsive-external-status-checks">Improved handling of unresponsive external status checks</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/status_checks/#status-checks-widget">Documentation</a></li></ul>
</div>

<p>Previously, external status checks on MRs continued to poll the external URL until they received either a successful or failed response.
This could result in some status checks seeming to hang in an unresponsive state.</p>
<p>Now, a 2 minute timeout has been incorporated so that you can manually retry the status check after 2 minutes if you are not getting any
response from the external system.</p>
<h3 id="changes-to-the-vulnerability-reports-tool-filter">Changes to the vulnerability report&rsquo;s Tool filter</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11237">Related epic</a></li></ul>
</div>

<p>Previously, the vulnerability report allowed you to filter by a static list of GitLab-supported tool types, followed by a dynamic list of custom scanners. With this release, you can now select tool type grouped by analyzer.</p>
<h3 id="service-accounts-have-optional-expiry-dates">Service accounts have optional expiry dates</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421420">Related issue</a></li></ul>
</div>

<p>GitLab administrators and group Owners can choose if they want to enforce an expiry date for service accounts. Previously, service account tokens had to expire within a year, in line with personal, project, and group access token expiration limits. This allows administrators and group Owners to choose the balance between security and ease of use that best aligns with their goals.</p>
<h3 id="prevent-duplicate-nuget-packages">Prevent duplicate NuGet packages</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/nuget_repository/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/293748">Related issue</a></li></ul>
</div>

<p>You can use the GitLab Package Registry to publish and download your project’s NuGet packages. By default, you can publish the same package name and version multiple times.</p>
<p>However, you might want to prevent duplicate uploads, especially for releases. In this release, GitLab has expanded the group setting for the Package Registry so you can allow or deny duplicate package uploads.</p>
<p>You can adjust this setting with the <a href="/api/graphql/reference/#packagesettings">GitLab API</a>, or from the UI.</p>
<h3 id="upload-packages-to-the-maven-repository-with-basic-http-authentication">Upload packages to the Maven repository with basic HTTP authentication</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/maven_repository/#basic-http-authentication">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/277385">Related issue</a></li></ul>
</div>

<p>The GitLab Package Registry now supports uploading Maven packages with basic HTTP authentication. Previously, you could use basic HTTP authentication only to download Maven packages. This inconsistency made it difficult for developers to configure and maintain authentication for their project.</p>
<p>Publishing artifacts with <code>sbt</code> is not supported, but <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/408479">issue 408479</a> proposes to add this feature.</p>
<h3 id="container-scanning-exclude-findings-which-wont-be-fixed">Container Scanning: Exclude findings which won&rsquo;t be fixed</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/container_scanning/#available-cicd-variables">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/6846">Related issue</a></li></ul>
</div>

<p>Container scanning results may include findings which the vendor has evaluated and decided to not fix. To allow
you to focus on actionable findings, you can now exclude such findings. For configuration options please refer to the GitLab documentation.</p>
<h3 id="include-cvss-vectors-in-the-vulnerability-report-export">Include CVSS Vectors in the vulnerability report export</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11213">Related issue</a></li></ul>
</div>

<p>When you export information from the vulnerability report, the CVSS Vector information is now included.
This additional data helps you analyze and triage vulnerabilities outside GitLab.</p>
<h3 id="added-support-for-sbt-projects-using-java-21">Added support for SBT projects using Java 21</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#obtaining-dependency-information-by-parsing-lockfiles">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421174">Related issue</a></li></ul>
</div>

<p>Dependency Scanning and License Scanning now support SBT projects using Java 21.</p>
<h3 id="dast-analyzer-updates">DAST analyzer updates</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/checks/#active-checks">Documentation</a></li></ul>
</div>

<p>During the 16.6 release milestone, we enabled the following active checks for browser-based DAST by default:</p>
<ul>
<li>Check 94.1 replaces ZAP check 90019 and identifies server-side code injection (PHP).</li>
<li>Check 94.2 replaces ZAP check 90019 and identifies server-side code injection (Ruby).</li>
<li>Check 94.3 replaces ZAP check 90019 and identifies server-side code injection (Python).</li>
<li>Check 943.1 replaces ZAP check 40033 and identifies improper neutralization of special elements in data query logic.</li>
<li>Check 74.1 replaces ZAP check 90017 and identifies XSLT injection.</li>
</ul>
<h3 id="macos-14-sonoma-and-xcode-15-image-support">macOS 14 (Sonoma) and Xcode 15 image support</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/macos/#supported-macos-images">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/431424">Related issue</a></li></ul>
</div>

<p>Teams can now seamlessly create, test, and deploy applications for the Apple ecosystem on macOS 14 and Xcode 15.</p>
<p>SaaS runners on macOS allow you to increase your development teams’ velocity in building and deploying applications that require macOS in a secure, on-demand GitLab Runner build environment integrated with GitLab CI/CD.</p>
<p>Try it out today by using <code>macos-14-xcode-15</code> as the image in your .GitLab-ci.yml file.</p>
<h3 id="gitlab-runner-166">GitLab Runner 16.6</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.6 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29409">GitLab Runner Fleeting plugin for GCP Compute Engine - Beta</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/6359">Implement graceful shutdown for Docker executor</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27835">Dynamically create PVC volumes with storage classes for Kubernetes</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/30713">Override the container entrypoint through <code>image.entrypoint</code> in the Kubernetes executor</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36959">Pods keep restarting with a Liveness probe failed error after upgrade to GitLab Runner 16.5.0</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/399770">Debug terminal - variable contains content of file instead of file path</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28162">Job execution pods in Kubernetes does not handle signals</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29480">Services in GitLab Runner Docker executor using Podman do not start</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-6-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.6">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.6">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.6">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.5 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-5-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-5-released/</id><published>2023-10-22T00:00:00Z</published><updated>2023-10-22T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On October 22, 2023, GitLab 16.5 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-thorben-westerhuys">This month’s Notable Contributor: Thorben Westerhuys</h2>
<p>Thorben was recognized for ongoing work on his merge request to <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130789">add a user preference to show
times in 24-hour format</a>.
This feature is planned for 16.6 and will give users the choice between 12-hour and 24-hour time formats.</p>
<p>Magdalena Frankiewicz, Product Manager at GitLab, nominated Thorben and noted the issue
for this feature has been open for 7 years with over 190 upvotes. Peter Leitzen, Staff Backend
Engineer at GitLab, also highlighted Thorben’s work to <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130794">refactor backend code related to time
format</a>.</p>
<p>Thorben is CTO of LUUCY, a 3D web platform bringing together high resolution geo data.
He is a former CTO of cividi, a geo spatial data consultancy for urban planning related topics.</p>
<p>Thank you to Thorben and the rest of the GitLab Community for contributing 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="compliance-standards-adherence-report">Compliance standards adherence report</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/">Documentation</a></li></ul>
</div>

<p>The Compliance Center now includes a new tab for the standards adherence report.
This report initially includes a GitLab best practices standard, showing when the
projects in your group are not meeting the requirements for the checks included in the standard. The
three checks shown initially are:</p>
<ul>
<li>Approval rule exists to require at least 2 approvers on MRs</li>
<li>Approval rule exists to disallow the MR author to merge</li>
<li>Approval rule exists to disallow committers to the MR to merge</li>
</ul>
<p>The report contains details on the status of each check on a per project basis. It will
also show you when the check was last run, which standard the check applies to,
and how to fix any failures or problems that might be shown on the report. Future iterations
will add more checks and expand the scope to include more regulations and standards.
Additionally, we will be adding improvements to group and filter the report, so you
can focus on the projects or standards that matter most to your organization.</p>
<h3 id="create-rules-to-set-target-branches-for-merge-requests">Create rules to set target branches for merge requests</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/branches/#configure-workflows-for-target-branches">Documentation</a></li></ul>
</div>

<p>Some projects use multiple long-term branches for development, like <code>develop</code> and <code>qa</code>. In these projects, you might want to keep <code>main</code> as the default branch since it represents the production state of the project. However, development work expects merge requests to target <code>develop</code> or <code>qa</code>. Target branch rules help ensure merge requests target the appropriate branch for your project and development workflow.</p>
<p>When you create a merge request, the rule checks the name of the branch. If the branch name matches the rule, the merge request pre-selects the branch you specified in the rule as the target. If the branch name does not match, the merge request targets the default branch of the project.</p>
<h3 id="resolve-an-issue-thread">Resolve an issue thread</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/discussions/#resolve-a-thread">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/31114">Related issue</a></li></ul>
</div>

<p>Long-running issues with many threads can be challenging to read and track. You can now resolve a thread on an issue when the topic of discussion has concluded.</p>
<h3 id="fast-forward-merge-trains-with-semi-linear-history">Fast-forward merge trains with semi-linear history</h3>
<!-- categories: Merge Trains -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/merge_trains/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/26996">Related issue</a></li></ul>
</div>

<p>In 16.4, we released <a href="https://about.gitlab.com/releases/2023/09/22/gitlab-16-4-released/#fast-forward-merge-support-for-merge-trains">Fast-forward merge trains</a>, and as a continuation, we want to ensure we support all <a href="/user/project/merge_requests/methods/">merge methods</a>. Now, if you want to ensure your semi-linear commit history is maintained you can use semi-linear fast-forward merge trains.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="find-epics-with-advanced-search">Find epics with advanced search</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/250699">Related issue</a></li></ul>
</div>

<p>The popularity of epics in GitLab continues to grow. Previously, finding epics was a little more difficult than other content types. With this release, you can now search and view results for epics when you use advanced search.</p>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<ul>
<li>GitLab 16.5 <code>.deb</code> Linux packages have <a href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/8197">switched from gzip to xz compression</a>,
resulting in smaller package sizes. This change might result in slower unpacking times during installation.</li>
<li>GitLab 16.5 includes <a href="https://docs.mattermost.com/install/self-managed-changelog.html#release-v9-0-major-release">Mattermost 9.0</a>.
This version removes the deprecated Insights feature, and
<a href="https://forum.mattermost.com/t/upcoming-product-changes-to-boards-and-various-plugins/16669">Mattermost Boards and various plugins have transitioned to community support</a>.</li>
<li>GitLab 16.5 <a href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/7165">moves the GitLab SELinux policy module</a>
from <code>/opt/gitlab/embedded/selinux/rhel/7/</code> to <code>/opt/gitlab/embedded/selinux</code> to reflect that the module isn’t only for RHEL 7.</li>
</ul>
<h3 id="reviewer-information-for-merge-requests-in-the-jira-development-panel">Reviewer information for merge requests in the Jira development panel</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/jira/development_panel/#information-displayed-in-the-development-panel">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/364273">Related issue</a></li></ul>
</div>

<p>With the <a href="/integration/jira/connect-app/">GitLab for Jira Cloud app</a>, you can connect GitLab and Jira Cloud to sync development information in real time. You can view this information in the Jira development panel.
Previously, when a reviewer was assigned to a merge request, the reviewer information was not displayed in the Jira development panel. With this release, the reviewer name, email, and approval status are displayed in the Jira development panel when you use the GitLab for Jira Cloud app.</p>
<h3 id="changing-context-just-got-easier">Changing context just got easier</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/tutorials/left_sidebar/">Documentation</a></li></ul>
</div>

<p>We’ve heard your feedback that on the left sidebar, it can be hard to find the search button and to change between things like projects and preferences. In this release, we’ve made the button more prominent. This aids discoverability as well as streamlining workflows into a single touch point.</p>
<p>You can try it out by selecting the <strong>Search or go to…</strong> button or with a keyboard shortcut by typing / or s.</p>
<h3 id="webhook-now-triggered-when-a-release-is-deleted">Webhook now triggered when a release is deleted</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#release-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/418113">Related issue</a></li></ul>
</div>

<p>You can use release events to monitor release objects and react to changes. Previously, a webhook was only triggered when a release was created or updated. In heavily regulated industries, deleting releases is a crucial event that must be monitored and followed up.
With GitLab 16.5, a webhook is now also triggered when a release is deleted.</p>
<h3 id="redesigned-service-desk-issues-list">Redesigned Service Desk issues list</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/using_service_desk/">Documentation</a></li></ul>
</div>

<p>We’ve redesigned Service Desk issues list to load faster and more smoothly.
It now matches more closely the regular issues list. Available features include:</p>
<ul>
<li>The same sorting and ordering options as on the issue list.</li>
<li>The same filters, including the OR operator and filtering by issue ID.</li>
</ul>
<h3 id="geo-adds-bulk-resync-and-reverify-buttons-for-all-components">Geo adds bulk resync and reverify buttons for all components</h3>
<!-- categories: Geo Replication, Disaster Recovery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8212">Related epic</a></li></ul>
</div>

<p>You can now trigger bulk resync or reverify for any data component managed by Geo, through buttons in the Geo admin UI. Selecting the button will apply the operation to all data items related to the respective component. Before, this was only possible by logging into the Rails console. These actions are now more accessible, and the experience of troubleshooting and applying large scale changes that require a full resync or reverify of specific components, such as moving storage locations, is improved.</p>
<h3 id="back-up-and-restore-repository-data-in-the-cloud">Back up and restore repository data in the cloud</h3>
<!-- categories: Gitaly, Backup/Restore of GitLab instances -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/backup_restore/backup_gitlab/#create-server-side-repository-backups">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10826">Related epic</a></li></ul>
</div>

<p>The GitLab backup and restore feature now supports storing repository data in object storage. This update improves performance by eliminating the intermediate steps used to create a large tarball, which needs to be manually stored in an appropriate location.</p>
<p>With this update, repository backups get stored in an object storage location of your choice (Amazon S3, Google Cloud Storage, Azure Cloud Data Storage, MinIO, etc.). This change eliminates the need to manually move data off of your Gitaly instance.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="integrate-deployment-approval-and-approval-rule-changes-into-audit-events">Integrate deployment approval and approval rule changes into audit events</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/audit_event_types/#environment-management">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415603">Related issue</a></li></ul>
</div>

<p>Deployments in regulated industries are a central topic of compliance. In previous releases, deployment approvals were not part of audited events, which made it difficult to tell when and how approval rules changed.</p>
<p>GitLab now ships with a new set of audit events for deployment approval and approval rule changes. These events fire when deployment approval rules change, or when approval rules for protected environments change.</p>
<h3 id="use-the-api-to-delete-a-users-saml-and-scim-identities">Use the API to delete a user&rsquo;s SAML and SCIM identities</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/scim/#delete-a-single-scim-identity">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/423592">Related issue</a></li></ul>
</div>

<p>Previously, group Owners had no way to programmatically delete SAML or SCIM identities. This made it difficult to troubleshoot issues with the user provisioning and sign-in processes. Now, group Owners can use new endpoints to delete these identities.</p>
<p>Thank you <a href="https://gitlab.com/jgao1025">jgao1025</a> for your contribution!</p>
<h3 id="export-the-compliance-violations-report">Export the compliance violations report</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/">Documentation</a></li></ul>
</div>

<p>The compliance violations report can contain a lot of information. Previously, you could only view the information in the GitLab UI. This was fine for individual issues, but
could be tricky if you needed to, for example:</p>
<ul>
<li>Create an artifact of the current compliance status for a release. For example, prove to an auditor that there were 0 violations.</li>
<li>Aggregate the data with another data set or process it in another tool.</li>
</ul>
<p>In GitLab 16.5, you can now export a list of the items included in the compliance violations report in CSV format.</p>
<h3 id="new-customizable-permissions">New customizable permissions</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/custom_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/17364">Related issue</a></li></ul>
</div>

<p>The permissions to manage group members and project access tokens have been added to the custom roles framework. You can add these permissions to any base role to create a custom role. By creating custom roles with only the permissions needed to accomplish a particular set of tasks, you do not have to unnecessarily assign highly privileged roles such as Maintainer and Owner to users.</p>
<h3 id="instance-level-audit-event-streaming-to-google-cloud-logging">Instance-level audit event streaming to Google Cloud Logging</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11061">Related epic</a></li></ul>
</div>

<p>Previously, you could configure only top-level group streaming audit events for Google Cloud Logging.</p>
<p>With GitLab 16.5, we’ve extended support for Google Cloud Logging to instance-level streaming destinations.</p>
<h3 id="configurable-locked-user-policy">Configurable locked user policy</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/unlock_user/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/27048">Related issue</a></li></ul>
</div>

<p>Administrators can now configure a locked user policy for their instance by choosing the number of unsuccessful sign-in attempts, and how long the user is locked for. For example, five unsuccessful sign-in attempts would lock a user for 60 minutes. This allows administrators to define a locked user policy that meets their security and compliance needs. Previously, the number of sign-in attempts and locked user time period were not configurable.</p>
<h3 id="activate-and-deactivate-headers-for-streaming-audit-events">Activate and deactivate headers for streaming audit events</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11109">Related issue</a></li></ul>
</div>

<p>Previously, you had to delete HTTP headers added to audit event streaming destinations, even if you only wanted to deactivate
them temporarily.</p>
<p>With GitLab 16.5, you can use the <strong>Active</strong> checkbox in the GitLab UI to toggle each header on and off individually. You can use this to:</p>
<ul>
<li>Test different headers.</li>
<li>Temporarily deactivate a header.</li>
<li>Switch between two versions of the same header.</li>
</ul>
<h3 id="api-to-create-pat-for-currently-authenticated-user">API to create PAT for currently authenticated user</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/users/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/425171">Related issue</a></li></ul>
</div>

<p>You can now use a new REST API endpoint at <code>user/personal_access_tokens</code> to create a new personal access token for the currently authenticated user. This token’s scope is limited to <code>k8s_proxy</code> for security reasons, so you can use it to only perform Kubernetes API calls using the agent for Kubernetes. Previously, only instance administrators could <a href="/api/users/">create personal access tokens through the API</a>.</p>
<h3 id="vulnerability-report-grouping-by-status-and-severity">Vulnerability report grouping by status and severity</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#group-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10164">Related epic</a></li></ul>
</div>

<p>As a user, you require the ability to group vulnerabilities so that you can more efficiently triage vulnerabilities. With this release, you are able to group by severity or status. This will help you better answer questions like how many confirmed vulnerabilities are in a group or project, or how many vulnerabilities still need to be triaged.</p>
<h3 id="export-individual-wiki-pages-as-pdf">Export individual wiki pages as PDF</h3>
<!-- categories: Wiki -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/wiki/#export-a-wiki-page">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/414691">Related issue</a></li></ul>
</div>

<p>From GitLab 16.5, you can export individual wiki pages as PDF files. Now, sharing team knowledge is even more seamless. Exporting a wiki to PDF can be used for a variety of use cases. For example, to provide a copy of technical documentation that is kept in a wiki or share information in a wiki with project status. Gone is the need to leverage alternative tools to convert Markdown files to PDF, since in some organizations, using these tools is prohibited, creating another challenge. Thank you to JiHu for contributing this feature!</p>
<h3 id="add-a-child-task-objective-or-key-result-with-a-quick-action">Add a child task, objective, or key result with a quick action</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/quick_actions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420797">Related issue</a></li></ul>
</div>

<p>You can now add a child item for a task, objective, or key result by using the <code>/add_child</code> quick action.</p>
<h3 id="linked-items-widget-in-tasks-objectives-and-key-results">Linked items widget in tasks, objectives, and key results</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/okrs/#linked-items-in-okrs">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416558">Related issue</a></li></ul>
</div>

<p>With this release, you can link <a href="/user/tasks/#linked-items-in-tasks">tasks</a> and <a href="/user/okrs/#linked-items-in-okrs">OKRs</a> as “related,” “blocked by,” or “blocking” to provide traceability between dependent and related work items.</p>
<p>When we migrate <a href="https://gitlab.com/groups/gitlab-org/-/epics/9290">epics</a> and <a href="https://gitlab.com/groups/gitlab-org/-/epics/9584">issues</a> to the work item framework, you will be able to link across all these types.</p>
<h3 id="set-a-parent-for-a-task-objective-or-key-result-with-a-quick-action">Set a parent for a task, objective, or key result with a quick action</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/quick_actions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420798">Related issue</a></li></ul>
</div>

<p>You can now set a parent item for a task, objective, or key result by using the <code>/set_parent</code> quick action.</p>
<h3 id="dast-analyzer-updates">DAST analyzer updates</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/checks/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11426">Related epic</a></li></ul>
</div>

<p>During the 16.5 release milestone, we enabled the following active checks for browser-based DAST by default:</p>
<ul>
<li>Check 78.1 replaces ZAP check 90020 and identifies command injection, which can be exploited by executing arbitrary OS commands on the target application server. This is a critical vulnerability that can lead to a full system compromise.</li>
<li>Check 611.1 replaces ZAP check 90023 and identifies External XML Entity Injection (XXE), which can be exploited by causing an application’s XML parser to include external resources.</li>
<li>Check 94.4 replaces ZAP check 90019 and identifies “Server-side code injection (NodeJS)”, which can be exploited by injecting arbitrary JavaScript code to be executed on the server.</li>
<li>Check 113.1 replaces ZAP check 40003 and identifies “Improper Neutralization of CRLF Sequences in HTTP Headers (‘HTTP Response Splitting’)”, which can be exploited by inserting Carriage Return / Line Feed (CRLF) characters to inject arbitrary data into HTTP responses.</li>
</ul>
<h3 id="make-jobs-api-endpoint-rate-limit-configurable">Make jobs API endpoint rate limit configurable</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/user_and_ip_rate_limits/#maximum-authenticated-requests-to-projectidjobs-per-minute">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/395702">Related issue</a></li></ul>
</div>

<p>A rate limit for the <code>project/:id/jobs</code> API endpoint was added recently,
defaulting to 600 requests per minute per user. As a follow up iteration, we are making this limit
configurable, enabling instance administrators to set the limit that best matches their requirements.</p>
<h3 id="gitlab-runner-165">GitLab Runner 16.5</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.5 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29404">GitLab Runner fleeting plugin for AWS EC2 instances - Beta</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab/-/issues/390645">Terminating a runner manager k8s pod results in orphaned worker pods</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29606">GitLab Runner 15.8.0 cannot checkout branches with special characters</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27768">GitLab Runner pulls an x86-64 helper image, not the arm64 helper image, on an arm64 compute host</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-5-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.5">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.5">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.5">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.4 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-4-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-4-released/</id><published>2023-09-22T00:00:00Z</published><updated>2023-09-22T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On September 22, 2023, GitLab 16.4 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-kik">This month’s Notable Contributor: Kik</h2>
<p>Kik has been instrumental in designing and beginning the implementation of ActivityPub support
in GitLab. His original deeply detailed architecture plan has been embraced by our product team
and now lives <a href="https://gitlab.com/groups/gitlab-org/-/epics/11247">as an epic</a> in the GitLab project.
The <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127023">first MR</a> implementing this code was
recently merged, followed by a <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130960">documentation addition</a>.</p>
<p>As support for this large feature grows, Kik has shown himself to be a personification of the
<a href="https://handbook.gitlab.com/handbook/values/">GitLab Values</a> of Collaboration, Iteration and Transparency!</p>
<p>Kik has been a part of the GitLab community for many years, logging his <a href="https://gitlab.com/gitlab-org/gitlab-foss/-/issues/4037#note_4651432">first issue</a>
over 7 years ago. He’s chosen to become a bit more active over the last few months. When asked about
his contributions, he stated:</p>

<blockquote><p>If there is anything to highlight, it’s probably how enabling GitLab is, allowing to see its source code and tinker with it, while being welcoming to contributions, no matter how ambitious they are. :)</p></blockquote><p>He has also chosen to help pioneer our sustainability efforts by choosing to have
<a href="https://tree-nation.com/trees/view/5119567">trees planted</a> in his name instead of opting for swag. 🌳</p>
<p>Thank you, Kik, for choosing to help build GitLab and being a part of our amazing community! 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="customizable-roles">Customizable roles</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/393235">Related issue</a></li></ul>
</div>

<p>Group Owners or administrators can now create and remove custom roles using the UI under the Roles and Permissions menu. To create a custom role, you add <a href="/user/permissions/">permissions</a> on top of an existing <a href="/user/permissions/#roles">base role</a>. Currently, there are a limited number of permissions that can be added to a base role, including <a href="https://docs.gitlab.com/#granular-security-permissions">granular security permissions</a>, the ability to approve merge requests, and view code. Each milestone, new permissions will be released that can then be added to existing permissions to create custom roles.</p>
<h3 id="create-workspaces-for-private-projects">Create workspaces for private projects</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/#personal-access-token">Documentation</a></li></ul>
</div>

<p>Previously, it was not possible to <a href="/user/workspace/configuration/">create a workspace</a> for a private project. To clone a private project, you could only authenticate yourself after you created the workspace.</p>
<p>With GitLab 16.4, you can create a workspace for any public or private project. When you create a workspace, you get a personal access token to use with the workspace. With this token, you can clone private projects and perform Git operations without any additional configuration or authentication.</p>
<h3 id="access-clusters-locally-using-your-gitlab-user-identity">Access clusters locally using your GitLab user identity</h3>
<!-- categories: Environment Management, User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/user_access/#access-a-cluster-with-the-kubernetes-api">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/11235">Related epic</a></li></ul>
</div>

<p>Allowing developers access to Kubernetes clusters requires either developer cloud accounts or third-party authentication tools. This increases the complexity of cloud identity and access management. Now, you can grant developers access to Kubernetes clusters using only their GitLab identities and the agent for Kubernetes. Use traditional Kubernetes RBAC to manage authorizations within your cluster.</p>
<p>Together with the <a href="/ci/cloud_services/">OIDC cloud authentication</a> offering in GitLab pipelines, these features allow GitLab users to access cloud resources without dedicated cloud accounts without jeopardizing security and compliance.</p>
<p>In this first iteration of cluster access, you must <a href="/user/clusters/agent/user_access/">manage your Kubernetes configuration manually</a>. <a href="https://gitlab.com/groups/gitlab-org/-/epics/11455">Epic 11455</a> proposes to simplify setup by extending the GitLab CLI with related commands.</p>
<h3 id="groupsub-group-level-dependency-list">Group/sub-group level dependency list</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8090">Related epic</a></li></ul>
</div>

<p>When reviewing a list of dependencies, it is important to have an overall view. Managing dependencies at the project level is problematic for large organizations that want to audit their dependencies across all their projects. With this release, you can see all dependencies at the project or group level, including subgroups. This feature is now available by default.</p>
<h3 id="vulnerability-bulk-status-updates">Vulnerability bulk status updates</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/4649">Related epic</a></li></ul>
</div>

<p>Some vulnerabilities need to be addressed in bulk. Whether they are false positives or no longer detected, it’s important to minimize the noise and triage vulnerabilities with ease.
With this release you can bulk change the status and make a comment for multiple vulnerabilities from a group or project Vulnerability Report.</p>
<h3 id="granular-security-permissions">Granular security permissions</h3>
<!-- categories: Vulnerability Management, Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10684">Related epic</a></li></ul>
</div>

<p>Some organizations want to give their security teams the least amount of access necessary so they can adhere to the <a href="https://en.wikipedia.org/wiki/Principle_of_least_privilege">Principle of Least Privilege</a>.
Security teams should not have access to write code updates, but they must be able to approve merge requests, view vulnerabilities, and update a vulnerability’s status.</p>
<p>GitLab now allows users to <a href="/user/permissions/">create a custom role</a> based on the access of the <a href="/user/permissions/">Reporter</a> role, but with the added permissions of:</p>
<ul>
<li>Viewing the dependency list (<code>read_dependency</code>).</li>
<li>Viewing the security dashboard and vulnerability report (<code>read_vulnerability</code>).</li>
<li>Approving a merge request (<code>admin_merge_request</code>).</li>
<li>Changing status of a vulnerability (<code>admin_vulnerability</code>).</li>
</ul>
<p>We plan to remove the ability to change the status of a vulnerability from the Developer role for all tiers in 17.0, as noted in this <a href="/update/deprecations/#deprecate-change-vulnerability-status-from-the-developer-role">deprecation entry</a>. Feedback on this proposed change can be shared in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/424668">issue 424688</a>.</p>
<h3 id="fast-forward-merge-support-for-merge-trains">Fast-forward merge support for merge trains</h3>
<!-- categories: Merge Trains -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/merge_trains/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/4911">Related epic</a></li></ul>
</div>

<p><a href="/user/project/merge_requests/methods/#fast-forward-merge">Fast-forward merge</a> is a common and popular merge method which avoids merge commits, but requires more rebasing. Separately, Merge Trains are a powerful tool to help with some of the greater challenges related to frequently merging into the main branch. Unfortunately, before this release you could not use merge trains and fast-forward merge together.</p>
<p>In this release, self-managed admins can now enable both Fast-forward merge and merge trains in the same project. You can get all the benefits of merge trains, which ensure all your commits work together before merging, with the cleaner commit history of fast forward merges!</p>
<p>To enable the Fast-forward merge trains, locate the feature flag <code>fast_forward_merge_trains_support</code>, which has been disabled by default, and enable it.</p>
<h3 id="set-id_token-globally-and-eliminate-configuration-for-individual-jobs">Set <code>id_token</code> globally and eliminate configuration for individual jobs</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#id_tokens">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/419750">Related issue</a></li></ul>
</div>

<p>In GitLab 15.9 we announced the <a href="/update/deprecations/#old-versions-of-json-web-tokens-are-deprecated">deprecation of older versions of JSON web tokens</a> in favor of <code>id_token</code>. Unfortunately, jobs had to be modified individually to accommodate this change. To enable a smooth transition to <code>id_token</code>, beginning from GitLab 16.4, you can set <code>id_tokens</code> as a global default value in <code>.gitlab-ci.yml</code>. This feature automatically sets the <code>id_token</code> configuration for every job. Jobs that use OpenID Connect (OIDC) authentication no longer require you to set up a separate <code>id_token</code>.</p>
<p><a href="/ci/secrets/id_token_authentication/">Use <code>id_token</code> and OIDC to authenticate with third party services</a>. The required <code>aud</code> sub-keyword is used to configure the <code>aud</code> claim for the JWT.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="elasticsearch-index-integrity-now-generally-available">Elasticsearch index integrity now generally available</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/advanced_search/elasticsearch/#index-integrity">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/214601">Related issue</a></li></ul>
</div>

<p>With GitLab 16.4, Elasticsearch index integrity is generally available for all GitLab users. Index integrity helps detect and fix missing repository data. This feature is automatically used when code searches scoped to a group or project return no results.</p>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<ul>
<li>GitLab 16.4 includes packages for <a href="https://en.opensuse.org/Release_announcement_15.5">OpenSUSE 15.5</a>.</li>
</ul>
<h3 id="add-webhooks-for-added-or-revoked-emoji-reactions">Add webhooks for added or revoked emoji reactions</h3>
<!-- categories: Notifications -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhook_events/#emoji-events">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/290773">Related issue</a></li></ul>
</div>

<p>To provide as many opportunities for automation and integration with third-party systems as possible, we have added support for creating webhooks that trigger when a user adds or revokes an emoji reaction.</p>
<p>You could use the new webhook, for example, to send an email when users react to issues or merge requests with emoji.</p>
<h3 id="create-custom-role-name-and-description-using-api">Create custom role name and description using API</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/member_roles/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416751">Related issue</a></li></ul>
</div>

<p>When creating a custom role, you can now use the member roles API to add a name (required) and description (optional). Any existing custom roles have been given the name <code>Custom</code>, and you can use the API to change a custom role’s name to a name of your choosing.</p>
<h3 id="trigger-slack-notifications-for-group-mentions">Trigger Slack notifications for group mentions</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/gitlab_slack_application/#trigger-notifications-for-group-mentions">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/417751">Related issue</a></li></ul>
</div>

<p>GitLab can send messages to Slack workspace channels for certain GitLab events. With this release, you can now trigger <a href="/user/project/integrations/gitlab_slack_application/#notification-events">Slack notifications</a> for group mentions in public and private contexts in:</p>
<ul>
<li>Issue and merge request descriptions</li>
<li>Comments on issues, merge requests, and commits</li>
</ul>
<h3 id="expand-configurable-import-limits-available-in-application-settings">Expand configurable import limits available in application settings</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/import_and_export_settings/#timeout-for-decompressing-archived-files">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/421432">Related issue</a></li></ul>
</div>

<p>We recently turned a few hardcoded import limits into configurable application settings to allow self-managed
GitLab administrators to adjust these limits according to their needs.</p>
<p>In this release, we’ve added the timeout for decompressing archived files as a configurable application setting.</p>
<p>This limit was hardcoded at 210 seconds. On GitLab.com, and for self-managed installations by default, we’ve set this limit to 210 seconds. Both self-managed GitLab and
GitLab.com administrators can adjust this limit as needed.</p>
<h3 id="custom-email-address-for-service-desk">Custom email address for Service Desk</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/configure/#custom-email-address">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/329990">Related issue</a></li></ul>
</div>

<p>Service Desk is one of the most meaningful connections between your business and your customers. Now you can use your own custom email address to send and receive emails for Service Desk.
With this change, it is much easier to maintain brand identity and instill customer confidence that they are communicating with the correct entity.</p>
<p>This feature is in Beta. We encourage users to try Beta features and
provide feedback in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416637">the feedback issue</a>.</p>
<h3 id="geo-supports-unified-urls-on-cloud-native-hybrid-sites">Geo supports unified URLs on Cloud Native Hybrid sites</h3>
<!-- categories: Disaster Recovery, Geo Replication -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/secondary_proxy/#set-up-a-unified-url-for-geo-sites">Documentation</a> | <a href="https://gitlab.com/gitlab-org/charts/gitlab/-/issues/3522">Related epic</a></li></ul>
</div>

<p>Geo now supports unified URLs on <a href="/administration/reference_architectures/#cloud-native-hybrid">Cloud Native Hybrid</a> sites, which means that Cloud Native Hybrid sites can share a single external URL with the primary site. This delivers a seamless GitLab UI and Git developer experience for your remote teams who can be automatically directed to the optimal Geo secondary site based on their location using a single common URL. With this update, unified URLs are now supported across all GitLab reference architectures.</p>
<h3 id="geo-verifies-object-storage">Geo verifies object storage</h3>
<!-- categories: Geo Replication, Disaster Recovery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/replication/object_storage/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8056">Related issue</a></li></ul>
</div>

<p>Geo adds the ability to verify object storage when <a href="/administration/geo/replication/object_storage/#enabling-gitlab-managed-object-storage-replication">object storage replication is managed by GitLab</a>. To protect your object storage data against corruption, Geo compares the file size between the primary and secondary sites. If Geo is part of your disaster recovery strategy, and you enable GitLab-managed object storage replication, this protects you against data loss. Additionally, it also reduces the need to copy data that may already be present on a secondary site. For example, when adding an old primary back as a secondary site.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="support-for-environment-keyword-in-downstream-pipelines">Support for <code>environment</code> keyword in downstream pipelines</h3>
<!-- categories: Environment Management, Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/downstream_pipelines/#downstream-pipelines-for-deployments">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/369061">Related issue</a></li></ul>
</div>

<p>If you need to trigger a downstream pipeline from a CI/CD pipeline job, you can use the <code>trigger</code> keyword. To enhance your deployment management, you can now specify an environment with the <code>environment</code> keyword when you use <code>trigger</code>. For example, you might trigger a downstream pipeline for the <code>main</code> branch on your <code>/web-app</code> project with environment name <code>dev</code> and a specified environment URL.</p>
<p>Previously, when you ran separate pipelines for CI and CD and used the <code>trigger</code> keyword to start the CD pipeline, specifying environment details was not possible. This made it hard to track deployments from your CI project. Adding support for environments simplifies deployment tracking across projects.</p>
<h3 id="allow-users-to-define-branch-exceptions-to-enforced-security-policies">Allow users to define branch exceptions to enforced security policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9567">Related epic</a></li></ul>
</div>

<p>Security policies enforce scanners to run in GitLab projects, as well as enforce MR checks/approvals to ensure security and compliance. With branch exceptions, you can more granularly enforce policies and exclude enforcement for any given branch that is out of scope. Should a developer create a development or test branch that is unintentionally affected by heavy-handed enforcement, they can work with security teams to exempt the branch within the security policy.</p>
<p>For scan execution policies, you can configure exceptions for the <a href="/user/application_security/policies/scan_execution_policies/#pipeline-rule-type">pipeline</a> or <a href="/user/application_security/policies/scan_execution_policies/#schedule-rule-type">schedule</a> rule type. For scan result policies, you can specify branch exceptions for the <a href="/user/application_security/policies/merge_request_approval_policies/#scan_finding-rule-type">scan_finding</a> or <a href="/user/application_security/policies/merge_request_approval_policies/#license_finding-rule-type">license_finding</a> rule type.</p>
<h3 id="notifications-for-expiring-access-tokens">Notifications for expiring access tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/367705">Related issue</a></li></ul>
</div>

<p>Group and project access tokens are frequently used for automation. It is important that administrators and group Owners are notified when one of these tokens is close to expiry, so interruptions are avoided. Administrators and group Owners now receive a notification email when a token is seven days or less away from expiry.</p>
<h3 id="email-notification-when-access-expires">Email notification when access expires</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/#add-users-to-a-group">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/12704">Related issue</a></li></ul>
</div>

<p>A user will get an email notification seven days before their group or project access expires. This only applies if there is an access expiration date set. Previously, there were no notifications when access expired. Advance notice means you can contact your GitLab administrator to ensure continuous access.</p>
<h3 id="browser-based-dast-active-check-221-is-enabled-by-default">Browser-based DAST active check 22.1 is enabled by default</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/checks/#active-checks">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/392718">Related issue</a></li></ul>
</div>

<p>Browser-based DAST active check 22.1 has been enabled by default. It replaces ZAP check 6, which has been disabled. Check 22.1 identifies “Improper limitation of a pathname to a restricted directory (Path traversal)”, which can be exploited by inserting a payload into a parameter on the URL endpoint, allowing for arbitrary files to be read.</p>
<h3 id="private-registry-support-for-operational-container-scanning">Private registry support for Operational Container Scanning</h3>
<!-- categories: Container Scanning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/vulnerabilities/#scanning-private-images">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/415451">Related issue</a></li></ul>
</div>

<p><a href="/user/clusters/agent/vulnerabilities/">Operational Container Scanning</a> can now access and scan images from private container registries. OCS uses the image pull secrets to access private registry containers.</p>
<h3 id="dependency-and-license-scanning-support-for-pnpm-lockfile-v61">Dependency and License Scanning support for pnpm lockfile v6.1</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#obtaining-dependency-information-by-parsing-lockfiles">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/413903">Related issue</a></li></ul>
</div>

<p>Thanks to a community contribution from <a href="https://gitlab.com/weyert-tapico">Weyert de Boer</a>, GitLab Dependency and License Scanning now support analyzing pnpm projects using v6.1 lockfile format.</p>
<h3 id="sast-analyzer-updates">SAST analyzer updates</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/analyzers/">Documentation</a> | <a href="/user/application_security/">Related issue</a></li></ul>
</div>

<p>GitLab SAST includes <a href="/user/application_security/sast/#supported-languages-and-frameworks">many security analyzers</a> that the GitLab Static Analysis team actively maintains, updates, and supports. We published the following updates during the 16.4 release milestone:</p>
<ul>
<li>Updated the KICS-based analyzer to version 1.7.7 of the KICS scanner. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/kics/-/blob/main/CHANGELOG.md?ref_type=heads#v415">CHANGELOG</a> for further details.</li>
<li>Updated the Sobelow-based analyzer to version 0.13.0 of the Sobelow scanner. We also updated the base image for the analyzer to Elixir 1.13 to improve compatibility with more recent Elixir releases. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/sobelow/-/blob/master/CHANGELOG.md?ref_type=heads#v421">CHANGELOG</a></li>
<li>Updated the PMD Apex-based analyzer to version 6.55.0 of the PMD scanner. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/pmd-apex/-/blob/master/CHANGELOG.md?ref_type=heads#v413">CHANGELOG</a> for further details.</li>
<li>Changed the PHPCS Security Audit-based analyzer to remove the <code>Security.Misc.IncludeMismatch</code> rule. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/phpcs-security-audit/-/blob/master/CHANGELOG.md?ref_type=heads#v411">CHANGELOG</a> for further details.</li>
<li>Updated the rules used in the Semgrep-based analyzer to fix rule errors, fix broken links in rule descriptions, and resolve conflicts between Java and Scala rules that had the same rule IDs. We also increased the maximum size of custom rule files to 10 MB. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/blob/main/CHANGELOG.md?ref_type=heads#v4412">CHANGELOG</a> for further details.</li>
</ul>
<p>If you <a href="/user/application_security/sast/">include the GitLab-managed SAST template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml"><code>SAST.gitlab-ci.yml</code></a>) and run GitLab 16.0 or higher, you automatically receive these updates.
To remain on a specific version of any analyzer and prevent automatic updates, you can <a href="/user/application_security/sast/">pin its version</a>.</p>
<p>For previous changes, see <a href="https://about.gitlab.com/releases/2023/08/22/gitlab-16-3-released/#sast-analyzer-updates">last month’s updates</a>.</p>
<h3 id="improved-sast-vulnerability-tracking">Improved SAST vulnerability tracking</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#advanced-vulnerability-tracking">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/373921">Related issue</a></li></ul>
</div>

<p>GitLab SAST <a href="/user/application_security/sast/#advanced-vulnerability-tracking">Advanced Vulnerability Tracking</a> makes triage more efficient by keeping track of findings as code moves.</p>
<p>In GitLab 16.4, we’ve enabled Advanced Vulnerability Tracking for new languages and analyzers.
In addition to its <a href="/user/application_security/sast/#advanced-vulnerability-tracking">existing coverage</a>, advanced tracking is now available for:</p>
<ul>
<li>Java, in the SpotBugs-based SAST analyzer.</li>
<li>PHP, in the PHPCS Security Audit-based SAST analyzer.</li>
</ul>
<p>This builds on previous expansions and improvements <a href="https://about.gitlab.com/releases/2023/08/22/gitlab-16-3-released/#improved-sast-vulnerability-tracking">released in GitLab 16.3</a>.
We’re tracking further improvements in <a href="https://gitlab.com/groups/gitlab-org/-/epics/5144">epic 5144</a>.</p>
<p>These changes are included in <a href="https://docs.gitlab.com/#sast-analyzer-updates">updated versions</a> of GitLab SAST <a href="/user/application_security/sast/analyzers/">analyzers</a>.
Your project’s vulnerability findings are updated with new tracking signatures after the project is scanned with the updated analyzers.
You don’t have to take action to receive this update unless you’ve <a href="/user/application_security/sast/">pinned SAST analyzers to a specific version</a>.</p>
<h3 id="pipeline-specific-cyclonedx-sbom-exports">Pipeline-specific CycloneDX SBOM exports</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/dependency_list_export/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/333463">Related issue</a></li></ul>
</div>

<p>We’ve added an API that allows you to download a CycloneDX SBOM, which lists all the components detected in a CI pipeline. This includes both application-level dependencies and system-level dependencies.</p>
<h3 id="users-with-the-maintainer-role-can-view-runner-details">Users with the Maintainer role can view runner details</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/384179">Related issue</a></li></ul>
</div>

<p>Users with the Maintainer role for a group can now view details for group runners. Users with this role can view group runners to quickly determine which runners are available, or validate that automatically created runners were registered successfully to the group namespace.</p>
<h3 id="macos-13-ventura-image-for-saas-runners-on-macos">macOS 13 (Ventura) image for SaaS runners on macOS</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/macos/#supported-macos-images">Documentation</a> | <a href="https://gitlab.com/gitlab-org/ci-cd/shared-runners/infrastructure/-/issues/101">Related issue</a></li></ul>
</div>

<p>Teams can now seamlessly create, test, and deploy applications for the
Apple ecosystem on macOS 13.</p>
<p>SaaS runners on macOS allow you to increase your development teams’ velocity in building and deploying applications
that require macOS in a secure, on-demand GitLab Runner build environment integrated with GitLab CI/CD.</p>
<h3 id="gitlab-runner-164">GitLab Runner 16.4</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.4 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36627">Add queue duration histogram metric to the runner Prometheus metric endpoint</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36803">Kubernetes runner pods not cleaned up in GitLab Runner 16.3.0</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27984"><code>gitlab-runner-helper</code> terminated during cache downloading</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-4-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.4">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.4">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.4">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.3 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-3-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-3-released/</id><published>2023-08-22T00:00:00Z</published><updated>2023-08-22T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On August 22, 2023, GitLab 16.3 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-thomas-spear">This month’s Notable Contributor: Thomas Spear</h2>
<p>Thomas has contributed <a href="https://gitlab.com/gitlab-org/charts/gitlab-agent/-/merge_requests?scope=all&amp;state=merged&amp;author_username=tspearconquest">15 merge requests</a>
to the <a href="https://gitlab.com/gitlab-org/charts/gitlab-agent">GitLab agent for Kubernetes Helm chart</a>
in the last month!</p>
<p>Thomas made the chart more mature in terms of security and observability,
made it simpler to troubleshoot issues with agentk, and improved the CI/CD pipeline to check for breaking changes.</p>
<p>As a security engineer, Thomas enjoys collaborating with the team to provide
a more secure default deployment of the GitLab agent.
Thomas expressed thanks for all the timely reviews and feedback, which team members were
more than happy to provide.</p>
<p>Thank you Thomas, your contributions are hugely appreciated! 🙌</p>
<p>We would also like to take the opportunity to thank <a href="https://gitlab.com/ShaneMaglangit">Shane Maglangit</a>
and <a href="https://gitlab.com/batuhan.apaydin">Batuhan Apaydın</a> for their great contributions.</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="new-velocity-metrics-in-the-value-streams-dashboard">New velocity metrics in the Value Streams Dashboard</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/383665">Related issue</a></li></ul>
</div>

<p>The <a href="https://about.gitlab.com/blog/getting-started-with-value-streams-dashboard/">Value Streams Dashboard</a> has been enhanced with new metrics: <strong>Merge request (MR) throughput</strong> and <strong>Total closed issues</strong> (Velocity). In GitLab, <strong>MR throughput</strong> is a count of the number of merge requests merged per month, and <strong>Total closed issues</strong> is the number of flow items closed at a point in time.</p>
<p>With these metrics, you can identify low or high productivity months and the efficiency of <a href="/user/analytics/merge_request_analytics/">merge request and code review processes</a>. You can then gauge whether the <a href="/user/group/value_stream_analytics/">Value Stream delivery</a> is accelerating or not.</p>
<p>Over time, the metrics accumulate historical data from MRs and issues. Teams can use the data to determine if delivery rates are accelerating or need improvement, and provide more accurate estimates or forecasts for how much work they can deliver.</p>
<p>To help us improve the Value Streams Dashboard, please share feedback about your experience in this <a href="https://gitlab.fra1.qualtrics.com/jfe/form/SV_50guMGNU2HhLeT4">survey</a>.</p>
<h3 id="connect-to-workspaces-with-ssh">Connect to Workspaces with SSH</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/configuration/#connect-to-a-workspace-with-ssh">Documentation</a></li></ul>
</div>

<p>With Workspaces, you can create reproducible, ephemeral, cloud-based runtime environments. Since the feature was introduced in GitLab 16.0, the only way to use a workspace was through the browser-based Web IDE running directly in the environment. The Web IDE, however, might not always be the right tool for you.</p>
<p>With GitLab 16.3, you can now securely connect to a workspace from your desktop with SSH and use your local tools and extensions. The first iteration supports SSH connections directly in VS Code or from the command line with editors like Vim or Emacs. Support for other editors such as JetBrains IDEs and JupyterLab is proposed in future iterations.</p>
<h3 id="flux-sync-status-visualization">Flux sync status visualization</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/#flux-sync-status">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391581">Related issue</a></li></ul>
</div>

<p>In previous releases, you probably used <code>kubectl</code> or another third-party tool to check the status of your Flux deployments. From GitLab 16.3, you can check your deployments with the environments UI.</p>
<p>Deployments rely on Flux <code>Kustomization</code> and <code>HelmRelease</code> resources to gather the status of a given environment, which requires a namespace to be configured for the environment. By default, GitLab searches the <code>Kustomization</code> and <code>HelmRelease</code> resources for the name of the project slug. You can customize the name GitLab looks for in the environment settings.</p>
<h3 id="additional-filtering-for-scan-result-policies">Additional filtering for scan result policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/6826">Related epic</a></li></ul>
</div>

<p>Determining which results from a security or compliance scan are actionable is a significant challenge for security and compliance teams. Granular filters for scan result policies will help you cut through the noise to identify which vulnerabilities or violations require your attention the most. These new filters and filter updates will streamline your workflows:</p>
<ul>
<li>Status: Status rule changes introduce more intuitive enforcement of “new” versus “previously existing” vulnerabilities. A new status field <code>new_needs_triage</code> allows you to filter only new vulnerabilities that need to be triaged.</li>
<li>Age: Create policies to enforce approvals when a vulnerability is outside of SLA (days, months, or years) based on the detected date.</li>
<li>Fix Available: Narrow the focus of your policy to address dependencies that have a fix available.</li>
<li>False Positive: Filter out false positives that have been detected by our Vulnerability Extraction Tool, for SAST results, and via Rezilion for our Container Scanning and Dependency Scanning results.</li>
</ul>
<h3 id="security-findings-in-vs-code">Security findings in VS Code</h3>
<!-- categories: Editor Extensions, API Security, Container Scanning, DAST, Fuzz Testing, SAST, Secret Detection, Software Composition Analysis, Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/editor_extensions/visual_studio_code/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10407">Related epic</a></li></ul>
</div>

<p>You can now see security findings directly in Visual Studio Code (VS Code), just as you would in a merge request.</p>
<p>You could already monitor the status of your CI/CD pipeline, watch CI/CD job logs, and move through your development workflow in the GitLab Workflow panel.
Now, after you create a merge request for your branch, you can also see a list of new security findings that weren’t previously found on the default branch.</p>
<p>This new feature is part of <a href="https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow">GitLab Workflow</a> for VS Code.
Security scan results are pulled from an API, so this feature is available to developers using GitLab.com or self-managed instances running GitLab 16.1 or higher.</p>
<h3 id="use-the-needs-keyword-with-parallel-jobs">Use the <code>needs</code> keyword with parallel jobs</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#needsparallelmatrix">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/254821">Related issue</a></li></ul>
</div>

<p>The <code>needs</code> keyword is used to define dependency relationships between jobs. You can use the keyword to configure jobs to be dependent on specific earlier jobs instead of following stage ordering. When the dependent jobs complete, the job can start immediately, speeding up your pipeline.</p>
<p>Previously, it was impossible to use the <code>needs</code> keyword to set <a href="/ci/yaml/#parallelmatrix">parallel matrix</a> jobs as dependent, but in this release, we have enabled the ability to use <code>needs</code> with parallel matrix jobs too. You can now define a flexible dependency relationship to parallel matrix jobs, which can help speed up your pipeline even more! The earlier your jobs can start, the earlier your pipeline can finish!</p>
<h3 id="more-powerful-gitlab-saas-runners-on-linux">More powerful GitLab SaaS runners on Linux</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/linux/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/388165">Related issue</a></li></ul>
</div>

<p>Having recently upgraded all of our Linux SaaS runners, we are now introducing <code>xlarge</code> and <code>2xlarge</code><a href="/ci/runners/hosted_runners/linux/">SaaS runners on Linux</a>. Equipped with 16 and 32 vCPUs respectively and fully integrated with GitLab CI/CD, these runners will allow you to build and test your application faster than ever before.</p>
<p>We are determined to provide the industry’s fastest CI/CD build speed and look forward to seeing teams achieve even shorter feedback cycles and ultimately deliver software faster.</p>
<h3 id="azure-key-vault-secrets-manager-support">Azure Key Vault secrets manager support</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/secrets/azure_key_vault/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/271271">Related issue</a></li></ul>
</div>

<p>Secrets stored in Azure Key Vault can now easily be retrieved and used in CI/CD jobs. Our new integration simplifies the process of interacting with Azure Key Vault through GitLab CI/CD, helping you streamline your build and deploy processes!</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="include-or-exclude-archived-projects-from-project-search-results">Include or exclude archived projects from project search results</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/#include-archived-projects-in-search-results">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/413237">Related issue</a></li></ul>
</div>

<p>You can now opt to include or exclude archived projects from search results. By default, archived projects are excluded. This feature is available for project search in GitLab. Support for other <a href="/user/search/">global search scopes</a> is proposed in future releases.</p>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<ul>
<li>GitLab 16.3 includes <a href="https://mattermost.com/blog/mattermost-v8-0-is-now-available/">Mattermost 8.0</a>. This version includes
<a href="https://mattermost.com/security-updates/">security updates</a> and upgrading from earlier versions is recommended.</li>
<li>Our Amazon Linux builds are now <a href="https://aws.amazon.com/linux/amazon-linux-2023/">Amazon Linux 2023</a>. Amazon Linux 2022 was never officially
generally available and was replaced with Amazon Linux 2023, so we have adjusted our offering to the updated release.</li>
</ul>
<h3 id="audit-event-recorded-for-applications-settings-change">Audit event recorded for applications settings change</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/282428">Related issue</a></li></ul>
</div>

<p>Application setting changes at an instance, project, and group level are now recorded in the audit log, along with which user made the change. This improves auditing of application settings for both self-managed and SaaS.</p>
<h3 id="preserve-pull-request-reviewers-when-importing-from-bitbucket-server">Preserve pull request reviewers when importing from BitBucket Server</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/bitbucket/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416611">Related issue</a></li></ul>
</div>

<p>Until now, the BitBucket Server importer did not import pull request (PR) reviewers and instead categorized them as participants. Information on PR reviewers is
important from an audit and compliance perspective.</p>
<p>In GitLab 16.3, we added support for correctly importing PR reviewers from BitBucket. In GitLab, they become merge request reviewers.</p>
<h3 id="configurable-import-limits-available-in-application-settings">Configurable import limits available in application settings</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/#limits">Documentation</a></li></ul>
</div>

<p>Hardcoded limits exist for both migration by direct transfer and by importing export files.</p>
<p>In this release, we’ve made some of these limits configurable in application settings to allow self-managed GitLab administrators to adjust them according to their needs:</p>
<ul>
<li><a href="/administration/settings/account_and_limit_settings/">Maximum relation size that can be downloaded from the source instance in direct transfer</a>.
Previously hardcoded at 5 GB. On GitLab.com, we’ve set this limit to 5 GB.</li>
<li><a href="/administration/settings/account_and_limit_settings/">Maximum size of a remote import file that can be downloaded from remote Object Storages (such as AWS S3)</a>.
Previously hardcoded at 10 GB. On GitLab.com, we’ve set this limit to 10 GB.</li>
</ul>
<p>We’ve also added a new
<a href="/administration/settings/account_and_limit_settings/">maximum decompressed file size for imported archives</a>
application setting, which replaces the <code>validate_import_decompressed_archive_size</code> feature flag. This limit was hardcoded to 10 GB. On GitLab.com, we’ve set this limit to 25
GB.</p>
<p>With these new application settings, both self-managed GitLab and GitLab.com administrators can adjust these limits as needed.</p>
<h3 id="new-navigation-has-color-themes-available">New navigation has color themes available</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/preferences/">Documentation</a></li></ul>
</div>

<p>With the new navigation enabled, you can now select one of five different color themes, and choose the light or dark variety for each. Use themes to identify different environments or choose your favorite color.</p>
<h3 id="no-entity-export-timeout-for-migrations-by-direct-transfer">No entity export timeout for migrations by direct transfer</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/import/#limits">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/392725">Related issue</a></li></ul>
</div>

<p>Until now, migrating groups and projects by direct transfer had a 90 minute export timeout. This limit effectively excluded large projects from being migrated, because only projects that could be migrated in under 90 minutes were allowed.</p>
<p>The upper limit for the overall migration timeout is 4 hours, and so the 90 minutes export timeout was not necessary. In this milestone, the limit was removed, allowing larger projects to be migrated.</p>
<h3 id="support-for-azure-ad-overage-claim">Support for Azure AD overage claim</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/saml_sso/group_sync/#microsoft-azure-active-directory-integration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/414875">Related issue</a></li></ul>
</div>

<p>GitLab SAML Group Sync now supports the Azure AD (now known as Entra ID) overage claim, which allows a user to have over 150 groups associated with them. The previous maximum was 150 groups. For more information, see <a href="https://learn.microsoft.com/en-us/security/zero-trust/develop/configure-tokens-group-claims-app-roles#group-overages">Microsoft group overages</a>.</p>
<h3 id="geo-verifies-group-wikis">Geo verifies group wikis</h3>
<!-- categories: Geo Replication, Disaster Recovery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/323897">Related issue</a></li></ul>
</div>

<p>Geo is now able to detect and correct data corruption of <a href="/user/project/wiki/group/">group wikis</a> at rest and in transit. If you use Geo as part of your disaster recovery strategy, this helps to protect you against data loss in the event of a failover.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="codeowners-file-syntax-and-format-validation">CODEOWNERS file syntax and format validation</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/codeowners/reference/">Documentation</a></li></ul>
</div>

<p>You can now see in the UI if your <code>CODEOWNERS</code> file has syntax or formatting errors. Being able to specify code owners offers great flexibility, allowing multiple file locations, sections, and rules to be configured by users. With this new syntax validation, errors in your <code>CODEOWNERS</code> file will be surfaced in the GitLab UI, making it easy to spot and fix issues. The following errors will be surfaced:</p>
<ul>
<li>Entries with spaces.</li>
<li>Unparsable sections.</li>
<li>Malformed owners.</li>
<li>Inaccessible owners.</li>
<li>Zero owners.</li>
<li>Fewer than 1 required approvals.</li>
</ul>
<p>Previously, the <code>CODEOWNERS</code> file didn’t validate the information being entered into the file. This could lead to creating:</p>
<ul>
<li>Rules for files/paths that don’t exist.</li>
<li>Rules that create conflict with other existing rules.</li>
<li>Rules that don’t apply because of incorrect syntax.</li>
</ul>
<h3 id="kubernetes-127-support">Kubernetes 1.27 support</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420859">Related issue</a></li></ul>
</div>

<p>This release adds full support for Kubernetes version 1.27, released in April 2023. If you use Kubernetes, you can now upgrade your clusters to the most recent version and take advantage of all its features.</p>
<p>You can read more about <a href="/user/clusters/agent/">our Kubernetes support policy</a> and other supported Kubernetes versions.</p>
<h3 id="wrap-feature-flag-names-instead-of-truncating">Wrap feature flag names instead of truncating</h3>
<!-- categories: Feature Flags -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/operations/feature_flags/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/418147">Related issue</a></li></ul>
</div>

<p>If you used feature flags in previous versions of GitLab, you might have noticed that long feature flag names were truncated. This made it difficult to quickly differentiate similar feature flag names.</p>
<p>In GitLab 16.3, the entire feature flag name is shown. Long names wrap across multiple lines, if needed.</p>
<h3 id="names-for-audit-event-streams">Names for audit event streams</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>Previously, audit event streaming destinations were assigned by the destination URL. This could lead to confusion when you set up multiple streams for one group or
instance, because you had to expand the destination in the UI to see what filters and custom headers had been applied.</p>
<p>With GitLab 16.3, you can now name audit event streaming destinations to help identify and differentiate them when you have multiple streaming destinations defined.</p>
<h3 id="explain-this-vulnerability">Explain this vulnerability</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10368">Related epic</a></li></ul>
</div>

<p>GitLab surfaces vulnerabilities that contain relevant information, however, sometimes it is unclear where to start. It takes time to research and synthesize information that is surfaced within the vulnerability record. Moreover it can be difficult to figure out how to fix a given vulnerability. With this Beta release, you can click a button to get an explanation and recommendation on how to mitigate the vulnerability, generated by AI.</p>
<h3 id="compliance-reports-renamed-to-compliance-center">Compliance reports renamed to Compliance center</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/">Documentation</a></li></ul>
</div>

<p>To facilitate the growth of compliance-related features beyond reporting and into management, the Compliance reports section of GitLab was renamed to reflect the expanding scope
of the area.</p>
<p>From GitLab 16.3, Compliance reports are known as Compliance center.</p>
<h3 id="improve-accuracy-of-scan-result-policies">Improve accuracy of scan result policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/379108">Related epic</a></li></ul>
</div>

<p>A scan result policy is a type of security policy you use to evaluate and block merge requests if particular rules are violated. Approvers may review and approve the change, or work with their development teams to address any issues (such as addressing critical security vulnerabilities).</p>
<p>Previously, we compared vulnerabilities in the latest source and target branches to detect any new violations of policy rules. But, this might not capture vulnerabilities detected from scans running as a result of various pipeline sources. To increase accuracy, we are now comparing the latest completed pipelines for each pipeline source (with the exception of parent/child pipelines). This will ensure a more comprehensive evaluation and reduce the cases where approvals are required when it may be unexpected.</p>
<h3 id="instance-level-streaming-audit-event-filters">Instance-level streaming audit event filters</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>In GitLab 16.2, we introduced instance-level audit event streaming. However, no filters were available to apply to these streams.</p>
<p>In GitLab 16.3, you can now apply filters by audit event type to instance-level audit event streams. With the addition of these filters in the UI, you can capture a subset
of audit events to send to each streaming location, focusing only on the events that are relevant for you.</p>
<h3 id="security-bot-to-trigger-scan-execution-policies-pipelines">Security bot to trigger scan execution policies pipelines</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10756">Related epic</a></li></ul>
</div>

<p>Security bot users will be created to support managing background tasks, and to enforce security policies for all newly created or updated security policy project links. This will ease the process for security and compliance team members to configure and enforce policies, specifically removing the need for security policy project maintainers to also maintain <code>Developer</code> access in development projects. Security policy bot users will also make it much clearer for users within an enforced project when pipelines are executed on behalf of a security policy, as this bot user will be the pipeline author.</p>
<p>When a security policy project is linked to a group or subgroup, a security policy bot will be created in each project in the group or subgroup. When a link is made to a group, subgroup, or an individual project, a security bot user will be created for the given project or for any projects in the group or subgroup. Any groups, subgroups, or projects that already have a link to a security policy project will be unaffected at this time, but users may re-establish any existing links to take advantage of this feature. In GitLab 16.4, we plan to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/414376">enable security bots</a> on all projects hosted on GitLab.com that have existing security policy project links.</p>
<h3 id="sast-analyzer-updates">SAST analyzer updates</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/analyzers/">Documentation</a> | <a href="/user/application_security/">Related issue</a></li></ul>
</div>

<p>GitLab SAST includes <a href="/user/application_security/sast/#supported-languages-and-frameworks">many security analyzers</a> that the GitLab Static Analysis team actively maintains, updates, and supports. We published the following updates during the 16.3 release milestone:</p>
<ul>
<li>The Kics-based analyzer has been updated to use version 1.7.5 of the Kics engine. This update includes various bug fixes, and also adds improvements to error handling for self references in JSON and YAML. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/kics/-/blob/main/CHANGELOG.md?ref_type=heads#v414">CHANGELOG</a> for further details.</li>
<li>The Semgrep-based analyzer has been updated to add support for specifying ambiguous refs during passthrough custom configurations. We’ve also updated the SARIF parser to use Name over Title, and no longer fail scans upon SARIF <code>toolExecutionNotifications</code> of level error. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/blob/main/CHANGELOG.md?ref_type=heads#v446">CHANGELOG</a> for further details.</li>
</ul>
<p>If you <a href="/user/application_security/sast/">include the GitLab-managed SAST template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml"><code>SAST.gitlab-ci.yml</code></a>) and run GitLab 16.0 or higher, you automatically receive these updates.
To remain on a specific version of any analyzer and prevent automatic updates, you can <a href="/user/application_security/sast/">pin its version</a>.</p>
<p>For previous changes, see <a href="https://about.gitlab.com/releases/2023/07/22/gitlab-16-2-released/#sast-analyzer-updates">last month’s updates</a>.</p>
<h3 id="dependency-and-license-scanning-support-for-java-v21">Dependency and License Scanning support for Java v21</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#obtaining-dependency-information-by-parsing-lockfiles">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/387307">Related issue</a></li></ul>
</div>

<p>GitLab Dependency and License Scanning now support analyzing Java v21 Maven lock files.</p>
<h3 id="runner-tags-enable-ui-based-configuration-of-on-demand-dast-scans">Runner tags enable UI-based configuration of on-demand DAST scans</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/on-demand_scan/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/345430">Related issue</a></li></ul>
</div>

<p>You can now use tags to specify which runners you wish to use for on-demand DAST scans. Prior to 16.3, you could configure DAST scans using private runners via CI configuration files. This UI-based configuration enables efficient UI-configuration for managing DAST scans.</p>
<h3 id="improved-sast-vulnerability-tracking">Improved SAST vulnerability tracking</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#advanced-vulnerability-tracking">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/5144">Related issue</a></li></ul>
</div>

<p>GitLab SAST <a href="/user/application_security/sast/#advanced-vulnerability-tracking">Advanced Vulnerability Tracking</a> makes triage more efficient by keeping track of findings as code moves.
We’ve released two improvements in GitLab 16.3:</p>
<ol>
<li>Expanded language support: In addition to its <a href="/user/application_security/sast/#advanced-vulnerability-tracking">existing coverage</a>, we’ve enabled Advanced Vulnerability Tracking for:</li>
</ol>
<ul>
<li>C and C++, in the Flawfinder-based analyzer.</li>
<li>Java, in the MobSF-based analyzer.</li>
<li>JavaScript, in the NodeJS-Scan-based analyzer.</li>
</ul>
<ol>
<li>Better tracking: We’ve improved the tracking algorithm to handle anonymous functions in JavaScript.</li>
</ol>
<p>This builds on previous expansions and improvements <a href="https://about.gitlab.com/releases/2023/07/22/gitlab-16-2-released/#improved-sast-vulnerability-tracking">released in GitLab 16.2</a>.
We’re tracking further improvements, including expansion to more languages, better handling of more language constructs, and improved tracking for Python and Ruby, in <a href="https://gitlab.com/groups/gitlab-org/-/epics/5144">epic 5144</a>.</p>
<p>These changes are included in <a href="https://docs.gitlab.com/#sast-analyzer-updates">updated versions</a> of GitLab SAST <a href="/user/application_security/sast/analyzers/">analyzers</a>.
Your project’s vulnerability findings are updated with new tracking signatures after the project is scanned with the updated analyzers.
You don’t have to take action to receive this update unless you’ve <a href="/user/application_security/sast/">pinned SAST analyzers to a specific version</a>.</p>
<h3 id="automatic-response-to-leaked-postman-api-keys">Automatic response to leaked Postman API keys</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/automatic_response/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/403825">Related issue</a></li></ul>
</div>

<p>We’ve integrated Secret Detection with Postman to better protect customers who use Postman in their GitLab projects.</p>
<p>Secret Detection searches for <a href="https://learning.postman.com/docs/developer/postman-api/authentication/">Postman API keys</a>.
If a key is exposed in a public project on GitLab.com, GitLab sends the leaked key to Postman.
Postman verifies the key, then <a href="https://learning.postman.com/docs/administration/token-scanner/#protecting-postman-api-keys-in-gitlab">notifies the owner of the Postman API key</a>.</p>
<p>This integration is on by default for projects that have <a href="/user/application_security/secret_detection/">enabled Secret Detection</a> on GitLab.com.
Secret Detection scanning is available in all GitLab tiers, but an automatic response to leaked secrets is currently only available in Ultimate projects.</p>
<p>See <a href="https://blog.postman.com/protecting-your-postman-api-keys-in-gitlab/">the Postman blog post about this integration</a> for further details.</p>
<h3 id="expose-pipeline-name-as-a-predefined-cicd-variable">Expose pipeline name as a predefined CI/CD variable</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/variables/predefined_variables/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420002">Related issue</a></li></ul>
</div>

<p>Pipeline names defined with the <a href="/ci/yaml/#workflowname"><code>workflow:name</code></a> keyword are now accessible via the predefined variable <code>$CI_PIPELINE_NAME</code>.</p>
<h3 id="gitlab-runner-163">GitLab Runner 16.3</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.3 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29022">Configure project clone directory as safe by default</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/36048">Runner v16.2.0 not available in Debian/RHEL repository</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26993">GitLab-runner with the shell executor sometimes fails to fetch submodules</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-3-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.3">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.3">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.3">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.2 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-2-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-2-released/</id><published>2023-07-22T00:00:00Z</published><updated>2023-07-22T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On July 22, 2023, GitLab 16.2 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>Xing Xin was recognized for a recent merge request to <a href="https://gitlab.com/gitlab-org/gitaly/-/merge_requests/6008">use quarantined repo for conflict detection</a>. Karthik Nayak, a Sr. Backend Engineer at GitLab, noted: “Using quarantined repositories allows for avoiding stale objects in git repositories if an operation fails midway. Xing was able to recognize an RPC where we could introduce a quarantine repository and also responded to feedback with good pointers and was able to convince us around some questions with good knowledge about the codebase.”</p>
<p>Xing has been contributing to GitLab and the Gitaly project since 2020. A bytedancer from ByteDance, Xing also spends time in Alibaba Cloud and AntGroup, focusing on code hosting and engineer efficiency. Xing added that the “GitLab community inspired me a lot for both the best practices of managing code and the comments from all the kind reviewers. Hope to grow together with the community.”</p>
<p>Missy Davies is one of the newest members of the <a href="https://contributors.gitlab.com/docs/previous-heroes">GitLab Heroes</a> program. She was recognized for <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests?scope=all&amp;state=merged&amp;assignee_username=missy-davies">many recent contributions</a> across GitLab projects, including several merge requests for the <a href="https://handbook.gitlab.com/handbook/engineering/development/ops/verify/pipeline-execution/">Pipeline Execution</a> and <a href="https://handbook.gitlab.com/handbook/engineering/development/ops/deploy/environments/">Environments</a> groups.</p>
<p>Missy has also been an active member of the GitLab Contributor Community and regularly engages in community events, office hours, and on the Discord server. Both Lee Tickett and Marco Zille, members of the GitLab Community Core Team, highlighted Missy’s engagement with the wider community. Lee added that Missy has been “living our values”.</p>
<p>Missy shared that she has found great enjoyment in her growing involvement in the world of open source at GitLab. She values the strong sense of community, the continuous learning opportunities, and shared passion for open source principles. As a backend developer with experience working with Ruby on Rails and Python, Missy has been an impactful GitLab contributor since 2022.</p>
<p>A big thanks to all of our community contributors this past release 🙌</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="all-new-rich-text-editor-experience">All new rich text editor experience</h3>
<!-- categories: Team Planning, Portfolio Management, Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/rich_text_editor/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10378">Related epic</a></li></ul>
</div>

<p>GitLab 16.2 features an all-new rich text editing experience! This new capability is available for everyone, as an alternative to the existing Markdown editing experience.</p>
<p>For many, using the plain text editor for comments or descriptions is a barrier to collaboration. Remembering the syntax for image references or working with long tables can be tedious even for those who are relatively experienced with the syntax. The rich text editor aims to break down these barriers by providing a “what you see is what you get” editing experience and an extensible foundation on which we can build custom editing interfaces for things like diagrams, content embeds, media management, and more.</p>
<p>The rich text editor is now available in all issues, epics and merge requests. We plan to make it available in more places across GitLab soon. You can follow our progress <a href="https://gitlab.com/groups/gitlab-org/-/epics/10378">here</a>.</p>
<p>We are proud of the new editing experience and can’t wait to see what you think. Please try the new rich text editor and let us know about your experience in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/416293">this issue</a>.</p>
<h3 id="gitlab-triggers-a-flux-synchronization-without-any-configuration">GitLab triggers a Flux synchronization without any configuration</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/gitops/#immediate-git-repository-reconciliation">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/392852">Related issue</a></li></ul>
</div>

<p>By default, Flux synchronizes Kubernetes manifests at regular intervals. Triggering a reconciliation immediately when a manifest changes by default requires additional configuration. With the GitLab agent for Kubernetes, you can push a change to your manifest and trigger a Flux sync automatically.</p>
<h3 id="support-for-keyless-signing-with-cosign">Support for Keyless Signing with Cosign</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/signing_examples/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10254">Related issue</a></li></ul>
</div>

<p>Properly storing, rotating, and managing signing keys can be difficult and typically requires the overhead of managing a separate Key Management System (KMS). GitLab now supports keyless signing through a native integration with the Sigstore Cosign tool which allows for easy, convenient, and secure signing within the GitLab CI/CD pipeline. Signing is done using a very short-lived signing key. The key is generated through a token obtained from the GitLab server using the OIDC identity of the user who ran the pipeline. This token includes unique claims that certify the token was generated by a CI/CD pipeline.</p>
<p>To begin using keyless signing for your build artifacts, container images, and packages, users only need to add a few lines to their CI/CD file as <a href="/ci/yaml/signing_examples/">shown in our documentation</a>.</p>
<h3 id="command-palette">Command palette</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/command_palette/">Documentation</a></li></ul>
</div>

<p>If you’re a power user, using the keyboard to navigate and take action can be frustrating. Now, a new command palette helps you use the keyboard to get more done.</p>
<p>To enable the command palette, open the left sidebar and click <strong>Search GitLab</strong> (🔍) or use the / key.</p>
<p>Type one of the special characters:</p>
<ul>
<li>

<blockquote><ul>
<li>Create a new object or find a menu item</li>
</ul></blockquote></li>
<li>@ - Search for a user</li>
<li>: - Search for a project</li>
<li>/ - Search for project files in the default repository branch</li>
</ul>
<h3 id="gitlab-duo-code-suggestions-improvements-powered-by-google-ai">GitLab Duo Code Suggestions improvements powered by Google AI</h3>
<!-- categories: Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold, Silver, Free</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9814">Related issue</a></li></ul>
</div>

<p>Code Suggestions now use Google Cloud’s customizable foundation models and open generative AI infrastructure, with generative AI support in Vertex AI.</p>
<p>GitLab Code Suggestions are routed through Google Vertex AI Codey API’s <a href="https://cloud.google.com/vertex-ai/docs/generative-ai/data-governance">Data Governance</a> and <a href="https://cloud.google.com/vertex-ai/docs/generative-ai/learn/responsible-ai">Responsible AI</a>. As of July 22, Code Suggestions inferences against the currently opened file and has a context window of 2,048 tokens and 8,192 character limits. This limit includes content before and after the cursor, the file name, and the extension type. Learn more about Google Vertex AI <a href="https://cloud.google.com/vertex-ai/docs/generative-ai/learn/models"><code>code-gecko</code></a>.</p>
<p><a href="https://cloud.google.com/vertex-ai/docs/generative-ai/code/code-models-overview#supported_coding_languages">The Google Vertex AI Codey APIs</a> directly support: C++, C#, Go, Google SQL, Java, JavaScript, Kotlin, PHP, Python, Ruby, Rust, Scala, Swift, TypeScript. And for infrastructure files, support: Google Cloud CLI, Kubernetes Resource Model (KRM), and Terraform.</p>
<p>We are continuously iterating to improve Code Suggestions. Give it a try and <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/405152">share your feedback with us</a>.</p>
<h3 id="track-your-machine-learning-model-experiments">Track your machine learning model experiments</h3>
<!-- categories: MLOps -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/ml/experiment_tracking/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125758">Related issue</a></li></ul>
</div>

<p>When data scientists create machine learning (ML) models, they often experiment with different parameters, configurations, and feature engineering, so they can improve the performance of the model. The data scientists need to keep track of all of this metadata and the associated artifacts, so they can later replicate the experiment. This work is not trivial, and existing solutions require complex setup.</p>
<p>With machine learning model experiments, data scientists can log parameters, metrics, and artifacts directly into GitLab, giving easy access to their most performant models. This feature is an experiment.</p>
<h3 id="new-customization-layer-for-the-value-streams-dashboard">New customization layer for the Value Streams Dashboard</h3>
<!-- categories: Value Stream Management, DORA Metrics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/388890">Related issue</a></li></ul>
</div>

<p>We added a new configuration file to the <a href="https://youtu.be/EA9Sbks27g4">Value Streams Dashboard</a> for easier customization of the dashboard’s data and appearance. In this file you can define various settings and parameters, such as title, description, and number of panels and filters. The file is schema-driven and managed with version control systems like Git. This enables tracking and maintaining a history of configuration changes, reverting to previous versions if necessary, and collaborating effectively with team members.</p>
<p>The new configuration also includes the option to filter the metrics by labels. You can adjust the <a href="https://about.gitlab.com/blog/getting-started-with-value-streams-dashboard/">metrics comparison panel</a> based on your areas of interest, filter out irrelevant information, and focus on the data that is most relevant to your analysis or decision-making process.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="group-level-wiki-now-available-in-advanced-search">Group-level wiki now available in Advanced Search</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/advanced_search/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/336100">Related issue</a></li></ul>
</div>

<p>With this release, we’ve extended Advanced Search to include <a href="/user/project/wiki/group/">group-level wikis</a>. Users will now be able to find content in these wikis more easily and quickly than before.</p>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<ul>
<li>Our version of Redis is updated to the latest stable version, <a href="https://raw.githubusercontent.com/redis/redis/7.0/00-RELEASENOTES"><code>7.0.12</code></a>.</li>
<li>For fresh installations of GitLab, you can now opt-in to using <a href="https://www.postgresql.org/docs/14/release-14.html#id-1.11.6.12.4">PostgreSQL 14</a>.</li>
</ul>
<h3 id="view-deployments-from-jira-issues-mentioned-in-gitlab-commits">View deployments from Jira issues mentioned in GitLab commits</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/jira/development_panel/#information-displayed-in-the-development-panel">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/300031">Related issue</a></li></ul>
</div>

<p>Previously, GitLab deployments were linked from the Jira development panel only when a Jira issue
was mentioned in either the branch or merge request associated with the deployment.
This was often inconvenient for users because it required them to deploy
from merge requests, which is not the typical workflow.</p>
<p>With this release, GitLab deployments also scan for Jira issue mentions in the messages of the
last 5,000 commits made to the branch after the last successful deployment. The GitLab deployment is associated with all of the mentioned Jira issues.</p>
<h3 id="automatic-deletion-of-unconfirmed-users">Automatic deletion of unconfirmed users</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/moderate_users/#automatically-delete-unconfirmed-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/352514">Related issue</a></li></ul>
</div>

<p>When invitations are sent to an incorrect email address, they can never be confirmed. Previously, administrators had to manually delete these accounts. Now, administrators can turn on automatic deletion of unconfirmed users after a specified number of days. Similarly, on GitLab.com, unconfirmed accounts will be deleted automatically after <a href="/user/gitlab_com/">the specified number of days</a>.</p>
<h3 id="improved-security-for-feed-tokens">Improved security for feed tokens</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/tokens/#feed-token">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/414257">Related issue</a></li></ul>
</div>

<p>Feed tokens have been made more secure by only working for the URL they were generated for. This narrows the scope of feeds that can be read if the token was leaked.</p>
<h3 id="gitlab-for-slack-app-available-on-self-managed-gitlab">GitLab for Slack app available on self-managed GitLab</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/slack_app/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/358872">Related issue</a></li></ul>
</div>

<p>With this release, the GitLab for Slack app is available on self-managed instances. On self-managed GitLab, you can create
a copy of the GitLab for Slack app from a <a href="https://api.slack.com/reference/manifests#creating_apps">manifest file</a> and
install that copy in your Slack workspace. Each copy is private and not publicly distributable.</p>
<p>To create and configure the app, see <a href="/administration/settings/slack_app/">GitLab for Slack app administration</a>.</p>
<h3 id="speed-up-imports-from-github-using-multiple-access-tokens">Speed up imports from GitHub using multiple access tokens</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/import/#import-repository-from-github">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/337232">Related issue</a></li></ul>
</div>

<p>By default, the GitHub importer uses a single access token when importing projects from GitHub to GitLab. An access token for a user account is typically rate limited to
5000 requests per hour. This can significantly reduce the speed of the importer when:</p>
<ul>
<li>Importing multiple small to medium sized projects.</li>
<li>Importing a single massive project with a lot of data.</li>
</ul>
<p>With this release, you can pass a list of access tokens to the GitHub importer API so that the API can rotate through them when rate limited.
When using multiple access tokens:</p>
<ul>
<li>The tokens cannot be from the same account because they would all share one rate limit.</li>
<li>Tokens must have the same permissions and sufficient privileges to the repositories to import.</li>
</ul>
<h3 id="sync-auditor-role-with-oidc-provider">Sync auditor role with OIDC provider</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/auth/oidc/#auditor-groups">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/389321">Related issue</a></li></ul>
</div>

<p>You can now sync OIDC groups to the <code>auditor</code> role in GitLab. This allows automated user lifecycle management facilitated by OIDC to use the <code>auditor</code> role, which was previously unsupported in the role mapping.</p>
<p>Thank you <a href="https://gitlab.com/mareo">Marin Hannache</a> for your contribution!</p>
<h3 id="improved-sign-in-and-sign-up-pages">Improved sign-in and sign-up pages</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/sign_up_restrictions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/385651">Related issue</a></li></ul>
</div>

<p>The GitLab sign-in and sign-up pages have been improved:</p>
<ul>
<li>Two column layout when custom text is present.</li>
<li>Fixed issue with <code>Remember me</code> checkbox with multiple LDAPs.</li>
<li>Improved dark mode experience.</li>
<li>Larger single sign-on buttons.</li>
<li>Moved footer to bottom of page to avoid hiding page elements.</li>
<li>Language switcher added to the SAML sign-on page.</li>
<li>Password checks enabled in the registration trial page.</li>
</ul>
<h3 id="backup-adds-the-ability-to-skip-projects">Backup adds the ability to skip projects</h3>
<!-- categories: Backup/Restore of GitLab instances -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/18287">Related issue</a></li></ul>
</div>

<p>The built-in backup and restore tool adds the ability to skip specific repositories. The Rake task now accepts a list of comma-separated group or project paths to be skipped during the backup or restore by using the new <code>SKIP_REPOSITORIES_PATHS</code> environment variable. This will allow you to skip, for example, stale or archived projects which do not change over time, saving you a) time by speeding up the backup run, and b) space by not including this data in the backup file.
Thanks to <a href="https://gitlab.com/nE0sIghT">Yuri Konotopov</a> for this <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/merge_requests/196">community contribution</a>!</p>
<h3 id="geo-add-individual-resync-and-reverification-for-all-components">Geo add individual resync and reverification for all components</h3>
<!-- categories: Geo Replication, Disaster Recovery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/364727">Related issue</a></li></ul>
</div>

<p>Geo adds the ability to resync and reverify individual items for all component types managed by the <a href="/development/geo/framework/">self-service framework</a>. Now you can force a resync or reverification operation on any individual item managed by Geo by using the UI. This can help expedite a resync or reverification operation for failed items, or after changes have been applied to fix sync or verification errors.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="improve-git-lfs-download-performance">Improve Git LFS download performance</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/topics/git/lfs/">Documentation</a></li></ul>
</div>

<p>For instances which store LFS objects in object storage without <a href="/administration/object_storage/#proxy-download">proxy download enabled</a>, GitLab now processes LFS requests in bulk. This dramatically improves the performance of downloading a large number of LFS objects.</p>
<p>Previously, due to how LFS objects were fetched, GitLab created many very small requests which checked user permissions and redirected to the object stored externally. This had the potential to cause significant load and a reduction in performance. With this fix, we have reduced load on the primary GitLab instance and provided a faster download experience for our users.</p>
<h3 id="install-the-agent-for-kubernetes-using-extra-volumes-in-the-helm-chart">Install the agent for Kubernetes using extra volumes in the Helm chart</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/clusters/agent/install/#customize-the-helm-installation">Documentation</a> | <a href="https://gitlab.com/gitlab-org/charts/gitlab-agent/-/issues/33">Related issue</a></li></ul>
</div>

<p>The <code>agentk</code> component of the agent for Kubernetes requires a token to authenticate with GitLab. Previously, you could provide the token as-is, or as a reference to the Kubernetes secret that contains the token. However, you might operate in an environment where the secret is already available in a volume, and prefer to mount that volume instead of creating a separate secret. From GitLab 16.2, the GitLab agent Helm chart ships with this added feature thanks to a community contribution from <a href="https://gitlab.com/tspearconquest">Thomas Spear</a>.</p>
<h3 id="support-for-custom-ci-variables-in-the-scan-execution-policies-editor">Support for custom CI variables in the Scan Execution Policies editor</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9566">Related epic</a></li></ul>
</div>

<p>You can now define custom CI variables, including their values, in the Scan Execution Policies editor. CI variables defined in a policy override the matching variables defined in the projects enforced by the policy. For example, a policy may define a CI Variable <code>SAST_EXCLUDED_ANALYZERS</code> to <code>brakeman</code>. When the scanner is enforced in a project, the scanner will run with the variable set to <code>brakeman</code> regardless of any variables defined in the project’s CI configuration. For each scan type, you can define values for default variables, also create custom key-value pairs for custom CI variables. This makes customizing a scan execution policy quicker and easier.</p>
<h3 id="allow-scan-execution-policies-to-enable-cicd-pipelines-in-development-projects">Allow scan execution policies to enable CI/CD pipelines in development projects</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/scan_execution_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/6880">Related epic</a></li></ul>
</div>

<p>In previous GitLab versions, security policies were not enforced on projects without a <code>.gitlab-ci.yml</code> file, or where AutoDevOps was disabled. In GitLab 16.2, security policies implicity enable CI/CD pipelines on projects that do not contain a <code>.gitlab-ci.yml</code> file. This is another step in ensuring compliance of security policies and allow you to enforce secret detection, static analysis, or any other jobs where builds are not required.</p>
<h3 id="target-default-or-protected-branches-in-security-policies">Target &ldquo;Default&rdquo; or &ldquo;Protected&rdquo; branches in security policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/#scan_finding-rule-type">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9468">Related epic</a></li></ul>
</div>

<p>Scan execution and scan result policies will allow you to scope enforcement to branches that are “Default” branches or “Protected branches” across the many projects a policy is enforcing. Rather than requiring policies to specify branch names explicitly, policies can be enforced more broadly and ensure branches with atypical names are not excluded from compliance.</p>
<p>Branch rules can be configured across our various security policy rule types by using the <code>branch_type</code> field:</p>
<ul>
<li><a href="/user/application_security/policies/merge_request_approval_policies/#scan_finding-rule-type">Scan_finding rule types for scan result policies</a></li>
<li><a href="/user/application_security/policies/merge_request_approval_policies/#license_finding-rule-type">License_finding rule types for scan result policies</a></li>
<li><a href="/user/application_security/policies/scan_execution_policies/#pipeline-rule-type">Pipeline rule types for scan execution policies</a></li>
<li><a href="/user/application_security/policies/scan_execution_policies/#schedule-rule-type">Schedule rule types for scan execution policies</a></li>
</ul>
<h3 id="audit-event-streaming-to-google-cloud-logging">Audit event streaming to Google Cloud Logging</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>You can now select Google Cloud Logging as a destination for audit event streams.</p>
<p>Previously, you had to use the headers to try to build a request that Google Cloud Logging would accept. This method was prone to errors and
could be difficult to troubleshoot.</p>
<p>Now, you can select Google Cloud Logging as the destination for the stream and provide your project ID, client email, log ID, and private
key to allow for a more seamless integration.</p>
<h3 id="compliance-frameworks-report-export">Compliance frameworks report export</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_projects_report/#export-a-report-of-compliance-frameworks-on-projects-in-a-group">Documentation</a></li></ul>
</div>

<p>You can now export a report of compliance frameworks and their associated projects to a CSV file.</p>
<p>With the addition of the compliance frameworks report at the group level, you were able to see and
manage which projects your compliance frameworks applied to.</p>
<p>With the new export, you can keep a copy of that file for reference. You might keep the file as a
single source of truth for the ideal state of your project and compliance framework relationships. Or you
might send the file people in your organization who may not work in GitLab, but have an interest in seeing
which projects are tagged with which frameworks.</p>
<h3 id="groupsub-group-level-dependency-list">Group/Sub-Group Level Dependency List</h3>
<!-- categories: Dependency Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_list/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8090">Related epic</a></li></ul>
</div>

<p>When reviewing a list of dependencies, it is important to have an overall view.
Managing dependencies at the project level is problematic for large organizations that want to audit their dependencies across all their projects.
With this release, you can see all dependencies at the project or group level, including subgroups. This feature is off by default behind feature flag <code>group_level_dependencies</code>.</p>
<h3 id="allow-initial-push-to-protected-branches">Allow initial push to protected branches</h3>
<!-- categories: Compliance Management, Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/branches/default/#protect-initial-default-branches">Documentation</a></li></ul>
</div>

<p>In previous versions of GitLab, when a default branch was fully protected, only project maintainers and owners could push an initial commit to a default branch.</p>
<p>This caused problems for developers who created a new project, but couldn’t push an initial commit to it because only the default branch existed.</p>
<p>With the <strong>Fully protected after initial push</strong> setting, developers can push the initial commit to the default branch of a repository, but cannot push
any commits to the default branch afterward. Similar to when a branch is fully protected, project maintainers can always push to the default branch but no one
can force push.</p>
<h3 id="instance-level-streaming-audit-events">Instance-level streaming audit events</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>Before GitLab 16.1, only audit events from top-level groups could be streamed to an external destination.</p>
<p>Now, instance administrators can add a streaming destination for audit events produced at the instance level.</p>
<h3 id="streaming-audit-event-filtering-ui">Streaming audit event filtering UI</h3>
<!-- categories: Audit Events -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/compliance/audit_event_reports/">Documentation</a></li></ul>
</div>

<p>In previous version of GitLab, you had to use the GraphQL API to add audit event type filters to your audit event streams.</p>
<p>Now, you can use the filter dropdown in the GitLab UI to see all the available audit event types, grouped by the
area of GitLab to which they are relevant, and search for the exact types you want to send in a stream.</p>
<p>This significantly reduces the time needed to add filtering to audit event streams because you no longer have to pull the entire list using the API and
search through the list manually.</p>
<h3 id="interactive-diff-suggestions-in-merge-requests">Interactive diff suggestions in merge requests</h3>
<!-- categories: Team Planning, Portfolio Management, Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/reviews/suggestions/#using-the-rich-text-editor">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/406726">Related issue</a></li></ul>
</div>

<p>When you suggest changes in a merge request, you can now edit your suggestions more quickly. In a comment, switch to the rich text editor and use the UI to move up and down the lines of text. With this change, you can view your suggestions exactly as they will appear when the comment is posted.</p>
<p>The rich text editor is a new way of editing in GitLab. It’s available in merge requests, but also available alongside the plain text editor in issues and epics.</p>
<p>We plan to have the rich text editor available in more areas of GitLab soon and we are actively working on that. You can follow our progress <a href="https://gitlab.com/groups/gitlab-org/-/epics/10378">here</a>.</p>
<h3 id="import-pypi-packages-with-cicd-pipelines">Import PyPI packages with CI/CD pipelines</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/#to-import-packages">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/389339">Related issue</a></li></ul>
</div>

<p>Have you been thinking about moving your PyPI repository to GitLab, but haven’t been able to invest the time to migrate? In this release, GitLab is launching the first version of a PyPI package importer.</p>
<p>You can now use the Packages Importer tool to import packages from any PyPI-compliant registry, like Artifactory.</p>
<h3 id="add-emoji-reactions-to-comments-on-uploaded-designs">Add emoji reactions to comments on uploaded designs</h3>
<!-- categories: Design Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/emoji_reactions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/29756">Related issue</a></li></ul>
</div>

<p>You can now express your thoughts more creatively by adding emoji
reactions to comments in <a href="/user/project/issues/design_management/">Design Management</a>.
This feature adds a touch of fun and ease to collaboration, fostering better
communication and enabling teams to provide quick feedback in a more expressive
way.</p>
<h3 id="sast-analyzer-updates">SAST analyzer updates</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/analyzers/">Documentation</a> | <a href="/user/application_security/">Related issue</a></li></ul>
</div>

<p>GitLab SAST includes <a href="/user/application_security/sast/#supported-languages-and-frameworks">many security analyzers</a> that the GitLab Static Analysis team actively maintains, updates, and supports.</p>
<p>During the 16.2 release milestone, our changes focused on the Semgrep-based analyzer and the GitLab-maintained rules it uses for scanning. We released the following changes:</p>
<ul>
<li>Clarified the explanation and guidance for JavaScript rules, building on <a href="https://about.gitlab.com/releases/2023/06/22/gitlab-16-1-released/#clearer-guidance-and-better-coverage-for-sast-rules">improvements for other languages released in GitLab 16.1</a></li>
<li>Updated rules to find additional vulnerabilities in Java and JavaScript.</li>
<li>Changed the default configuration for which files are ignored in scans by:
<ul>
<li>Removing <code>.gitignore</code> exclusion. Thanks to <a href="https://gitlab.com/SimonGurney"><code>@SimonGurney</code></a> for this community contribution.</li>
<li>Respecting locally-defined <code>.semgrepignore</code> files. Thanks to <a href="https://gitlab.com/hmrc.colinameigh"><code>@hmrc.colinameigh</code></a> for this community contribution.</li>
</ul>
</li>
<li>Improved a rule related to Go memory aliasing. Thanks to <a href="https://gitlab.com/tyage"><code>@tyage</code></a> for this community contribution.</li>
<li>Removed a <code>-1</code> suffix added to the Semgrep rule IDs for JavaScript rules. This was added in GitLab 16.0 as a side-effect of an unrelated change, but interfered with customers’ existing <code>semgrepignore</code> comments.</li>
</ul>
<p>See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/blob/main/CHANGELOG.md#v440"><code>semgrep</code> CHANGELOG</a> and <a href="https://gitlab.com/gitlab-org/security-products/sast-rules/-/blame/main/CHANGELOG.md"><code>sast-rules</code> CHANGELOG</a> for further details.
We’re tracking further improvements to GitLab-managed rulesets in <a href="https://gitlab.com/groups/gitlab-org/-/epics/10907">epic 10907</a>.</p>
<p>If you <a href="/user/application_security/sast/">include the GitLab-managed SAST template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml"><code>SAST.gitlab-ci.yml</code></a>) and run GitLab 16.0 or higher, you automatically receive these updates.
To remain on a specific version of any analyzer and prevent automatic updates, you can <a href="/user/application_security/sast/">pin its version</a>.</p>
<p>For previous changes, see <a href="https://about.gitlab.com/releases/2023/06/22/gitlab-16-1-released/#sast-analyzer-updates">last month’s updates</a>.</p>
<h3 id="secret-detection-updates">Secret Detection updates</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/">Documentation</a> | <a href="/user/application_security/">Related issue</a></li></ul>
</div>

<p>We regularly release updates to the GitLab Secret Detection analyzer. During the GitLab 16.2 milestone, we:</p>
<ul>
<li>Added <a href="/user/application_security/secret_detection/">GitLab-managed detection rules</a> for:
<ul>
<li>OpenAI API keys.</li>
<li>CircleCI Personal and Project access tokens. Thanks to <a href="https://gitlab.com/nathanwfish"><code>@nathanwfish</code></a> for this community contribution.</li>
</ul>
</li>
<li>Improved performance of rules that use the <code>keywords</code> optimization.</li>
<li>Fixed <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/358073">an issue</a> where Secret Detection results created permalinks to the wrong location in the repository.</li>
</ul>
<p>See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/blob/master/CHANGELOG.md#v514">CHANGELOG</a> for further details.</p>
<p>If you <a href="/user/application_security/secret_detection/">use the GitLab-managed Secret Detection template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml"><code>Secret-Detection.gitlab-ci.yml</code></a>) and run GitLab 16.0 or higher, you automatically receive these updates.
To remain on a specific version of any analyzer and prevent automatic updates, you can <a href="/user/application_security/secret_detection/">pin its version</a>.</p>
<p>For previous changes, see <a href="https://about.gitlab.com/releases/2023/05/22/gitlab-16-0-released/#secret-detection-updates">the most recent Secret Detection update</a>.</p>
<h3 id="support-for-nuget-v2-in-dependency-and-license-scanning">Support for NuGet v2 in Dependency and License Scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/legacy_dependency_scanning/#obtaining-dependency-information-by-parsing-lockfiles">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/398680">Related issue</a></li></ul>
</div>

<p>In addition to NuGet <code>v1</code> lock files, GitLab Dependency and License Scanning both now support analyzing dependencies defined in NuGet <code>v2</code> lock files.</p>
<h3 id="improved-sast-vulnerability-tracking">Improved SAST vulnerability tracking</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#advanced-vulnerability-tracking">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/5144">Related issue</a></li></ul>
</div>

<p>GitLab SAST <a href="/user/application_security/sast/#advanced-vulnerability-tracking">Advanced Vulnerability Tracking</a> makes triage more efficient by keeping track of findings as code moves.
We’ve released two improvements in GitLab 16.2:</p>
<ol>
<li>Expanded language support: Advanced Vulnerability Tracking is now enabled for C#.</li>
<li>Better tracking: We’ve improved the tracking algorithm to handle whitespace and comments better in C, C#, Go, Java, JavaScript, and Python. We’ve also fixed issues with tracking certain Go functions.</li>
</ol>
<p>We’re tracking further improvements, including expansion to more languages, better handling of more language constructs, and improved tracking for Python and Ruby, in <a href="https://gitlab.com/groups/gitlab-org/-/epics/5144">epic 5144</a>.</p>
<p>These changes are included in <a href="https://docs.gitlab.com/#sast-analyzer-updates">updated versions</a> of GitLab SAST <a href="/user/application_security/sast/analyzers/">analyzers</a>.
Your project’s vulnerability findings are updated with new tracking signatures after the project is scanned with the updated analyzers.
You don’t have to take action to receive this update unless you’ve <a href="/user/application_security/sast/">pinned SAST analyzers to a specific version</a>.</p>
<h3 id="cicd-support-for-when-never-on-conditional-includes">CI/CD: Support for <code>when: never</code> on conditional includes</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/includes/#include-with-rulesif">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/348146">Related issue</a></li></ul>
</div>

<p><a href="/ci/yaml/#include"><code>include</code></a> is one of the most popular keywords to use when writing a full CI/CD pipeline. If you are building larger pipelines, you are probably using the <code>include</code> keyword to bring external YAML configuration into your pipeline.</p>
<p>In this release, we are expanding the power of the keyword so you can use <code>when: never</code> when using <a href="/ci/yaml/includes/#use-rules-with-include"><code>rules</code> with <code>include</code></a>. Now, you can decide when external CI/CD configuration will be excluded when a specific rule is satisfied. This will help you write a standardized pipeline with better ability to dynamically modify itself based on the conditions you choose.</p>
<h3 id="medium-saas-runners-on-linux-available-to-all-tiers">Medium SaaS runners on Linux available to all tiers</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/linux/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/418124">Related issue</a></li></ul>
</div>

<p>We have now made our medium <a href="/ci/runners/hosted_runners/linux/">GitLab SaaS runner on Linux</a> with 4 vCPUs and 16 GB RAM available to all tiers.</p>
<p>Previously users on the Free tier were only able to use our small Linux runner, sometimes causing longer CI/CD execution times.
We are excited to see our Free users accelerate their pipeline speeds.</p>
<h3 id="gitlab-runner-162">GitLab Runner 16.2</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.2 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/4143">Retry all k8s API calls in the runner Kubernetes executor</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2880">CI job scripts do not complete when dockerd or any process runs in the background</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/33918">GitLab-runner-helper servercore image missing for v16.1.0</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3802">Error:could not create cache adapter</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-2-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.2">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.2">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.2">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.1 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-1-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-1-released/</id><published>2023-06-22T00:00:00Z</published><updated>2023-06-22T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On June 22, 2023, GitLab 16.1 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor">This month’s Notable Contributor</h2>
<p>Gerardo has been consistently iterating over multiple releases to deliver
the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/351740">REST API endpoints for job token scope</a>.
Iteration is one of our <a href="https://handbook.gitlab.com/handbook/values/#iteration">core values</a>
at GitLab, and Gerardo has exemplified that with his multiple contributions to deliver the feature.</p>
<p>Due to the change in <a href="/update/deprecations/">default <code>CI_JOB_TOKEN</code> behavior</a>,
users who automate creation of projects cannot also automate adding the projects allowed to use
a <code>CI_JOB_TOKEN</code> with the project. This REST API endpoint enables our customers to automate this
process again and drive increased adoption of a more secure <code>CI_JOB_TOKEN</code> workflow.</p>
<p>Thanks to Gerardo and the rest of the crew from Siemens!</p>
<p>Yuri picked up an <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/18287">issue</a> that
was logged 6 years ago, took a <a href="https://handbook.gitlab.com/handbook/values/#bias-for-action">bias for action</a>
(one of our GitLab values) and contributed a fix.</p>
<p>This was a popular feature that a number of customers were interested in. This enhancement
allows the system admin to skip specific projects during backup and restore, based on a comma-separated list of group
or project paths. With this feature, system admins can skip over stale
or archived projects during their backup run, save storage space and speed up the backup.
They can also exclude specific projects when restoring from backup using the same option.</p>
<p>Thanks to Yuri for his valuable contribution!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="all-new-navigation-experience">All new navigation experience</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/tutorials/left_sidebar/">Documentation</a></li></ul>
</div>

<p>GitLab 16.1 features an all-new navigation experience! We’ve defaulted this experience to on for all users. To get started, go to your avatar in the top right of the UI and turn on the <strong>New navigation</strong> toggle.</p>
<p>The new navigation was designed to solve three key areas of feedback: navigating GitLab can be overwhelming, it can be hard to pick up where you left off, and you can’t customize the navigation.</p>
<p>The new navigation includes a streamlined and improved left sidebar, where you can:</p>
<ul>
<li>Pin 📌 frequently accessed items.</li>
<li>Completely hide the sidebar and “peek” it back into view.</li>
<li>Easily switch contexts, search, and view subsets of data with the new <strong>Your Work</strong> and <strong>Explore</strong> options.</li>
<li>Scan more quickly because of fewer top-level menu items.</li>
</ul>
<p>We are proud of the new navigation and can’t wait to see what you think. Review a <a href="https://gitlab.com/groups/gitlab-org/-/epics/9044#whats-different">list of what’s changed</a> and read our blog posts about the navigation <a href="https://about.gitlab.com/blog/gitlab-product-navigation/">vision</a> and <a href="https://about.gitlab.com/blog/overhauling-the-navigation-is-like-building-a-dream-home/">design</a>.</p>
<p>Please try the new navigation and let us know about your experience in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/409005">this issue</a>. We are already <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/409005#actions-we-are-taking-from-the-feedback">addressing</a> the feedback and will eventually remove the toggle.</p>
<h3 id="visualize-kubernetes-resources-in-gitlab">Visualize Kubernetes resources in GitLab</h3>
<!-- categories: Deployment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/environments/kubernetes_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/390769">Related issue</a></li></ul>
</div>

<p>How do you check the status of the applications running in your clusters? The pipeline status and environment pages provide insights about the latest deployment runs. However, previous versions of GitLab lacked insights about the state of your deployments. In GitLab 16.1, you can see an overview of the primary resources in your Kubernetes deployments.</p>
<p>This feature works with every connected Kubernetes cluster. It doesn’t matter if you deploy your workloads with the CI/CD integration or GitOps. To further improve the feature for Flux users, support for showing the synchronization status of an environment is proposed in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/391581">issue 391581</a>.</p>
<h3 id="authenticate-with-service-accounts">Authenticate with service accounts</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/groups/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/6777">Related issue</a></li></ul>
</div>

<p>There are many use cases for which a non-human user might need to authenticate. Previously, depending on the desired scope, users could use personal, project, or group access tokens to meet this need. These tokens were not ideal, due to still being either tied to a human (for personal access tokens), or an unnecessarily privileged role (for group and project access tokens).</p>
<p>Service accounts are not tied to a human user, and are more granular in scope. Service account creation and management is API-only. Support for a UI option is proposed in <a href="https://gitlab.com/groups/gitlab-org/-/epics/9965">issue 9965</a>.</p>
<h3 id="gitlab-dedicated-is-now-generally-available">GitLab Dedicated is now generally available</h3>
<!-- categories: GitLab Dedicated -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_dedicated/">Documentation</a> | <a href="https://about.gitlab.com/dedicated/">Related issue</a></li></ul>
</div>

<p>GitLab Dedicated is a fully managed, single-tenant SaaS deployment of our comprehensive DevSecOps platform designed to address the needs of customers with stringent compliance requirements.</p>
<p>Customers in highly-regulated industries are unable to adopt multi-tenant SaaS offerings due to strict compliance requirements like data isolation. With GitLab Dedicated, organizations can access all of the benefits of the DevSecOps platform – including faster releases, better security, and more productive developers – while satisfying compliance requirements such as data residency, isolation, and private networking.</p>
<p><a href="https://about.gitlab.com/dedicated/">Learn more</a> about GitLab Dedicated today.</p>
<h3 id="manage-job-artifacts-through-the-artifacts-page">Manage job artifacts through the Artifacts page</h3>
<!-- categories: Job Artifacts -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/job_artifacts/#view-all-job-artifacts-in-a-project">Documentation</a></li></ul>
</div>

<p>Previously, if you wanted to view or manage job artifacts, you had to go to each job’s detail page, or use the API. Now, you can view and manage job artifacts through the <strong>Artifacts</strong> page accessed at <strong>Build &gt; Artifacts</strong>.</p>
<p>Users with at least the Maintainer role can use this new interface to delete artifacts too. You can delete individual artifacts, or bulk delete up to 100 artifacts at a time through either manual selection or checking the <strong>Select all</strong> option at the top of the page.</p>
<p>Please use the survey at the top of the Artifacts page to share any feedback you have about this new functionality. To view additional UI features under consideration, you can check out the <a href="https://gitlab.com/groups/gitlab-org/-/epics/8311">Build Artifacts page enhancements epic</a>.</p>
<h3 id="improved-cicd-variables-list-view">Improved CI/CD variables list view</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/variables/#define-a-cicd-variable-in-the-ui">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/410383">Related issue</a></li></ul>
</div>

<p>CI/CD variables are a key part of all pipelines and can be defined in multiple places, including in the project and group settings. To prepare for making bigger improvements that will help users intuitively navigate between variables at different hierarchy, we are starting out with improving the usability and layout of the variable list.</p>
<p>In GitLab 16.1, you will see the first iteration of these improvements. We have merged the “Type” and “Options” columns into a new <strong>Attributes</strong> column, which better represents these related attributes. We appreciate your feedback on how we can continue to improve the CI/CD variable experience, you are welcome to comment in our <a href="https://gitlab.com/groups/gitlab-org/-/epics/10506">variables improvement epic</a>.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="gitlab-chart-improvements">GitLab chart improvements</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/">Documentation</a></li></ul>
</div>

<ul>
<li>GitLab 16.1 replaces <code>busybox</code> Docker image with <code>gitlab-base</code> Docker image to share layers with other GitLab
Docker images. This implementation treats <code>gitlab-base</code> as a helper image (like <code>kubectl</code> and <code>certificates</code>),
with optional local overrides.</li>
</ul>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<ul>
<li>GitLab 16.1 adds support for building and releasing packages on
<a href="https://www.debian.org/releases/bookworm/">Debian 12 <code>Bookworm</code></a> that released on June 10, 2023.</li>
</ul>
<h3 id="improved-domain-verification">Improved domain verification</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/enterprise_user/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/375492">Related issue</a></li></ul>
</div>

<p>Domain verification serves multiple purposes across GitLab. Previously, in order to verify a domain, you had to complete the <a href="/user/project/pages/">GitLab Pages</a> wizard, even if you were verifying a domain for a purpose outside of GitLab Pages.</p>
<p>Now, domain verification lives at the group level, and has been streamlined. This makes it easier to verify your domains.</p>
<h3 id="view-vulnerability-report-as-customizable-permission">View Vulnerability Report as Customizable Permission</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/permissions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10160">Related issue</a></li></ul>
</div>

<p>The ability to view the vulnerability report is now split into a separate permission, enabling GitLab administrators and group owners to create a custom role with this permission. Previously, viewing the vulnerability report was limited to the Developer role and above. Now, any user can view the vulnerability report, as long as they are assigned a custom role that has the permission.</p>
<h3 id="password-reset-email-sent-to-any-verified-email-address">Password reset email sent to any verified email address</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/user_passwords/#change-your-password">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/16311">Related issue</a></li></ul>
</div>

<p>If you forget your GitLab password, you can now reset it by email with any verified email address. Previously, only the primary email address was used for reset requests. This made it difficult to complete the password reset process if the primary email inbox was inaccessible.</p>
<h3 id="scim-identities-included-in-users-api-response">SCIM identities included in users API response</h3>
<!-- categories: System Access, Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/users/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/324247">Related issue</a></li></ul>
</div>

<p>The users API now returns the SCIM identities for a user. Previously, this information was included in the UI but not the API.</p>
<h3 id="reintroduction-of-omniauth-shibboleth-support">Reintroduction of OmniAuth Shibboleth support</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/shibboleth/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/393065">Related issue</a></li></ul>
</div>

<p>Shibboleth OmniAuth support has been re-introduced to GitLab. It was previously <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/388959">removed</a> in GitLab 15.9 due to lack of upstream support. Thanks to a generous community contribution by <a href="https://gitlab.com/lukaskoenen">lukaskoenen</a>, who took on upstream support, <code>omniauth-shibboleth-redux</code> is now supported in self-managed GitLab.</p>
<h3 id="select-administrator-access-for-personal-access-tokens-in-admin-mode">Select administrator access for personal access tokens in Admin Mode</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/#personal-access-token-scopes">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/42692">Related issue</a></li></ul>
</div>

<p>GitLab administrators can use Admin Mode to work as a non-administrator user, and turn on administrator access when needed. Previously, an administrator’s personal access token (PAT) always had permissions to perform API actions as an administrator. Now, when adding a PAT, an administrator can decide if that PAT has administrator access to perform API actions or not, by selecting the Admin Mode scope. An administrator must enable Admin Mode for the instance to use this feature.</p>
<p>Thank you <a href="https://gitlab.com/wwwjon">Jonas Wälter</a>, <a href="https://gitlab.com/dlouzan">Diego Louzán</a>, and <a href="https://gitlab.com/TrueKalix">Andreas Deicha</a> for contributing!</p>
<h3 id="prevent-user-from-deleting-account">Prevent user from deleting account</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/account_and_limit_settings/#prevent-users-from-deleting-their-accounts">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/26053">Related issue</a></li></ul>
</div>

<p>Administrators can prevent users from deleting their account with a new user restrictions configuration setting. If this setting is enabled, users will no longer be able to delete their accounts, preserving auditable account information.</p>
<h3 id="personal-access-token-last_used-value-updated-more-frequently">Personal access token <code>last_used</code> value updated more frequently</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/personal_access_tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/410168">Related issue</a></li></ul>
</div>

<p>The <code>last_used</code> value for personal access tokens (PAT) was previously updated every 24 hours. It is now updated every 10 minutes. This increases visibility of PAT usage and, in the case of PAT compromise, reduces risk because it takes less time before malicious activity is noticed.</p>
<p>Thank you <a href="https://thinkst.com/">Jacob Torrey</a> for your contribution!</p>
<h3 id="more-detail-in-completed-github-project-import-summary">More detail in completed GitHub project import summary</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/import/github/#check-status-of-imports">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/386748">Related issue</a></li></ul>
</div>

<p>When a GitHub project finished importing, GitLab showed a simple summary of imported entities. However, GitLab didn’t show exactly which GitHub
entities failed to import nor the errors that caused the import failures. This made it difficult to decide if import results were satisfactory or not.</p>
<p>In this release, we have extended the import summary to include a list of GitHub entities that weren’t imported and, if possible, provide
a direct link to these entities on GitHub. GitLab now also shows an error for each failure. This helps you understand how well the import worked
and helps you troubleshoot problems.</p>
<h3 id="show-external-user-as-a-comment-author-in-service-desk-issues">Show external user as a comment author in Service Desk issues</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/">Documentation</a></li></ul>
</div>

<p>When a requester replies to a Service Desk email, it is useful to the Service Desk agent to know who made the comment. But because the requester can be an external user with no GitLab account or access to the GitLab project, these comments were previously attributed to the GitLab Support Bot. From now on, email replies from requesters will be attributed to the external users, making it more clear who made the comments in the GitLab issue.</p>
<h3 id="issue-url-placeholder-in-service-desk-emails">Issue URL placeholder in Service Desk emails</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/">Documentation</a></li></ul>
</div>

<p>For Service Desk requesters, it can be helpful to access the Service Desk issue directly rather than interact with the Service Desk request only via email. We are introducing a new placeholder <code>%{ISSUE_URL}</code>, that you can use in your email templates (for example, the “thank you” email) to link requesters directly to the Service Desk issue.</p>
<h3 id="backup-adds-the-ability-to-skip-projects">Backup adds the ability to skip projects</h3>
<!-- categories: Backup/Restore of GitLab instances -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/18287">Related issue</a></li></ul>
</div>

<p>The built-in backup and restore tool adds the ability to skip specific repositories. The Rake task now accepts a list of comma-separated group or project paths to be skipped during the backup or restore by using the new <code>SKIP_REPOSITORIES_PATHS</code> environment variable. This will allow you to skip, for example, stale or archived projects which do not change over time, saving you a) time by speeding up the backup run, and b) space by not including this data in the backup file.
Thanks to <a href="https://gitlab.com/nE0sIghT">Yuri Konotopov</a> for this <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121865">community contribution</a>!</p>
<h3 id="geo-adds-filtering-by-replication-status-to-all-components">Geo adds filtering by replication status to all components</h3>
<!-- categories: Geo Replication, Disaster Recovery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/411981">Related issue</a></li></ul>
</div>

<p>Geo adds filtering by replication status to all components managed by the <a href="/development/geo/framework/">self-service framework</a>. Now you can filter items in the replication details views by “In progress”, “Failed”, and “Synced” status making it easier and faster to locate data that is failing to synchronize.</p>
<h3 id="geo-verifies-design-repositories">Geo verifies Design repositories</h3>
<!-- categories: Geo Replication, Disaster Recovery -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/geo/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/355660">Related issue</a></li></ul>
</div>

<p>When you add a design to an issue, a design Git repository is created or updated, and an LFS object and an upload (for the thumbnails) are created. Geo already verifies LFS objects and uploads, and now it also verifies the design repositories as well. Now that all underlying data of <a href="/user/project/issues/design_management/">Design Management</a> is verified, your design data is ensured to not be corrupted in transfer or at rest. If Geo is used as part of a disaster recovery strategy, this protects you against data loss.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="comment-on-whole-file-in-merge-requests">Comment on whole file in merge requests</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/changes/#add-a-comment-to-a-merge-request-file">Documentation</a></li></ul>
</div>

<p>Merge requests now support commenting on an entire file, because not all merge request feedback is line-specific. If a file is deleted, you might want more information about why. You might also want to provide feedback about a filename, or general comments about structure.</p>
<h3 id="create-a-changelog-from-the-gitlab-cli">Create a changelog from the GitLab CLI</h3>
<!-- categories: GitLab CLI -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/changelogs/#from-the-gitlab-cli">Documentation</a></li></ul>
</div>

<p>Changelogs generate comprehensive lists of changes based on commits to a project. They can be challenging to automate or view, and require interacting with the GitLab API.</p>
<p>With the release of <a href="https://gitlab.com/gitlab-org/cli/-/releases/v1.30.0">GitLab CLI v1.30.0</a> you can now generate changelogs for projects directly from your shell. The <code>glab changelog generate</code> command makes it easier to review, automate, and publish changelogs.</p>
<p>Thanks <a href="https://gitlab.com/michael-mead">Michael Mead</a> for your contribution!</p>
<h3 id="fail-closed-for-invalid-security-policy-approval-checks">Fail closed for invalid Security Policy approval checks</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/approvals/#invalid-rules">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/389905">Related issue</a></li></ul>
</div>

<p>Security and compliance policies allow organizations to enforce checks and balances across multiple projects to align with their security and governance programs. It’s critical for our customers to ensure changes that impact policies do not result in the guardrails coming down. With this update, invalid rules will “fail closed”, blocking MRs until invalid rules in any scan result policies are addressed.</p>
<h3 id="install-npm-packages-from-your-group-or-subgroup">Install npm packages from your group or subgroup</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/npm_registry/#install-from-a-group">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/299834">Related issue</a></li></ul>
</div>

<p>You can use your project’s Package Registry to publish and install npm packages. You simply authenticate using an access token (personal, job, deploy, or project) and start publishing packages to your GitLab project.</p>
<p>This works great if you have a small number of projects. Unfortunately, if you have multiple projects, you might quickly find yourself adding dozens or even hundreds of different sources. It is common for teams in large organizations to publish packages to their project’s Package Registry alongside the source code and pipelines. Simultaneously, they need to be able to easily install dependencies from other projects within the groups and subgroups in their organization.</p>
<p>To make sharing packages easier between projects, you can now install packages from your group so you don’t have to remember which package lives in which project. Using an authentication token of your choice, you can install any of the group npm packages after you add your group as a source for npm packages.</p>
<h3 id="add-a-description-to-design-uploads">Add a description to design uploads</h3>
<!-- categories: Portfolio Management, Design Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/issues/design_management/#add-a-design-to-an-issue">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9694">Related epic</a></li></ul>
</div>

<p>Currently the <a href="/user/project/issues/design_management/#add-a-design-to-an-issue">Design uploads</a> have no metadata to explain their purpose, or why they are being uploaded. We’ve added a text box as a description so you can help users understand the image better.</p>
<h3 id="configure-the-static-file-directory-in-gitlab-pages">Configure the static file directory in GitLab Pages</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/introduction/#customize-the-default-folder">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10126">Related issue</a></li></ul>
</div>

<p>You can now configure the static file directory for GitLab Pages to any name (by default <code>public</code>).
This makes it easier to use Pages with popular static site frameworks such as Next.js, Astro, or Eleventy,
without needing to change the output folder in their configuration.</p>
<h3 id="code-quality-analyzer-updates">Code Quality analyzer updates</h3>
<!-- categories: Code Quality -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/testing/code_quality/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/412459">Related issue</a></li></ul>
</div>

<p>GitLab Code Quality supports <a href="/ci/testing/code_quality/">integrating tools you already run</a> and also offers <a href="/ci/testing/code_quality/">a CI/CD template</a> that runs the CodeClimate scanning system. We published the following updates to the CodeClimate-based analyzer during the 16.1 release milestone:</p>
<ul>
<li>Updated CodeClimate to version 0.96.0. This version includes:
<ul>
<li>A new plugin for <code>golangci-lint</code>.</li>
<li>A new available version for the <code>bundler-audit</code> plugin.</li>
</ul>
</li>
<li>Added support for a configurable path to the Docker API Socket.
<ul>
<li>Thanks to <a href="https://gitlab.com/tsjnsn"><code>@tsjnsn</code></a> for this <a href="https://gitlab.com/gitlab-org/ci-cd/codequality/-/merge_requests/73">community contribution</a>. Updates to include this variable in the CI/CD template are tracked in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/409738">an issue</a>.</li>
</ul>
</li>
</ul>
<p>See the <a href="https://gitlab.com/gitlab-org/ci-cd/codequality/-/blob/master/CHANGELOG.md?ref_type=heads#anchor-0960">CHANGELOG</a> for further details.</p>
<p>If you <a href="/ci/testing/code_quality/">include the GitLab-managed Code Quality template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml"><code>Code-Quality.gitlab-ci.yml</code></a>), you automatically receive these updates.</p>
<p>For Code Quality changes in previous releases, see <a href="https://about.gitlab.com/releases/2023/04/22/gitlab-15-11-released/#static-analysis-analyzer-updates">the most recent update</a>.</p>
<h3 id="sast-analyzer-updates">SAST analyzer updates</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/analyzers/">Documentation</a> | <a href="/user/application_security/">Related issue</a></li></ul>
</div>

<p>GitLab SAST includes <a href="/user/application_security/sast/#supported-languages-and-frameworks">many security analyzers</a> that the GitLab Static Analysis team actively maintains, updates, and supports. We published the following updates during the 16.1 release milestone:</p>
<ul>
<li>The Semgrep-based analyzer is updated to use version 1.23.0 of the Semgrep engine. We’ve also <a href="https://docs.gitlab.com/#clearer-guidance-and-better-coverage-for-sast-rules">clarified guidance and improved efficacy</a> of the GitLab-managed rules that are used to scan C, C#, Go, and Java. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/blob/main/CHANGELOG.md#v434">CHANGELOG</a> for further details.</li>
<li>The SpotBugs-based analyzer now supports changing the “effort level” by <a href="/user/application_security/sast/#security-scanner-configuration">setting the <code>SAST_SCANNER_ALLOWED_CLI_OPTS</code> CI/CD variable</a>. This allows you to improve performance by reducing the scan’s precision and its ability to detect vulnerabilities. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/spotbugs/-/blob/master/CHANGELOG.md#v420">CHANGELOG</a> for further details.</li>
</ul>
<p>If you <a href="/user/application_security/sast/">include the GitLab-managed SAST template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml"><code>SAST.gitlab-ci.yml</code></a>) and run GitLab 16.0 or higher, you automatically receive these updates.
To remain on a specific version of any analyzer and prevent automatic updates, you can <a href="/user/application_security/sast/">pin its version</a>.</p>
<p>For previous changes, see <a href="https://about.gitlab.com/releases/2023/05/22/gitlab-16-0-released/#sast-analyzer-updates">last month’s updates</a>.</p>
<h3 id="automatic-response-to-leaked-google-cloud-secrets">Automatic response to leaked Google Cloud secrets</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/automatic_response/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8835">Related issue</a></li></ul>
</div>

<p>We’ve integrated Secret Detection with Google Cloud to better protect customers who use GitLab to develop applications on Google Cloud. Now, if an organization leaks a Google Cloud credential to a public project on GitLab.com, GitLab can automatically protect the organization by working with Google Cloud to protect the account.</p>
<p>Secret Detection searches for three types of secrets issued by Google Cloud:</p>
<ul>
<li><a href="https://cloud.google.com/iam/docs/best-practices-for-managing-service-account-keys">Service account keys</a></li>
<li><a href="https://cloud.google.com/docs/authentication/api-keys">API keys</a></li>
<li><a href="https://support.google.com/cloud/answer/6158849#rotate-client-secret">OAuth client secrets</a></li>
</ul>
<p>Publicly leaked secrets are sent to Google Cloud after they’re discovered. Google Cloud verifies the leaks, then works to protect customer accounts against abuse.</p>
<p>This integration is on by default for projects that have <a href="/user/application_security/secret_detection/">enabled Secret Detection</a> on GitLab.com. Secret Detection scanning is available in all GitLab tiers, but an automatic response to leaked secrets is currently only available in Ultimate projects.</p>
<p>See <a href="https://about.gitlab.com/blog/how-secret-detection-can-proactively-revoke-leaked-credentials/">the blog post about this integration</a> for further details.</p>
<h3 id="clearer-guidance-and-better-coverage-for-sast-rules">Clearer guidance and better coverage for SAST rules</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/analyzers/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/382119">Related issue</a></li></ul>
</div>

<p>We’ve updated the GitLab SAST rules to:</p>
<ul>
<li>More clearly explain the type of weakness each rule targets and how to fix it. We’ve updated the description and guidance text for C, C#, Go, and Java rules so far. The remaining languages are tracked in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/382119">issue 382119</a>.</li>
<li>Catch additional vulnerabilities in existing Java rules.</li>
</ul>
<p>These improvements are part of a collaboration between the GitLab Static Analysis and Vulnerability Research teams to <a href="https://gitlab.com/groups/gitlab-org/-/epics/8170">improve the default Static Analysis rulesets</a>.
We would welcome any feedback on the default rules for SAST, Secret Detection, and IaC Scanning in <a href="https://gitlab.com/groups/gitlab-org/-/epics/8170">epic 8170</a>.</p>
<p>For more details on the changes to GitLab SAST rules, see the <a href="https://gitlab.com/gitlab-org/security-products/sast-rules/-/blob/main/CHANGELOG.md">CHANGELOG</a>.
As of GitLab 16.1, the <a href="https://gitlab.com/gitlab-org/security-products/sast-rules"><code>sast-rules</code> project</a> is the single source of all GitLab-managed default rules used in the Semgrep-based SAST analyzer.</p>
<h3 id="shared-ruleset-customizations-in-sast-iac-scanning-and-secret-detection">Shared ruleset customizations in SAST, IaC Scanning, and Secret Detection</h3>
<!-- categories: SAST, Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/customize_rulesets/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/362958">Related issue</a></li></ul>
</div>

<p>You can now set a CI/CD variable to share ruleset customizations for <a href="/user/application_security/sast/customize_rulesets/">SAST</a>, <a href="/user/application_security/iac_scanning/">IaC Scanning</a>, or <a href="/user/application_security/secret_detection/pipeline/">Secret Detection</a> across more than one project.</p>
<p>Sharing a ruleset can help you:</p>
<ul>
<li><a href="/user/application_security/sast/customize_rulesets/">Disable predefined rules</a> that you don’t want to focus on in your projects.</li>
<li><a href="/user/application_security/sast/customize_rulesets/">Change fields in predefined rules</a>, including the description, message, name, or severity, to reflect organizational preferences. For example, you could adjust the default severity of a rule or add information about how to remediate a finding.</li>
<li><a href="/user/application_security/sast/customize_rulesets/">Build a custom ruleset</a> by adding or replacing rules. This option is available only for some analyzers.</li>
</ul>
<p>Further improvements in this area are discussed in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/257928">an issue</a>.</p>
<h3 id="cicd-use-needs-in-rules">CI/CD: Use <code>needs</code> in <code>rules</code></h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#rulesneeds">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/31581">Related issue</a></li></ul>
</div>

<p>The <a href="/ci/yaml/#needs">needs:</a> keyword defines a dependency relationship between jobs, which you can use to set jobs to run out of stage order. In this release we’ve added the ability to define this relationship for specific <code>rules</code> conditions. When a condition matches a rule, the job’s <code>needs</code> configuration is completely replaced with the <code>needs</code> in the rule. This can help speed up a pipeline based on your defined conditions, when a job can start earlier than normal. You can also use this to force a job to wait for an earlier one to complete before starting, you now have more flexible <code>needs</code> options!</p>
<h3 id="beautify-the-ui-of-cicd-pipelines-and-jobs">Beautify the UI of CI/CD pipelines and jobs</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/pipelines/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/394768">Related issue</a></li></ul>
</div>

<p>One of GitLab’s most used features is CI/CD. In 16.1, we focused on improving the usability and experience of CI/CD pipeline and job list views, as well as the pipeline details page. It’s now easier to find the information you are looking for! If you have any comments about the changes, we’d love to hear from you in our <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/414756">feedback issue</a>.</p>
<h3 id="increased-storage-for-gitlab-saas-runners-on-linux">Increased storage for GitLab SaaS runners on Linux</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/linux/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/384223">Related issue</a></li></ul>
</div>

<p>After recently upsizing our <a href="/ci/runners/hosted_runners/linux/">GitLab.com SaaS runners on Linux</a> in vCPU and RAM, we have now also increased the storage for <code>medium</code> and <code>large</code> machine types.</p>
<p>You can now seamlessly build, test, and deploy larger applications that require a secure, on-demand GitLab Runner Linux environment fully integrated with GitLab CI/CD.</p>
<h3 id="cicd-job-token-scope-api-endpoint">CI/CD job token scope API endpoint</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/ci_job_token/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/351740">Related issue</a></li></ul>
</div>

<p>Starting in GitLab 16.0, the <a href="/ci/jobs/ci_job_token/">default CI/CD job token (<code>CI_JOB_TOKEN</code>) scope changed</a> for all new projects. This increased the security of new projects, but added an extra step for users who used automation to create projects. The automation sometimes has to configure the job token scope as well, which could only be done with GraphQL (or manually in the UI), not the REST API.</p>
<p>To make this setting configurable through the REST API as well, <a href="https://gitlab.com/gerardo-navarro">Gerardo Navarro</a> added a new endpoint to control the job token scope in 16.1. It is available to users with a Maintainer or higher role in the project. Thank you for this great contribution Gerardo!</p>
<h3 id="runner-details---consolidate-runners-sharing-a-configuration">Runner details - consolidate runners sharing a configuration</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner/fleet_scaling/#reusing-a-runner-configuration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/409388/">Related issue</a></li></ul>
</div>

<p>The new runner creation method enables you to re-use a runner configuration for scenarios where you may need to register multiple runners with the same capabilities. Runners registered with the same authentication token share a configuration and are grouped in the new detailed view.</p>
<h3 id="gitlab-runner-161">GitLab Runner 16.1</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.1 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29410">GitLab Runner Fleeting plugin for Azure Virtual Machines (Experimental)</a>. Thank you to <a href="https://gitlab.com/vincent_stchu">vincent_stchu</a> for this contribution!</li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/-/blob/16-1-stable/CHANGELOG.md">CHANGELOG</a>.</p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.1">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.1">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.1">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 16.0 release notes</title><link href="https://docs.gitlab.com/releases/16/gitlab-16-0-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/16/gitlab-16-0-released/</id><published>2023-05-22T00:00:00Z</published><updated>2023-05-22T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<!-- markdownlint-disable -->
<!-- vale off -->
<p>On May 22, 2023, GitLab 16.0 was released with the following features.</p>
<p>In addition, we want to thank all of our contributors, including this month&rsquo;s notable contributor.</p>
<h2 id="this-months-notable-contributor-jimmy-berry">This month’s Notable Contributor: Jimmy Berry</h2>
<p>Jimmy <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117594">improved the merge request security widget</a> by correcting which merge base is used for comparing branches on completed pipelines in the merge request.
Previously, the merge request security widget was comparing the most recent security scan of a completed pipeline on the main branch of the repository. For the vulnerability findings in the merge request security widget to be accurate, we needed to adjust the logic and compare the feature branch to the main branch at the time the feature was branched from main. Without this change users might see misleading results. This was already an <a href="https://gitlab.com/groups/gitlab-org/-/epics/10092">issue</a> on our roadmap, and Jimmy contributed and accelerated this improvement not only for them, but for all GitLab users.</p>
<p>Jimmy <a href="https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/34100#note_1395183419">stated</a>:</p>

<blockquote><p>I’ve contributed to a variety of open source projects, but have never experienced such a helpful review process.</p></blockquote><p>Thank you Jimmy for helping us iterate on the logic for vulnerability findings and improve the security features in GitLab!</p>
<h2 id="primary-features">Primary features</h2>
<h3 id="value-streams-dashboard-is-now-generally-available">Value Streams Dashboard is now generally available</h3>
<!-- categories: Value Stream Management, DORA Metrics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/analytics/value_streams_dashboard/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/403304">Related issue</a></li></ul>
</div>

<p>This <a href="https://youtu.be/EA9Sbks27g4">new dashboard</a> provides strategic insights into metrics that help decision-makers
identify trends and patterns to optimize software delivery. The first iteration of the GitLab Value Streams Dashboard
is focused on enabling teams to continuously improve software delivery workflows by benchmarking value stream life cycle
(<a href="/user/group/value_stream_analytics/">value stream analytics</a>, <a href="/user/analytics/dora_metrics/">DORA4</a>),
and <a href="/user/application_security/vulnerability_report/">vulnerabilities</a> metrics.</p>
<p>Organizations can use the <a href="/user/analytics/value_streams_dashboard/">Value Streams Dashboard</a>
to track and compare these metrics over a period of time, identify downward trends early, understand security exposure,
and drill down into individual projects or metrics to take actions for improvements.</p>
<p>This comprehensive view built as a single application with a unified data store allows all stakeholders, from
executives to individual contributors, to have visibility into the software development life cycle, without needing
to buy or maintain a third-party tool.</p>
<h3 id="upsizing-gitlab-saas-runners-on-linux">Upsizing GitLab SaaS runners on Linux</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/linux/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/388162">Related issue</a></li></ul>
</div>

<p>You asked, we listened! In our efforts to be best-in-class for CI/CD build speeds, we’re doubling the vCPU &amp; RAM for all GitLab SaaS runners on Linux, with no increase in the <a href="/ci/pipelines/compute_minutes/">cost factor</a>.</p>
<p>We’re excited to see pipelines run faster and boost productivity.</p>
<h3 id="gpu-enabled-saas-runners-on-linux">GPU-enabled SaaS runners on Linux</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/linux/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/358026">Related issue</a></li></ul>
</div>

<p>We are aiming to bring the best practices of DevSecOps to data sciences by providing more powerful compute hardware within GitLab runner.
Previously, data scientists may have had workloads that were compute-intensive and as a result, jobs may not have been as quickly executed in GitLab.</p>
<p>Now, with GPU-enabled SaaS runners on Linux, these workloads can be seamlessly supported using GitLab.com.</p>
<p>So why wait? Try out the new runner today and let us know what you think in this <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/403008">issue</a>. We can’t wait to hear your feedback!</p>
<h3 id="apple-silicon-m1-gitlab-saas-runners-on-macos---beta">Apple silicon (M1) GitLab SaaS runners on macOS - Beta</h3>
<!-- categories: GitLab Hosted Runners -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/runners/hosted_runners/macos/#example-gitlab-ciyml-file">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/342848">Related issue</a></li></ul>
</div>

<p>Mobile DevOps teams can now run their entire CI/CD workflows on Apple silicon (M1)
<a href="/ci/runners/hosted_runners/macos/">GitLab SaaS runners on macOS</a>
to seamlessly create, test, and deploy applications for the Apple ecosystem.</p>
<p>With up to <strong>three times</strong> the performance of hosted x86-64 macOS Runners,
you will increase your development team’s velocity in building and deploying applications
that require macOS in a secure, on-demand GitLab Runner build environment integrated with GitLab CI/CD.</p>
<h3 id="comment-templates">Comment templates</h3>
<!-- categories: Code Review Workflow, Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/comment_templates/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/7565">Related epic</a></li></ul>
</div>

<p>When you’re commenting in issues, epics, or merge requests you might repeat yourself and need to write the same comment over and over. Maybe you always need to ask for more information about a bug report. Maybe you’re applying labels via a quick action as part of a triage process. Or maybe you just like to finish all your code reviews with a funny gif or appropriate emoji. 🎉</p>
<p>Comment templates enable you to create saved responses that you can apply in comment boxes around GitLab to speed up your workflow. To create a comment template, go to <strong>User settings &gt; Comment templates</strong> and then fill out your template. After it’s saved, select the <strong>Insert comment template</strong> icon on any text area, and your saved response will be applied.</p>
<p>This is a great way to standardize your replies and save you time!</p>
<h3 id="update-your-fork-from-the-gitlab-ui">Update your fork from the GitLab UI</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/forking_workflow/#update-your-fork">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/330243">Related issue</a></li></ul>
</div>

<p>Managing your fork just got easier. When your fork is behind, select <strong>Update fork</strong> in the GitLab UI to catch it up with upstream changes. When your fork is ahead, select <strong>Create merge request</strong> to contribute your change back to the upstream project. Both operations previously required you to use the command line.</p>
<p>See how many commits your fork is ahead (or behind) on your project’s main page and at <strong>Repository &gt; Files</strong>. If merge conflicts exist, the UI gives guidance on how to resolve them using Git from the command line.</p>
<h3 id="mirror-specific-branches-only">Mirror specific branches only</h3>
<!-- categories: Source Code Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/mirror/#mirror-specific-branches">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/1893">Related issue</a></li></ul>
</div>

<p>Do you need to mirror a busy repository with many branches, but you only need a few of them? Limit the number of
branches you mirror by creating a regular expression that matches only the branches you need.</p>
<p>Previously, mirrors required you to mirror an entire repository, or all protected branches. This new flexibility
can decrease the amount of data your mirrors push or pull, and keep sensitive branches out of public mirrors.</p>
<h3 id="new-web-ide-experience-now-generally-available">New Web IDE experience now generally available</h3>
<!-- categories: Web IDE -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/web_ide/">Documentation</a></li></ul>
</div>

<p>Since its introduction, we’ve been iterating on the usability, performance, and stability of the Web IDE, which
has enabled us to build features like remote development workspaces and code suggestions on a powerful foundation.</p>
<p>We have received overwhelmingly positive feedback on the Web IDE Beta and starting in GitLab 16.0, we are making
it the default multi-file code editor across GitLab.</p>
<h3 id="workspaces-available-in-beta-for-public-projects">Workspaces available in Beta for public projects</h3>
<!-- categories: Workspaces -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/workspace/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10122">Related epic</a></li></ul>
</div>

<p>Stop spending hours, or even days, troubleshooting your local development environment and interpreting inscrutable package installation errors. Now you can define a consistent, stable, and secure development environment in code and use it to create on-demand; all inside Workspaces.</p>
<p>Workspaces serve as personal, ephemeral development environments in the cloud. By eliminating the need for a local development environment, you can focus more on your code and less on your dependencies. Accelerate the process of onboarding to a new project and get up and running in minutes instead of days.</p>
<p>After the GitLab Agent for Kubernetes is configured and <a href="/user/workspace/">the dependencies are installed</a> in your self-hosted cluster or cloud platform of choice, you can define your development environment in a <code>.devfile.yaml</code> file and store it in a public project. Then, you and any other developers with access to the agent can create a workspace based on the <code>.devfile.yaml</code> file and edit directly in the embedded Web IDE. You’ll have full terminal access to the container, allowing you to work more efficiently. When you’re done, or if something goes wrong, you can shut down the workspace and start a fresh, new workspace for your next development task.</p>
<p>This short video walks you through the lifecycle of a workspace in the current Beta. Learn more about workspaces in the <a href="/user/workspace/">documentation</a> and let us know what you think in the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/410031">feedback issue</a>.</p>
<h3 id="security-training-with-secureflag">Security training with SecureFlag</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerabilities/#enable-security-training-for-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/gitlab-com/alliances/alliances/-/issues/297">Related issue</a></li></ul>
</div>

<p>As security shifts left, remediating security findings without guidance can be challenging. Developers need actionable advice so they can resolve vulnerabilities and continue
building features. Contextual training that is relevant to the specific vulnerability detected was released in GitLab 14.9.</p>
<p>In this release, we are adding an integration with SecureFlag based upon the CWE of the vulnerability. SecureFlag’s
training solution is unique in that the labs involve remediating the vulnerability in a live environment,
which can be transferred to a real environment.</p>
<h3 id="token-rotation-api">Token rotation API</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/tokens/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/403042">Related issue</a></li></ul>
</div>

<p>Previously, to rotate tokens, the token owner had to manually create a new token and replace the existing token.</p>
<p>Now, token owners can use a <code>:rotate</code> API endpoint to programatically rotate personal, group, and project access tokens.</p>
<h3 id="ai-powered-workflow-features">AI-powered workflow features</h3>
<!-- categories: Code Suggestions, Duo Agent Platform, SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/development/ai_features/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10524">Related issue</a></li></ul>
</div>

<p>GitLab is evolving into an AI‑powered DevSecOps platform. Over the past month, we’ve introduced 10 new experiments
to improve efficiency and productivity across various GitLab features, all leveraging AI.</p>
<p>These AI-powered workflows boost efficiency and reduce cycle times in every phase of the software development lifecycle.</p>
<p>Learn more about <a href="https://about.gitlab.com/solutions/ai/">AI-powered workflows</a></p>
<h3 id="code-suggestions-improvements">Code Suggestions improvements</h3>
<!-- categories: Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Gold, Silver, Free</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/repository/code_suggestions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9814">Related issue</a></li></ul>
</div>

<p>Code Suggestions is now available on GitLab.com for all users for free while the feature is in Beta. Teams can
boost efficiency with the help of generative AI that suggests code while you’re developing.</p>
<p>We’ve extended language support from our initial six languages to now include 13 languages: C/C++, C#, Go, Java,
JavaScript, Python, PHP, Ruby, Rust, Scala, Kotlin, and TypeScript.</p>
<p>We are making improvements to the Code Suggestions underlying AI model weekly to improve the quality of suggestions.
Please remember that AI is non-deterministic, so you may not get the same suggestion week to week.</p>
<p>Read more about these <a href="https://about.gitlab.com/blog/code-suggestions-for-all-during-beta/">improvements and what’s next</a>.</p>
<h3 id="error-tracking-is-now-generally-available">Error Tracking is now generally available</h3>
<!-- categories: Observability -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Silver, Gold</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/operations/error_tracking/">Documentation</a></li></ul>
</div>

<p>GitLab Error Tracking, which allows developers to discover and view errors generated by their application, is now generally available on GitLab.com! GitLab error tracking helps to increase efficiency and awareness by surfacing error information directly in the same interface as the code is developed, built, deployed, and released.</p>
<p>In this release, we are supporting both the <a href="/operations/error_tracking/">GitLab integrated error tracking</a> and the
<a href="/operations/error_tracking/">Sentry-based</a> backends.</p>
<h3 id="custom-value-streams-for-project-level-value-stream-analytics">Custom value streams for project-level value stream analytics</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/value_stream_analytics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/382496">Related issue</a></li></ul>
</div>

<p>To improve the visibility into the complete workstream, we are adding to the project-level Value Stream Analytics (VSA) the <a href="/user/group/value_stream_analytics/">Overview stage</a> and the option to <a href="/user/group/value_stream_analytics/">create custom value streams</a>.</p>
<p>Until now, these features were only available at the group-level VSA only.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="rate-limit-for-unauthenticated-users-of-the-projects-list-api">Rate limit for unauthenticated users of the Projects List API</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/rate_limit_on_projects_api/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/388435">Related issue</a></li></ul>
</div>

<p>Unauthenticated users of the Projects List API will be subject to rate limitations moving forward.</p>
<p>On GitLab.com, the limit is set to 400 requests per 10 minutes per unique IP address.</p>
<p>Users of self-managed GitLab instances have the same rate limitation by default, but administrators can change the rate limits as they see fit. We encourage users who need to make more than 400 requests per 10 minutes to the Projects List API to <a href="https://about.gitlab.com/pricing/">sign up for a GitLab account</a>.</p>
<h3 id="self-managed-gitlab-uses-two-database-connections">Self-managed GitLab uses two database connections</h3>
<!-- categories: Cell -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/settings/database.html#configuring-multiple-database-connections">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9627">Related epic</a></li></ul>
</div>

<p>Starting with 16.0, self-managed installations of GitLab will have two database connections by default, instead of
one. This change makes self-managed versions of GitLab behave similarly to GitLab.com, and is a step towards enabling
a <a href="https://gitlab.com/groups/gitlab-org/-/epics/7509">separate database for CI features</a> for self-managed versions of GitLab.</p>
<p>This change applies to installation methods with Omnibus GitLab, GitLab Helm chart, GitLab Operator, GitLab Docker images, and installation from source.</p>
<h3 id="option-to-disable-followers">Option to disable followers</h3>
<!-- categories: System Access, User Profile -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/#disable-following-and-being-followed-by-other-users">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/325558">Related issue</a></li></ul>
</div>

<p>We have received feedback from users who wanted to prevent getting unwanted followers of their user profile. We listened to your concerns, so now, in your user profile settings under Preferences, you can disable following.</p>
<p>When you disable this feature, no one can follow you, and you cannot follow anyone. All existing following and follower relationships are removed, and the count is set to zero.</p>
<h3 id="delayed-group-and-project-deletion-set-as-default">Delayed group and project deletion set as default</h3>
<!-- categories: Groups & Projects -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_com/#delayed-project-deletion">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/389557">Related issue</a></li></ul>
</div>

<p>To prevent accidental deletion of projects and groups, starting in GitLab 16.0, the delayed deletion feature will be turned on by default for all GitLab Ultimate and Premium customers.</p>
<p>Self-managed users still have the option to define a deletion delay period of between 1 and 90 days, and SaaS users have a non-adjustable default retention period of 7 days.</p>
<p>Users of Ultimate and Premium groups can still delete a group or project immediately from the group or project settings via a two-step deletion process.</p>
<p>We believe that this change will contribute to a safer deletion process and will be beneficial in preventing accidental deletions. We’d love your feedback in issue <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/396996">#396996</a>.</p>
<h3 id="gitlab-chart-improvements">GitLab chart improvements</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/">Documentation</a></li></ul>
</div>

<ul>
<li>Updates to GitLab 16.0 also update cert-manager to version 1.11.x. This cert-manager update includes breaking changes you must
<a href="https://cert-manager.io/docs/release-notes/release-notes-1.10/#breaking-changes-you-must-read-this-before-you-upgrade">read before upgrading</a>.
These changes include a change to container names that was best done during a major release of GitLab. To see details of updated features, see the
<a href="https://cert-manager.io/docs/release-notes/release-notes-1.11">releases notes for cert-manager 1.11</a>.</li>
<li>PostgreSQL 12 is no longer supported. The minimum required version is PostgreSQL 13, and support for PostgreSQL 14 is added.
New chart installs of GitLab include PostgreSQL 14 by default, and upgrades must follow the steps for
<a href="https://docs.gitlab.com/charts/installation/database_upgrade.html">upgrading the bundled PostgreSQL version</a>.</li>
<li>Updates to GitLab 16.0 include an update to the Redis subchart to version 16.13.2, including Redis 6.2.7.</li>
<li>We have removed the bundled Grafana chart. If you use the bundled Grafana, you must switch to the <a href="https://artifacthub.io/packages/helm/grafana/grafana">newer chart version from Grafana Labs</a> or a Grafana Operator from a trusted provider.</li>
<li>GitLab 16.0 includes
<a href="https://docs.gitlab.com/charts/charts/globals.html#configure-registry-settings">registry services details for webservice and Sidekiq</a>
in the <code>global.registry.*</code> configuration for simplification because the values are present in both. You can keep the old behavior with an override.</li>
<li>The <a href="https://docs.gitlab.com/charts/installation/tools.html#helm">minimum supported Helm version</a> is 3.5.2.</li>
<li>The GitLab Runner default version is now Ubuntu 22.04.</li>
</ul>
<h3 id="omnibus-improvements">Omnibus improvements</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/omnibus/">Documentation</a></li></ul>
</div>

<ul>
<li>PostgreSQL 12 is no longer supported. The minimum required version is PostgreSQL 13. Users of the packaged PostgreSQL 12 must
<a href="https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server">perform a database upgrade</a> before installing GitLab
16.0.</li>
<li>The new base OS for the Omnibus GitLab docker images is Ubuntu 22.04.</li>
<li>GitLab 16.0 disables older telemetry endpoints for Consul, which were deprecated in Consul 1.9. This allows us to
<a href="https://developer.hashicorp.com/consul/docs/v1.12.x/agent/config/config-files#telemetry-parameters">update Consul to newer versions</a>.</li>
<li>GitLab 16.0 includes packages for Red Hat Enterprise Linux (RHEL) 9 and compatible distributions.</li>
<li>GitLab 16.0 includes <a href="https://mattermost.com/">Mattermost 7.10</a> with <a href="https://mattermost.com/security-updates/">security updates</a>. An upgrade from earlier versions is recommended.</li>
</ul>
<h3 id="additional-registration-features-available-to-free-users">Additional Registration Features available to Free users</h3>
<!-- categories: Product Analytics -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/usage_statistics/#registration-features-program">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/10508">Related epic</a></li></ul>
</div>

<p>GitLab Free customers with a self-managed instance running GitLab Enterprise Edition can now access five more paid features under the <a href="/administration/settings/usage_statistics/#registration-features-program">Registration Features</a> program:</p>
<ul>
<li><a href="/administration/settings/sign_up_restrictions/">Password complexity policy</a></li>
<li><a href="/user/discussions/#view-description-change-history">Description change history</a></li>
<li><a href="/user/project/issue_board/#configurable-issue-boards">Issue board configuration</a></li>
<li><a href="/administration/maintenance_mode/">Maintenance mode</a></li>
<li><a href="/user/application_security/coverage_fuzzing/">Coverage-guided fuzz testing</a></li>
</ul>
<p>To get access to these features, register with GitLab and send us activity data through <a href="/administration/settings/usage_statistics/#enable-registration-features">Service Ping</a>.</p>
<h3 id="import-collaborators-as-an-additional-item-to-import">Import collaborators as an additional item to import</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/import/github/#select-additional-items-to-import">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/398154">Related issue</a></li></ul>
</div>

<p>In GitLab 15.10, we started mapping GitHub repository collaborators as GitLab project members during GitHub project imports. We received
<a href="https://gitlab.com/gitlab-org/gitlab/-/issues/398154">feedback</a> that this led to confusion and that some GitHub collaborators were
unexpectedly added and consumed seats.</p>
<p>In GitLab 16.0, we’ve iterated and added GitHub repository collaborators to the list of
<a href="/user/project/import/github/#select-additional-items-to-import">additional items to import</a>. This gives users the option
to avoid importing these users and to understand the possible implications of importing them.</p>
<p>This option is selected by default. Leaving it selected might result in new users using a seat in the group or namespace, and being granted permissions
<a href="/user/project/import/github/#collaborators-members">as high as project owner</a>. Only
direct collaborators are imported. Outside collaborators are never imported.</p>
<h3 id="filter-github-repositories-to-import">Filter GitHub repositories to import</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/import/github/#filter-repositories-list">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/385113">Related issue</a></li></ul>
</div>

<p>If you own or collaborate on a lot of repositories in GitHub, you might have trouble finding those that you want to import to GitLab using the current
filtering option.</p>
<p>To make finding the right repositories easier, we have added additional filters. You can now list subsets of the repositories you can import using three tabs:</p>
<ul>
<li><strong>Owner</strong>, to list repositories you own.</li>
<li><strong>Collaborator</strong>, to list repositories you collaborate on.</li>
<li><strong>GitHub organization</strong>, to list repositories that belong to GitHub organizations.</li>
</ul>
<p>On the <strong>Organization</strong> tab, you can further narrow down your search and choose a specific organization and list only repositories belonging
to that organization.</p>
<h3 id="mark-to-do-items-completed-by-other-group-or-project-owners-done">Mark to-do items completed by other group or project owners Done</h3>
<!-- categories: Groups & Projects, User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/todos/#actions-that-mark-a-to-do-item-as-done">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/374726">Related issue</a></li></ul>
</div>

<p>When a user raises an access request for a group or project, the request appears in the To-Do List of the group or project owner.
For groups and projects that have multiple owners, the request appears in each owner’s To-Do List.</p>
<p>With this new functionality, to-do items that have already been completed by another owner are marked Done in the others’ To-Do Lists.</p>
<h3 id="opt-in-to-a-new-navigation-experience">Opt in to a new navigation experience</h3>
<!-- categories: Navigation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/tutorials/left_sidebar/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9044">Related epic</a></li></ul>
</div>

<p>GitLab 16.0 features an all-new navigation experience! To get started, go to your avatar in the top right of the UI and turn on the <strong>New navigation</strong> toggle. The left sidebar changes to a new and improved design, based on user feedback we’ve received over the last year.</p>
<p>Please let us know about your experience in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/409005">this issue</a>. Based on the feedback, we will be progressively enabling the new navigation across our user base, with the final step being removal of the old navigation.</p>
<h3 id="limit-session-length-for-users">Limit session length for users</h3>
<!-- categories: System Access -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/profile/#session-duration">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/30819">Related issue</a></li></ul>
</div>

<p>Administrators can remove the “Remember Me” option for users when signing in so that sessions cannot be extended and the user is forced to re-authenticate. Limiting the duration of a session may improve instance security.</p>
<h3 id="authenticate-with-jira-personal-access-tokens">Authenticate with Jira personal access tokens</h3>
<!-- categories: Settings -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/integration/jira/configure/#configure-the-integration">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8222">Related epic</a></li></ul>
</div>

<p>Previously, you could only authenticate the <a href="/integration/jira/configure/">Jira issue integration</a> with a Jira username
and password.</p>
<p>Now you can use a <a href="https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html">Jira personal access token</a> to authenticate
if you are using Jira Data Center and Jira Server with Jira 8.14 and later. A Jira personal access token is a safer alternative to a username and password.</p>
<h3 id="placeholder-for-issue-description-in-service-desk-automated-replies">Placeholder for issue description in Service Desk automated replies</h3>
<!-- categories: Service Desk -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/service_desk/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/223751">Related issue</a></li></ul>
</div>

<p>It is useful for a Service Desk requester to see their original request in the automated thank you email replies.</p>
<p>In this release, we add an <code>%{ISSUE_DESCRIPTION}</code> placeholder so that Service Desk administrators can include the original request in the thank you email.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="real-time-merge-request-updates">Real-time merge request updates</h3>
<!-- categories: Web IDE -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/">Documentation</a></li></ul>
</div>

<p>When working on merge requests, it’s important to make sure that what you’re seeing is the latest information for approvals, pipelines or other information that might impact your ability to get the changes merged. Historically, this has meant refreshing the merge request or waiting for polling updates to come through.</p>
<p>We’ve improved the experience of both the merge button widget and approval widget inside of the merge request, so that they now update in real-time in the merge request. This is a great improvement to improve the speed at which you can deliver changes, and the confidence at which you can move a merge request forward knowing you’re seeing the latest information.</p>
<p>We’re looking at more areas for <a href="https://gitlab.com/groups/gitlab-org/-/epics/1812">real-time improvements</a> in merge requests, so follow along for updates.</p>
<h3 id="provide-a-reason-when-dismissing-vulnerabilities-in-bulk">Provide a reason when dismissing vulnerabilities in bulk</h3>
<!-- categories: Vulnerability Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/vulnerability_report/#change-status-of-vulnerabilities">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/408366">Related issue</a></li></ul>
</div>

<p>When selecting one or more vulnerabilities in the vulnerability report, it’s possible to change their status in bulk.</p>
<p>With this release, you can now select a dismissal reason when choosing the dismiss
status, and add a comment when changing a vulnerability’s status.&quot;</p>
<h3 id="add-and-remove-compliance-frameworks-without-using-bulk-actions">Add and remove compliance frameworks without using bulk actions</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_projects_report/#apply-a-compliance-framework-to-projects-in-a-group">Documentation</a></li></ul>
</div>

<p>In GitLab 15.11, we added bulk <a href="/user/compliance/compliance_center/compliance_projects_report/#apply-a-compliance-framework-to-projects-in-a-group">adding</a> and
<a href="/user/compliance/compliance_center/compliance_projects_report/#remove-a-compliance-framework-from-projects-in-a-group">removing</a> of compliance frameworks to the
compliance frameworks report.</p>
<p>Now in GitLab 16.0, you can also add and remove compliance frameworks from projects directly from the report table row.</p>
<p>Before GitLab 16.0, you had to create and edit frameworks in the group’s settings.</p>
<p>Now in GitLab 16.0, you can create or edit your compliance frameworks in the
compliance framework report as well. This simplifies the framework creation workflow and reduces the need to switch contexts while managing your frameworks.</p>
<h3 id="filter-compliance-violations-by-target-branch-name">Filter compliance violations by target branch name</h3>
<!-- categories: Compliance Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/compliance/compliance_center/compliance_projects_report/">Documentation</a></li></ul>
</div>

<p>Prior to GitLab 16.0, the compliance violations report showed all violations on all branches.</p>
<p>Now you can now filter violations using the new <strong>Search target branch</strong> field, allowing you to focus on the branches that
you are most concerned with.</p>
<h3 id="support-role-based-approval-action-for-scan-result-policies">Support role-based approval action for scan result policies</h3>
<!-- categories: Security Policy Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/policies/merge_request_approval_policies/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/8018">Related epic</a></li></ul>
</div>

<p>With role-based approval actions, you can configure scan result policies to require approval from GitLab-supported roles, including Owners, Maintainers, and Developers.</p>
<p>This gives you additional flexibility over requiring individual approvers or defined groups of users, making it easier to enforce policies based on roles you already leverage in GitLab, at scale, especially across large organizations.</p>
<h3 id="introducing-out-of-band-application-security-testing-through-browser-based-dast">Introducing Out-of-band Application Security Testing through browser-based DAST</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/">Documentation</a></li></ul>
</div>

<p>Previously, GitLab’s DAST analyzers did not support callback attacks while performing active checks. This meant that Out-of-band Application Security Testing (OAST) needed to be configured separately from your DAST scan.</p>
<p>Now, you can run OAST by <a href="/user/application_security/dast/browser/">extending the browser-based DAST analyzer</a> configuration to enable callback attacks.</p>
<p>In this release we are introducing the <a href="https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Security/BAS.latest.gitlab-ci.yml">BAS.latest.GitLab-ci.yml</a> template. The Breach and Attack Simulation CI/CD template features job configuration for the browser-based DAST analyzer and enables container-to-container networking to add extended DAST scans against service containers to your CI/CD pipeline.</p>
<p>We’re continuously iterating to develop new Breach and Attack Simulation features. We’d love to <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/404809">hear your feedback</a> on the addition of callback attacks to browser-based DAST.</p>
<h3 id="import-mavengradle-packages-by-using-cicd-pipelines">Import Maven/Gradle packages by using CI/CD pipelines</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/package_registry/#to-import-packages">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/389338">Related issue</a></li></ul>
</div>

<p>Have you been thinking about moving your Maven or Gradle repository to GitLab, but haven’t been able to invest the time to plan the migration? GitLab is proud to announce the MVC launch of a Maven/Gradle package importer.</p>
<p>You can now use the Packages Importer tool to import packages from any Maven/Gradle compliant registry, like Artifactory.</p>
<p>To use the tool, simply create a <code>config.yml</code> file that contains the details of the packages you want to import into GitLab. Then add the importer to a <code>.gitlab-ci.yml</code> pipeline configuration file, and the importer does the rest. It runs in the pipeline, dynamically generating a child pipeline with jobs that import all the packages into your GitLab package registry.</p>
<h3 id="download-packages-from-the-maven-registry-with-scala">Download packages from the Maven Registry with Scala</h3>
<!-- categories: Package Registry -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/packages/maven_repository/#install-a-package">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/212854">Related issue</a></li></ul>
</div>

<p>The GitLab Package Registry now supports downloading Maven packages using the Scala build tool (<code>sbt</code>). Previously, Scala users had no way to download Maven packages from the registry because basic authentication was not supported. As a result, Scala users were either blocked from using the registry or had to use Maven (<code>mvn</code>) or Gradle as an alternative.</p>
<p>By adding support for Scala, we hope to help you use the Package Registry with your more data intensive projects.</p>
<p>Please note that publishing artifacts using <code>sbt</code> is not yet supported, but you can follow <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/408479">issue 408479</a> if you are interested in adding support for publishing.</p>
<h3 id="add-or-resolve-to-do-items-on-tasks-objectives-and-key-results">Add or resolve to-do items on tasks, objectives, and key results</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/todos/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9750">Related epic</a></li></ul>
</div>

<p>We know that GitLab <a href="/user/todos/">To-Do List</a> is a widely adopted feature, but it was not available on tasks, objectives, and key results.</p>
<p>In this release, we’re introducing the ability to toggle a to-do item on or off from a work item record.</p>
<h3 id="gitlab-pages-unique-subdomains">GitLab Pages unique subdomains</h3>
<!-- categories: Pages -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/pages/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9347">Related epic</a></li></ul>
</div>

<p>In previous versions of GitLab, cookies of different GitLab Pages sites under the same top-level group were visible for other projects under the same top-level because of the GitLab Pages default URL format.</p>
<p>Now, you can secure your sites by assigning a unique subdomain to each GitLab Pages project.</p>
<h3 id="add-emoji-reactions-on-tasks-objectives-and-key-results">Add emoji reactions on tasks, objectives and key results</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/emoji_reactions/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9987">Related epic</a></li></ul>
</div>

<p>You can now contribute to tasks, objectives and key results with the addition of emoji reactions for work items.</p>
<p>Before this release, you could only add reactions on issues, merge requests, snippets, and epics.</p>
<h3 id="change-work-item-type-from-quick-action">Change work item type from quick action</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/quick_actions/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/385227">Related issue</a></li></ul>
</div>

<p>With this additional quick action, you can now convert key results to objectives.</p>
<h3 id="pick-custom-colors-for-labels">Pick custom colors for labels</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/labels/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/361846">Related issue</a></li></ul>
</div>

<p>Until now, you could specify only a fixed number of colors for your labels.</p>
<p>This release introduces a color picker to label management, allowing you to select any range of colors for your labels.</p>
<h3 id="reorder-child-records-for-tasks-objectives-and-key-results">Reorder child records for tasks, objectives and key results</h3>
<!-- categories: Portfolio Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/okrs/#reorder-objective-and-key-result-children">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9548">Related epic</a></li></ul>
</div>

<p>If you’re a user of <a href="/user/tasks/">tasks</a> or OKRs you’ve likely wished more than once that we could reorder the child records within the widget!</p>
<p>With this work, users will now be able to reorder child records within work item widgets allowing them to indicate relative priority or signal what’s up next.</p>
<h3 id="new-stage-events-for-custom-value-stream-analytics">New stage events for custom Value Stream Analytics</h3>
<!-- categories: Value Stream Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/group/value_stream_analytics/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/361983">Related issue</a></li></ul>
</div>

<p>Value Stream Analytics has been extended with two new stage events: issue first assigned and merge request first assigned.
These events can be useful for measuring the time it takes for an item to be first assigned to a user.</p>
<p>To implement this feature, GitLab started storing the history of assignment events in GitLab 16.0. This means that issue
and MR assignment events prior to GitLab 16.0 are not available.</p>
<h3 id="display-message-when-deploy-freeze-is-active">Display message when deploy freeze is active</h3>
<!-- categories: Environment Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/releases/#prevent-unintentional-releases-by-setting-a-deploy-freeze">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/212460">Related issue</a></li></ul>
</div>

<p>GitLab now shows you a message on the Environments page when a deploy freeze is in effect. This helps ensure your team is aware of when freezes occur, and when deployments are not allowed.</p>
<h3 id="sast-analyzer-updates">SAST analyzer updates</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/analyzers/">Documentation</a> | <a href="/user/application_security/">Related issue</a></li></ul>
</div>

<p>GitLab SAST includes <a href="/user/application_security/sast/#supported-languages-and-frameworks">many security analyzers</a> that the GitLab Static Analysis team actively maintains, updates, and supports. We published the following updates during the 16.0 release milestone:</p>
<ul>
<li>The Semgrep-based analyzer includes updated <a href="https://gitlab.com/gitlab-org/security-products/sast-rules">GitLab-managed scanning rules</a>. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/blob/main/CHANGELOG.md#v423">CHANGELOG</a> for further details. We’ve updated the rules to:
<ul>
<li>Update OWASP mappings to show that they’re based on the 2017 OWASP Top Ten. Thanks to <a href="https://gitlab.com/artem-fedorov"><code>@artem-fedorov</code></a> for this <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/merge_requests/196">community contribution</a>.</li>
<li>Handle additional cases in the <code>PyYAML.load</code> rule. Thanks to <a href="https://gitlab.com/stevep-arm"><code>@stevep-arm</code></a> for this <a href="https://gitlab.com/gitlab-org/security-products/analyzers/semgrep/-/merge_requests/237">community contribution</a>.</li>
<li>Significantly improve the descriptions and guidance for C rules based on revisions from the GitLab Vulnerability Research team.</li>
<li>Add support for <a href="https://docs.gitlab.com/#faster-easier-scala-scanning-in-sast">scanning Scala code</a>.</li>
</ul>
</li>
<li>The Flawfinder-based analyzer now supports <a href="/user/application_security/sast/#security-scanner-configuration">passing the <code>--neverignore</code> flag</a> to disregard “ignore” directives in comments. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/flawfinder/-/blob/master/CHANGELOG.md#v401">CHANGELOG</a> for further details.</li>
<li>The KICS-based analyzer is updated to KICS version 1.7.0. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/kics/-/blob/main/CHANGELOG.md#v401">CHANGELOG</a> for further details.</li>
<li>The MobSF-based analyzer now supports multiple modules and projects, which resolves several bug reports. See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/kics/-/blob/main/CHANGELOG.md#v401">CHANGELOG</a> for further details.</li>
</ul>
<p>Also, <a href="/update/deprecations/#secure-analyzers-major-version-update">as previously announced</a>, we increased the major version number of each analyzer as part of GitLab 16.0.</p>
<p>If you <a href="/user/application_security/sast/">include the GitLab-managed SAST template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml"><code>SAST.gitlab-ci.yml</code></a>) and run GitLab 16.0 or higher, you automatically receive these updates.
To remain on a specific version of any analyzer and prevent automatic updates, you can <a href="/user/application_security/sast/">pin its version</a>.</p>
<p>For previous changes, see <a href="https://about.gitlab.com/releases/2023/04/22/gitlab-15-11-released/#static-analysis-analyzer-updates">last month’s updates</a>.</p>
<h3 id="secret-detection-updates">Secret Detection updates</h3>
<!-- categories: Secret Detection -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/secret_detection/">Documentation</a> | <a href="/user/application_security/">Related issue</a></li></ul>
</div>

<p>We regularly release updates to the GitLab Secret Detection analyzer. During the GitLab 16.0 milestone, we:</p>
<ul>
<li>Added <a href="/user/application_security/secret_detection/">GitLab-managed detection rules</a> for:
<ul>
<li>Access tokens for the Meta, Oculus, and Instagram APIs.</li>
<li>Tokens for the Segment Public API.</li>
</ul>
</li>
<li>Updated the Gitleaks scanning engine to version 8.16.3.</li>
<li><a href="https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/merge_requests/212">Fixed a bug</a> that prevented scanning when a repository had only a single commit.</li>
<li>Incremented the analyzer major version to <code>5</code>, <a href="/update/deprecations/#secure-analyzers-major-version-update">as previously announced</a>.</li>
</ul>
<p>See the <a href="https://gitlab.com/gitlab-org/security-products/analyzers/secrets/-/blob/master/CHANGELOG.md#v501">CHANGELOG</a> for further details.</p>
<p>If you <a href="/user/application_security/secret_detection/">use the GitLab-managed Secret Detection template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml"><code>Secret-Detection.gitlab-ci.yml</code></a>) and run GitLab 16.0 or higher, you automatically receive these updates.
To remain on a specific version of any analyzer and prevent automatic updates, you can <a href="/user/application_security/secret_detection/">pin its version</a>.</p>
<p>For previous changes, see <a href="https://about.gitlab.com/releases/2023/04/22/gitlab-15-11-released/#static-analysis-analyzer-updates">last month’s updates</a>.</p>
<h3 id="browser-based-dast-performance-improvements">Browser-based DAST performance improvements</h3>
<!-- categories: DAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dast/browser/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9945">Related epic</a></li></ul>
</div>

<p>We have optimized the way that the browser-based DAST analyzer performs its scans. These improvements have significantly
decreased the amount of time that it takes to run a DAST scan with the browser-based analyzer. The following improvements have been made:</p>
<ul>
<li>Added log summary statistics to help determine where time is spent during a scan. This can be enabled by including the environment variable <code>DAST_BROWSER_LOG=&quot;stat:debug&quot;</code>.</li>
<li>Optimized passive checks by running them in parallel.</li>
<li>Optimized passive checks by caching regular expressions used when matching content in HTTP response bodies.</li>
<li>Optimized how DAST determines whether a page has finished loading. Now, we don’t wait for excluded document types or out-of-scope URLs.</li>
<li>Reduced waiting time for pages where the DOM stabilizes quickly after page load.</li>
</ul>
<p>With these improvements, we have seen browser-based DAST scan times reduced by 50%-80%, depending on the complexity and size of the
application being scanned. While this percentage decrease may not be seen in all scans, your browser-based DAST scans should now take significantly less time to complete.</p>
<h3 id="faster-easier-scala-scanning-in-sast">Faster, easier Scala scanning in SAST</h3>
<!-- categories: SAST -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/sast/#supported-languages-and-frameworks">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/362958">Related issue</a></li></ul>
</div>

<p>GitLab Static Application Security Testing (SAST) now offers Semgrep-based scanning for Scala code.
This work builds on our previous introduction of Semgrep-based Java scanning <a href="https://about.gitlab.com/releases/2022/04/22/gitlab-14-10-released/#faster-easier-java-scanning-in-sast">in GitLab 14.10</a>.
As with the other languages we have <a href="/user/application_security/sast/analyzers/#transition-to-semgrep-based-scanning">transitioned to Semgrep-based scanning</a>, Scala scanning coverage uses GitLab-managed detection rules to detect a variety of security issues.</p>
<p>The new Semgrep-based scanning runs significantly faster than the existing analyzer based on SpotBugs.
It also doesn’t need to compile your code before scanning, so it’s simpler to use.</p>
<p>GitLab’s Static Analysis and Vulnerability Research teams worked together to translate rules to the Semgrep format, preserving most existing rules.
We also updated, refined, and tested the rules as we converted them.</p>
<p>If you use <a href="/user/application_security/sast/">the GitLab-managed SAST template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml"><code>SAST.gitlab-ci.yml</code></a>), both Semgrep-based and SpotBugs-based analyzers now run whenever Scala code is found.
In GitLab Ultimate, the Security Dashboard combines findings from the two analyzers, so you won’t see duplicate vulnerability reports.</p>
<p>In a future release, we’ll change <a href="/user/application_security/sast/">the GitLab-managed SAST template</a> (<a href="https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml"><code>SAST.gitlab-ci.yml</code></a>) to only run the Semgrep-based analyzer for Scala code.
The SpotBugs-based analyzer will still scan code for other languages, including Groovy and Kotlin.
You can <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/412060">disable SpotBugs early</a> if you prefer to use only Semgrep-based scanning.</p>
<p>If you have any questions, feedback, or issues with the new Semgrep-based Scala scanning, please <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Bug&amp;add_related_issue=362958&amp;issue[title]=Feedback%20on%20SAST%20Semgrep%20Scala%20support&amp;issue[description]=%2Flabel%20~%22group%3A%3Astatic%20analysis%22">file an issue</a>, we’ll be glad to help.</p>
<h3 id="create-an-instance-runner-in-the-admin-area-as-a-user">Create an instance runner in the Admin Area as a user</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner/register/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/383139/">Related issue</a></li></ul>
</div>

<p>In this new workflow, adding a new runner to a GitLab instance requires authorized users to create a runner in the GitLab UI and include essential configuration metadata. With this method, the runner is now easily traceable to the user, which will help administrators troubleshoot build issues or respond to security incidents.</p>
<h3 id="trigger-job-mirror-status-of-downstream-pipeline-when-cancelled">Trigger job mirror status of downstream pipeline when cancelled</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/#triggerstrategy">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/220794">Related issue</a></li></ul>
</div>

<p>Previously, a trigger job configured with <code>strategy: depends</code> mirrored the job status of the downstream pipeline. If the downstream pipeline was in the <code>running</code> status, the trigger job was also marked as <code>running</code>. Unfortunately, if the downstream job did not comnplete and had a status <code>canceled</code>, the trigger job’s status was inaccurately <code>failed</code>.</p>
<p>In this release, we have updated trigger jobs with <code>strategy: depend</code> to reflect the downstream’s pipelines’s statis accurately. When a downstream pipeline is cancelled, the trigger also shows canceled.</p>
<p>This change may have an impact on your existing pipelines, especially if you have jobs that rely on the trigger job’s status being marked as failed. We recommend reviewing your pipeline configurations and making any necessary adjustments to accommodate this change in behavior.</p>
<h3 id="cicd-components">CI/CD components</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/epics/9945">Related epic</a></li></ul>
</div>

<p>In this release we are excited to announce the availability of CI/CD components, as an experimental feature. A CI/CD component is a reusable single-purpose building block that can be used to compose a part of a project’s CI/CD configuration, or even an entire pipeline.</p>
<p>When combined with the <a href="/ci/yaml/includes/"><code>inputs</code></a> keyword, a CI/CD component can be made much more flexible. You can configure the component to your exact needs by inputting values which can be used for job names, variables, credentials, and so on.</p>
<h3 id="rest-api-endpoint-to-create-a-runner">REST API endpoint to create a runner</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/api/users/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/390427">Related issue</a></li></ul>
</div>

<p>Users can now use the new REST API endpoint, <code>POST /user/runners</code>, to automate the creation of runners associated with a user. When a runner is created, an authentication token is generated. This new endpoint supports the Next GitLab Runner Token Architecture workflow.</p>
<h3 id="per-cache-fallback-cache-keys-in-cicd-pipelines">Per-cache fallback cache keys in CI/CD pipelines</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/caching/#per-cache-fallback-keys">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/22213">Related issue</a></li></ul>
</div>

<p>Using a cache is a great way to speed up your pipelines by reusing dependencies that were already fetched in a previous job or pipeline. But when there is no cache yet, the benefits of caching are lost because the job has to start from scratch, fetching every dependency.</p>
<p>We previously introduced a single fallback cache to use when no cache is found, that you can define globally. This was useful for projects that used a similar cache for all jobs. Now in 16.0 we’ve improved that feature with per-cache fallback keys. You can define up to 5 fallback keys for every job’s cache, greatly reducing the risk that a job runs without a useful cache. If you have a wide variety of caches, you can now use an appropriate fallback cache as needed.</p>
<h3 id="create-a-group-runner-as-a-user">Create a group runner as a user</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/383143/">Related issue</a></li></ul>
</div>

<p>In this new workflow, adding a new runner to a GitLab group requires authorized users to create a runner in the GitLab UI and include essential configuration metadata. With this method, the runner is now easily traceable to the user, which will help administrators troubleshoot build issues or respond to security incidents.</p>
<h3 id="configurable-maximum-number-of-included-cicd-configuration-files">Configurable maximum number of included CI/CD configuration files</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/settings/continuous_integration/">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/207270">Related issue</a></li></ul>
</div>

<p>The <code>include</code> keyword lets you compose your CI/CD configuration from multiple files. For example, you can split one
long <code>.gitlab-ci.yml</code> file into multiple files to increase readability, or reuse one CI/CD configuration file in multiple projects.</p>
<p>Previously, a single CI/CD configuration could include up to 150 files, but in GitLab 16.0 administrators can modify this limit to a different value in the instance settings.</p>
<h3 id="create-project-runners-as-a-user">Create project runners as a user</h3>
<!-- categories: Fleet Visibility -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/383144">Related issue</a></li></ul>
</div>

<p>In this new workflow, adding a new runner to a project requires authorized users to create a runner in the GitLab UI and include essential configuration metadata.</p>
<p>With this method, the runner is now easily traceable to the user, which will help administrators troubleshoot build issues or respond to security incidents.</p>
<h3 id="rate-limit-for-the-projectsidjobs-api-endpoint-reduced">Rate Limit for the <code>projects/:id/jobs</code> API endpoint reduced</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/security/rate_limits/#project-jobs-api-endpoint">Documentation</a> | <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/382985">Related issue</a></li></ul>
</div>

<p>Previously, the <code>GET /api/:version/projects/:id/jobs</code> was rate limited to 2000 authenticated requests per minute.</p>
<p>To move this in line with other rate limits and improve efficiency and reliability, we have lowered the limit to 600 authenticated requests per minute.</p>
<h3 id="gitlab-runner-160">GitLab Runner 16.0</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 16.0 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What’s new</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29217">GitLab Runner autoscaling plugin for Google Compute Engine - Experiment</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/16-0-stable/CHANGELOG.md">CHANGELOG</a></p>
<h2 id="related-topics">Related topics</h2>
<ul>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=type%3A%3Abug&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.0">Bug fixes</a></li>
<li><a href="https://gitlab.com/groups/gitlab-org/-/issues/?sort=updated_desc&amp;state=closed&amp;label_name%5B%5D=bug%3A%3Aperformance&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Acomplete&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Averification&amp;or%5Blabel_name%5D%5B%5D=workflow%3A%3Aproduction&amp;milestone_title=16.0">Performance improvements</a></li>
<li><a href="https://papercuts.gitlab.com/?milestone=16.0">UI improvements</a></li>
<li><a href="/update/deprecations/">Deprecations and removals</a></li>
<li><a href="/update/versions/">Upgrade notes</a></li>
</ul>
]]></content></entry><entry><title>GitLab 19.0 release notes - not yet released</title><link href="https://docs.gitlab.com/releases/19/gitlab-19-0-released/" rel="alternate"/><id>https://docs.gitlab.com/releases/19/gitlab-19-0-released/</id><published>0001-01-01T00:00:00Z</published><updated>0001-01-01T00:00:00Z</updated><author><name>The GitLab Team</name></author><content type="html"><![CDATA[<p>The following features are being delivered for GitLab 19.0.
These features are now available on GitLab.com.</p>
<p>We&rsquo;d also like to announce this month&rsquo;s <a href="https://contributors.gitlab.com/notable-contributors">Notable Contributor</a>:
Norman Debald!</p>
<p>We are excited to recognize <a href="https://gitlab.com/Modjo85">Norman</a>, a Level 3 contributor
with more than 40 merged improvements across GitLab since joining in May 2022.</p>
<!-- Copy this template, and paste it into the doc section where it belongs:

Primary feature, Agentic Core, Scale and Deployments, or Unified DevOps and Security.

Update all the information as needed.

### Feature explanation here

<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/yaml/">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/17754">Related issue</a></li></ul>
</div>


Now write 125 words or fewer to explain the value of this improvement.
Use phrases that start with, "In previous versions of GitLab, you couldn't... Now you can..."

Use present tense, and speak about "you" instead of "the user."
-->
<h2 id="primary-features">Primary features</h2>
<h3 id="group-level-custom-review-instructions-for-gitlab-duo">Group-level custom review instructions for GitLab Duo</h3>
<!-- categories: Duo Code Review -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Add-ons</span>: GitLab Duo Enterprise</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo/customize_duo/review_instructions/#configure-custom-review-instructions-for-a-group">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/21504">Related issue</a></li></ul>
</div>

<p>In previous versions of GitLab, you could only define custom review instructions for
GitLab Duo at the project level. Teams working across many projects in the
same group had to duplicate the same instructions in every project.</p>
<p>Now you can configure shared custom review instructions for an entire group and its subgroups.</p>
<p>Select a project in your group to use as a template. When GitLab Duo performs a code review, it combines the group-level <code>.gitlab/duo/mr-review-instructions.yaml</code> file with any instructions defined in the individual project.</p>
<p>Both Code Review Flow and GitLab Duo Code Review support group-level custom instructions.</p>
<h3 id="configure-work-item-types">Configure work item types</h3>
<!-- categories: Team Planning -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/work_items/configurable_work_item_types/">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/9365">Related epic</a></li></ul>
</div>

<p>Previously, work item types could be either an <strong>Issue</strong> or a <strong>Task</strong>. You can now configure custom work item types in a project to match the way your team plans and tracks work.</p>
<p>You can create or rename types to <strong>User Story</strong>, <strong>Bug</strong>, or <strong>Maintenance</strong>. Each work items displays with it&rsquo;s type name and a unique icon. The new types support custom fields and status lifecycles, and appear in your saved views and issue boards. Type configuration in the top-level group (GitLab.com) or organization (GitLab Self-Managed) cascades down to all projects.</p>
<p>You can also control which types are available for each project. Enable or disable a type across all projects at once, or let individual projects manage their own type visibility. When you disable a type in a project, existing work items are not affected.</p>
<h3 id="gitlab-secrets-manager-now-available-in-open-beta">GitLab Secrets Manager now available in open beta</h3>
<!-- categories: Secrets Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/secrets/secrets_manager/">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/epics/21731">Related epic</a></li></ul>
</div>

<p>In previous versions of GitLab, the GitLab Secrets Manager was available only to a closed beta
cohort. Most teams relied on external services such as HashiCorp Vault or AWS Secrets Manager.</p>
<p>The GitLab Secrets Manager is now available in open beta for Premium and Ultimate customers on
GitLab.com and GitLab Self-Managed. When the GitLab Secrets Manager is enabled, project and group Owners
can store, retrieve, and reference CI/CD secrets in GitLab. Secrets are scoped to a project or group
and are accessible to only pipeline jobs that explicitly request them.</p>
<p>During open beta, GitLab Secrets Manager follows the
<a href="/policy/development_stages_support/#beta">beta support policy</a> and might not be ready for production use.</p>
<p>To share feedback, see <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/598100">issue 598100</a>.</p>
<h3 id="gitlab-duo-developer-enhancements-for-merge-request-workflows">GitLab Duo Developer enhancements for merge request workflows</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/flows/foundational_flows/developer/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/228817">Related issue</a></li></ul>
</div>

<p>GitLab Duo Developer now supports multiple trigger methods: assign it to an issue, select
<strong>Generate MR</strong>, or <code>@mention</code> it in any issue or MR discussion thread to turn feedback,
To-do items, and design questions into code changes, follow-up MRs, or research summaries.</p>
<p>With <code>AGENTS.md</code> and <code>agent-config.yml</code>
configured, GitLab Duo Developer runs your tests and checks before committing. After a top-level
group or instance administrator enables the Developer Flow, GitLab automatically adds mention and assign triggers
to eligible projects.</p>
<h3 id="dependency-scanning-by-using-sbom-generally-available">Dependency scanning by using SBOM generally available</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20456">Related epic</a></li></ul>
</div>

<p>The GitLab SBOM-based dependency scanner is now generally available. Maven, Gradle, and Python
projects now have complete visibility into vulnerabilities across their full dependency tree,
including vulnerable packages introduced transitively, not just those declared directly.</p>
<p>The analyzer now includes automatic dependency resolution for Maven, Gradle, and Python projects.
When a lockfile or resolved dependency graph is not present, the analyzer automatically invokes tooling
to resolve the full transitive dependency graph before scanning. Dependency resolution is enabled by
default and requires little-to-no additional configuration beyond including the v2 Dependency Scanning template.</p>
<p>For projects where dependency resolution is not possible, the analyzer falls back to
manifest scanning. It parses <code>pom.xml</code>, <code>requirements.txt</code>, <code>build.gradle</code>, and
<code>build.gradle.kts</code> to identify direct dependencies. Manifest scanning ensures teams
always get a starting point for vulnerability coverage, even for projects without
lock or build files.</p>
<p>Manifest scanning is enabled by default and returns direct dependencies only.
For full transitive coverage, enable dependency resolution or provide a dependency lockfile or graph export manually.</p>
<h2 id="agentic-core">Agentic Core</h2>
<h3 id="gitlab-duo-core-moves-to-usage-based-billing">GitLab Duo Core moves to usage-based billing</h3>
<!-- categories: Duo Agent Platform, Duo Chat, Code Suggestions -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/subscription-add-ons/#gitlab-duo-core">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/600144">Related issue</a></li></ul>
</div>

<p>Starting in GitLab 19.0, GitLab Duo Core moves to usage-based billing. Code Suggestions in the Web IDE and desktop IDEs now consume <a href="/subscriptions/gitlab_credits/">GitLab Credits</a>.</p>
<p>GitLab Duo Chat is also changing. For GitLab Duo Core users, Chat is now agentic and runs on GitLab Duo Agent Platform. To use GitLab Duo Chat in the GitLab UI or desktop IDEs, enable GitLab Duo Agent Platform for your instance or top-level group.</p>
<h3 id="filter-exact-code-search-results-by-repository">Filter exact code search results by repository</h3>
<!-- categories: Global Search -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/search/exact_code_search/#syntax">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/488467">Related issue</a></li></ul>
</div>

<p>You can now filter exact code search results by repository. With the <code>repo:</code> syntax,
you can directly scope your search query to specific repositories or repository patterns
without having to go to individual projects.</p>
<p>For example, searching for <code>def authenticate repo:my-group/my-project</code> returns results
only from that repository. You can also use partial paths or patterns to match multiple repositories.</p>
<h3 id="merge-request-ready-event-trigger">Merge request ready event trigger</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/triggers/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/592454">Related issue</a></li></ul>
</div>

<p>You can now configure flows and external agents to run on the <strong>Merge request ready</strong> event.</p>
<p>When a draft merge request is marked as ready for review, GitLab Duo automatically runs the flow or external agent.</p>
<p>To configure a trigger, go to <strong>AI</strong> &gt; <strong>Triggers</strong> in your project.</p>
<p>This feature is behind the <code>merge_request_ready_flow_trigger</code> feature flag, disabled by default.</p>
<h3 id="claude-opus-47-now-available-in-gitlab-duo-agent-platform">Claude Opus 4.7 now available in GitLab Duo Agent Platform</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/model_selection/#supported-models">Documentation</a>, <a href="https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/work_items/2177">Related issue</a></li></ul>
</div>

<p>Claude Opus 4.7 is now available in GitLab Duo Agent Platform. Opus 4.7 delivers meaningful improvements to complex, multistep tasks that require sustained reasoning, precise instruction following, and self-verification before surfacing results. This includes flows supporting CI/CD pipelines, code review, vulnerability resolution, and more.</p>
<h3 id="support-for-self-hosted-gemini-models">Support for self-hosted Gemini models</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#compatible-models">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/21186">Related issue</a></li></ul>
</div>

<p>GitLab Duo Agent Platform Self-Hosted is now compatible with Gemini models. Gemini models support multiple flows, including the Code Review Flow, SAST Vulnerability Resolution Flow, Fix CI/CD Pipeline Flow, and more.</p>
<h3 id="expanded-open-source-model-support-in-gitlab-duo-agent-platform">Expanded open source model support in GitLab Duo Agent Platform</h3>
<!-- categories: Self-Hosted Models -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/gitlab_duo_self_hosted/supported_models_and_hardware_requirements/#supported-models">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/21186">Related issue</a></li></ul>
</div>

<p>GitLab Duo Agent Platform now supports additional open source models for self-hosted deployments, including Devstral 2 123B, GLM-5.1-FP8, and others. This helps customers power agentic workflows across a variety of environments, including offline and network-restricted deployments.</p>
<h3 id="per-session-tool-approvals-with-admin-controls">Per-session tool approvals with admin controls</h3>
<!-- categories: Duo Agent Platform, Duo Chat -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/gitlab_duo_chat/agentic_chat/#tool-approvals">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/596366">Related issue</a></li></ul>
</div>

<p>Before GitLab Duo Agentic Chat can use a tool on your behalf, it requires your approval. Each tool
invocation requires a separate approval.</p>
<p>Now, you can approve a trusted tool once for an entire session and streamline your workflows.</p>
<p>Administrators control whether tool approval for sessions is available. The following settings
cascade from instance to group to project:</p>
<ul>
<li><strong>On by default</strong></li>
<li><strong>Off by default</strong></li>
<li><strong>Always off</strong></li>
</ul>
<p>Groups and subgroups can modify the setting unless an administrator sets it to <strong>Always off</strong>.</p>
<p>The default setting is <strong>Off by default</strong>, ensuring each tool invocation requires explicit approval
unless an administrator changes it.</p>
<h3 id="resolve-merge-conflicts-with-gitlab-duo-beta">Resolve merge conflicts with GitLab Duo (Beta)</h3>
<!-- categories: Duo Agent Platform, Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/conflicts/#resolve-conflicts-with-gitlab-duo">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20688">Related issue</a></li></ul>
</div>

<p>In previous versions of GitLab, you had to resolve merge conflicts manually in
the GitLab UI or from the command line, even for straightforward cases.</p>
<p>Now GitLab Duo can autonomously analyze merge conflicts, edit the conflicting
files, create a commit, and push to the source branch. Trigger conflict
resolution from the <strong>Resolve conflicts</strong> page or directly from the merge
request widget. When complete, GitLab Duo posts a summary comment so reviewers
can see what changed.</p>
<p>GitLab Duo respects branch protection rules and does not force-push to
protected branches.</p>
<p>This feature is in beta and is gated behind the <code>mr_ai_resolve_conflicts</code> feature flag,
disabled by default.</p>
<h3 id="restrict-the-ai-catalog-to-a-group-hierarchy">Restrict the AI Catalog to a group hierarchy</h3>
<!-- categories: AI Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/ai_catalog/#restrict-the-ai-catalog-to-a-group-hierarchy">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/594617">Related issue</a></li></ul>
</div>

<p>Top-level group Owners can now restrict the AI Catalog to show only agents and flows owned by projects within their group hierarchy. This blocks agents, external agents, or flows not in this hierarchy from being visible or enabled by any user in that group.</p>
<h3 id="purchase-credits-on-the-free-tier-on-gitlab-self-managed">Purchase credits on the Free tier on GitLab Self-Managed</h3>
<!-- categories: Subscription Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/subscriptions/gitlab_credits/#buy-gitlab-credits">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/20165">Related issue</a></li></ul>
</div>

<p>Free tier users on GitLab Self-Managed can now unlock the full power of GitLab Duo Agent Platform, no Premium or Ultimate subscription required. Choose your monthly credit amount, commit to an annual term, and get instant access to AI-powered development tools. Credits refresh automatically each month, so your team always has what it needs to build faster and smarter.</p>
<h3 id="admin-defined-network-access-controls-for-agent-platform-remote-flows">Admin-defined network access controls for Agent Platform remote flows</h3>
<!-- categories: Duo Agent Platform -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/duo_agent_platform/environment_sandbox/#configure-a-network-policy">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/593149">Related issue</a></li></ul>
</div>

<p>Administrators can now define centralized network policies for GitLab Duo Agent Platform remote flows
directly in Settings. Top-level group administrators on GitLab.com, and instance administrators on
GitLab Self-Managed and Dedicated, can configure organization-wide domain denylists and allowlists
that projects inherit automatically. An additional setting controls whether projects can
extend the approved domain list with custom entries. Policies are enforced at runtime
across all remote flows, giving security and platform teams a consistent governance layer
for agent network egress.</p>
<h2 id="scale-and-deployments">Scale and Deployments</h2>
<h3 id="postgresql-17-minimum-requirement">PostgreSQL 17 minimum requirement</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/package_information/postgresql_versions/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/work_items/9792">Related issue</a></li></ul>
</div>

<p>The minimum supported version of PostgreSQL is now version 17. If you use the packaged PostgreSQL 16,
<a href="https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server">upgrade the packaged PostgreSQL server</a>
before installing GitLab 19.0.</p>
<h3 id="linux-package-support-for-ubuntu-2004-discontinued">Linux package support for Ubuntu 20.04 discontinued</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/install/package/#supported-platforms">Documentation</a>, <a href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/8915">Related issue</a></li></ul>
</div>

<p>Ubuntu 20.04 reached end of standard support in May 2025. From GitLab 19.0, Linux packages are no
longer provided for Ubuntu 20.04. GitLab 18.11 is the last release with packages for this
distribution. Before upgrading to GitLab 19.0, migrate to Ubuntu 22.04 or another
<a href="/install/package/#supported-platforms">supported operating system</a>.</p>
<h3 id="redis-6-support-removed">Redis 6 support removed</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/install/requirements/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/585839">Related issue</a></li></ul>
</div>

<p>Support for Redis 6 is removed in GitLab 19.0. If you use an external Redis 6 deployment, migrate
to Redis 7.2 or Valkey 7.2 before upgrading. The bundled Redis included with the Linux package has
used Redis 7 since GitLab 16.2 and is not affected.</p>
<h3 id="mattermost-removed-from-the-linux-package">Mattermost removed from the Linux package</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.mattermost.com/administration-guide/onboard/migrate-gitlab-omnibus.html">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590798">Related issue</a></li></ul>
</div>

<p>Bundled Mattermost is removed from the Linux package in GitLab 19.0. If you currently use the
bundled Mattermost, refer to
<a href="https://docs.mattermost.com/administration-guide/onboard/migrate-gitlab-omnibus.html">Migrating from the Linux package to Mattermost Standalone</a>
for migration instructions. Customers not using the bundled Mattermost are not impacted.</p>
<h3 id="linux-package-support-for-suse-distributions-discontinued">Linux package support for SUSE distributions discontinued</h3>
<!-- categories: Omnibus Package -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/install/docker/installation/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590801">Related issue</a></li></ul>
</div>

<p>Linux package support for SUSE distributions ends in GitLab 19.0, which affects openSUSE Leap 15.6,
SUSE Linux Enterprise Server 12.5, and SUSE Linux Enterprise Server 15.6. GitLab 18.11 is the last
version with Linux packages for these distributions. To continue to use SUSE distributions, migrate
to a <a href="/install/docker/installation/">Docker deployment of GitLab</a>.</p>
<h3 id="spamcheck-removed-from-linux-package-and-gitlab-helm-chart">Spamcheck removed from Linux package and GitLab Helm chart</h3>
<!-- categories: Omnibus Package, Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/reporting/spamcheck/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590796">Related issue</a></li></ul>
</div>

<p><a href="/administration/reporting/spamcheck/">Spamcheck</a> is removed from the Linux package and
GitLab Helm chart in GitLab 19.0. Customers not currently using Spamcheck are not impacted. If you
use the bundled Spamcheck, you can deploy it separately using
<a href="https://gitlab.com/gitlab-org/gl-security/security-engineering/security-automation/spam/spamcheck">Docker</a>.
No data migration is required.</p>
<h3 id="nginx-ingress-replaced-by-gateway-api-with-envoy-gateway">NGINX Ingress replaced by Gateway API with Envoy Gateway</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590800">Related issue</a></li></ul>
</div>

<p>Gateway API with Envoy Gateway becomes the default networking configuration in the GitLab Helm chart
in GitLab 19.0, replacing NGINX Ingress which reached end-of-life in March 2026. If migration to
Envoy Gateway is not immediately feasible, you can explicitly re-enable the bundled NGINX Ingress,
which remains available until its planned removal in GitLab 20.0. This change does not impact the
NGINX used in the Linux package, or Helm chart instances using an externally managed Ingress or
Gateway API controller.</p>
<h3 id="bundled-postgresql-redis-and-minio-removed-from-gitlab-helm-chart">Bundled PostgreSQL, Redis, and MinIO removed from GitLab Helm chart</h3>
<!-- categories: Cloud Native Installation -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/charts/installation/migration/bundled_chart_migration/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/590797">Related issue</a></li></ul>
</div>

<p>The bundled Bitnami PostgreSQL, Bitnami Redis, and MinIO charts are removed from the GitLab Helm
chart and GitLab Operator in GitLab 19.0 with no replacement. These components were intended only
for proof-of-concept and test environments and are not recommended for production use. If you run an
instance with any of these bundled services, follow the
<a href="https://docs.gitlab.com/charts/installation/migration/bundled_chart_migration/">migration guide</a>
to configure external services before upgrading to GitLab 19.0.</p>
<h3 id="reliable-scim-user-deprovisioning-for-large-groups">Reliable SCIM user deprovisioning for large groups</h3>
<!-- categories: User Management -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/development/internal_api/#group-scim-api">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/521324">Related issue</a></li></ul>
</div>

<p>For organizations managing large numbers of users through SCIM, deprovisioning group members
could time out and return <code>500</code> errors. SCIM <code>DELETE</code> and <code>PATCH</code> requests now return a
success response immediately. Membership removal is handled asynchronously, so identity
providers and SCIM clients receive consistent success responses.</p>
<h2 id="unified-devops-and-security">Unified DevOps and Security</h2>
<h3 id="auto-remediation-for-vulnerable-dependencies-experiment">Auto remediation for vulnerable dependencies (Experiment)</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/remediate/auto_remediation/">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/17403">Related epic</a></li></ul>
</div>

<p>Auto remediation for dependencies is now available as an experiment in GitLab 19.0. When dependency
scanning detects a vulnerable Ruby dependency with a known fix, GitLab automatically
opens a merge request to update it to a safe version without human input. Only Ruby projects are supported
in the experiment.</p>
<p>After each pipeline, GitLab identifies the highest-severity vulnerability with an
available patch or minor version upgrade. GitLab generates the manifest file change and
opens a merge request through a service account. The merge request then goes through
your project&rsquo;s standard review and approval workflow.</p>
<p>During the experiment, up to three auto-remediation merge requests can be open per
project at a time.</p>
<p>To share feedback or request to try out the experiment make a comment on <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/600511">epic 600511</a>.
To enable the experiment on your project, a GitLab team member must enable the <code>dependency_management_auto_remediation</code> feature flag for your project.</p>
<h3 id="dependency-scanning-in-security-configuration-profiles">Dependency scanning in security configuration profiles</h3>
<!-- categories: Security Testing Configuration -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/configuration/security_configuration_profiles/">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/19952">Related issue</a></li></ul>
</div>

<p>GitLab 18.11 introduced security configuration profiles for SAST and secret detection.
Now, dependency scanning is also available with the <strong>Dependency Scanning - Default</strong> profile.
This profile gives you a unified control surface to apply standardized SCA coverage across all
of your projects without editing a single CI/CD configuration file.</p>
<p>The profile activates two scan triggers:</p>
<ul>
<li><strong>Merge Request Pipelines</strong>: Automatically runs a dependency scanning scan each time new commits are pushed to a branch with an open merge request. Results include only new vulnerabilities introduced by the merge request.</li>
<li><strong>Branch Pipelines (default only)</strong>: Runs automatically when changes are merged or pushed to the default branch, providing a complete view of your default branch&rsquo;s dependency posture.</li>
</ul>
<h3 id="dependency-resolution-for-gradle-sbom-scanning">Dependency resolution for Gradle SBOM scanning</h3>
<!-- categories: Software Composition Analysis -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/application_security/dependency_scanning/dependency_scanning_sbom/#dependency-resolution">Documentation</a> | <a href="https://gitlab.com/groups/gitlab-org/-/work_items/590734">Related epic</a></li></ul>
</div>

<p>GitLab dependency scanning using SBOM now automatically generates a dependency graph (<code>gradle.graph.txt</code>)
for Gradle projects. Previously, Gradle dependency scanning required
you to generate a dependency graph
manually as part of your build. Now, when a graph file is not available, the analyzer
generates one automatically, removing this manual step for Java and Kotlin projects using Gradle.</p>
<h3 id="improved-array-support-for-cicd-inputs">Improved array support for CI/CD inputs</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/inputs/#access-individual-array-elements">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/587657">Related issue</a></li></ul>
</div>

<p>CI/CD inputs now have improved support for working with arrays.
Use the array index operator <code>[]</code> to access specific elements within array inputs.
This enhancement provides more flexible and powerful input interpolation capabilities in your pipeline configurations,
enabling you to reference individual array items directly without additional processing steps.</p>
<h3 id="select-multiple-values-for-pipeline-inputs">Select multiple values for pipeline inputs</h3>
<!-- categories: Pipeline Composition -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/inputs/#array-inputs-with-options">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/566155">Related issue</a></li></ul>
</div>

<p>Previously, you could only select a single value when selecting input options in the UI,
limiting flexibility for pipelines with more complex options.</p>
<p>Now when you run a pipeline with inputs from the UI, you can select multiple values from a dropdown list
and the selected values are combined into an array, for example <code>[&quot;option1&quot;,&quot;option2&quot;]</code>.
This makes it easy to restart services on multiple instances, build multiple Docker images,
run tests with multiple tag combinations, or perform any operation across multiple targets
in a single pipeline run.</p>
<h3 id="detailed-cicd-catalog-component-usage-analytics">Detailed CI/CD Catalog component usage analytics</h3>
<!-- categories: Component Catalog -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/components/#view-component-usage-details">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/579460">Related issue</a></li></ul>
</div>

<p>When you manage a CI/CD component in the GitLab Catalog, usage details are critical for
managing upgrades, enforcing compliance, and communicating breaking changes.
You need to know which projects use your components, and which versions they are using.
Previously, this information was not available, making it difficult to notify
the right maintainers, plan deprecations safely, or ensure projects stay
current with the latest security patches.</p>
<p>The component usage details view in the catalog resource page now shows
exactly which projects use each component, the version they are running,
and whether they are on the latest version or an outdated one. Projects
using older versions are surfaced at the top, so you can prioritize
outreach, drive adoption of security fixes, and ensure a smooth upgrade
path across your organization.</p>
<h3 id="configure-parallel-pipeline-limits-for-merge-trains">Configure parallel pipeline limits for merge trains</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/administration/instance_limits/#merge-train-parallel-pipeline-limit">Documentation</a>,</li><li>
      <span class="gl-font-bold">[Related issue](https</span>: //gitlab.com/gitlab-org/gitlab/-/work_items/374188)</li></ul>
</div>

<p>In previous versions of GitLab, you couldn&rsquo;t change the maximum of 20 parallel pipelines in a merge train,
which forced you to either overwhelm your runners or skip merge trains entirely.
Now you can configure the parallel pipeline limit per merge train to balance runner load and merge throughput.
You can set the limit per project or instance-wide.
Setting the limit to 1 means each merge request runs one at a time, against a clean target branch.</p>
<p>Thanks to <a href="https://gitlab.com/Modjo85">Norman Debald (@Modjo85)</a> for this community contribution.</p>
<h3 id="customize-default-merge-request-titles">Customize default merge request titles</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/title_templates/">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/16080">Related issue</a></li></ul>
</div>

<p>In previous versions of GitLab, the default title for a new merge request came from the
source branch or first commit, and you couldn&rsquo;t enforce a consistent naming convention
across your project.</p>
<p>Now you can configure a default merge request title template per project. Templates
support variables for the source branch, target branch, first commit subject, linked
issue ID, issue title, and a human-readable version of the source branch name. For example, the template
<code>Resolve %{issue_id} &quot;%{issue_title}&quot;</code> produces titles like <code>Resolve 123 &quot;Fix login bug&quot;</code>.
You can still edit the title before creating the merge request.</p>
<h3 id="secure-webhooks-with-hmac-signing-tokens">Secure webhooks with HMAC signing tokens</h3>
<!-- categories: Importers -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/integrations/webhooks/#signing-tokens">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/19367">Related issue</a></li></ul>
</div>

<p>The existing <code>X-Gitlab-Token</code> header sends a static secret in plain text,
making webhooks susceptible to interception and replay attacks.</p>
<p>You can now add a signing token to any webhook. GitLab uses
the signing token to compute an HMAC-SHA256 signature over:</p>
<ul>
<li>The unique webhook ID.</li>
<li>The request timestamp.</li>
<li>The webhook payload.</li>
</ul>
<p>GitLab then sends the result in the <code>webhook-signature</code> header alongside
<code>webhook-id</code> and <code>webhook-timestamp</code> headers, following the
<a href="https://www.standardwebhooks.com/">Standard Webhooks</a> specification.</p>
<p>You can recompute the signature to confirm requests genuinely came from GitLab
and that the payload has not been modified. By also validating the timestamp, you can reject replayed requests.</p>
<p>Thanks to <a href="https://gitlab.com/van.m.anderson">Van Anderson</a> and
<a href="https://gitlab.com/Modjo85">Norman Debald</a> for their community contributions!</p>
<h3 id="cross-project-pushes-using-cicd-job-tokens">Cross-project pushes using CI/CD job tokens</h3>
<!-- categories: Continuous Integration (CI) -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/ci/jobs/ci_job_token/#allow-cross-project-git-push-requests-from-allowlisted-projects">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/479907">Related issue</a></li></ul>
</div>

<p>In previous versions of GitLab, you could only use a CI/CD job token (<code>CI_JOB_TOKEN</code>) to push
to the same repository where the pipeline runs. Cross-project pushes required a personal access
token or deploy token.</p>
<p>You can now use a job token to push to another project when:</p>
<ol>
<li>The target project opts in.</li>
<li>The user who starts the pipeline has at least the Developer role in the target project.</li>
</ol>
<p>This feature is behind the <code>allow_push_to_allowlisted_projects</code> feature flag, disabled by default
in GitLab 19.0. Ask your administrator to enable it.</p>
<h3 id="mermaid-diagram-rendering-upgraded-to-version-11">Mermaid diagram rendering upgraded to version 11</h3>
<!-- categories: Markdown -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/markdown/#mermaid">Documentation</a>, <a href="https://gitlab.com/gitlab-org/gitlab/-/work_items/491514">Related issue</a></li></ul>
</div>

<p>GitLab now uses <a href="/user/markdown/#mermaid">Mermaid version 11</a> for rendering diagrams in Markdown.</p>
<p>Previously, GitLab supported Mermaid version 10. With this upgrade, you get access to all the new diagram types, syntax improvements, and bug fixes introduced in Mermaid 11, including enhanced rendering for flowcharts, sequence diagrams, and more.</p>
<h3 id="rapid-diffs-for-merge-request-reviews-beta">Rapid Diffs for merge request reviews (Beta)</h3>
<!-- categories: Code Review Workflow -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed</li><li>
      <span class="gl-font-bold">Links</span>: <a href="/user/project/merge_requests/changes/#rapid-diffs">Documentation</a>, <a href="https://gitlab.com/groups/gitlab-org/-/work_items/18457">Related issue</a></li></ul>
</div>

<p>In previous versions of GitLab, you would have to wait for the <strong>Changes</strong> tab to load all files before you could begin reviewing, which slowed down large reviews.</p>
<p>Now you can use Rapid Diffs to review merge requests with faster initial load, smoother
scrolling, and more responsive interactions across files. Rapid Diffs uses the same
technology that already powers the commits page.</p>
<p>Rapid Diffs is in beta. Some features from the classic diff experience aren&rsquo;t yet available. You can switch back at any time.</p>
<p><a href="https://www.youtube.com/watch?v=S-IzJnhoH6U">Watch the overview video</a> and share your
experience in the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/596236">feedback issue</a>.</p>
<h3 id="gitlab-runner-190">GitLab Runner 19.0</h3>
<!-- categories: GitLab Runner Core -->
<div class="availability gl-pl-4 gl-pr-4"><ul class="gl-list-none gl-p-0 gl-m-0"><li>
      <span class="gl-font-bold">Tier</span>: Free, Premium, Ultimate</li><li>
      <span class="gl-font-bold">Offering</span>: GitLab.com, GitLab Self-Managed, GitLab Dedicated, GitLab Dedicated for Government</li><li>
      <span class="gl-font-bold">Links</span>: <a href="https://docs.gitlab.com/runner">Documentation</a></li></ul>
</div>

<p>We’re also releasing GitLab Runner 19.0 today! GitLab Runner is the highly-scalable build agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.</p>
<h4 id="whats-new">What&rsquo;s New</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39231">Runner instrumentation: Feature negotiation, OTLP export client, and first <code>job_execution</code> span</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/26583">Add configurable prepare stage timeout to runner configuration</a></li>
</ul>
<h4 id="bug-fixes">Bug Fixes</h4>
<ul>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39403">Comprehensive fixes for <code>FF_SCRIPTS_TO_STEPS</code> feature flag implementation</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39402"><code>SignatureDoesNotMatch</code> error when downloading S3 cache</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39386">Runtime error when GitLab Runner runs in AWS with S3 cache</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39362">Broken RPM S3 download links for <code>amd64</code>, <code>arm64</code>, <code>arm</code>, and <code>armhf</code> in GitLab Runner 18.9.0 and later</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39292">Negative exit codes are reported incorrectly on Windows</a></li>
<li><a href="https://gitlab.com/gitlab-org/gitlab-runner/-/work_items/39235">Incorrect Kubernetes executor service container naming documentation</a></li>
</ul>
<p>The list of all changes is in the GitLab Runner <a href="https://gitlab.com/gitlab-org/gitlab-runner/blob/19-0-stable/CHANGELOG.md">CHANGELOG</a>.</p>
]]></content></entry></feed>