<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://about.gitlab.com/blog</id>
    <title>GitLab</title>
    <updated>2025-10-03T18:50:17.090Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>The GitLab Team</name>
    </author>
    <link rel="alternate" href="https://about.gitlab.com/blog"/>
    <link rel="self" href="https://about.gitlab.com/atom.xml"/>
    <subtitle>GitLab Blog RSS feed</subtitle>
    <icon>https://about.gitlab.com/favicon.ico</icon>
    <rights>All rights reserved 2025</rights>
    <entry>
        <title type="html"><![CDATA[How GitLab transforms embedded systems testing cycles]]></title>
        <id>https://about.gitlab.com/blog/how-gitlab-transforms-embedded-systems-testing-cycles/</id>
        <link href="https://about.gitlab.com/blog/how-gitlab-transforms-embedded-systems-testing-cycles/"/>
        <updated>2025-10-02T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Embedded developers know this cycle well: write code, wait days or weeks to test on a hardware test bench, discover bugs, fix them, then wait again. Virtual testing environments promise faster feedback, but most implementations create new problems such as environment sprawl and escalating costs.</p>
<p>GitLab's managed lifecycle environments solve these virtual testing challenges. Through virtual environment automation, GitLab accelerates embedded development cycles without the configuration complexity and cost overruns.</p>
<h2>Virtual testing challenges</h2>
<p>Virtual testing environments — simulated hardware setups that replicate embedded system behavior and real-world conditions — offer the potential to reduce hardware bottlenecks. Teams can test firmware on simulated processors, run model-in-the-loop (MIL) tests in MATLAB/Simulink, or verify software on virtual embedded systems without waiting for physical hardware access.</p>
<p>However, teams often implement virtual environments using one of two common approaches, both of which create unsustainable challenges.</p>
<h3>Flawed approach 1: Pipeline lifecycle environments</h3>
<p><strong>Pipeline lifecycle environments re-create the entire testing setup for every CI/CD run.</strong> When code changes trigger your CI/CD pipeline, the system provisions infrastructure, installs software simulations, and configures everything from scratch before running tests.</p>
<p>This approach works for simple scenarios but becomes inefficient as complexity rises. Consider software-in-the-loop (SIL) testing in a complex virtual environment, for example. Each pipeline run requires complete environment re-creation, including virtual processor provisioning, toolchain installations, and target configurations. <strong>These processes can eat up considerable time.</strong></p>
<p>Moreover, as embedded systems require more sophisticated virtual hardware configurations, the provisioning <strong>costs quickly add up.</strong></p>
<p>To avoid these rebuild costs and delays, many teams turn to long-lived environments that persist between test runs. But they come with downsides.</p>
<h3>Flawed approach 2: Long-lived environments</h3>
<p><strong>Long-lived environments persist indefinitely</strong> to avoid constant rebuilding. Developers request these environments from IT or DevOps teams, wait for approval, then need someone to manually provision the infrastructure. These environments are then tied to individual developers/teams rather than specific code changes, and they support ongoing development work across multiple projects.</p>
<p>While this eliminates rebuild overhead, <strong>it creates environment sprawl.</strong> Environments accumulate without a clear termination date. Infrastructure costs climb as environments consume resources indefinitely.</p>
<p>Long-lived environments also suffer from <strong>&quot;config rot&quot;</strong> — environments retain settings, cached data, or software versions from previous tests that can affect subsequent results. A test that should fail ends up passing due to the residue of previous testing.</p>
<p>Ultimately, managing long-lived environments is a manual process that slows development velocity and increases operational overhead.</p>
<p><strong>GitLab offers a third approach</strong> through “managed lifecycle environments.” This approach captures the benefits of both long-lived and pipeline lifecycle environments while avoiding the drawbacks.</p>
<h2>Solution: Managed lifecycle environments</h2>
<p>GitLab's managed lifecycle environments tie virtual testing setups to merge requests (<a href="https://docs.gitlab.com/user/project/merge_requests/">MRs</a>) rather than pipeline runs or individual developers. You can also think of them as “managed MR test environments.” When you create an MR for a new feature, GitLab automatically orchestrates the provisioning of necessary virtual testing environments. These environments persist throughout the entire feature development process.</p>
<h3>Key benefits</h3>
<ul>
<li>
<p><strong>Persistent environments without rebuilding:</strong> The same virtual environment handles multiple pipeline runs as you iterate on your feature. Whether you're running MIL tests in MATLAB/Simulink or SIL tests on specialized embedded processors, the environment remains configured and ready.</p>
</li>
<li>
<p><strong>Automatic cleanup:</strong> When you merge your feature and delete the branch, GitLab automatically triggers environment cleanup, eliminating environment sprawl.</p>
</li>
<li>
<p><strong>Single source of truth:</strong> The MR records all build results, test outcomes, and environment metadata in one location. Team members can track progress and collaborate without shuffling between different tools or spreadsheets.</p>
</li>
</ul>
<p>Watch this overview video to see how managed lifecycle environments work in practice:</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/9tfyVPK5DuI?si=Kj_xXNo02bnFBDhy&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>GitLab automates the entire testing workflow. Each time you run firmware tests, GitLab orchestrates testing in the appropriate virtual environment, records results, and provides full visibility into every pipeline run. This approach transforms complex virtual testing from a manual, error-prone process into automated, reliable workflows.</p>
<p><strong>The result:</strong> Teams get reusable environments without runaway costs. And they increase efficiency while maintaining clean, isolated testing setups for each feature.</p>
<p>See a demonstration of managed lifecycle environments for testing firmware on virtual hardware:</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/iWdY-kTlpH4?si=D6rpoulr9sv6Sl6E&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h2>Business impact</h2>
<p>GitLab's managed lifecycle environments deliver measurable improvements across embedded development workflows. Teams running MIL testing in MATLAB/Simulink and SIL testing on specialized processors like Infineon AURIX or BlackBerry QNX systems no longer face the tradeoff between constant environment rebuilds or uncontrolled environment sprawl. Instead, these complex virtual testing setups persist throughout feature development while automatically cleaning up when complete, enabling:</p>
<ul>
<li>Faster product development cycles</li>
<li>Shorter time-to-market</li>
<li>Lower infrastructure costs</li>
<li>Higher quality assurance</li>
</ul>
<h2>Start transforming virtual testing today</h2>
<p><a href="https://learn.gitlab.com/embedded-en/whitepaper-unlocking-agility-embedded-development"><strong>Download “Unlocking agility and avoiding runaway costs in embedded development”</strong></a> for a deeper exploration of managed lifecycle environments and learn how to accelerate embedded development workflows dramatically.</p>
]]></content>
        <author>
            <name>Matt DeLaney</name>
            <uri>https://about.gitlab.com/blog/authors/matt-delaney</uri>
        </author>
        <author>
            <name>Darwin Sanoy</name>
            <uri>https://about.gitlab.com/blog/authors/darwin-sanoy</uri>
        </author>
        <published>2025-10-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Greater AI choice in GitLab Duo: Claude Sonnet 4.5 arrives]]></title>
        <id>https://about.gitlab.com/blog/greater-ai-choice-in-gitlab-duo-claude-sonnet-4-5-arrives/</id>
        <link href="https://about.gitlab.com/blog/greater-ai-choice-in-gitlab-duo-claude-sonnet-4-5-arrives/"/>
        <updated>2025-09-29T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>GitLab now offers Claude Sonnet 4.5, Anthropic’s most advanced model for coding and real-world agents, directly in the GitLab Duo model selector.</p>
<p>Users now have the flexibility to choose Claude Sonnet 4.5 alongside other leading models, enhancing their <a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a> experience with upgrades in tool orchestration, context editing, and domain-specific capabilities. With top performance on <a href="https://www.anthropic.com/news/claude-sonnet-4-5">SWE-bench Verified (77.2%</a>) and strengths in cybersecurity, finance, and research-heavy workflows, GitLab users can apply Claude Sonnet 4.5 to bring sharper insights and deeper context to their development work.</p>
<p>&quot;Having Claude Sonnet 4.5 in GitLab is a big win for developers. It’s a really capable coding model, and, when you use it with the GitLab Duo Agent Platform, you get smarter help right in your workflows. It’s the kind of step that makes development easier,&quot; said Taylor McCaslin, Principal, Strategy and Operations for AI Partnerships at GitLab.</p>
<h2>GitLab Duo Agent Platform + Claude Sonnet 4.5</h2>
<p><a href="https://about.gitlab.com/gitlab-duo/agent-platform/">GitLab Duo Agent Platform</a> extends the value of Claude Sonnet 4.5 by orchestrating agents, connecting them to internal systems, and integrating them throughout the software lifecycle. This combination creates a uniquely GitLab experience — where advanced reasoning and problem-solving meet platform-wide context and security. The result is faster development, more accurate outcomes, and stronger organizational coverage, all delivered inside the GitLab workflow developers already use every day.</p>
<h2>Where you can use Claude Sonnet 4.5</h2>
<p>Claude Sonnet 4.5 is now available as a model option in GitLab Duo Agent Platform Agentic Chat on GitLab.com. You can choose Claude Sonnet 4.5 from the model selection dropdown to leverage its advanced coding capabilities for your development tasks.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1759180378/sopuv0msxrmhzt2dyxdi.png" alt="Dropdown selection for Claude Sonnet 4.5 in GitLab Duo"></p>
<p><strong>Note:</strong> Ability to select Claude Sonnet 4.5 in supported IDEs will be available soon.</p>
<h2>Get started</h2>
<p>GitLab Duo Pro and Enterprise customers can access Claude Sonnet 4.5 today. Visit our <a href="https://docs.gitlab.com/user/gitlab_duo/">documentation</a> to learn more about GitLab Duo capabilities and models.</p>
<p>Questions or feedback? Share your experience with us through the GitLab community.</p>
<blockquote>
<p>Want to try GitLab Ultimate with Duo Enterprise? <a href="https://about.gitlab.com/gitlab-duo/">Sign up for a free trial today.</a></p>
</blockquote>
]]></content>
        <author>
            <name>Tim Zallmann</name>
            <uri>https://about.gitlab.com/blog/authors/tim-zallmann</uri>
        </author>
        <published>2025-09-29T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agentic AI guides and resources]]></title>
        <id>https://about.gitlab.com/blog/agentic-ai-guides-and-resources/</id>
        <link href="https://about.gitlab.com/blog/agentic-ai-guides-and-resources/"/>
        <updated>2025-09-26T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<h2>Defining agentic AI</h2>
<p>Agentic AI is a type of artificial intelligence that leverages advanced language models and natural language processing to take independent action. Unlike traditional generative AI tools that require constant human direction, these systems can understand requests, make decisions, and execute multi-step plans to achieve goals. They tackle complex tasks by breaking them into manageable steps and employ adaptive learning to modify their approach when facing challenges.</p>
<p><a href="https://about.gitlab.com/topics/agentic-ai/">Learn more about agentic AI</a></p>
<h2>Agentic AI insights</h2>
<ul>
<li><a href="https://about.gitlab.com/the-source/ai/transform-development-with-agentic-ai-the-enterprise-guide/">Transform development with agentic AI: The enterprise guide</a></li>
<li><a href="https://about.gitlab.com/blog/gitlab-18-4-ai-native-development-with-automation-and-insight/">GitLab 18.4: AI-native development with automation and insight</a> With GitLab 18.4, teams create custom agents, unlock Knowledge Graph context, and auto-fix pipelines so developers stay focused and in flow.</li>
<li><a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">GitLab 18.3: Expanding AI orchestration in software engineering</a> Learn how we're advancing human-AI collaboration with enhanced Flows, enterprise governance, and seamless tool integration.</li>
<li><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> — Introducing the DevSecOps orchestration platform designed to unlock asynchronous collaboration between developers and AI agents.</li>
<li><a href="https://about.gitlab.com/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops/">GitLab Duo Agent Platform: What's next for intelligent DevSecOps</a> — GitLab Duo Agent Platform, a DevSecOps orchestration platform for humans and AI agents, leverages agentic AI for collaboration across the software development lifecycle.</li>
<li><a href="https://about.gitlab.com/the-source/ai/from-vibe-coding-to-agentic-ai-a-roadmap-for-technical-leaders/">From vibe coding to agentic AI: A roadmap for technical leaders</a> — Discover how to implement vibe coding and agentic AI in your development process to increase productivity while maintaining code quality and security.</li>
<li><a href="https://about.gitlab.com/the-source/ai/emerging-agentic-ai-trends-reshaping-software-development/">Emerging agentic AI trends reshaping software development</a> — Discover how agentic AI transforms development from isolated coding to intelligent workflows that enhance productivity while maintaining security.</li>
<li><a href="https://about.gitlab.com/the-source/ai/agentic-ai-unlocking-developer-potential-at-scale/">Agentic AI: Unlocking developer potential at scale</a> — Explore how agentic AI is transforming software development, moving beyond code completion to create AI partners that proactively tackle complex tasks.</li>
<li><a href="https://about.gitlab.com/the-source/ai/ai-trends-for-2025-agentic-ai-self-hosted-models-and-more/">Agentic AI, self-hosted models, and more: AI trends for 2025</a> — Discover key trends in AI for software development, from on-premises model deployments to intelligent, adaptive AI agents.</li>
<li><a href="https://about.gitlab.com/the-source/ai/how-agentic-ai-unlocks-platform-engineering-potential/">How agentic AI unlocks platform engineering potential</a> — Explore how agentic AI elevates platform engineering by automating complex workflows and scaling standardization.</li>
</ul>
<h2>The agentic AI ecosystem</h2>
<ul>
<li><a href="https://about.gitlab.com/topics/agentic-ai/ai-code-analysis/">AI-driven code analysis: The new frontier in code security</a></li>
<li><a href="https://about.gitlab.com/topics/agentic-ai/devops-automation-ai-agents/">DevOps automation &amp; AI agents</a></li>
<li><a href="https://about.gitlab.com/topics/agentic-ai/ai-augmented-software-development/">AI-augmented software development: Agentic AI for DevOps</a></li>
</ul>
<h2>Best practices for implementing agentic AI</h2>
<ul>
<li><a href="https://about.gitlab.com/the-source/ai/implementing-effective-guardrails-for-ai-agents/">Implementing effective guardrails for AI agents</a> — Discover essential security guardrails for AI agents in DevSecOps, from compliance controls and infrastructure protection to user access management.</li>
</ul>
<h2>GitLab's agentic AI offerings</h2>
<h3>GitLab Duo with Amazon Q</h3>
<ul>
<li><a href="https://about.gitlab.com/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/">GitLab Duo with Amazon Q: Agentic AI optimized for AWS generally available</a> — The comprehensive AI-powered DevSecOps platform combined with the deepest set of cloud computing capabilities speeds dev cycles, increases automation, and improves code quality.</li>
<li><a href="https://about.gitlab.com/blog/devsecops-agentic-ai-now-on-gitlab-self-managed-ultimate-on-aws/">DevSecOps + Agentic AI: Now on GitLab Self-Managed Ultimate on AWS</a> — Start using AI-powered, DevSecOps-enhanced agents in your AWS GitLab Self-Managed Ultimate instance. Enjoy the benefits of GitLab Duo and Amazon Q in your organization.</li>
<li><a href="https://about.gitlab.com/partners/technology-partners/aws/">GitLab Duo with Amazon Q partner page</a></li>
</ul>
<p>Watch GitLab Duo with Amazon Q in action:</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1075753390?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Technical Demo: GitLab Duo with Amazon Q&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h4>Guided tour</h4>
<p>Click on the image to start a tour of GitLab Duo with Amazon Q:</p>
<p><a href="https://gitlab.navattic.com/duo-with-q"><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673568/Blog/Content%20Images/Screenshot_2025-05-07_at_7.24.45_AM.png" alt="GitLab Duo with Amazon Q interactive tour"></a></p>
<h4>GitLab Duo with Amazon Q tutorials</h4>
<ul>
<li><a href="https://about.gitlab.com/blog/enhance-application-quality-with-ai-powered-test-generation/">Enhance application quality with AI-powered test generation</a> — Learn how GitLab Duo with Amazon Q improves the QA process by automatically generating comprehensive unit tests.</li>
<li><a href="https://about.gitlab.com/blog/gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes/">GitLab Duo + Amazon Q: Transform ideas into code in minutes</a> — The new GitLab Duo with Amazon Q integration analyzes your issue descriptions and automatically generates complete working code solutions, accelerating development workflows.</li>
<li><a href="https://about.gitlab.com/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q/">Accelerate code reviews with GitLab Duo and Amazon Q</a> — Use AI-powered agents to optimize code reviews by automatically analyzing merge requests and providing comprehensive feedback on bugs, readability, and coding standards.</li>
<li><a href="https://about.gitlab.com/blog/speed-up-code-reviews-let-ai-handle-the-feedback-implementation/">Speed up code reviews: Let AI handle the feedback implementation</a> — Discover how GitLab Duo with Amazon Q automates the implementation of code review feedback through AI, transforming a time-consuming manual process into a streamlined workflow.</li>
</ul>
<h3>GitLab Duo Agent Platform</h3>
<ul>
<li><a href="https://about.gitlab.com/blog/gitlab-duo-chat-gets-agentic-ai-makeover/">GitLab Duo Chat gets agentic AI makeover</a> — Our new Duo Chat experience, currently an experimental release, helps developers onboard to projects, understand assignments, implement changes, and more.
Watch GitLab Duo Agent Platform in action:
&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1095679084?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Agent Platform Demo Clip&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</li>
</ul>
<h4>GitLab Agent Platform tutorials and use cases</h4>
<ul>
<li><a href="https://about.gitlab.com/blog/vibe-coding-with-gitlab-duo-agent-platform-issue-to-mr-flow/">Vibe coding with GitLab Duo Agent Platform: Issue to MR Flow</a> - Learn how to update your application in minutes with our newest agent Flow that takes developers from idea to code.</li>
<li><a href="https://about.gitlab.com/blog/get-started-with-gitlab-duo-agentic-chat-in-the-web-ui/">Get started with GitLab Duo Agentic Chat in the web UI</a> - Learn about our new GitLab Duo AI feature that automates tasks by breaking down complex problems and executing operations across multiple sources.</li>
<li><a href="https://about.gitlab.com/blog/custom-rules-duo-agentic-chat-deep-dive/">Custom rules in GitLab Duo Agentic Chat for greater developer efficiency</a> — Discover how AI can understand your codebase, follow your conventions, and generate production-ready code with minimal review cycles.</li>
<li><a href="https://about.gitlab.com/blog/accelerate-learning-with-gitlab-duo-agent-platform/">Accelerate learning with GitLab Duo Agent Platform</a> — Learn how agentic AI helped generate comprehensive gRPC documentation in minutes, not hours.</li>
<li><a href="https://about.gitlab.com/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab/">Fast and secure AI agent deployment to Google Cloud with GitLab</a></li>
</ul>
<h2>Learn more with GitLab University</h2>
<ul>
<li><a href="https://university.gitlab.com/pages/ai">Get Started with GitLab Duo coursework</a></li>
<li><a href="https://university.gitlab.com/learning-paths/gitlab-duo-enterprise-learning-path">GitLab Duo Enterprise Learning Path</a></li>
</ul>
<h2>More AI resources</h2>
<ul>
<li><a href="https://about.gitlab.com/developer-survey/2024/ai/">2024 Global DevSecOps Survey: Navigating AI maturity in DevSecOps</a></li>
<li><a href="https://about.gitlab.com/topics/devops/the-role-of-ai-in-devops/">The Role of AI in DevOps</a></li>
<li><a href="https://about.gitlab.com/blog/categories/ai-ml/">The latest AI/ML articles from GitLab</a></li>
<li><a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a></li>
<li><a href="https://about.gitlab.com/gitlab-duo/agent-platform/">GitLab Duo Agent Platform</a></li>
</ul>
]]></content>
        <author>
            <name>GitLab</name>
            <uri>https://about.gitlab.com/blog/authors/gitlab</uri>
        </author>
        <published>2025-09-26T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab Duo Agent Platform adds support for Model Context Protocol]]></title>
        <id>https://about.gitlab.com/blog/duo-agent-platform-with-mcp/</id>
        <link href="https://about.gitlab.com/blog/duo-agent-platform-with-mcp/"/>
        <updated>2025-09-26T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Artificial intelligence (AI) can accelerate development by generating code,
debugging, and automating routine tasks. But on its own, it’s limited to
trained data or public sources, while developers often need access to
internal systems like project trackers, dashboards, databases, design files
in Figma, or documents in Google Drive.</p>
<p>Now integrated into <a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">GitLab Duo Agent Platform</a>, the Model Context Protocol (<a href="https://about.gitlab.com/topics/ai/model-context-protocol/">MCP</a>) gives AI secure access to internal tools so developers can get comprehensive assistance directly within their workflows.</p>
<h2>What is MCP?</h2>
<p>MCP, first introduced by Anthropic in 2024, is an open standard that connects AI with data and tools. It works as a secure two-way channel: MCP clients (AI applications, autonomous agents, or development tools) request data or actions, and MCP servers provide trusted, authorized responses from their connected data sources.</p>
<p>MCP servers act as secure bridges to various systems: They can connect to databases, APIs, file systems, cloud services, or any external tool to retrieve and provide data. This enables AI tools and agents to go beyond their initial training data by allowing them to access real-time information and execute actions, such as rescheduling meetings or checking calendar availability, while maintaining strict security, privacy, and audit controls.</p>
<h2>Why AI use MCP instead of APIs?</h2>
<p>You may ask: Why use MCP if AI can already call system APIs directly? The challenge is that each API has its own authentication, data formats, and behaviors, which would require AI to use custom connectors for every system and continuously maintain them as APIs evolve, making direct integrations complex and error-prone. MCP addresses this by providing a standardized, secure interface that handles authentication, permissions, and data translation. This enables AI tools to connect reliably to any system, while simplifying integration and ensuring consistent, safe behavior.</p>
<h2>GitLab's MCP support</h2>
<p>GitLab extends <a href="https://about.gitlab.com/blog/gitlab-duo-chat-gets-agentic-ai-makeover/">Duo Agentic Chat</a> with MCP support, shattering the barriers that previously isolated AI from the tools developers use every day. This empowers developers to access their entire toolkit directly from their favorite IDE, in natural language, enabling GitLab Duo Agent Platform to deliver comprehensive assistance without breaking developer flow or forcing disruptive context switches.</p>
<p>GitLab provides comprehensive MCP support through two complementary workflows:</p>
<ul>
<li>
<p><strong><a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_clients/">MCP client workflow</a>:</strong> Duo Agent Platform serves as an MCP client, allowing features to access various external tools and services.</p>
</li>
<li>
<p><strong><a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/">MCP server workflow</a>:</strong> GitLab also provides MCP server capabilities, enabling AI tools and applications like Claude Desktop, Cursor, and other MCP-compatible tools to connect securely to your GitLab instance.</p>
</li>
</ul>
<h2>Interactive walkthrough demo of the MCP client workflow</h2>
<p><strong>Picture this common Monday morning scenario:</strong> Your company's checkout service is throwing timeout errors. Customers can't complete purchases, and you need to investigate fast. Normally, you'd open Jira to review the incident ticket, scroll through Slack for updates, and check Grafana dashboards for error spikes. With GitLab's MCP support, you can do all of this in natural language directly from the chat in your IDE. MCP correlates data across all your systems, giving you the full picture instantly, without leaving your development workflow.</p>
<p>To experience this capability firsthand, we've created an <a href="https://gitlab.navattic.com/mcp">interactive walkthrough</a> illustrating the payment service scenario above. Click the image below to start the demo.</p>
<p><a href="https://gitlab.navattic.com/mcp"><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758206468/osf0wkwe1l45oc6zjdhr.png" alt="MCP walkthrough"></a></p>
<h2>Setting up GitLab MCP client</h2>
<p>Before you can start querying data through <a href="https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/">GitLab Duo Agentic Chat</a> or the <a href="https://docs.gitlab.com/user/duo_agent_platform/flows/software_development/">software development flow</a>, you need to configure MCP in your development environment. The steps include:</p>
<ul>
<li>
<p><strong>Turn on Feature preview</strong> — In your Group settings, navigate to <strong>GitLab Duo</strong> in the left sidebar, then check the box for &quot;Turn on experiment and beta GitLab Duo features&quot; under the <strong>Feature preview</strong> section.</p>
</li>
<li>
<p><strong>Turn on MCP for your group</strong> — Enable MCP support in your GitLab group settings to allow Duo features to connect to external systems.</p>
</li>
<li>
<p><strong>Set up MCP servers</strong> — Define the MCP servers in JSON format in the <code>mcp.json</code> file. Create the file in this location:</p>
<ul>
<li><strong>Windows:</strong> <code>C:\Users\&lt;username&gt;\AppData\Roaming\GitLab\duo\mcp.json</code></li>
<li><strong>All other operating systems:</strong> <code>~/.gitlab/duo/mcp.json</code></li>
</ul>
</li>
</ul>
<p>For workspace-specific configurations, see <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_clients/#create-workspace-configuration">workspace configuration setup</a>.</p>
<pre><code class="language-json">
{
  &quot;mcpServers&quot;: {
    &quot;server-name&quot;: {
      &quot;type&quot;: &quot;stdio&quot;,
      &quot;command&quot;: &quot;path/to/server&quot;,
      &quot;args&quot;: [&quot;--arg1&quot;, &quot;value1&quot;],
      &quot;env&quot;: {
        &quot;ENV_VAR&quot;: &quot;value&quot;
      }
    },
    &quot;http-server&quot;: {
      &quot;type&quot;: &quot;http&quot;,
      &quot;url&quot;: &quot;http://localhost:3000/mcp&quot;
    },
    &quot;sse-server&quot;: {
      &quot;type&quot;: &quot;sse&quot;,
      &quot;url&quot;: &quot;http://localhost:3000/mcp/sse&quot;
    }
  }
}

</code></pre>
<ul>
<li>Install and configure your IDE — Ensure VSCodium or Visual Studio Code is installed along with the GitLab Workflow extension (Version 6.28.2 or later for basic MCP support, 6.35.6 or later for full support).</li>
</ul>
<p>For full step-by-step instructions, configuration examples, and troubleshooting tips, see the <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_clients/">GitLab MCP clients documentation</a>.</p>
<h2>Example project</h2>
<p>To complement the walkthrough, we are sharing the project that served as its <strong>foundation</strong>. This project allows you to reproduce the same flow in your own environment and explore GitLab's MCP capabilities hands-on.</p>
<p>It demonstrates MCP functionality in a simulated enterprise setup, using mock data from Jira, Slack, and Grafana to model an incident response scenario. The included <code>mcp.json</code> configuration shows how to connect to a local MCP server (<code>enterprise-data-v2</code>) or optionally extend the setup with AWS services for cloud integration.</p>
<pre><code class="language-json">
{
  &quot;mcpServers&quot;: {
    &quot;enterprise-data-v2&quot;: {
      &quot;type&quot;: &quot;stdio&quot;, 
      &quot;command&quot;: &quot;node&quot;,
      &quot;args&quot;: [&quot;src/server.js&quot;],
      &quot;cwd&quot;: &quot;/path/to/your/project&quot;
    },
    &quot;aws-knowledge&quot;: {
      &quot;type&quot;: &quot;stdio&quot;
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [&quot;mcp-remote&quot;, &quot;https://knowledge-mcp.global.api.aws&quot;]
    },
    &quot;aws-console&quot;: {
      &quot;type&quot;: &quot;stdio&quot;
      &quot;command&quot;: &quot;npx&quot;, 
      &quot;args&quot;: [&quot;@imazhar101/mcp-aws-server&quot;],
      &quot;env&quot;: {
        &quot;AWS_REGION&quot;: &quot;YOUR_REGION&quot;,
        &quot;AWS_PROFILE&quot;: &quot;default&quot;
      }
    }
  }
}

</code></pre>
<blockquote>
<p><strong>Security note:</strong> The <code>aws-console</code> uses a community-developed MCP server package (<code>@imazhar101/mcp-aws-server</code>) for AWS integration that has not been independently verified.
This is intended for demonstration and learning purposes only. For production use, evaluate packages thoroughly or use official alternatives.</p>
<p>Additionally, configure AWS credentials using AWS CLI profiles or IAM roles rather than hardcoding them in the configuration file. The AWS SDK will automatically discover credentials from your environment, which is the recommended approach for enterprise governance and security compliance.</p>
</blockquote>
<p>To get started, <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/mcp/gitlab-duo-mcp-demo.git">clone the project</a>, install dependencies with <code>npm install</code>, then start the local MCP server with <code>npm start</code>. Create an <code>~/.gitlab/duo/mcp.json</code> file with the configuration above, update the file path to match your local setup, and restart VS Code to load the MCP configuration. Optionally, add your AWS credentials to experience live cloud integration.</p>
<p>Clone the project here: <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/mcp/gitlab-duo-mcp-demo.git">GitLab Duo MCP Demo</a>.</p>
<h2>Example prompts to try with the demo project</h2>
<p>Once you've configured the example project, you can start exploring your data and tools directly from GitLab Duo Agentic Chat in your IDE. Here are some prompts you can try:</p>
<ul>
<li>&quot;What tools can you access through MCP?&quot;</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203432/xmahjenvoa82ov3kttqx.png" alt="What tools can you access through MCP?"></p>
<ul>
<li>&quot;Show me recent Slack discussions about the database issues.&quot;</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203432/wdwp5xzq6umeanb1xwbq.png" alt="Slack discussion about tools to access through MCP"></p>
<h2>GitLab MCP server capabilities</h2>
<p>So far, we've looked at how GitLab Duo Agent Platform acts as an MCP client, connecting to external MCP servers. Now, let's explore the GitLab MCP server capabilities.</p>
<p>The GitLab MCP server lets AI tools like Cursor or Claude Desktop connect securely to your GitLab instance and work with your development data through natural language. Authentication is handled through OAuth 2.0 Dynamic Client Registration, so AI tools can register automatically and access your GitLab data with proper authorization.</p>
<p>Currently, the server supports:</p>
<ul>
<li><strong>Issues</strong> — get details or create new issues</li>
<li><strong>Merge requests</strong> — view details, commits, and file changes</li>
<li><strong>Pipelines</strong> — list jobs and pipelines for merge requests</li>
<li><strong>Server info</strong> — check the MCP server version</li>
</ul>
<p>For the complete list of available tools and capabilities, see the <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/#available-tools-and-capabilities">MCP server docs</a>.</p>
<h2>Interactive walkthrough: GitLab MCP server in action</h2>
<p>Experience the GitLab MCP server firsthand with our <a href="https://gitlab.navattic.com/gitlab-mcp-server">interactive walkthrough</a>.</p>
<p>It guides you through setting up Cursor with the MCP server and using Cursor Chat to securely connect to your GitLab instance. You'll see how to perform actions like viewing issues, creating a new issue, and checking merge requests, all directly through natural language, without leaving your development environment.</p>
<p><a href="https://gitlab.navattic.com/gitlab-mcp-server"><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203431/y2zdd71miiw0pkwd0a5a.png" alt="MCP server walkthrough"></a></p>
<h3>How to configure MCP server in your AI tool</h3>
<p><strong>Prerequisites:</strong></p>
<ul>
<li>
<p>Ensure <strong>Node.js</strong> and <strong>npm</strong> are installed</p>
</li>
<li>
<p>Verify that <code>npx</code> is globally accessible by running <code>npx --version</code> in your terminal</p>
</li>
</ul>
<ol>
<li>
<p><strong>Enable feature flags</strong></p>
<ul>
<li>Activate <code>mcp_server</code> and <code>oauth_dynamic_client_registration</code> in your GitLab instance.</li>
</ul>
</li>
<li>
<p><strong>Add GitLab MCP server configuration to your AI tool</strong></p>
<ul>
<li>Add the MCP server entry to your tool's configuration file (<code>mcp.json</code> for Cursor, <code>claude_desktop_config.json</code> for Claude Desktop):</li>
</ul>
</li>
</ol>
<pre><code class="language-json">{
  &quot;mcpServers&quot;: {
    &quot;GitLab&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [
        &quot;mcp-remote&quot;,
        &quot;https://&lt;your-gitlab-instance&gt;/api/v4/mcp&quot;,
        &quot;--static-oauth-client-metadata&quot;,
        &quot;{\&quot;scope\&quot;: \&quot;mcp\&quot;}&quot;
      ]
    }
  }
}
</code></pre>
<h3>Register and authenticate</h3>
<p>On first connection, the AI tool will:</p>
<ul>
<li>
<p>Automatically register as an OAuth application</p>
</li>
<li>
<p>Request authorization for the mcp scope</p>
</li>
</ul>
<h3>Authorize in browser</h3>
<p>When connecting, the MCP client will automatically open your default browser to complete the OAuth flow. Review and approve the request in GitLab to grant access and receive an access token for secure API access.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203431/szkjoqkdxstdbdh4eirv.png" alt="Access request"></p>
<h3>Using the MCP server</h3>
<p>Once your AI tool is connected to the MCP server, you can securely fetch and act on GitLab data (issues, merge requests, and pipelines) directly from your development environment using natural language. For example:</p>
<ul>
<li>
<p><code>Get details for issue 42 in project 123</code></p>
</li>
<li>
<p><code>Create a new issue titled &quot;Fix login bug&quot; with description about password special characters</code></p>
</li>
<li>
<p><code>Show me all commits in merge request 15 from the gitlab-org/gitlab project</code></p>
</li>
<li>
<p><code>What files were changed in merge request 25?</code></p>
</li>
<li>
<p><code>Show me all jobs in pipeline 12345</code></p>
</li>
</ul>
<blockquote>
<p>This feature is experimental, controlled by a feature flag, and not yet ready for production use.</p>
</blockquote>
<p>For full step-by-step instructions, configuration examples, and troubleshooting tips, see the <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/">GitLab MCP server documentation</a>.</p>
<h2>Summary</h2>
<p>GitLab Duo Agent Platform introduces supports for MCP, enabling AI-powered development workflows like never before. With MCP support, GitLab acts as both a client and a server:</p>
<ul>
<li>
<p><strong>MCP Client:</strong> GitLab Duo Agent Platform can securely access data and tools from external systems, bringing rich context directly into the IDE.</p>
</li>
<li>
<p><strong>MCP server:</strong> External AI tools like Cursor or Claude Desktop can connect to your GitLab instance, access project data, and perform actions, all while maintaining strict security and privacy.</p>
</li>
</ul>
<p>This bidirectional support reduces context switching, accelerates developer workflows, and ensures AI can provide meaningful assistance across your entire toolkit.</p>
<h2>Try it today</h2>
<p><a href="https://about.gitlab.com/gitlab-duo/agent-platform/">Try the beta of GitLab Duo Agent Platform</a> and explore MCP capabilities.</p>
<h2>Read more</h2>
<ul>
<li>
<p><a href="https://about.gitlab.com/blog/gitlab-18-4-ai-native-development-with-automation-and-insight/">GitLab 18.4: AI-native development with automation and insight</a></p>
</li>
<li>
<p><a href="https://about.gitlab.com/blog/agentic-ai-guides-and-resources/">Agentic AI guides and resources</a></p>
</li>
<li>
<p><a href="https://about.gitlab.com/topics/ai/model-context-protocol/">What is Model Context Protocol?</a></p>
</li>
</ul>
]]></content>
        <author>
            <name>Itzik Gan Baruch</name>
            <uri>https://about.gitlab.com/blog/authors/itzik-gan baruch</uri>
        </author>
        <published>2025-09-26T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab named a Leader in the 2025 Gartner Magic Quadrant for DevOps Platforms]]></title>
        <id>https://about.gitlab.com/blog/gitlab-named-a-leader-in-the-2025-gartner-magic-quadrant-for-devops-platforms/</id>
        <link href="https://about.gitlab.com/blog/gitlab-named-a-leader-in-the-2025-gartner-magic-quadrant-for-devops-platforms/"/>
        <updated>2025-09-25T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>For the third consecutive year, GitLab has been named a <strong>Leader in the 2025 Gartner® Magic Quadrant™ for DevOps Platforms</strong>, based on Ability to Execute and Completeness of Vision. More importantly, GitLab ranks 1st in 4 out of 6 use cases — Agile Software Delivery, Cloud-Native Application Delivery, Platform Engineering, and Regulated Delivery — in the accompanying 2025 Gartner® Critical Capabilities for DevOps Platforms report.</p>
<p>We believe this recognition validates our comprehensive platform strategy at a critical moment for software development. Organizations are racing to adopt AI-powered capabilities while maintaining security, compliance, and operational excellence. Success demands a unified platform approach that transforms how teams collaborate and deliver value.</p>
<p>Whether our customers are delivering agile software, building cloud-native applications, or engineering platforms, GitLab empowers them to collaborate in lockstep with AI agents to ship secure and reliable software, faster.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758812615/sfchvkvtczmzqlaalk7y.png" alt="2025 Gartner® Magic Quadrant™ for DevOps Platforms"></p>
<p>&lt;p&gt;&lt;/p&gt;</p>
<blockquote>
<p><a href="https://about.gitlab.com/gartner-magic-quadrant/">Download the reports</a> to learn more.</p>
</blockquote>
<h2>Faster time to value</h2>
<p>Our mission is to enable everyone to contribute to and co-create the software that powers our world. <a href="https://about.gitlab.com/blog/gitlab-18-4-ai-native-development-with-automation-and-insight/">The rapid pace of our innovation agenda</a> demonstrates that we are far from finished. We have shipped new solutions to our customers every month for 150+ months, and that tradition will continue.</p>
<p>As we lead the industry, we remain committed to helping our customers translate these new capabilities into business value.</p>
<p>We firmly believe that, in this era of accelerating AI-powered innovation across the technology ecosystem, <a href="https://about.gitlab.com/blog/why-are-organizations-moving-to-a-unified-devsecops-platform/">a unified platform approach</a> to tackle our customers’ toughest engineering challenges has never been more important than today. This approach enables organizations to reduce integration overhead, close security gaps, and adopt innovation without disrupting existing software delivery workflows.</p>
<p>Here are a few examples:</p>
<ul>
<li><strong>Accelerate releases with agentic AI:</strong> Fragmented toolchains slow down code reviews and testing. GitLab Duo agents and flows automate tasks like code reviews, test generation, and vulnerability triage in the context of the full platform, helping teams shorten cycle times and improve quality.</li>
<li><strong>Build securely from the start:</strong> Many organizations treat security as an afterthought, leading to costly rework and compliance gaps. GitLab embeds scanning, policy enforcement, and compliance checks into everyday workflows, catching risks earlier without slowing developers down.</li>
<li><strong>Deploy with flexibility:</strong> Teams with strict regulatory or operational constraints need deployment options beyond multi-tenant SaaS. GitLab supports SaaS, self-managed, air-gapped, and <a href="https://about.gitlab.com/press/releases/2025-05-19-gitlab-announces-gitlab-achieves-fedramp-moderate-authorization/">FedRAMP Moderate Authorized</a> environments, ensuring customers maintain control where competitors cannot.</li>
<li><strong>Deliver consistent innovation:</strong> Tool fragmentation makes adopting new features risky and disruptive. GitLab’s monthly releases deliver new capabilities, such as <a href="https://about.gitlab.com/gitlab-duo/agent-platform/">GitLab Duo Agent Platform</a>, expanded AI governance, and cloud integrations that teams can adopt without retooling.</li>
</ul>
<h2>Customer use cases that matter most</h2>
<p>Together with the Magic Quadrant, we think the 2025 Gartner Critical Capabilities for DevOps Platforms report evaluates how well platforms serve real-world customer scenarios. GitLab ranked 1st in 4 out of 6 use cases.</p>
<p>GitLab supports the following areas of innovation:</p>
<ul>
<li><a href="https://about.gitlab.com/platform/"><strong>Integrated toolset</strong></a> for cloud-native delivery and enterprise scale</li>
<li><a href="https://about.gitlab.com/solutions/agile-delivery/"><strong>Advanced planning tools</strong></a> and <a href="https://about.gitlab.com/solutions/application-security-testing/"><strong>extensive security features</strong></a></li>
<li><a href="https://about.gitlab.com/stages-devops-lifecycle/package/"><strong>Package management</strong></a> and feature flags for progressive delivery</li>
<li><a href="https://about.gitlab.com/solutions/analytics-and-insights/"><strong>Value stream metrics</strong></a> for visibility and improvement across the lifecycle</li>
<li><a href="https://about.gitlab.com/gitlab-duo/agent-platform/"><strong>AI-native workflows</strong></a>, embedded directly into daily tasks</li>
</ul>
<p>This versatility translates into real customer value, as Bal Kang, Engineering Platform Lead at NatWest, explains:</p>
<p><em>“Having GitLab Duo AI agents embedded in our system of record for code, tests, CI/CD, and the entire software development lifecycle boosts productivity, velocity, and efficiency. The agents understand intent, break down problems, and take action — becoming true collaborators to our teams.”</em></p>
<p>The shift toward unified platforms represents a fundamental change in how organizations approach software development. We believe this is why, recently, Gartner® also named us <a href="https://about.gitlab.com/blog/gitlab-named-a-leader-in-the-2025-gartner-magic-quadrant-for-ai-code-assistants/">a Leader in the 2025 Magic Quadrant™ for AI Code Assistants</a>.</p>
<p>As companies look to maximize developer productivity securely and accelerate innovation, a comprehensive platform approach becomes more urgent than ever.</p>
<blockquote>
<p><a href="https://about.gitlab.com/gartner-magic-quadrant/">Download the reports</a> to learn more.</p>
</blockquote>
<p><em>Source: Gartner, Magic Quadrant for DevOps Platforms, Keith Mann, Thomas Murphy, Bill Holz, George Spafford, September 22, 2025</em></p>
<p><em>Source: Gartner, Critical Capabilities for DevOps Platforms, Thomas Murphy, Keith Mann, George Spafford, Bill Holz, September 22, 2025</em></p>
<p><em>GARTNER is a registered trademark and service mark of Gartner, Inc. and/or its affiliates in the U.S. and internationally, and MAGIC QUADRANT is a registered trademark of Gartner, Inc. and/or its affiliates and are used herein with permission. All rights reserved.</em></p>
<p><em>Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner’s research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.</em>
<em>This graphic was published by Gartner Inc. as part of a larger report and should be evaluated in the context of the entire document. The Gartner document is available upon request from Gartner B.V.</em></p>
]]></content>
        <author>
            <name>Manav Khurana</name>
            <uri>https://about.gitlab.com/blog/authors/manav-khurana</uri>
        </author>
        <published>2025-09-25T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab 18.4: AI-native development with automation and insight]]></title>
        <id>https://about.gitlab.com/blog/gitlab-18-4-ai-native-development-with-automation-and-insight/</id>
        <link href="https://about.gitlab.com/blog/gitlab-18-4-ai-native-development-with-automation-and-insight/"/>
        <updated>2025-09-23T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>As a developer, you know modern development isn't just about writing code — it's about managing change across the entire software development lifecycle.</p>
<p>In <a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">GitLab 18.3</a>, we laid the groundwork for true human-AI collaboration. We introduced leading AI tools such as Claude Code, Codex CLI, Amazon Q CLI, and Gemini CLI as native integrations to GitLab, delivered our first preview of the GitLab Model Context Protocol (<a href="https://about.gitlab.com/topics/ai/model-context-protocol/">MCP</a>) server in partnership with Cursor, and shipped two new flows, Issue to MR and Convert CI File for Jenkins Flows, to help teams tackle every day problems.</p>
<p>With <a href="https://about.gitlab.com/releases/2025/09/18/gitlab-18-4-released/">GitLab 18.4</a> we are expanding your ability to build and share custom agents, collaborate more effectively through Agentic Chat, navigate codebases with the Knowledge Graph, and keep pipelines green with the Fix Failed Pipelines Flow, while also delivering greater security and governance over your AI usage.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1120293274?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;18.4 Release video placeholder&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<blockquote>
<p>Have questions on the latest features in the GitLab 18.4 release? <a href="https://www.linkedin.com/events/q-a-code-exploringgitlab18-4and7373772262312906753/theater/">Join us for The Developer Show</a> live on LinkedIn on Sept. 23 at 10:00 am PT, or on-demand shortly after!</p>
</blockquote>
<h2>Build your experience</h2>
<p><em>Start your day by pulling from the AI Catalog — a library of specialized agents that surface priorities, automate routine work, and keep you focused on building.</em></p>
<h3>AI Catalog as your library of specialized agents (Experimental)</h3>
<p>With GitLab 18.4, we're introducing the GitLab Duo AI Catalog — a central library where teams can create, share, and collaborate with custom-built agents across their organization. Every team has ‘their way' of doing things. So creating a custom agent is just like training a fellow engineer on the ‘right way' to do things in your organization.</p>
<p>For example, a custom Product Planning agent can file bugs in the specific format, following your labeling standards, or a Technical Writer agent can draft concise documentation following your conventions, or a Security agent can make sure your security and compliance standards are met for every MR. Instead of functioning as disconnected tools, these agents become part of the natural stream of work inside GitLab — helping accelerate tasks without disrupting established processes.</p>
<p><strong>Note:</strong> This capability is currently only available on GitLab.com as an Experiment. We plan to deliver this to our self-managed customers next month in the 18.5 release.</p>
<h2>Stay in your flow</h2>
<p><em>GitLab Duo Agentic Chat makes collaboration with agents seamless.</em></p>
<h3>Smarter Agentic Chat to streamline collaboration with agents (Beta)</h3>
<p>As the centerpiece of GitLab Duo Agent Platform (Beta), <a href="https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/">Agentic Chat</a> gives you a seamless way to collaborate with AI agents. The latest update to Agentic Chat with GitLab 18.4 improves the chat experience and expands how sessions are managed and surfaced.</p>
<ul>
<li>
<p><strong>Chat with custom agent</strong></p>
<p>Let's start with your newly-created custom agent. Once designed, you can immediately put that agent to work through Agentic Chat. For example, you could ask your new agent “give me a list of assignments” to get started with your priorities for the day. Additionally, you now have the ability to start fresh conversations with new agents and resume previous conversations with agents without losing context.</p>
</li>
<li>
<p><a href="https://docs.gitlab.com/user/gitlab_duo/model_selection/#select-a-model-to-use-in-gitlab-duo-agentic-chat"><strong>User model selection</strong></a></p>
<p>With previous releases, you're able to select models at a namespace level, but in 18.4 you can now choose models at the user level for a given chat session. This empowers you to make the call on which LLM is right for the job, or experiment with different LLMs to see which delivers the best answer for your task.</p>
</li>
<li>
<p><strong>Improved formatting and visual design</strong></p>
<p>We hope you love the new visual design for GitLab Duo Agentic Chat, including improved handling of tool call approvals to ensure your experience is more enjoyable.</p>
</li>
<li>
<p><strong>Agent Sessions available through Agentic Chat</strong></p>
<p>Sessions are expanding to become a core part of the Agentic Chat experience. Any agent run or flow now appears in the Sessions overview available from Agentic Chat. Within each session, you'll see rich details like job logs, user information, and tool metadata — providing critical transparency into how agents are working on your behalf.</p>
<p><strong>Note:</strong> Sessions in Agentic Chat is available on GitLab.com only, this enhancement is planned for self-managed customers next month in the 18.5 update.</p>
</li>
</ul>
<h2>Unlock your codebase</h2>
<p><em>With agents, context is king. With Knowledge Graph, you can give your agents more context so they can reason faster and give you better results.</em></p>
<h3>Introducing the GitLab Knowledge Graph (Beta)</h3>
<p>The <a href="https://gitlab-org.gitlab.io/rust/knowledge-graph/">GitLab Knowledge Graph</a> in 18.4 transforms how developers and agents understand and navigate complex codebases. The Knowledge Graph provides a connected map of your entire project, linking files, routes, and references across the software development lifecycle. By leveraging tools such as go-to-definition, codebase search, and reference tracking through in-chat queries, developers gain the ability to ask precise questions like “show me all route files” or “what else does this change impact?”
This deeper context helps teams move faster and with more confidence — whether it's onboarding new contributors, conducting deep research across a project, or exploring how a modification impacts dependent code. The more of your ecosystem that lives in GitLab, the more powerful the Knowledge Graph becomes, giving both humans and AI agents the foundation to build with accuracy, speed, and full project awareness. In future releases, we'll be stitching all of your GitLab data into the Knowledge Graph, including plans, MRs, security vulnerabilities, and more.
This release of the Knowledge Graph focuses on local code indexing, where the <code>gkg</code> 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.
Our vision for the Knowledge Graph project is twofold: 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.
&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1121017374?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;18.4 Knowledge Graph Demo&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h2>Automate your pipeline maintenance</h2>
<p><em>Fix pipeline failures faster and stay in the flow with the Fixed Failed Pipelines Flow.</em></p>
<h3>Fix Failed Pipelines Flow with business awareness</h3>
<p>Keeping pipelines green is critical for your development velocity, but traditional approaches focus only on technical troubleshooting without considering the business impact. The <strong>Fix Failed Pipelines Flow</strong> addresses this challenge by combining technical analysis with strategic context. For example, it can automatically prioritize fixing a failed deployment pipeline for a customer-facing service ahead of a nightly test job, or flag build issues in a high-priority release branch differently than experimental feature branches.</p>
<ul>
<li><strong>Business-aware failure detection</strong> monitors pipeline executions while understanding the importance of different workflows and deployment targets.</li>
<li><strong>Contextual root cause analysis</strong> analyzes failure logs alongside business requirements, recent changes, and cross-project dependencies to identify underlying causes.</li>
<li><strong>Strategic fix prioritization</strong> generates appropriate fixes while considering business impact, deadlines, and resource allocation priorities.</li>
<li><strong>Workflow-integrated resolution</strong> automatically creates merge requests with fixes that maintain proper review processes while providing business context for prioritization decisions.</li>
</ul>
<p>This flow keeps pipelines green while maintaining strategic alignment, enabling automated fixes to support business objectives rather than just resolving technical issues in isolation.</p>
<h2>Customize your AI environment</h2>
<p><em>Automation only works if you trust the models behind it. That's why 18.4 delivers governance features like model selection and GitLab-managed keys.</em></p>
<h3>GitLab Duo model selection to optimize feature performance</h3>
<p><a href="https://docs.gitlab.com/user/gitlab_duo/model_selection/">Model selection</a> is now generally available, giving you direct control over which large language models (<a href="https://about.gitlab.com/blog/what-is-a-large-language-model-llm/">LLMs</a>) power GitLab Duo. You and your team can select the models of your choice, apply them across the organization or tailor them per feature. You can set defaults to ensure consistency across namespaces and tools, with governance, compliance, and security requirements in mind.</p>
<p>For customers using GitLab Duo Self-Hosted, newly added support for GPT OSS and GPT-5 provides additional flexibility for AI-powered development workflows.</p>
<p><strong>Note:</strong> GitLab Duo Self-Hosted is not available to GitLab.com customers, and GPT models are not supported on GitLab.com.</p>
<h2>Protect your sensitive context</h2>
<p><em>Alongside governance comes data protection, giving you fine-grained control over what AI can and can't see.</em></p>
<h3>GitLab Duo Context Exclusion for granular data protection</h3>
<p>It's no surprise — you need granular control over what information AI agents can access. <strong>GitLab Duo Context Exclusion</strong> in 18.4 provides project-level settings that let teams exclude specific files or file paths from AI access. Capabilities include:</p>
<ul>
<li><strong>File-specific exclusions</strong> to help protect sensitive files such as password configurations, secrets, and proprietary algorithms.</li>
<li><strong>Path-based rules</strong> to create exclusion patterns based on directory structures or file naming conventions.</li>
<li><strong>Flexible configuration</strong> to apply exclusions at the project level while maintaining development workflow efficiency.</li>
<li><strong>Audit visibility</strong> to track what content is excluded to support compliance with data governance policies.</li>
</ul>
<p>GitLab Duo Context Exclusion helps you protect sensitive data while you accelerate development with agentic AI.</p>
<h2>Extend your AI capabilities with new MCP tools</h2>
<p><em>Expanded MCP tools extend those capabilities even further, connecting your GitLab environment with a broader ecosystem of intelligent agents.</em></p>
<h3>New tools for GitLab MCP server</h3>
<p>Expanding on the initial MCP server introduced in <a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">18.3</a>, GitLab 18.4 adds more MCP tools — capabilities that define how MCP clients interact with GitLab. These new tools extend integration possibilities, enabling both first-party and third-party AI agents to take on richer tasks such as accessing project data, performing code operations, or searching across repositories, all while respecting existing security and permissions models. For a full list of MCP tools, including the new additions in 18.4, visit our <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/">MCP server documentation</a>.</p>
<h2>Experience the future of intelligent software development</h2>
<p>With <a href="https://about.gitlab.com/gitlab-duo/agent-platform/">GitLab Duo Agent Platform</a>, engineers can begin to move from working on one issue at a time in single threaded fashion, to multi-threaded collaboration with asynchronous agents that act like teammates to get work done, faster. We are bringing to market this unique vision with our customer's preferences for independence and choice: run in your preferred cloud environments using the LLMs and AI tools that work best for you, within the security and compliance guardrails you set.</p>
<p>As an integral part of this innovation, GitLab 18.4 is more than a software upgrade — it's about making the day-to-day experience of developers smoother, smarter, and more secure. From reusable agents to business-aware pipeline fixes, every feature is designed to keep teams in flow while balancing speed, security, and control. For a deeper look at how these capabilities come together in practice, check out our walkthrough video.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1120288083?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;A day in the life with GitLab Duo Agent Platform&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;</p>
<p>GitLab Premium and Ultimate users can start using these capabilities today on <a href="https://GitLab.com">GitLab.com</a> and self-managed environments, with availability for <a href="https://about.gitlab.com/dedicated/">GitLab Dedicated</a> customers coming next month.</p>
<blockquote>
<p><strong>Enable beta and experimental features in GitLab Duo Agent Platform today</strong> and experience how full-context AI can transform the way your teams build software. New to GitLab? <a href="https://about.gitlab.com/free-trial/devsecops/">Start your free trial</a> and see why the future of development is AI-powered, secure, and orchestrated through the world's most comprehensive DevSecOps platform.</p>
</blockquote>
<h2>Stay up to date with GitLab</h2>
<p>To make sure you're getting the latest features, security updates, and performance improvements, we recommend keeping your GitLab instance up to date. The following resources can help you plan and complete your upgrade:</p>
<ul>
<li><a href="https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/">Upgrade Path Tool</a> – enter your current version and see the exact upgrade steps for your instance</li>
<li><a href="https://docs.gitlab.com/update/upgrade_paths/">Upgrade documentation</a> – detailed guides for each supported version, including requirements, step-by-step instructions, and best practices</li>
</ul>
<p>By upgrading regularly, you'll ensure your team benefits from the newest GitLab capabilities and remains secure and supported.</p>
<p>For organizations that want a hands-off approach, consider <a href="https://content.gitlab.com/viewer/d1fe944dddb06394e6187f0028f010ad#1">GitLab's Managed Maintenance service</a>. With Managed Maintenance, your team stays focused on innovation while GitLab experts keep your Self-Managed instance reliably upgraded, secure, and ready to lead in DevSecOps. Ask your account manager for more information.</p>
<p><em>This blog post contains &quot;forward-looking statements&quot; within the meaning of Section 27A of the Securities Act of 1933, as amended, and Section 21E of the Securities Exchange Act of 1934. Although we believe that the expectations reflected in these statements are reasonable, they are subject to known and unknown risks, uncertainties, assumptions and other factors that may cause actual results or outcomes to differ materially. Further information on these risks and other factors is included under the caption &quot;Risk Factors&quot; in our filings with the SEC. We do not undertake any obligation to update or revise these statements after the date of this blog post, except as required by law.</em></p>
]]></content>
        <author>
            <name>Bill Staples</name>
            <uri>https://about.gitlab.com/blog/authors/bill-staples</uri>
        </author>
        <published>2025-09-23T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[A comprehensive guide to GitLab DAST]]></title>
        <id>https://about.gitlab.com/blog/comprehensive-guide-to-gitlab-dast/</id>
        <link href="https://about.gitlab.com/blog/comprehensive-guide-to-gitlab-dast/"/>
        <updated>2025-09-17T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Modern businesses entirely depend on web-based platforms for customer interactions, financial
transactions, data processing, and core business operations. As digital transformation
accelerates and remote or hybrid work becomes the norm, the attack surface for web applications has
expanded dramatically, making them prime targets for cybercriminals. Therefore, securing web applications has become more critical than ever.</p>
<p>While static code analysis catches vulnerabilities in source code, it cannot identify
runtime security issues that emerge when applications interact with real-world
environments, third-party services, and complex user workflows. This is where Dynamic
Application Security Testing (<a href="https://docs.gitlab.com/user/application_security/dast/">DAST</a>) becomes invaluable. GitLab's integrated DAST solution provides teams with automated security testing capabilities directly within their CI/CD pipelines, on a schedule, or on-demand, enabling continuous security validation
without disrupting development workflows.</p>
<h2>Why DAST?</h2>
<p>DAST should be implemented because it provides critical runtime security validation by testing applications
in their actual operating environment, identifying vulnerabilities that static analysis cannot detect.
Additionally, GitLab DAST can be seamlessly integrated into shift-left security workflows, and
can enhance compliance assurance along with risk management.</p>
<h3>Runtime vulnerability detection</h3>
<p>DAST excels at identifying security vulnerabilities that only manifest when applications are running.
Unlike static analysis tools that examine code at rest, DAST scanners interact with live applications
as an external attacker would, uncovering issues such as:</p>
<ul>
<li><strong>Authentication and session management flaws</strong> that could allow unauthorized access</li>
<li><strong>Input validation vulnerabilities,</strong> including SQL injection, cross-site scripting (XSS), and command injection</li>
<li><strong>Configuration weaknesses</strong> in web servers, databases, and application frameworks</li>
<li><strong>Business logic flaws</strong> that emerge from complex user interactions</li>
<li><strong>API security issues,</strong> including improper authentication, authorization, and data exposure</li>
</ul>
<p>DAST complements other security testing approaches to provide comprehensive application security coverage. When combined with Static Application Security Testing (<a href="https://docs.gitlab.com/user/application_security/sast/">SAST</a>), Software Composition Analysis (<a href="https://docs.gitlab.com/user/application_security/dependency_scanning/">SCA</a>), manual
penetration testing, and <a href="https://about.gitlab.com/solutions/application-security-testing/">many other scanner types</a>, DAST fills critical gaps in security validation:</p>
<ul>
<li><strong>Black-box testing perspective</strong> that mimics real-world attack scenarios</li>
<li><strong>Environment-specific testing</strong> that validates security in actual deployment configurations</li>
<li><strong>Third-party component testing,</strong> including APIs, libraries, and external services</li>
<li><strong>Configuration validation</strong> across the entire application stack</li>
</ul>
<h3>Seamless shift-left security integration</h3>
<p>GitLab DAST seamlessly integrates into existing CI/CD pipelines, enabling teams to identify security
issues early in the development lifecycle. This shift-left approach provides several key benefits:</p>
<ul>
<li><strong>Cost reduction</strong> — Fixing vulnerabilities during development is significantly less expensive than addressing them in production. Studies show that remediation costs can be 10 to 100 times higher in production environments.</li>
<li><strong>Faster time-to-market</strong> — Automated security testing eliminates bottlenecks caused by manual security reviews, allowing teams to maintain rapid deployment schedules while ensuring security standards.</li>
<li><strong>Developer empowerment</strong> — By providing immediate feedback on security issues, DAST helps developers build security awareness and improve their coding practices over time.</li>
</ul>
<h3>Compliance and risk management</h3>
<p>Many regulatory frameworks and industry standards require regular security testing of web applications.
DAST helps organizations meet compliance requirements for standards such as:</p>
<ul>
<li><strong>PCI DSS</strong> for applications handling payment card data</li>
<li><strong>SOC 2</strong> security controls for service organizations</li>
<li><strong>ISO 27001</strong> information security management requirements</li>
</ul>
<p>The automated nature of GitLab DAST ensures consistent, repeatable security testing that auditors can
rely on, while detailed reporting provides the documentation needed for compliance validation.</p>
<h2>Implementing DAST</h2>
<p>Before implementing GitLab DAST, ensure your environment meets the following requirements:</p>
<ul>
<li><strong>GitLab version and Ultimate subscription</strong> — DAST is available in <a href="https://about.gitlab.com/pricing/ultimate/">GitLab Ultimate</a> and requires GitLab 13.4 or later for full functionality; however, the <a href="https://about.gitlab.com/releases/categories/releases/">latest version</a> is recommended.</li>
<li><strong>Application accessibility</strong> — Your application must be accessible via HTTP/HTTPS with a publicly reachable URL or accessible within your GitLab Runner's network.</li>
<li><strong>Authentication setup</strong> — If your application requires authentication, prepare test credentials or configure authentication bypass mechanisms for security testing.</li>
</ul>
<h3>Basic implementation</h3>
<p>The simplest way to add DAST to your pipeline is by including the DAST template in your <a href="https://docs.gitlab.com/ci/#step-1-create-a-gitlab-ciyml-file"><code>.gitlab-ci.yml</code></a> file
and providing a website to scan:</p>
<pre><code class="language-yaml">include:
  - template: DAST.gitlab-ci.yml

variables:
  DAST_WEBSITE: &quot;https://your-application.example.com&quot;
</code></pre>
<p>This basic configuration will:</p>
<ul>
<li>Run a DAST scan against your specified website</li>
<li>Generate a security report in GitLab's security dashboard</li>
<li>Fail the pipeline if high-severity vulnerabilities are detected</li>
<li>Store scan results as pipeline artifacts</li>
</ul>
<p>However, it is suggested to gain the full benefit of <a href="https://about.gitlab.com/topics/ci-cd/">CI/CD</a>, you can first deploy the application
and set DAST to run only after an application has been deployed. The application URL can be
dynamically created and the DAST job can be configured fully with <a href="https://docs.gitlab.com/ci/yaml/">GitLab Job syntax</a>.</p>
<pre><code class="language-yaml">stages:
  - build
  - deploy
  - dast

include:
  - template: Security/DAST.gitlab-ci.yml

# Builds and pushes application to GitLab's built-in container registry
build:
  stage: build
  variables:
    IMAGE: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker build -t $IMAGE .
    - docker push $IMAGE

# Deploys application to your suggested target, setsup the dast site dynamically, requires build to complete
deploy:
  stage: deploy
  script:
    - echo &quot;DAST_WEBSITE=http://your-application.example.com&quot; &gt;&gt; deploy.env
    - echo &quot;Perform deployment here&quot;
  environment:
    name: $DEPLOY_NAME
    url: http://your-application.example.com
  artifacts:
    reports:
      dotenv: deploy.env
  dependencies:
    - build

# Configures DAST to run a an active scan on non-main branches, and a passive scan on the main branches and requires a deployment to complete before it is run
dast:
  stage: dast
  rules:
    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
      variables:
        DAST_FULL_SCAN: &quot;false&quot;
    - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
      variables:
        DAST_FULL_SCAN: &quot;true&quot;
  dependencies:
    - deploy
</code></pre>
<p>You can learn from an example by seeing the <a href="https://gitlab.com/gitlab-da/tutorials/security-and-governance/tanuki-shop">Tanuki Shop</a> demo application, which generates the
following pipeline:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118303/rr3cyxjwyecxbmrdxon6.png" alt="Standard DAST Pipeline"></p>
<h3>Understanding passive vs. active scans</h3>
<p>In the example above we enabled active scanning for non-default branches:</p>
<pre><code class="language-yaml">- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
  variables:
    DAST_FULL_SCAN: &quot;true&quot;
</code></pre>
<p>GitLab DAST employs two distinct scanning methodologies (passive and active), each serving
different security testing needs.</p>
<p><strong>Passive scans</strong> analyze application responses without sending potentially harmful requests. This approach:</p>
<ul>
<li>Examines HTTP headers, cookies, and response content for security misconfigurations</li>
<li>Identifies information disclosure vulnerabilities like exposed server versions or stack traces</li>
<li>Detects missing security headers (CSP, HSTS, X-Frame-options)</li>
<li>Analyzes SSL/TLS configuration and certificate issues</li>
</ul>
<p><strong>Active scans</strong> send crafted requests designed to trigger vulnerabilities. This approach:</p>
<ul>
<li>Tests for injection vulnerabilities (SQL injection, XSS, command injection)</li>
<li>Attempts to exploit authentication and authorization flaws</li>
<li>Validates input sanitization and output encoding</li>
<li>Tests for business logic vulnerabilities</li>
</ul>
<p><strong>Note:</strong> The DAST scanner is set to passive by default.</p>
<p>DAST has several configuration options that can be applied via environment variables.
For a list of all the possible configuration options for DAST, see the <a href="https://docs.gitlab.com/user/application_security/dast/browser/configuration/customize_settings/">DAST documentation</a>.</p>
<h3>Authentication configuration</h3>
<p>DAST requires authentication configuration in CI/CD jobs to achieve complete security coverage. Authentication enables DAST to simulate real attacks and test user-specific features only accessible after login. The DAST job typically authenticates by submitting login forms in a browser, then verifies success before continuing to crawl the application with saved credentials. Failed authentication stops the job.</p>
<p>Supported authentication methods:</p>
<ul>
<li>Single-step login form</li>
<li>Multi-step login form</li>
<li>Authentication to URLs outside the target scope</li>
</ul>
<p>Here is an example for a single-step login form in a <a href="https://gitlab.com/gitlab-da/tutorials/security-and-governance/tanuki-shop/-/merge_requests/20">Tanuki Shop MR</a> which adds
admin authentication to non-default branches.</p>
<pre><code class="language-yaml">dast:
  stage: dast
  before_script:
    - echo &quot;DAST_TARGET_URL set to '$DAST_TARGET_URL'&quot; # Dynamically loaded from deploy job
    - echo &quot;DAST_AUTH_URL set to '$DAST_TARGET_URL'&quot; # Dynamically loaded from deploy jobs
  rules:
    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
      variables:
        DAST_FULL_SCAN: &quot;false&quot;
    - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
      variables:
        DAST_FULL_SCAN: &quot;true&quot; # run both passive and active checks
        DAST_AUTH_USERNAME: &quot;admin@tanuki.local&quot; # The username to authenticate to in the website
        DAST_AUTH_PASSWORD: &quot;admin123&quot; # The password to authenticate to in the website
        DAST_AUTH_USERNAME_FIELD: &quot;css:input[id=email]&quot; # A selector describing the element used to enter the username on the login form
        DAST_AUTH_PASSWORD_FIELD: &quot;css:input[id=password]&quot; # A selector describing the element used to enter the password on the login form
        DAST_AUTH_SUBMIT_FIELD: &quot;css:button[id=loginButton]&quot; # A selector describing the element clicked on to submit the login form
        DAST_SCOPE_EXCLUDE_ELEMENTS: &quot;css:[id=navbarLogoutButton]&quot; # Comma-separated list of selectors that are ignored when scanning
        DAST_AUTH_REPORT: &quot;true&quot; # generate a report detailing steps taken during the authentication process
        DAST_REQUEST_COOKIES: &quot;welcomebanner_status:dismiss,cookieconsent_status:dismiss&quot; # A cookie name and value to be added to every request
        DAST_CRAWL_GRAPH: &quot;true&quot; # generate an SVG graph of navigation paths visited during crawl phase of the scan
  dependencies:
    - deploy-kubernetes
</code></pre>
<p>You can see if the authentication was successful by viewing the job logs:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118293/zdxgwb6jmseyzwcjscrz.png" alt="Auth logs"></p>
<p>Once this job completes it provides an authentication report which includes screenshots of the login page:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118292/idm62deg3ezeehcubmc1.png" alt="Auth report"></p>
<p>You can also see more examples on DAST with authentication in our <a href="https://gitlab.com/gitlab-org/security-products/demos/dast/">DAST demos</a> group.
To learn more about how to perform DAST with authentication with your specific requirements, see the <a href="https://docs.gitlab.com/user/application_security/dast/browser/configuration/authentication/">DAST authentication documentation</a>.</p>
<h2>Viewing results in MR</h2>
<p>GitLab's DAST seamlessly integrates security scanning into your development workflow
by displaying results directly within merge requests:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118293/rrx4n3pgxi9vmzlas8vp.png" alt="DAST MR 1"><br>
<img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118294/rh9vwv6ohoaenpvicujm.png" alt="DAST MR 2"><br>
<img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118294/ficelmulsc0r7bijf24m.png" alt="DAST MR 3"></p>
<p>These results include comprehensive vulnerability data within MRs to help developers identify and address
security issues before code is merged. Here's what DAST typically reports:</p>
<h3>Vulnerability details</h3>
<ul>
<li>Vulnerability name and type (e.g., SQL injection, XSS, CSRF)</li>
<li>Severity level (Critical, High, Medium, Low, Info)</li>
<li>CVSS score when applicable</li>
<li>Common Weakness Enumeration (CWE) identifier</li>
<li>Confidence level of the finding</li>
</ul>
<h3>Location information</h3>
<ul>
<li>URL/endpoint where the vulnerability was detected</li>
<li>HTTP method used (GET, POST, etc.)</li>
<li>Request/response details showing the vulnerable interaction</li>
<li>Parameter names that are vulnerable</li>
<li>Evidence demonstrating the vulnerability</li>
</ul>
<h4>Technical context</h4>
<ul>
<li>Description of the vulnerability and potential impact</li>
<li>Proof of concept showing how the vulnerability can be exploited</li>
<li>Request/response pairs that triggered the finding</li>
<li>Scanner details (which DAST tool detected it)</li>
</ul>
<h3>Remediation guidance</h3>
<ul>
<li>Solution recommendations for fixing the vulnerability</li>
<li>References to security standards (OWASP, etc.)</li>
<li>Links to documentation for remediation steps</li>
</ul>
<h2>Viewing results in GitLab Vulnerability Report</h2>
<p>For managing vulnerabilities located in the default (or production) branch, the GitLab Vulnerability Report provides a centralized dashboard for monitoring all security findings (in the default branch) across your entire project or organization. This comprehensive view aggregates all security scan results, offering filtering and sorting capabilities to help security teams prioritize remediation efforts.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118304/o8jjgngtxqplcgux9h5p.png" alt="Vulnerability Report"></p>
<p>When selecting a vulnerability, you are taken to its vulnerability page:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118303/rolcgxhe0lh2s54zz2kc.png" alt="Vulnerability Page 1"><br>
<img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118303/dubic3yacd5n11ine1vi.png" alt="Vulnerability Page 2"><br>
<img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118303/iojrm3zasqxljuybbqcs.png" alt="Vulnerability Page 3"></p>
<p>Just like in merge requests, the vulnerability page provides comprehensive vulnerability data, as seen above. From here you can triage vulnerabilities by assigning them with a status:</p>
<ul>
<li>Needs triage (Default)</li>
<li>Confirmed</li>
<li>Dismissed (Acceptable risk, False positive, Mitigating control, Used in tests, Not applicable)</li>
<li>Resolved</li>
</ul>
<p>When a vulnerability status is changed, the audit log includes a note of who changed it, when it was changed, and the reason it was changed. This comprehensive system allows security teams to efficiently prioritize, track, and manage vulnerabilities throughout their lifecycle with clear accountability and detailed risk context.</p>
<h2>On-demand and scheduled DAST</h2>
<p>GitLab provides flexible scanning options beyond standard CI/CD pipeline integration through
on-demand and scheduled DAST scans. On-demand scans allow security teams and developers to
initiate DAST testing manually whenever needed, without waiting for code commits or pipeline triggers.
This capability is particularly valuable for ad-hoc security assessments, incident response scenarios,
or when testing specific application features that may not be covered in regular pipeline scans.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118296/hs3fhn42ceycmd94oaua.png" alt="On-demand 1"><br>
<img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118298/wiptmr948xey6rrodosg.png" alt="On-demand 2"></p>
<p>On-demand scans can be configured with custom parameters, target URLs, and scanning profiles, making
them ideal for focused security testing of particular application components or newly-deployed features.
Scheduled DAST scans provide automated, time-based security testing that operates independently of
the development workflow. These scans can be configured to run daily, weekly, or at custom intervals,
ensuring continuous security monitoring of production applications.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118300/dbxgkeahij4fklkpcpck.png" alt="Scheduling DAST"></p>
<p>To learn how to implement on-demand or scheduled scans within your project, see the
<a href="https://docs.gitlab.com/user/application_security/dast/on-demand_scan/">DAST on-demand scan documentation</a></p>
<h2>DAST in compliance workflows</h2>
<p>GitLab's security policies framework allows organizations to enforce consistent security
standards across all projects, while maintaining flexibility for different teams and environments.
Security policies enable centralized governance of DAST scanning requirements, ensuring that
critical applications receive appropriate security testing without requiring individual project
configuration. By defining security policies at the group or instance level, security teams can
mandate DAST scans for specific project types, deployment environments, or risk classifications.</p>
<p><strong>Scan/Pipeline Execution Policies</strong> can be configured to automatically trigger DAST scans based on
specific conditions such as merge requests to protected branches, scheduled intervals, or deployment events.
For example, a policy might require full active DAST scans for all applications before production deployment,
while allowing passive scans only for development branches. These policies can include custom variables,
authentication configurations, and exclusion rules that are automatically applied to all covered projects,
reducing the burden on development teams and ensuring security compliance.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118299/twe0967sayasvassimf3.png" alt="Scan Execution Policy"></p>
<p><strong>Merge Request Approval Policies</strong> provide an additional layer of security governance by enforcing human
review for code changes that may impact security. These policies can be configured to require security team
approval when DAST scans detect new vulnerabilities, when security findings exceed defined thresholds, or
when changes affect security-critical components. For example, a policy might automatically require approval
from a designated security engineer when DAST findings include high-severity vulnerabilities, while allowing
lower-risk findings to proceed with standard code review processes.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118295/w0odyhf3gnkxis3f61ma.png" alt="MR Approval Policy"></p>
<p>To learn more about GitLab security policies, see the <a href="https://docs.gitlab.com/user/application_security/policies/">policy documentation</a>.
Additionally, for compliance, GitLab provides <a href="https://docs.gitlab.com/user/application_security/security_inventory/">Security Inventory</a>
and <a href="https://docs.gitlab.com/user/compliance/compliance_center/">Compliance center</a>, which can allow you to oversee
if DAST is running in your environment and where it is required.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758118300/hro6gykf7igpnnczmpyg.png" alt="Security Inventory"></p>
<p>To learn more about these features, visit our <a href="https://about.gitlab.com/solutions/software-compliance/">software compliance solutions page</a>.</p>
<h2>Summary</h2>
<p>GitLab DAST represents a powerful solution for integrating dynamic security testing into modern development workflows. By implementing DAST in your CI/CD pipeline, your team gains the ability to automatically detect runtime vulnerabilities, maintain compliance with security standards, and build more secure applications without sacrificing development velocity.</p>
<p>The key to successful DAST implementation lies in starting with basic configuration and gradually expanding to more sophisticated scanning profiles as your security maturity grows. Begin with simple website scanning, then progressively add authentication, custom exclusions, and advanced reporting to match your specific security requirements.</p>
<p>Remember that DAST is most effective when combined with other security testing approaches. Use it alongside static analysis, dependency scanning, and manual security reviews to create a comprehensive security testing strategy. The automated nature of GitLab DAST ensures that security testing becomes a consistent, repeatable part of your development process rather than an afterthought.</p>
<blockquote>
<p>To learn more about GitLab security, check out our <a href="https://about.gitlab.com/solutions/application-security-testing/">security testing solutions page</a>. To get started with GitLab DAST, <a href="https://about.gitlab.com/free-trial/devsecops/">sign up for a free trial of GitLab Ultimate today</a>.</p>
</blockquote>
]]></content>
        <author>
            <name>Fernando Diaz</name>
            <uri>https://about.gitlab.com/blog/authors/fernando-diaz</uri>
        </author>
        <published>2025-09-17T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab named a Leader in the 2025 Gartner Magic Quadrant for AI Code Assistants]]></title>
        <id>https://about.gitlab.com/blog/gitlab-named-a-leader-in-the-2025-gartner-magic-quadrant-for-ai-code-assistants/</id>
        <link href="https://about.gitlab.com/blog/gitlab-named-a-leader-in-the-2025-gartner-magic-quadrant-for-ai-code-assistants/"/>
        <updated>2025-09-17T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>GitLab has been recognized for the second time as a Leader in the 2025 Gartner® Magic Quadrant™ for AI Code Assistants. We see this recognition as validation of a key pillar in our broader AI strategy, where intelligent code assistance evolves into comprehensive AI that transforms how entire teams plan, build, secure, and deploy software.
<img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758121248/jfkmhddve6qvlg79xico.png" alt="2025 Gartner® Magic Quadrant™ for AI Code Assistants"></p>
<blockquote>
<p><a href="https://about.gitlab.com/gartner-mq-ai-code-assistants/">Download the report.</a></p>
</blockquote>
<h2>From AI features to intelligent collaboration</h2>
<p>The Gartner evaluation, we feel, focused on GitLab Duo's generative AI code assistance capabilities. While GitLab Duo began as an AI add-on to the GitLab DevSecOps platform, it laid the groundwork for where we are going today with agentic AI built natively into the GitLab DevSecOps platform.</p>
<p>GitLab Duo Agent Platform enables developers to work alongside multiple AI agents that automate tasks across the software lifecycle. Agents collaborate with each other and with humans, using GitLab’s Knowledge Graph to act with full project context. This empowers teams to move faster while keeping visibility and control.</p>
<ul>
<li>
<p><strong>Specialized agents</strong> handle tasks such as code generation, security analysis, and research in parallel.</p>
</li>
<li>
<p><strong>Knowledge Graph</strong> connects agents to a unified system of record across code, issues, pipelines, and compliance data.</p>
</li>
<li>
<p><strong>Human + agent collaboration</strong> happens through natural-language chat and customizable flows, with review and oversight built in.</p>
</li>
<li>
<p><strong>Interoperability with external tools and systems</strong> is supported through Model Context Protocol (MCP) and agent-to-agent frameworks.</p>
</li>
</ul>
<p>With agents handling routine work under human guidance, teams can move faster, focus on higher-value tasks, and keep projects secure and compliant.</p>
<h2>Secure by design, flexible in practice</h2>
<p>The GitLab Duo Agent Platform is designed to keep security and compliance front and center. Agents run inside GitLab’s trusted DevSecOps environment, with every action visible and reviewable before changes are made. Secure integrations help ensure credentials and sensitive data are handled safely, while interoperability through open standards connects agents to external tools without exposing an organization to risk.</p>
<p>The platform gives teams confidence that AI is enhancing productivity without compromising governance. Here's how:</p>
<ul>
<li>
<p><strong>Developers</strong> can stay focused on complex, high-impact work, while handing off routine tasks to agents for faster results and more granular context delivered through their existing workflows.</p>
</li>
<li>
<p><strong>Engineering leaders</strong> gain visibility into how work moves across the lifecycle, with agents operating within clear guardrails. They also can ensure their teams stay aligned to priorities and simplify onboarding with guided support through agent-driven context and workflows.</p>
</li>
<li>
<p><strong>IT organizations</strong> maintain control over agent activity with governance features that enforce coding and security policies, offer model selection flexibility, and ensure secure interoperability — all while keeping humans in the loop.</p>
</li>
</ul>
<h2>Leading the move to AI-native development</h2>
<p>GitLab continues to build on the vision that began with Duo, and will continue to expand GitLab Duo Agent Platform with new agents, advanced workflows, and more orchestration capabilities. This commitment to innovation ensures you can amplify team productivity on the platform you know and trust. Stay tuned for exciting updates on our roadmap as we continue to revolutionize AI-native DevSecOps.</p>
<blockquote>
<p><a href="https://about.gitlab.com/gartner-mq-ai-code-assistants/">Download the 2025 Gartner® Magic Quadrant™ for AI Code Assistants</a> and <a href="https://about.gitlab.com/gitlab-duo/agent-platform/">try GitLab Duo Agent Platform today</a>.</p>
</blockquote>
<p><em>Source: Gartner, Magic Quadrant for AI Code Assistants, Philip Walsh, Haritha Khandabattu, Matt Brasier, Keith Holloway, Arun Batchu, 15 September 2025</em></p>
<p><em>GARTNER is a registered trademark and service mark of Gartner, Inc. and/or its affiliates in the U.S. and internationally, and MAGIC QUADRANT is a registered trademark of Gartner, Inc. and/or its affiliates and are used herein with permission. All rights reserved.</em></p>
<p><em>Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner’s research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.</em></p>
<p><em>This graphic was published by Gartner Inc. as part of a larger report and should be evaluated in the context of the entire document. The Gartner document is available upon request from Gartner B.V.</em></p>
]]></content>
        <author>
            <name>Manav Khurana</name>
            <uri>https://about.gitlab.com/blog/authors/manav-khurana</uri>
        </author>
        <published>2025-09-17T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[How GitLab Duo Agent Platform transforms DataOps]]></title>
        <id>https://about.gitlab.com/blog/how-gitlab-duo-agent-platform-transforms-dataops/</id>
        <link href="https://about.gitlab.com/blog/how-gitlab-duo-agent-platform-transforms-dataops/"/>
        <updated>2025-09-16T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Creating dbt models manually is a tedious process that can consume hours of a data engineer's time. Especially when no (big) business transformations are made, it is not the most attractive part of an engineer's work with data.</p>
<p>But what if you could automate this entire process? In this walkthrough, I'll show you exactly how <a href="https://about.gitlab.com/gitlab-duo/agent-platform/">GitLab Duo Agent Platform</a> can generate comprehensive dbt models in just minutes, complete with proper structure, tests, and documentation.</p>
<h2>What we're building</h2>
<p>Our marketing team wants to effectively manage and optimize advertising investments. One of the advertising platforms is Reddit, so, therefore, we are extracting data from the Reddit Ads API to our enterprise <a href="https://handbook.gitlab.com/handbook/enterprise-data/platform/">Data Platform</a> Snowflake. At GitLab, we have three layers of storage:</p>
<ol>
<li><code>raw</code> layer - first landing point for unprocessed data from external sources; not ready for business use</li>
<li><code>prep</code> layer - first transformation layer with source models; still not ready for general business use</li>
<li><code>prod</code> layer - final transformed data ready for business use and Tableau reporting</li>
</ol>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758030995/zo7vespktzfdtdtiauz7.png" alt="Chart of storage layers"></p>
<p>For this walkthrough, data has already landed in the raw layer by our extraction solution Fivetran, and we'll generate dbt models that handle the data through the <code>prep</code> layer to the <code>prod</code> layer.</p>
<p>Without having to write a single line of dbt code ourselves, by the end of the walkthrough we will have:</p>
<ul>
<li><strong>Source models</strong> in the prep layer</li>
<li><strong>Workspace models</strong> in the prod layer</li>
<li><strong>Complete dbt configurations</strong> for all 13 tables (which includes 112 columns) in the Reddit Ads dataset</li>
<li><strong>Test queries</strong> to validate the outcomes</li>
</ul>
<p>The entire process will take less than 10 minutes, compared to the hours it would typically require manually. Here are the steps to follow:</p>
<h2>1. Prepare the data structure</h2>
<p>Before GitLab Duo can generate our models, it needs to understand the complete table structure. The key is running a query against Snowflake's information schema, because we are currently investigating how to connect GitLab Duo via Model Context Protocol (<a href="https://about.gitlab.com/topics/ai/model-context-protocol/">MCP</a>) to our Snowflake instance:</p>
<pre><code class="language-sql">SELECT 
    table_name,
    column_name,
    data_type,
    is_nullable,
    CASE 
        WHEN is_nullable = 'NO' THEN 'PRIMARY_KEY'
        ELSE NULL 
    END as key_type
FROM raw.information_schema.columns
WHERE table_schema = 'REDDIT_ADS'
ORDER BY table_name, ordinal_position;
</code></pre>
<p>This query captures:</p>
<ul>
<li>All table and column names</li>
<li>Data types for proper model structure</li>
<li>Nullable constraints</li>
<li>Primary key identification (non-nullable columns in this dataset)</li>
</ul>
<p><strong>Pro tip:</strong> In the Reddit Ads dataset, all non-nullable columns serve as primary keys — a pattern. I validated by checking tables like <code>ad_group</code>, which has two non-nullable columns (<code>account_id</code> and <code>id</code>) that are both marked as primary keys. Running this query returned 112 rows of metadata that I exported as a CSV file for model generation. While this manual step works well today, we're investigating a direct GitLab Duo integration with our Data Platform via MCP to automate this process entirely.</p>
<h2>2. Set up GitLab Duo</h2>
<p>There are two ways to interact with <a href="https://docs.gitlab.com/user/get_started/getting_started_gitlab_duo/">GitLab Duo</a>:</p>
<ol>
<li><strong>Web UI chat function</strong></li>
<li><strong>Visual Studio Code plugin</strong></li>
</ol>
<p>I chose the VS Code plugin because I can run the dbt models locally to test them.</p>
<h2>3. Enter the 'magic' prompt</h2>
<p>Here's the exact prompt I used to generate all the dbt code:</p>
<pre><code class="language-yaml">Create dbt models for all the tables in the file structure.csv.

I want to have the source models created, with a filter that dedupes the data based on the primary key. Create these in a new folder reddit_ads.
I want to have workspace models created and store these in the workspace_marketing schema.

Take this MR as example: [I've referenced to previous source implementation]. Here is the same done for Source A, but now it needs to be done for Reddit Ads. 

Please check the dbt style guide when creating the code: https://handbook.gitlab.com/handbook/enterprise-data/platform/dbt-guide/
</code></pre>
<p>Key elements that made this prompt effective:</p>
<ul>
<li><strong>Clear specifications</strong> for both source and workspace models.</li>
<li><strong>Reference example</strong> from a previous similar merge request.</li>
<li><strong>Style guide reference</strong> to ensure code quality and consistency.</li>
<li><strong>Specific schema targeting</strong> for proper organization.</li>
</ul>
<h2>4. GitLab Duo's process</h2>
<p>After submitting the prompt, GitLab Duo got to work. The entire generation process took a few minutes, during which GitLab Duo:</p>
<ol>
<li><strong>Read and analyzed</strong> the CSV input file.</li>
<li><strong>Examined table structures</strong> from the metadata.</li>
<li><strong>Referenced our dbt style guide</strong> for coding standards.</li>
<li><strong>Took similar merge request into account</strong> to properly structure.</li>
<li><strong>Generated source models</strong> for all 13 tables.</li>
<li><strong>Created workspace models</strong> for all 13 tables.</li>
<li><strong>Generated supporting dbt files</strong>:
<ul>
<li><code>sources.yml</code> configuration.</li>
<li><code>schema.yml</code> files with tests and documentation.</li>
<li>Updated <code>dbt_project.yml</code> with schema references.</li>
</ul>
</li>
</ol>
<h2>The results</h2>
<p>The output was remarkable:</p>
<ul>
<li><strong>1 modified file:</strong> dbt_project.yml (added reddit_ads schema configuration)</li>
<li><strong>29 new files:</strong>
<ul>
<li><strong>26 dbt models</strong> (13 source + 13 workspace)</li>
<li><strong>3 YAML files</strong></li>
</ul>
</li>
<li><strong>Nearly 900 lines of code</strong> generated automatically</li>
<li><strong>Built-in data tests,</strong> including unique constraints on primary key columns</li>
<li><strong>Generic descriptions</strong> for all models and columns</li>
<li><strong>Proper deduplication logic</strong> in source models</li>
<li><strong>Clean, consistent code structure</strong> following the GitLab dbt style guide</li>
</ul>
<pre><code class="language-yaml">transform/snowflake-dbt/
├── dbt_project.yml                                                    [MODIFIED]
└── models/
    ├── sources/
    │   └── reddit_ads/
    │       ├── reddit_ads_ad_group_source.sql                        [NEW]
    │       ├── reddit_ads_ad_source.sql                              [NEW]
    │       ├── reddit_ads_business_account_source.sql                [NEW]
    │       ├── reddit_ads_campaign_source.sql                        [NEW]
    │       ├── reddit_ads_custom_audience_history_source.sql         [NEW]
    │       ├── reddit_ads_geolocation_source.sql                     [NEW]
    │       ├── reddit_ads_interest_source.sql                        [NEW]
    │       ├── reddit_ads_targeting_community_source.sql             [NEW]
    │       ├── reddit_ads_targeting_custom_audience_source.sql       [NEW]
    │       ├── reddit_ads_targeting_device_source.sql                [NEW]
    │       ├── reddit_ads_targeting_geolocation_source.sql           [NEW]
    │       ├── reddit_ads_targeting_interest_source.sql              [NEW]
    │       ├── reddit_ads_time_zone_source.sql                       [NEW]
    │       ├── schema.yml                                            [NEW]
    │       └── sources.yml                                           [NEW]
    └── workspaces/
        └── workspace_marketing/
            └── reddit_ads/
                ├── schema.yml                                        [NEW]
                ├── wk_reddit_ads_ad.sql                              [NEW]
                ├── wk_reddit_ads_ad_group.sql                        [NEW]
                ├── wk_reddit_ads_business_account.sql                [NEW]
                ├── wk_reddit_ads_campaign.sql                        [NEW]
                ├── wk_reddit_ads_custom_audience_history.sql         [NEW]
                ├── wk_reddit_ads_geolocation.sql                     [NEW]
                ├── wk_reddit_ads_interest.sql                        [NEW]
                ├── wk_reddit_ads_targeting_community.sql             [NEW]
                ├── wk_reddit_ads_targeting_custom_audience.sql       [NEW]
                ├── wk_reddit_ads_targeting_device.sql                [NEW]
                ├── wk_reddit_ads_targeting_geolocation.sql           [NEW]
                ├── wk_reddit_ads_targeting_interest.sql              [NEW]
                └── wk_reddit_ads_time_zone.sql                       [NEW]
</code></pre>
<h3>Sample generated code</h3>
<p>Here's an example of the generated code quality. For the <code>time_zone</code> table, GitLab Duo created:</p>
<p><strong>Prep Layer Source Model</strong></p>
<pre><code class="language-sql">WITH source AS (
  SELECT *
  FROM {{ source('reddit_ads','time_zone') }}
  QUALIFY ROW_NUMBER() OVER (PARTITION BY id ORDER BY _fivetran_synced DESC) = 1
),

renamed AS (
  SELECT
    id::VARCHAR                               AS time_zone_id,
    code::VARCHAR                             AS time_zone_code,
    dst_offset::NUMBER                        AS time_zone_dst_offset,
    is_dst_active::BOOLEAN                    AS is_time_zone_dst_active,
    name::VARCHAR                             AS time_zone_name,
    offset::NUMBER                            AS time_zone_offset,
    _fivetran_synced::TIMESTAMP               AS fivetran_synced_at
  FROM source
)

SELECT * FROM renamed
</code></pre>
<p><strong>Schema.yml</strong></p>
<pre><code class="language-yaml">models:
  - name: reddit_ads_time_zone_source
    description: Time zone data from Reddit Ads system
    columns:
      - name: time_zone_id
        description: Unique identifier for time zone records
        data_tests:
          - unique
          - not_null
      - name: time_zone_code
        description: Code for the time zone
      - name: time_zone_dst_offset
        description: Daylight saving time offset for the time zone
      - name: is_time_zone_dst_active
        description: Flag indicating if daylight saving time is active
      - name: time_zone_name
        description: Name of the time zone
      - name: time_zone_offset
        description: Offset for the time zone
      - name: fivetran_synced_at
        description: Timestamp when the record was last synced by Fivetran
</code></pre>
<p><strong>Source.yml</strong></p>
<pre><code class="language-yaml">sources:
  - name: reddit_ads
    database: RAW
    schema: reddit_ads
    loaded_at_field: _fivetran_synced
    loader: fivetran
    description: Reddit Ads data

    quoting:
      database: true
      schema: false
      identifier: false

    tables:
      - name: time_zone
</code></pre>
<p><strong>Workspace Model</strong></p>
<pre><code class="language-sql">WITH source AS (
  SELECT *
  FROM {{ ref('reddit_ads_time_zone_source') }}
)

SELECT * FROM source
</code></pre>
<h2>5. Quality validation</h2>
<p>Now that the code looks good, I pushed it to the MR and executed <a href="https://handbook.gitlab.com/handbook/enterprise-data/platform/ci-jobs/#build_changes">CI test pipeline</a> to test the code and validate the outcome. I asked GitLab Duo to create a validation query:</p>
<pre><code class="language-yaml">Create a test query to test the row counts between the raw layer and the workspace layer. Keep in mind that we do deduplication, so we can compare both using distinct on the primary keys.
</code></pre>
<p>The AI generated a comprehensive validation query that:</p>
<ul>
<li>Compared row counts between raw and workspace layers.</li>
<li>Accounted for deduplication logic.</li>
<li>Tested all 13 tables.</li>
<li>Calculated data retention percentages.</li>
</ul>
<p>&lt;details&gt;
&lt;summary&gt;Generated SQL Test query&lt;/summary&gt;</p>
<pre><code class="language-sql">-- Reddit Ads Row Count Validation Test
-- Compares distinct counts between RAW layer and WORKSPACE_MARKETING layer
-- Accounts for deduplication logic in source models

WITH raw_counts AS (
  -- Single primary key tables
  SELECT 'ad' AS table_name, COUNT(DISTINCT id) AS raw_count
  FROM RAW.REDDIT_ADS.AD
  
  UNION ALL
  
  SELECT 'business_account' AS table_name, COUNT(DISTINCT id) AS raw_count
  FROM RAW.REDDIT_ADS.BUSINESS_ACCOUNT
  
  UNION ALL
  
  SELECT 'campaign' AS table_name, COUNT(DISTINCT id) AS raw_count
  FROM RAW.REDDIT_ADS.CAMPAIGN
  
  UNION ALL
  
  SELECT 'custom_audience_history' AS table_name, COUNT(DISTINCT id) AS raw_count
  FROM RAW.REDDIT_ADS.CUSTOM_AUDIENCE_HISTORY
  
  UNION ALL
  
  SELECT 'geolocation' AS table_name, COUNT(DISTINCT id) AS raw_count
  FROM RAW.REDDIT_ADS.GEOLOCATION
  
  UNION ALL
  
  SELECT 'interest' AS table_name, COUNT(DISTINCT id) AS raw_count
  FROM RAW.REDDIT_ADS.INTEREST
  
  UNION ALL
  
  SELECT 'time_zone' AS table_name, COUNT(DISTINCT id) AS raw_count
  FROM RAW.REDDIT_ADS.TIME_ZONE
  
  -- Composite primary key tables
  UNION ALL
  
  SELECT 'ad_group' AS table_name, COUNT(DISTINCT CONCAT(account_id, '|', id)) AS raw_count
  FROM RAW.REDDIT_ADS.AD_GROUP
  
  UNION ALL
  
  SELECT 'targeting_community' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', community_id)) AS raw_count
  FROM RAW.REDDIT_ADS.TARGETING_COMMUNITY
  
  UNION ALL
  
  SELECT 'targeting_custom_audience' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', custom_audience_id)) AS raw_count
  FROM RAW.REDDIT_ADS.TARGETING_CUSTOM_AUDIENCE
  
  UNION ALL
  
  SELECT 'targeting_device' AS table_name, COUNT(DISTINCT _fivetran_id) AS raw_count
  FROM RAW.REDDIT_ADS.TARGETING_DEVICE
  
  UNION ALL
  
  SELECT 'targeting_geolocation' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', geolocation_id)) AS raw_count
  FROM RAW.REDDIT_ADS.TARGETING_GEOLOCATION
  
  UNION ALL
  
  SELECT 'targeting_interest' AS table_name, COUNT(DISTINCT CONCAT(ad_group_id, '|', interest_id)) AS raw_count
  FROM RAW.REDDIT_ADS.TARGETING_INTEREST
),

workspace_counts AS (
  -- Workspace layer counts using primary keys from schema.yml
  SELECT 'ad' AS table_name, COUNT(DISTINCT ad_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_AD
  
  UNION ALL
  
  SELECT 'business_account' AS table_name, COUNT(DISTINCT business_account_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_BUSINESS_ACCOUNT
  
  UNION ALL
  
  SELECT 'campaign' AS table_name, COUNT(DISTINCT campaign_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_CAMPAIGN
  
  UNION ALL
  
  SELECT 'custom_audience_history' AS table_name, COUNT(DISTINCT custom_audience_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_CUSTOM_AUDIENCE_HISTORY
  
  UNION ALL
  
  SELECT 'geolocation' AS table_name, COUNT(DISTINCT geolocation_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_GEOLOCATION
  
  UNION ALL
  
  SELECT 'interest' AS table_name, COUNT(DISTINCT interest_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_INTEREST
  
  UNION ALL
  
  SELECT 'time_zone' AS table_name, COUNT(DISTINCT time_zone_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TIME_ZONE
  
  -- Composite primary key tables
  UNION ALL
  
  SELECT 'ad_group' AS table_name, COUNT(DISTINCT CONCAT(ad_group_account_id, '|', ad_group_id)) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_AD_GROUP
  
  UNION ALL
  
  SELECT 'targeting_community' AS table_name, COUNT(DISTINCT CONCAT(targeting_community_ad_group_id, '|', targeting_community_id)) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_COMMUNITY
  
  UNION ALL
  
  SELECT 'targeting_custom_audience' AS table_name, COUNT(DISTINCT CONCAT(targeting_custom_audience_ad_group_id, '|', targeting_custom_audience_id)) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_CUSTOM_AUDIENCE
  
  UNION ALL
  
  SELECT 'targeting_device' AS table_name, COUNT(DISTINCT targeting_device_fivetran_id) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_DEVICE
  
  UNION ALL
  
  SELECT 'targeting_geolocation' AS table_name, COUNT(DISTINCT CONCAT(targeting_geolocation_ad_group_id, '|', targeting_geolocation_id)) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_GEOLOCATION
  
  UNION ALL
  
  SELECT 'targeting_interest' AS table_name, COUNT(DISTINCT CONCAT(targeting_interest_ad_group_id, '|', targeting_interest_id)) AS workspace_count
  FROM REDDIT_DBT_MODEL_GENERATION_PROD.WORKSPACE_MARKETING.WK_REDDIT_ADS_TARGETING_INTEREST
)

-- Final comparison with validation results
SELECT 
  r.table_name,
  r.raw_count,
  w.workspace_count,
  r.raw_count - w.workspace_count AS count_difference,
  CASE 
    WHEN r.raw_count = w.workspace_count THEN '✅ PASS'
    WHEN r.raw_count &gt; w.workspace_count THEN '⚠️ RAW &gt; WORKSPACE (Expected due to deduplication)'
    ELSE '❌ FAIL - WORKSPACE &gt; RAW (Unexpected)'
  END AS validation_status,
  ROUND((w.workspace_count::FLOAT / r.raw_count::FLOAT) * 100, 2) AS data_retention_percentage
FROM raw_counts r
JOIN workspace_counts w ON r.table_name = w.table_name
ORDER BY r.table_name;
</code></pre>
<p>&lt;/details&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1758030995/guicjhzwvrz3czwjs3xo.png" alt="query results table"></p>
<p>Running this query showed:</p>
<ul>
<li><strong>Zero differences</strong> in row counts after deduplication</li>
<li><strong>100% data retention</strong> across all tables</li>
<li><strong>All tests passed</strong> successfully</li>
</ul>
<h2>The bottom line: Massive time savings</h2>
<ul>
<li>
<p><strong>Traditional approach:</strong> 6-8 hours of manual coding, testing, and debugging</p>
</li>
<li>
<p><strong>GitLab Duo approach:</strong> 6-8 minutes of generation + review time</p>
</li>
</ul>
<p>This represents a 60x improvement in developer efficiency (from 6-8 hours to 6-8 minutes), while maintaining high code quality.</p>
<h2>Best practices for success</h2>
<p>Based on this experience, here are key recommendations:</p>
<h3>Prepare your metadata</h3>
<ul>
<li>Extract complete table structures including data types and constraints.</li>
<li>Identify primary keys and relationships upfront.</li>
<li>Export clean, well-formatted CSV input files.</li>
</ul>
<p><strong>Note:</strong> By connecting GitLab Duo via MCP to your (meta)data, you could exclude this manual step.</p>
<h3>Provide clear context</h3>
<ul>
<li>Reference existing example MRs when possible.</li>
<li>Specify your coding standards and style guides.</li>
<li>Be explicit about folder structure and naming conventions.</li>
</ul>
<h3>Validate thoroughly</h3>
<ul>
<li>Always create validation queries for data integrity.</li>
<li>Test locally before merging.</li>
<li>Run your CI/CD pipeline to catch any issues.</li>
</ul>
<h3>Leverage AI for follow-up tasks</h3>
<ul>
<li>Generate test queries automatically.</li>
<li>Create documentation templates.</li>
<li>Build validation scripts.</li>
</ul>
<h2>What's next</h2>
<p>This demonstration shows how AI-powered development tools like GitLab Duo are also transforming data engineering workflows. The ability to generate hundreds of lines of production-ready code in minutes —  complete with tests, documentation, and proper structure — represents a fundamental shift in how we approach repetitive development tasks.</p>
<p>By leveraging AI to handle the repetitive aspects of dbt model creation, data engineers can focus on higher-value activities like data modeling strategy, performance optimization, and business logic implementation.</p>
<p><strong>Ready to try this yourself?</strong> Start with a small dataset, prepare your metadata carefully, and watch as GitLab Duo transforms hours of work into minutes of automated generation.</p>
<blockquote>
<p><a href="https://about.gitlab.com/gitlab-duo/agent-platform/">Trial GitLab Duo Agent Platform today.</a></p>
</blockquote>
<h2>Read more</h2>
<ul>
<li><a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">GitLab 18.3: Expanding AI orchestration in software engineering</a></li>
<li><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></li>
</ul>
]]></content>
        <author>
            <name>Dennis van Rooijen</name>
            <uri>https://about.gitlab.com/blog/authors/dennis-van rooijen</uri>
        </author>
        <published>2025-09-16T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab and Accenture announce Global Reseller Agreement]]></title>
        <id>https://about.gitlab.com/blog/gitlab-and-accenture-announce-global-reseller-agreement/</id>
        <link href="https://about.gitlab.com/blog/gitlab-and-accenture-announce-global-reseller-agreement/"/>
        <updated>2025-09-15T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>We're excited to announce that GitLab and Accenture have signed a global reseller agreement, establishing Accenture as an authorized GitLab reseller and Professional Services Provider. This agreement enables Accenture to provide GitLab's complete DevSecOps platform directly to customers through multiple fulfillment channels, including the AWS Marketplace.</p>
<h2>A milestone in collaboration</h2>
<p>This collaboration combines GitLab's comprehensive, intelligent DevSecOps platform with Accenture's extensive expertise in digital transformation and implementation services, enabling organizations to build and deliver secure software at scale. The global reseller agreement provides a global framework that can be easily adapted to local conditions.</p>
<p>The collaboration will initially focus on several key areas:</p>
<ol>
<li><strong>Enterprise-scale DevSecOps Transformation:</strong> Helping organizations modernize their development practices and streamline their software delivery lifecycle</li>
<li><strong>Mainframe Modernization:</strong> Assisting customers with migrating from legacy systems</li>
<li><strong>GitLab Duo with Amazon Q:</strong> Offering AI-driven software development to organizations looking to accelerate development velocity while maintaining end-to-end security and compliance</li>
</ol>
<h2>Looking ahead</h2>
<p>We’re looking forward to helping our joint customers accelerate innovation, streamline development processes, and strengthen their security posture to achieve their business objectives more effectively.</p>
<p>For more information about how GitLab and Accenture can help your organization, please <a href="https://about.gitlab.com/partners/channel-partners/#/2328213">visit our partner site</a> or contact your Accenture or GitLab representative.</p>
]]></content>
        <author>
            <name>GitLab</name>
            <uri>https://about.gitlab.com/blog/authors/gitlab</uri>
        </author>
        <published>2025-09-15T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[How we supercharged GitLab CI statuses with WebSockets]]></title>
        <id>https://about.gitlab.com/blog/how-we-supercharged-gitlab-ci-statuses-with-websockets/</id>
        <link href="https://about.gitlab.com/blog/how-we-supercharged-gitlab-ci-statuses-with-websockets/"/>
        <updated>2025-09-15T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>We just reduced API calls by 92.56% on GitLab's CI job status updates – from 45 million to 3.4 million calls per day. Instead of needing to wait up to half a minute, users now see job status changes instantly. Here's how we did it.</p>
<h2>The problem: Polling in 2025</h2>
<p>It's 2025, WebSockets are in and polling is out. Polling is more of a legacy method of getting &quot;real-time&quot; updates for software. It's time-driven, meaning clients make network calls to a server on an interval usually between 5 and 30 seconds. Even if the data hasn't changed, those network requests are made to try and get the most accurate data served to the client.
WebSockets are event-driven, so you only make network requests to the server when the data has actually changed, i.e., a status in a database column changes from <code>pending</code> to <code>running</code>. Unlike traditional HTTP requests where the client repeatedly asks the server for updates (polling), WebSockets establish a persistent, two-way connection between the client and server. This means the server can instantly push updates to the client the moment something changes, eliminating unnecessary network traffic and reducing latency. For monitoring job statuses or real-time data, this is far more efficient than having clients poll the server every few seconds just to check if anything is different.</p>
<h2>The transformation</h2>
<p>Previously, the job header on the job log view was utilizing polling to get the most recent status for a single job. That component made a network request every 30 seconds no matter what to try and get the true state of the job.
<img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1757932872/b4zsw0zaasxnu5mm7szu.png" alt="Job header on job log view"></p>
<p>Our metrics showed that:</p>
<ul>
<li><strong>547,145</strong> network calls happened per 15 minutes</li>
<li><strong>45,729,530</strong> network calls happened per 24 hours
Users experienced frustrating delays seeing status updates, and we were hammering our database.</li>
</ul>
<h2>Enter GraphQL subscriptions</h2>
<p>In comes GraphQL subscriptions with WebSockets. GraphQL subscriptions are a feature that extends GraphQL beyond simple request-response queries and mutations, allowing clients to maintain a real-time connection to the server. While regular GraphQL queries fetch data once and return it, subscriptions let you say 'notify me whenever this specific data changes.' Under the hood, GraphQL subscriptions typically use WebSockets to maintain that persistent connection. Here's what we did:</p>
<ol>
<li>First, we refactored the job header component to use GraphQL for its data</li>
<li>Then we implemented a GraphQL subscription to serve real-time updates with ActionCable (Rails' WebSocket framework).</li>
</ol>
<h2>The results</h2>
<p>After this implementation, our users now get truly real-time accurate job status – updates appear instantly when jobs change state. The performance gains are remarkable:</p>
<ul>
<li><strong>92.56% reduction</strong> in API calls for this component</li>
<li>Now averaging <strong>39,670</strong> network calls per 15 minutes (down from 547,145)</li>
<li>Only <strong>3,403,395</strong> network calls per 24 hours (down from 45,729,530)
We also monitored CPU utilization and operation rate per command over the last week and have not seen any significant increase on our services. Win-win for the software and the team.</li>
</ul>
<h2>What's next</h2>
<p>This is just the beginning. We're working on making every CI status in the GitLab product real-time. Currently, many parts of GitLab's UI still rely on polling to check for updates. Our goal is to systematically replace these polling mechanisms with GraphQL subscriptions, giving users instant feedback across the entire CI/CD workflow.
Want to see this capability in action? Check out any job log view and watch those status updates fly. Not a GitLab user yet? <a href="https://about.gitlab.com/free-trial/devsecops/">Try GitLab Ultimate with GitLab Duo Enterprise</a> for free for 30 days.</p>
]]></content>
        <author>
            <name>Payton Burdette</name>
            <uri>https://about.gitlab.com/blog/authors/payton-burdette</uri>
        </author>
        <published>2025-09-15T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Supercharge your Git workflows]]></title>
        <id>https://about.gitlab.com/blog/supercharge-your-git-workflows/</id>
        <link href="https://about.gitlab.com/blog/supercharge-your-git-workflows/"/>
        <updated>2025-09-10T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Picture this: You're working on the Chromium project and you need to clone the repository. You run <code>git clone</code>, grab a coffee, check your email, maybe take a lunch break, and 95 minutes later, you finally have your working directory. This is the reality for developers working with large repositories containing 50GB+ of data.</p>
<p>The productivity impact is staggering. CI/CD pipelines grind to a halt waiting for repository clones. Infrastructure costs skyrocket as compute resources sit idle. Developer frustration mounts as context-switching becomes the norm.</p>
<p>But what if that 95-minute wait could be reduced to just 6 minutes? What if you could achieve a 93% reduction in clone times using proven techniques?</p>
<p>Enter <a href="https://gitlab.com/gitlab-accelerates-embedded/misc/git-much-faster">Git Much Faster</a> — a comprehensive benchmarking and optimization script that transforms how you work with large Git repositories. Built from real-world experience optimizing embedded development workflows, this script provides practical strategies delivering measurable performance improvements across standard git clones, optimized configurations, and Git's built-in Scalar tool.</p>
<p>You'll discover how to dramatically reduce git clone times using optimization strategies, explore real-world performance benchmarks from major repositories like the Linux kernel and Chromium, and understand how to implement these optimizations safely in both development and CI/CD environments.</p>
<h2>Project overview: What is Git Much Faster?</h2>
<p>Git Much Faster is a script I wrote as an enablement tool to allow you to benchmark multiple clone optimization approaches on the same client — whether that is a traditional developer workstation, CI, cloud-hosted development environments or specialized clones for GitOps. It also contains the curated configuration settings for the fastest clone optimization. You can use these settings as a starting point and adapt or remove configurations that create too lean of a clone for your client's intended use of the repository clone.</p>
<p>Git Much Faster addresses a fundamental challenge: Git's default clone behavior prioritizes safety over speed. While this works for small repositories, it becomes a significant bottleneck with large codebases, extensive binary assets, or complex monorepo structures.</p>
<p>The problem manifests across increasingly common scenarios. Embedded development teams inherit repositories filled with legacy firmware binaries, bootloaders, and vendor SDKs stored directly in version control. Web applications accumulate years of marketing assets and design files. Game development projects contain massive 3D models and audio files growing repository sizes into tens of gigabytes.</p>
<p>Enterprise CI/CD pipelines suffer particularly acute pain. Each job requires a fresh repository clone, and when operations take 20 to 90 minutes, entire development workflows grind to a halt. Infrastructure costs multiply as compute resources remain idle during lengthy clone operations.</p>
<p>Git Much Faster solves this through comprehensive benchmarking comparing four distinct strategies: standard git clone (baseline with full history), optimized git clone (custom configurations with compression disabled and sparse checkout), Git's Scalar clone (integrated partial cloning), and current directory assessment (analyzing existing repositories without re-cloning).</p>
<p>The tool provides measurable, repeatable benchmarking in controlled AWS environments, eliminating variables that make performance testing unreliable. The real power of Git Much Faster is to run all the benchmarks in whatever your target environment looks like — so if slow network connections are a reality for some developers, you can decipher the best clone optimization for their situation.</p>
<h2>Technical deep dive: The optimization strategies</h2>
<p>Understanding Git Much Faster's effectiveness requires examining specific configurations that address Git's performance bottlenecks through a layered approach tackling network transfer efficiency, CPU utilization, and storage patterns.</p>
<p>The most significant gains come from two key optimizations. The first, <code>core.compression=0</code>, eliminates CPU-intensive compression during network operations. CPU cycles spent compressing often exceed bandwidth savings on modern high-speed networks. This optimization alone reduces clone times by 40% to 60%.</p>
<p>The second major optimization, <code>http.postBuffer=1024M</code>, addresses Git's conservative HTTP buffer sizing. Large repositories benefit tremendously from increased buffer sizes, allowing Git to handle larger operations without breaking them into multiple requests, reducing protocol overhead.</p>
<p>Git Much Faster leverages shallow clones using <code>--depth=1</code> (fetching only the latest commit) and partial clones with <code>--filter=blob:none</code> (deferring file content downloads until checkout). Shallow clones reduce data by 70%-90% for mature repositories, while partial clones prove particularly effective for repositories with large binary assets.</p>
<p>Sparse checkout provides surgical precision in controlling checked-out files. Git Much Faster implements comprehensive exclusion covering 30+ binary file types — images, documents, archives, media files, and executables — reducing working directory size by up to 78% while maintaining full source code access.</p>
<p>Git's Scalar tool, integrated into Git since Version 2.38, combines partial clone, sparse checkout, and background maintenance. However, benchmarking reveals Scalar doesn't implement the aggressive compression and buffer optimizations providing the most significant performance gains. Testing shows the custom optimized approach typically outperforms Scalar by 48%-67% while achieving similar disk space savings.</p>
<h2>End-to-end load reduction</h2>
<p>An interesting thing about optimizing the clone operation is that it also reduces complete system loading because you are reducing the size of your request. GitLab has a specialized, horizontal scaling layer known as <a href="https://docs.gitlab.com/administration/gitaly/praefect/">Gitaly Cluster</a>. When full history clones and large monorepos are the norm, the sizing of Gitaly Cluster is driven higher. This is because all git clone requests are serviced by a server-side binary to create “pack files” to be sent over the wire. Since these server-side git operations involve running compression utilities, it drives all three of memory, CPU, and I/O requirements at once.</p>
<p>When git clone operations are optimized to reduce the size of the total content ask, it reduces load on the end-to-end stack: Client, Network, Gitaly Service and Storage. All layers speed up and become cheaper at the same time.</p>
<h2>Real-world performance results</h2>
<p>Git Much Faster's effectiveness is demonstrated through rigorous benchmarking across diverse, real-world repositories using consistent AWS infrastructure with Arm instances and controlled network conditions.</p>
<p><strong>Linux kernel repository (7.5GB total):</strong> Standard clone took 6 minutes 29 seconds. Optimized clone achieved 46.28 seconds — an 88.1% improvement, reducing the .git directory from 5.9GB to 284MB. Scalar took 2 minutes 21 seconds (63.7% improvement), completing 67.3% slower than the optimized approach.</p>
<p><strong>Chromium repository (60.9GB total):</strong> Standard clone required 95 minutes 12 seconds. Optimized clone achieved 6 minutes 41 seconds — a dramatic 93% improvement, compressing the .git directory from 55.7GB to 850MB. Scalar took 13 minutes 3 seconds (86.3% improvement) but remained 48.8% slower than the optimized approach.</p>
<p><strong>GitLab website repository (8.9GB total):</strong> Standard clone took 6 minutes 23 seconds. Optimized clone achieved 6.49 seconds — a remarkable 98.3% improvement, reducing the .git directory to 37MB. Scalar took 33.60 seconds (91.2% improvement) while remaining 80.7% slower.</p>
<p>The benchmarking reveals clear patterns: Larger repositories show more dramatic improvements, binary-heavy repositories benefit most from sparse checkout filtering, and the custom optimization approach consistently outperforms both standard Git and Scalar across all repository types.</p>
<h2>Practical implementation guide</h2>
<p>Implementation requires understanding when to apply each technique based on use case and risk tolerance. For development requiring full repository access, use standard Git cloning. For read-heavy workflows needing rapid access to current code, deploy optimized cloning. For CI/CD pipelines where speed is paramount, optimized cloning provides maximum benefit.</p>
<p>Getting started requires only simple download and execution:</p>
<pre><code class="language-bash">curl -L https://gitlab.com/gitlab-accelerates-embedded/misc/git-much-faster/-/raw/master/git-much-faster.sh -o ./git-much-faster.sh

# For benchmarking
bash ./git-much-faster.sh --methods=optimized,standard --repo=https://github.com/your-org/your-repo.git
</code></pre>
<p>For production-grade testing, Git Much Faster project includes complete Terraform infrastructure for AWS deployment, eliminating variables that skew local testing results.</p>
<p>Optimized clones require careful consideration of limitations. Shallow clones prevent access to historical commits, limiting operations like <code>git log</code> across file history. For teams adopting optimizations it is best to create specific optimizations for high volume usage. For instance, developers can perform an optimized clone, and if and when needed, convert to full clones when needed via <code>git fetch --unshallow</code>. If a given CI job accesses commit history (e.g. using GitVersion), then you may need the full history, but not a checkout.</p>
<h2>Use cases and industry applications</h2>
<p>Embedded development presents unique challenges where projects historically stored compiled firmware and hardware design files directly in version control. These repositories often contain FPGA bitstreams, PCB layouts, and vendor SDK distributions ballooning sizes into tens of gigabytes. Build processes frequently require cloning dozens of external repositories, multiplying performance impact.</p>
<p>Enterprise monorepos encounter Git performance challenges as repositories grow encompassing multiple projects and accumulated historical data. Media and asset-heavy projects compound challenges, as mentioned above — web applications accumulate marketing assets over years, while game development faces severe challenges with 3D models and audio files pushing repositories beyond 100GB. <a href="https://gitlab.com/gitlab-accelerates-embedded/misc/git-much-faster/-/tree/master?ref_type=heads#common-use-cases">More use cases</a> can be found in the project.</p>
<p>CI/CD pipelines represent the most impactful application. Each container-based CI job requires a fresh repository clone, and when operations consume 20 to 90 minutes, entire development workflows become unviable.</p>
<p>Geographically spread out development teams may have team members whose network performance to their primary development workstation is extremely limited or varies dramatically. Optimizing the Git clone can help by reducing over the wire sizes dramatically.</p>
<h2>Next steps</h2>
<p>Git clone optimization represents a transformative opportunity delivering measurable improvements — up to 93% reduction in clone times and 98% reduction in disk space usage — that fundamentally change how teams interact with codebases.</p>
<p>The key insight is that Git's default conservative approach leaves substantial performance opportunities untapped. By understanding specific bottlenecks — network transfer inefficiency, CPU-intensive compression, unnecessary data downloads — teams can implement targeted optimizations delivering transformative results.</p>
<p><strong>Ready to revolutionize your Git workflows?</strong></p>
<p><a href="https://gitlab.com/gitlab-accelerates-embedded/misc/git-much-faster">Read the docs in the Git Much Faster repository</a> and get started running benchmarks against your largest repositories. Begin with read-only optimization in CI/CD pipelines where benefits are immediate and risks minimal. As your team gains confidence, gradually expand optimization to development workflows based on measured results.</p>
<p>The future of Git performance optimization continues evolving, but fundamental principles — eliminating unnecessary work, optimizing for actual bottlenecks, measuring results rigorously — remain valuable regardless of future tooling evolution. Teams mastering these concepts today position themselves to leverage whatever improvements tomorrow's Git ecosystem provides.</p>
]]></content>
        <author>
            <name>Darwin Sanoy</name>
            <uri>https://about.gitlab.com/blog/authors/darwin-sanoy</uri>
        </author>
        <published>2025-09-10T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[A developer's guide to building secure retail apps with GitLab]]></title>
        <id>https://about.gitlab.com/blog/a-developers-guide-to-building-secure-retail-apps-with-gitlab/</id>
        <link href="https://about.gitlab.com/blog/a-developers-guide-to-building-secure-retail-apps-with-gitlab/"/>
        <updated>2025-09-04T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Retailers often find application security challenging — in large part because the <strong>attack surface is broader than ever</strong> due to the complexity of modern commerce. From mobile apps and AI-powered personalization to omni-channel platforms and in-store IoT, every touchpoint increases the number of systems that must be secured and monitored. A single vulnerability doesn’t just affect one component, it can cascade across payment processors, inventory systems, customer data, and ultimately, brand trust.</p>
<p>Traditional security approaches that once worked in simpler retail environments now struggle to keep up. Security processes are often bolted on as an afterthought, slowing teams down and increasing risk. But it doesn’t have to be this way.</p>
<p><strong>Modern platforms embed security throughout the development lifecycle,</strong> making protection a seamless part of the developer workflow, not a barrier to delivery. This approach turns security into a strategic advantage, enabling innovation without compromising resilience.</p>
<p>In this article, you'll discover how an integrated DevSecOps platform helps retail teams meet rising security demands <strong>without slowing down delivery or compromising customer experience</strong>.</p>
<h2>Why retail security demands a different approach</h2>
<p>In retail, security is about more than protecting data — it’s about protecting the customer experience that drives revenue. Any slowdown, outage, or vulnerability can lead to lost sales and broken trust. Retail platforms must stay online, meet compliance standards, and defend against nonstop attacks from the open internet. Unlike enterprise systems, they’re fully public-facing, with a much broader attack surface. Add in third-party integrations, APIs, and legacy systems, and it’s clear: traditional security approaches aren’t enough.</p>
<p>Adding to the complexity, retailers face a unique set of challenges that further increase their security risks, including:</p>
<h3>Supply chain fragility and API sprawl</h3>
<p>Shipping delays, global instability, and interconnected systems disrupt logistics. Nearly half of retailers report product availability issues, and 25% lack real-time inventory visibility, according to a <a href="https://premierconstructionnews.com/2024/05/25/retails-revival-fluent-commerce-study-finds-93-of-uk-retailers-expect-business-growth-over-next-year-despite-economic-challenges-and-supply-chain-disruption/">2024 Fluent Commerce survey</a>. While AI-powered forecasting helps, insecure APIs and fragile integrations across the digital supply chain create attack vectors.</p>
<h3>Legacy systems meet modern demands</h3>
<p>Many retailers operate on monolithic, outdated systems that struggle to support mobile apps, IoT devices, and real-time analytics securely. Without secure, agile foundations, each new digital touchpoint becomes a potential vulnerability.</p>
<h3>AI and compliance complexity</h3>
<p>AI reshapes retail experiences through personalized recommendations and advanced customer tracking technologies like beacon sensors, facial recognition, and mobile app location services that monitor movement and behavior within physical stores. These AI-powered systems enhance both customer experiences and demand forecasting capabilities for retailers. However, <a href="https://gdpr.eu/what-is-gdpr/">GDPR</a> (the European Union's General Data Protection Regulation) and similar global privacy laws require secure data handling and transparent AI logic. Security missteps can result in significant fines and lasting reputational damage.</p>
<h3>Customer-facing automation risks</h3>
<p>Self-checkouts, kiosks, and chatbots promise convenience and cost savings but often lack security hardening. These touchpoints become entry points for cyber attackers and enable traditional theft through weak fraud detection, limited monitoring, and easily manipulated systems that make shoplifting harder to detect.</p>
<h3>Disparate threat surfaces</h3>
<p>Retailers are in a unique position where they must secure across multiple vectors, often maintained by globally distributed teams (depending on the size of the organization). E-commerce platforms, mobile applications, point-of-sale (POS) systems, and in-store IoT devices all provide an entry point for threat actors with unique characteristics requiring different security solutions to ensure resiliency.</p>
<p>This creates a unique paradox: Retailers must innovate faster than ever while maintaining higher security standards than most industries, all while delivering seamless customer experiences across every channel.</p>
<h2>Why traditional AppSec falls short in retail</h2>
<p>Most retailers rely on disconnected security tools such as static application security testing (SAST) scanners, license checkers, and vulnerability assessments that work in isolation. This fragmented approach creates critical gaps:</p>
<ul>
<li>
<p><strong>Limited lifecycle coverage:</strong> Tools focus on narrow development phases, missing supply chain and runtime risks.</p>
</li>
<li>
<p><strong>Integration challenges:</strong> Legacy system gaps and poor tool connectivity create security blind spots between teams and solutions.</p>
</li>
<li>
<p><strong>Manual processes:</strong> Security handoffs create bottlenecks, and issues are often discovered late, when they’re more costly to fix.</p>
</li>
<li>
<p><strong>Team silos:</strong> Security remains isolated from daily development workflows and separate from compliance and IT teams.</p>
</li>
</ul>
<h3>The path forward</h3>
<p>In today’s fast-paced retail landscape, security can’t slow down innovation. Embedding it directly into the development lifecycle and bringing every team together on a single unified DevSecOps platform makes security a strategic advantage rather than a bottleneck.</p>
<h3>A DevSecOps platform enables secure innovation at scale</h3>
<p>GitLab provides the most comprehensive set of security scanners to maximize application coverage, including:</p>
<ul>
<li><a href="https://docs.gitlab.com/user/application_security/sast/">SAST</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/dast/">DAST</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/dependency_scanning/dependency_scanning_sbom/">Dependency scanning</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/container_scanning/">Container scanning</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/secret_detection/">Secret detection</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/iac_scanning/">Infrastructure-as-code scanning</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/api_fuzzing/">Fuzz testing</a></li>
</ul>
<p>But security isn’t just about scanning. It's about <a href="https://docs.gitlab.com/user/compliance/compliance_frameworks/">enforcing the right policies</a> to ensure vulnerabilities are identified and remediated consistently. With GitLab, security teams get full control to ensure the right scan is run on the right application, at the right time, and that the findings are addressed before they reach production.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756988740/x2dteagn1z8tjfahmobv.png" alt="Security scans in pipeline"></p>
<p>&lt;center&gt;&lt;i&gt;Security scans run in the CI/CD pipeline, ensuring immediate feedback on potential vulnerabilities.&lt;/i&gt;&lt;/center&gt;
&lt;p&gt;&lt;/p&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756988740/npsgvu5e0sd2kpoxug7f.png" alt="Vulnerability Report shows all vulnerabilities for a specific project or group."></p>
<p>&lt;center&gt;&lt;i&gt;Vulnerability Report shows all vulnerabilities for a specific project or group.&lt;/i&gt;&lt;/center&gt;</p>
<h3>One platform for Dev, Sec, and Ops</h3>
<p>Retail teams waste countless hours switching between tools, manually transferring data, losing information between systems due to fragile integrations, and reconciling conflicting reports. A unified platform eliminates this friction:</p>
<ul>
<li><strong>Single source of truth</strong> for source code, pipelines, vulnerabilities, and compliance</li>
<li><strong>No integration overhead</strong> or tool compatibility issues</li>
<li><strong>Consistent workflows</strong> across all teams and projects</li>
</ul>
<p>The result? Teams spend time solving problems instead of managing tools.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756988739/d2nzltd1a2gypywzhv5f.png" alt="Compliance center where you can enforce compliance frameworks for your projects."></p>
<p>&lt;center&gt;&lt;i&gt;The compliance center is where you can enforce compliance frameworks for your projects.&lt;/i&gt;&lt;/center&gt;
&lt;p&gt;&lt;/p&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756988740/szoocztazaup2avkaxhu.png" alt="In the merge request, developers require approval if risks are detected before merging code, according to defined policies."></p>
<p>&lt;center&gt;&lt;i&gt;In the merge request, developers require approval if risks are detected before merging code, according to defined policies.&lt;/i&gt;&lt;/center&gt;</p>
<h3>Shared security responsibility, not silos</h3>
<p>The most successful retail security programs make security everyone's responsibility, not just the security team's burden.</p>
<p><strong>Developer empowerment</strong></p>
<p>Security and compliance guidance appears directly in merge requests, making it impossible to miss critical issues. Developers get immediate feedback on each commit, with clear explanations of risks and remediation steps. For example,  AI-powered vulnerability explanation and vulnerability resolution help developers understand and fix security issues independently, reducing bottlenecks and building security expertise across the team.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756988741/uenrjye3arfg9wjtwss1.png" alt="Vulnerability page with a button for explaining or resolving issues with AI. Helps to bridge the knowledge gap with AI."></p>
<p>&lt;center&gt;&lt;i&gt;Vulnerability page with a button for explaining or resolving issues with AI. Helps to bridge the knowledge gap with AI.&lt;/i&gt;&lt;/center&gt;</p>
<p>&lt;p&gt;&lt;/p&gt;</p>
<p><strong>Automated compliance</strong></p>
<p>Generate audit reports, track license usage, and maintain a software bill of materials (SBOM) without manual effort.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756988739/gpakhdvkegloqxhaeje8.png" alt="GitLab's automated dependency report provides a comprehensive SBOM, displaying all project dependencies with their vulnerability status, license details, and security findings for complete transparency and compliance."></p>
<p>&lt;center&gt;&lt;i&gt;GitLab's automated dependency report provides a comprehensive SBOM, displaying all project dependencies with their vulnerability status, license details, and security findings for complete transparency and compliance.&lt;/i&gt;&lt;/center&gt;
&lt;p&gt;&lt;/p&gt;</p>
<p>This approach transforms security from a gate that slows delivery into a foundation that enables confident, rapid innovation.</p>
<h2>Platform vs. point tools: What retailers need to know</h2>
<table>
<thead>
<tr>
<th>Capability</th>
<th>Point Tools</th>
<th>GitLab DevSecOps Platform</th>
</tr>
</thead>
<tbody>
<tr>
<td>SAST/DAST/API/Fuzz</td>
<td>Separate &amp; limited</td>
<td>Fully integrated</td>
</tr>
<tr>
<td>License &amp; dependency scanning</td>
<td>Often external tools</td>
<td>Built-in</td>
</tr>
<tr>
<td>Compliance &amp; audit reporting</td>
<td>Manual or disconnected</td>
<td>Automated with traceability</td>
</tr>
<tr>
<td>Collaboration across teams</td>
<td>Fragmented</td>
<td>Unified environment</td>
</tr>
<tr>
<td>End-to-end visibility</td>
<td>Tool-specific</td>
<td>Full lifecycle + value stream view</td>
</tr>
</tbody>
</table>
<h2>The bottom line: Security excellence drives retail success</h2>
<p>In retail, security isn't just about protecting data, it's about protecting the customer experience that drives revenue. When security slows down releases or creates vulnerabilities, it directly impacts sales. Your customers expect secure, seamless experiences every time.</p>
<p>GitLab's integrated DevSecOps platform helps retailers:</p>
<ul>
<li><strong>Deploy faster without compromising security</strong> with automated scans that catch issues before customers do.</li>
<li><strong>Meet compliance requirements effortlessly</strong> through built-in reporting for GDPR, PCI-DSS, and industry standards.</li>
<li><strong>Significantly reduce security tool costs</strong> by replacing multiple point solutions with one platform.</li>
<li><strong>Turn developers into security advocates</strong> with guidance and automation, not roadblocks.</li>
</ul>
<p>Take a tour of some of GitLab's security capabilities:</p>
<ul>
<li><a href="https://gitlab.navattic.com/ve-vr-short">Resolving vulnerabilities with GitLab Duo</a></li>
<li><a href="https://gitlab.navattic.com/gitlab-scans">Adding scans to pipeline</a></li>
<li><a href="https://gitlab.navattic.com/compliance-short">Compliance frameworks</a></li>
<li><a href="https://gitlab.navattic.com/advanced-sast-short">Advanced SAST</a></li>
</ul>
<blockquote>
<p>Ready to get started? Discover how GitLab Ultimate with Duo Enterprise can streamline your retail security strategy with <a href="https://about.gitlab.com/free-trial/">a free trial</a>.</p>
</blockquote>
]]></content>
        <author>
            <name>Itzik Gan Baruch</name>
            <uri>https://about.gitlab.com/blog/authors/itzik-gan baruch</uri>
        </author>
        <author>
            <name>Rebeca Fenoy-Anthony</name>
            <uri>https://about.gitlab.com/blog/authors/rebeca-fenoy-anthony</uri>
        </author>
        <published>2025-09-04T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vibe coding with GitLab Duo Agent Platform: Issue to MR Flow]]></title>
        <id>https://about.gitlab.com/blog/vibe-coding-with-gitlab-duo-agent-platform-issue-to-mr-flow/</id>
        <link href="https://about.gitlab.com/blog/vibe-coding-with-gitlab-duo-agent-platform-issue-to-mr-flow/"/>
        <updated>2025-09-03T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><a href="https://about.gitlab.com/gitlab-duo/agent-platform/">GitLab Duo Agent Platform</a> (available now in Beta) provides a framework for AI agents to interact with GitLab resources like issues and merge requests, enabling complex, multistep tasks from concept to completion. Agent Platform offers conversational (<a href="https://about.gitlab.com/blog/gitlab-duo-chat-gets-agentic-ai-makeover/">agentic chat</a>) and automated (<a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">agent Flows</a>) experiences to assist with code generation, modernization, security vulnerability resolution, and project analysis — all while providing enterprise-grade security and customizable controls.</p>
<p>&quot;Issue to MR&quot; is an agent Flow that streamlines turning a well-scoped issue into a draft merge request (MR). The Flow analyzes an issue’s description and requirements, opens a draft MR linked to the issue, creates a development plan, and proposes an implementation — right from the GitLab UI.</p>
<h2>The developer challenge</h2>
<p>Product tweaks such as rearranging a UI layout, adjusting component sizing, or making a minor workflow change shouldn't require hours of setup work. Yet developers find themselves caught in a frustrating cycle: hunting through codebases to locate the right files, creating branches, piecing together scattered changes across multiple components, and navigating complex review processes. And this is all before they can even see if their solution works. Development overhead transforms what should be quick iterations into time-consuming tasks, slowing down feedback loops and making simple product improvements feel like major undertakings.</p>
<h2>How to use the Issue to MR Flow to accelerate an application update</h2>
<p>You first need to fulfill these prerequisites before using the Issue to MR Flow.</p>
<p>Prerequisites:</p>
<ul>
<li>An existing issue with clear requirements and acceptance criteria. This will help GitLab Duo Agent Platform better understand what you're trying to achieve and improve the quality of your output.</li>
<li>Project access at Developer or higher permissions as the Flow will be making edits to your project's source code.</li>
<li>GitLab Duo Agent Platform enabled for your group or project, with Flows allowed. For this, go to your project’s <strong>Settings &gt; General &gt; GitLab Duo &gt; Allow flow execution</strong> toggle and enable it. GitLab is committed to helping provide guardrails, so agentic AI features require turning on these toggles to protect sensitive projects and ensure only the projects you want are accessible to GitLab Duo Agent Platform.</li>
</ul>
<p>Once you have fulfilled all the prerequisites above, you can follow these steps to take advantage of the Issue to MR Flow:</p>
<ol>
<li>
<p>Create a project issue that describes what you’d like GitLab Duo Agent Platform to accomplish for you. Provide as much detail as possible in the issue description. If the issue already exists, open it by going to <strong>Plan &gt; Issues</strong> and clicking on the issue describing the update you want. Keep the issue well-scoped and specific.</p>
</li>
<li>
<p>Below the issue header, click on <strong>Generate MR with Duo</strong> to kick off the Flow.</p>
</li>
<li>
<p>If you’d like to track the progress of the agents working on implementing your issue, go to <strong>Automate &gt; Agent sessions</strong> to see the live session log as agents plan and propose changes.</p>
</li>
<li>
<p>When the pipeline completes, a link to the MR appears in the issue’s activity. Open it to review the summary and file-level changes.</p>
</li>
<li>
<p>If you’d like to validate the proposed updates by GitLab Duo Agent Platform locally, you can pull the branch on your laptop, build and run your app, and verify that the update behaves as expected. If needed, make edits in the MR and proceed with normal review.</p>
</li>
<li>
<p>If you’re happy with all the proposed application updates, merge the MR to the main branch.</p>
</li>
</ol>
<h2>Why the Issue to MR Flow works well for application changes</h2>
<p>The Issue to MR Flow proposes code changes and updates the MR directly, so you spend less time locating files and only have to evaluate and review the result. In addition, the MR is automatically linked to the originating issue, keeping context tight for reviewers and stakeholders. Finally, you can monitor the agent session to understand what’s happening at each step.</p>
<h2>Benefits of GitLab Duo Agent Platform</h2>
<p>GitLab Duo Agent Platform is <a href="https://about.gitlab.com/blog/gitlab-duo-agent-platform-public-beta/">an agentic orchestration layer</a> that brings <strong>full project context</strong>, including planning to coding, building, securing, deploying, and monitoring, so agents can help across the entire software development lifecycle (SDLC), not just code editing.</p>
<ul>
<li>
<p>Unified data model: GitLab Duo Agents operate on GitLab’s unified SDLC data, enabling higher-quality decisions and collaboration across tasks — including non-coding ones.</p>
</li>
<li>
<p>Security and compliance are built-in: GitLab Duo Agents run within enterprise guardrails and are usable even in highly-regulated or offline/air-gapped environments.</p>
</li>
<li>
<p>Interoperability and extensibility: Orchestrate flows across vendors and tools; connect external data via <a href="https://about.gitlab.com/topics/ai/model-context-protocol/">MCP</a>/A2A for richer context.</p>
</li>
<li>
<p>Scale collaboration: GitLab Duo Agents work in the GitLab UI and IDEs, enabling many-to-many human-agent collaboration.</p>
</li>
<li>
<p>Discoverable and shareable: Find and share agents and Flows in a centralized AI Catalog.</p>
</li>
</ul>
<h2>Try the Issue to MR Flow today</h2>
<p>For application updates, like a modest UI adjustment, the Issue to MR Flow helps you move from a clear issue to a reviewable MR quickly, with progress you can monitor and changes you can validate and merge through your standard workflow. It keeps context, reduces handoffs, and lets your team focus on quality rather than busywork.</p>
<p>Watch the Issue to MR Flow in action:</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/BrrMHN4gXF4?si=J7beTgWOLxvS4hOw&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<blockquote>
<p>Try the Issue to MR Flow on GitLab Duo Agent Platform now with a <a href="https://about.gitlab.com/free-trial/">free trial of GitLab Ultimate with Duo Enterprise</a>.</p>
</blockquote>
]]></content>
        <author>
            <name>Cesar Saavedra</name>
            <uri>https://about.gitlab.com/blog/authors/cesar-saavedra</uri>
        </author>
        <published>2025-09-03T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab achieves ISO/IEC 42001 certification for AI governance]]></title>
        <id>https://about.gitlab.com/blog/gitlab-achieves-iso-iec-42001-certification-for-ai-governance/</id>
        <link href="https://about.gitlab.com/blog/gitlab-achieves-iso-iec-42001-certification-for-ai-governance/"/>
        <updated>2025-09-02T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Artificial intelligence (AI) is transforming how we work and solve problems across every industry. As AI becomes more integrated into business processes and decision-making, the need for robust AI governance frameworks has never been more critical. Organizations must balance the potential opportunity of AI with ensuring AI systems are built safely, ethically, and with accountability.</p>
<p>As part of our commitment to responsible AI management, we're excited to announce that GitLab has achieved the ISO/IEC 42001 certification, the first internationally recognized standard for establishing, implementing, maintaining, and continually improving an Artificial Intelligence Management System (AIMS) within organizations.</p>
<p>The scope of the certification includes our comprehensive AI offering, GitLab Duo, as well as GitLab Duo Agent Platform and its components. As a leader in DevSecOps, GitLab provides AI-powered features across the development lifecycle, including capabilities such as:</p>
<ul>
<li>
<p><a href="https://about.gitlab.com/blog/gitlab-duo-agent-platform-public-beta/">GitLab Duo Agent Platform</a> (now in public beta, general availability planned for later this year): Enables asynchronous collaboration between developers and specialized AI agents throughout the software development lifecycle, helping transform linear development processes into dynamic, parallel workflows while providing agents with access to all of the software engineering context stored within GitLab's unified platform.</p>
</li>
<li>
<p><a href="https://docs.gitlab.com/user/project/repository/code_suggestions/">Code Suggestions</a> (generally available): Allows developers to stay in flow by predictively completing code blocks, defining function logic, generating tests, and proposing common code like regex patterns, all in the same environment where they already code.</p>
</li>
<li>
<p><a href="https://docs.gitlab.com/user/application_security/vulnerabilities/#explaining-a-vulnerability">Vulnerability Explanation</a> (generally available): Helps developers and security analysts understand vulnerabilities, how they might be exploited, and how to fix them.</p>
</li>
<li>
<p><a href="https://docs.gitlab.com/user/gitlab_duo/">Test Generation</a> (generally available): Creates tests automatically for selected code, improving coverage and reducing manual effort.</p>
</li>
</ul>
<h2>What this certification means for GitLab users</h2>
<p><strong>Enhanced trust and transparency:</strong> Our AI features are built and managed according to globally recognized best standards for AI governance, supporting reliability and ethical implementation.</p>
<p><strong>Strategic risk management:</strong> We've implemented risk assessment and risk treatment strategies for AI components within our platform, considering aspects such as operational business continuity risks, technical risks, security and privacy risks, and broader societal implications. This proactive approach enhances customer data protection and facilitates more reliable AI-powered features.</p>
<p><strong>Continuous improvement:</strong> Under the ISO/IEC 42001 framework, we will work to continuously evaluate and enhance our AI capabilities through annual external surveillance audits, regular internal assessments, and leadership AIMS review while maintaining standards of quality and responsibility.</p>
<p><strong>Regulatory alignment:</strong> As AI regulations continue to evolve globally, like the EU AI Act, this certification supports GitLab's alignment with emerging regulatory requirements.</p>
<p>This achievement validates GitLab's position as the trusted platform for AI-powered DevSecOps, and we are excited to continue leading the way in responsible AI innovation.</p>
<h2>Learn more</h2>
<ul>
<li>View the ISO/IEC 42001 certificate at the <a href="https://trust.gitlab.com/">GitLab Trust Center</a>.</li>
<li>Read about our <a href="https://handbook.gitlab.com/handbook/security/isms/">AIMS in our handbook</a>.</li>
<li>Check out the <a href="https://about.gitlab.com/ai-transparency-center/">GitLab AI Transparency Center</a>.</li>
<li>Explore all <a href="https://docs.gitlab.com/user/gitlab_duo/">GitLab Duo features and capabilities</a> in our documentation.</li>
</ul>
]]></content>
        <author>
            <name>Davoud Tu</name>
            <uri>https://about.gitlab.com/blog/authors/davoud-tu</uri>
        </author>
        <published>2025-09-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Secure Rust development with GitLab]]></title>
        <id>https://about.gitlab.com/blog/secure-rust-development-with-gitlab/</id>
        <link href="https://about.gitlab.com/blog/secure-rust-development-with-gitlab/"/>
        <updated>2025-09-02T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Rust has emerged as one of the most beloved programming languages due to its performance,
memory safety, and concurrency features. As Rust adoption continues to grow, many developers
are looking for robust CI/CD platforms to support their Rust projects.</p>
<p>GitLab's appeal to Rust developers extends beyond simple code hosting. The platform offers
robust <a href="https://about.gitlab.com/topics/ci-cd/">CI/CD</a> capabilities that align perfectly with Rust's emphasis on safety, performance, and reliability. GitLab makes it easy to create repositories and use off-the-shelf Docker
containers to put together custom CI jobs. Developers can easily set up automated testing,
cross-platform builds, and documentation generation. The platform's integrated approach to
DevSecOps resonates with Rust's philosophy of providing comprehensive tooling out of the box.</p>
<h2>About the demo application</h2>
<p>Being interested in how mortgage rates affect monthly payments and how hard it is to
to afford a house in the current times, I decided to write a <a href="https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/rust/mortgage-calculator">mortgage calculator</a> in Rust,
which I will use as an example throughout this tutorial. Feel free to <a href="https://docs.gitlab.com/user/project/import/repo_by_url/">import this project</a> and follow along.</p>
<p>The mortgage calculator will help users calculate monthly mortgage payments,
including principal, interest, property taxes, insurance, PMI, and HOA fees. It provides a
modern, intuitive GUI using the <a href="https://www.egui.rs/">egui</a> framework, as well as a CLI for running it in the terminal.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314538/l5bjnzqvpoyikuyxpx2a.png" alt="Mortgage calculator GUI"></p>
<p>This application contains a <a href="https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/rust/mortgage-calculator/-/blob/main/.gitlab-ci.yml?ref_type=heads"><code>.gitlab-ci.yml</code></a> that generates a pipeline, which will build, test,
package, scan, and deploy the software. We will go over this pipeline definition in detail in the
sections below.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314540/llmsfoaupedhkem0hjqp.png" alt="Mortgage Calculator Pipeline"></p>
<h2>Building and testing Rust applications</h2>
<p>GitLab's Docker-based CI/CD system excels at Rust development workflows, providing a robust
foundation for compilation, testing, and code quality checks. The platform's caching mechanisms
are particularly valuable for Rust projects, which can have lengthy compilation times due to the
language's thorough optimization and safety checking processes.</p>
<h3>Building</h3>
<p>Rust's excellent cross-compilation capabilities combined with GitLab's flexible CI/CD system
create a powerful solution for building applications across multiple platforms. This is particularly
valuable for Rust applications that need to run on various operating systems and architectures without
sacrificing performance or requiring platform-specific code.</p>
<p><strong>Note:</strong> You can learn more about the <code>.gitlab-ci.yml</code> by reading the <a href="https://docs.gitlab.com/ci/yaml/">CI/CD YAML syntax reference</a>.</p>
<pre><code class="language-yaml"># Cache configuration to speed up builds by reusing dependencies
cache:
  key: $CI_COMMIT_REF_SLUG                               # Use branch name as cache key
  paths:
    - .cargo/                                            # Cache Cargo registry and git dependencies
    - target/                                            # Cache compiled artifacts

# Base template for Rust jobs - shared configuration
.rust-template:
  image: rust:$RUST_VERSION-slim                         # Use slim Rust image for faster downloads
  before_script:
    # Install system dependencies required for building the Rust application
    - apt-get update &amp;&amp; apt-get install -y pkg-config libssl-dev libgtk-3-dev libxcb-shape0-dev libxcb-xfixes0-dev

# Template for cross-compilation build jobs
.build-template:
  extends: .rust-template                                # Inherit from rust-template
  stage: build                                           # Execute during build stage
  script:
    - rustup target add $TARGET                          # Add the target platform for cross-compilation
    - cargo build --release --target $TARGET             # Build optimized release binary for target platform

# Build for Linux x86_64 (primary target platform)
build-linux:
  extends: .build-template                               # Use build template configuration
  variables:
    TARGET: x86_64-unknown-linux-gnu                     # Linux 64-bit target
  artifacts:
    paths:
      - target/$TARGET/release/mortgage-calculator       # Save the compiled binary
    expire_in: 1 week                                    # Keep artifacts for 1 week
  allow_failure: false                                   # This build must succeed

# Build for Windows x86_64 (cross-compilation)
build-windows:
  extends: .build-template                               # Use build template configuration
  variables:
    TARGET: x86_64-pc-windows-gnu                        # Windows 64-bit target
  artifacts:
    paths:
      - target/$TARGET/release/mortgage-calculator       # Save the compiled binary
    expire_in: 1 week                                    # Keep artifacts for 1 week
  allow_failure: true                                    # Allow this build to fail (cross-compilation can be tricky)

# Build for macOS x86_64 (cross-compilation)
build-macos:
  extends: .build-template                               # Use build template configuration
  variables:
    TARGET: x86_64-apple-darwin                          # macOS 64-bit target
  artifacts:
    paths:
      - target/$TARGET/release/mortgage-calculator       # Save the compiled binary
    expire_in: 1 week                                    # Keep artifacts for 1 week
  allow_failure: true                                    # Allow this build to fail (cross-compilation can be tricky)
</code></pre>
<p>This GitLab CI configuration defines three build jobs that cross-compile a Rust mortgage calculator
application for different platforms:</p>
<ul>
<li><code>build-linux</code> creates a Linux x86_64 binary (required to pass)</li>
<li><code>build-windows</code> creates Windows binaries (allowed to fail)</li>
<li><code>build-macos</code> creates macOS x86_64 binaries (allowed to fail)</li>
</ul>
<p>All builds use shared templates for dependency caching and consistent build environments.</p>
<h3>Testing</h3>
<p>GitLab CI/CD streamlines code testing through its integrated pipeline system that automatically
triggers test suites whenever code is pushed to the repository. Developers can define multiple
types of tests — unit tests, integration tests, linting, and formatting checks — all within a single
<code>.gitlab-ci.yml</code> configuration file, with each test running in isolated Docker containers to ensure
consistent environments.</p>
<pre><code class="language-yaml"># Run unit tests
test:unit:
  extends: .rust-template                                # Use Rust template configuration
  stage: test                                            # Execute during test stage
  script:
    - cargo test --verbose                               # Run all unit tests with verbose output

# Run integration tests using the compiled binary
test:integration:
  extends: .rust-template                                # Use Rust template configuration
  stage: test                                            # Execute during test stage
  script:
    # Test the compiled binary with sample inputs and verify expected output
    - target/x86_64-unknown-linux-gnu/release/mortgage-calculator --cli calculate --property-value 350000 --down-payment 70000 --interest-rate 5.0 | grep -q &quot;TOTAL MONTHLY PAYMENT&quot;
  needs:
    - build-linux                                        # Depends on Linux build job completing

# Run Clippy linter for code quality checks
test:clippy:
  extends: .rust-template                                # Use Rust template configuration
  stage: test                                            # Execute during test stage
  script:
    - rustup component add clippy                        # Install Clippy linter
    - cargo clippy -- -D warnings                       # Run Clippy and treat warnings as errors
  allow_failure: true                                    # Allow linting failures (can be improved over time)

# Check code formatting
test:format:
  extends: .rust-template                                # Use Rust template configuration
  stage: test                                            # Execute during test stage
  script:
    - rustup component add rustfmt                       # Install Rust formatter
    - cargo fmt -- --check                              # Check if code is properly formatted
  allow_failure: true                                    # Allow formatting failures (can be improved over time)
</code></pre>
<p>This GitLab CI configuration creates four test jobs that validate a Rust mortgage calculator application:</p>
<ul>
<li><code>test:unit</code> runs unit tests</li>
<li><code>test:integration</code> executes the compiled Linux binary with sample inputs to verify functionality</li>
<li><code>test:clippy</code> performs code quality linting (allowed to fail)</li>
<li><code>test:format</code> checks code formatting compliance (allowed to fail)</li>
</ul>
<h2>Package and Container Registries</h2>
<p>GitLab's <a href="https://docs.gitlab.com/user/packages/package_registry/">Package Registry</a> provides a secure solution to the common challenge of sharing
internal libraries and proprietary code within organizations. This capability is essential
for enterprises and teams that need to maintain artifacts while leveraging the broader
Rust ecosystem.</p>
<p>The registry supports <a href="https://docs.gitlab.com/user/packages/generic_packages/">generic artifacts</a> with fine-grained access controls that
align with GitLab's project permissions. This means teams can share libraries securely across
projects while maintaining intellectual property protection and compliance requirements.</p>
<p>Additonally, we can containerize our application and store the container images in
GitLab's built-in <a href="https://docs.gitlab.com/user/packages/container_registry/">Container Registry</a>.</p>
<h3>Publishing to GitLab Package Registry</h3>
<p>This section of our <code>.gitlab-ci.yml</code> demonstrates how to package and publish Rust applications
as tar archives to GitLab's generic package registry using CI/CD automation.</p>
<pre><code class="language-yaml"># Package application as tar archive
package:tar:
  image: alpine/curl:8.12.1                             # Lightweight image with curl for uploading
  stage: package                                         # Execute during package stage
  variables:
    PACKAGE_NAME: mortgage-calculator.tar.gz             # Name of the archive file
  script:
    # Create tar archive of the Linux binary
    - tar -czvf $PACKAGE_NAME target/x86_64-unknown-linux-gnu/release/mortgage-calculator
    # Upload archive to GitLab Package Registry using API
    - |
      curl -v --location --header &quot;JOB-TOKEN: $CI_JOB_TOKEN&quot; \
      --upload-file $PACKAGE_NAME \
      &quot;$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/tar/$CI_COMMIT_BRANCH/$PACKAGE_NAME&quot;
  artifacts:
    paths:
      - target/x86_64-unknown-linux-gnu/release/mortgage-calculator  # Save binary
      - mortgage-calculator.tar.gz                      # Save archive
    expire_in: 1 week                                    # Keep artifacts for 1 week
  needs:
    - build-linux                                        # Depends on Linux build completing
</code></pre>
<p>This GitLab CI configuration defines one packaging job <code>package:tar</code> that creates a compressed tar archive
of the Linux mortgage calculator binary and uploads it to GitLab's Package Registry, while also saving
both the binary and archive as pipeline artifacts.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314541/uqnejcipnge3r1dngotm.png" alt="Package Registry"></p>
<h3>Publishing to GitLab Container Registry</h3>
<p>The below shows the process of building Dockerfiles and publishing Docker images to GitLab's
Container Registry with proper tagging and authentication.</p>
<pre><code class="language-yaml"># Package application as Docker image
package:docker:
  image: docker:24.0                                     # Use Docker image for building containers
  stage: package                                         # Execute during package stage
  services:
    - docker:24.0-dind                                   # Docker-in-Docker service for building images
  before_script:
    # Login to GitLab Container Registry
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker build -t $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG .  # Build Docker image with commit SHA tag
    - docker tag $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG $DOCKER_IMAGE_NAME:latest  # Also tag as latest
    - docker push $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG  # Push tagged image to registry
    - docker push $DOCKER_IMAGE_NAME:latest             # Push latest image to registry
</code></pre>
<p>This GitLab CI configuration defines one Docker packaging job <code>package:docker</code> that builds a Docker
image of the mortgage calculator application, tags it with both the commit SHA and &quot;latest,&quot; and
then pushes both tagged versions to  GitLab's Container Registry.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314537/nlodhvdnpqccf0cryfqu.png" alt="Container Registry"></p>
<h2>Security scanning</h2>
<p>GitLab security scanning provides comprehensive protection that goes beyond Rust's built-in memory
safety guarantees. While Rust prevents many common security vulnerabilities at compile time,
applications still need protection against dependency vulnerabilities, unsafe code blocks, and
logical security issues.</p>
<p>The platform's Static Application Security Testing (SAST) integrates seamlessly with
Rust's toolchain, providing automated security analysis as part of the CI/CD pipeline
This proactive approach catches security issues before they reach production, supporting
both compliance requirements and secure development practices.</p>
<p>GitLab's comprehensive security features including SAST, dependency scanning, secret detection
and more can easily be implemented via templates, as seen below. <strong>Note:</strong> Additional configuration is
required to <a href="https://docs.gitlab.com/user/application_security/sast/#scan-a-rust-application">enable SAST for Rust</a>.</p>
<pre><code class="language-yaml"># Include GitLab's security scanning templates for DevSecOps
include:
  - template: Jobs/SAST.gitlab-ci.yml                    # Static Application Security Testing
  - template: Jobs/Dependency-Scanning.latest.gitlab-ci.yml  # Scan dependencies for vulnerabilities
  - template: Jobs/Container-Scanning.gitlab-ci.yml      # Scan Docker containers for vulnerabilities
  - template: Jobs/SAST-IaC.gitlab-ci.yml               # Infrastructure as Code security scanning
  - template: Jobs/Secret-Detection.gitlab-ci.yml        # Detect secrets in source code
</code></pre>
<p>Security scanners can be configured similar to how you would configure any GitLab job:</p>
<pre><code class="language-yaml"># Configure Semgrep SAST scanning for Rust files
semgrep-sast:
  rules:
    - if: $CI_COMMIT_BRANCH                              # Run on any branch
      exists:
        - &quot;**/*.rs&quot;                                      # Only if Rust files exist
  variables:
    SAST_EXCLUDED_PATHS: &quot;.cargo/**&quot;                     # Exclude Cargo cache from scanning

# Scan Docker container for security vulnerabilities
container_scanning:
  stage: container-security                              # Execute during container-security stage
  variables:
    CS_IMAGE: $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG      # Image to scan
    CS_DOCKERFILE_PATH: Dockerfile                       # Path to Dockerfile for context
  needs:
    - package:docker                                     # Depends on Docker image being built
</code></pre>
<p>When vulnerabilites are detected in a merge request (MR), you can see all the vulnerabilites detected
and use the provided information to either resolve or dismiss vulnerabilities.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314544/gcicke3ltvbcv57mr8zr.png" alt="Vulnerability MR view"></p>
<p>You also can add <a href="http://docs.gitlab.com/user/application_security/policies/">Security Policies</a> to require approval before vulnerable code can be merged, or to force scanners to run regardless of what is in the <code>.gitlab-ci.yml</code>.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314538/c95nwocol03lonrr6r4n.png" alt="Merge Request Approval Policy"></p>
<p>You can triage all the vulnerabilities found in your default branch by using the
<a href="https://docs.gitlab.com/user/application_security/vulnerability_report/">Vulnerability Report</a>:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314544/b0nctigbv1ddpzizkp9x.png" alt="Vulnerability Report"></p>
<h2>Documentation with GitLab Pages</h2>
<p><a href="https://docs.gitlab.com/user/project/pages/">GitLab Pages</a> provides an excellent platform for
hosting Rust documentation, integrating seamlessly with Cargo's built-in documentation generation.
This creates a powerful workflow where API documentation, project guides, and examples are automatically
generated and deployed with every code change.</p>
<p>The combination of <code>cargo doc</code> and GitLab Pages enables teams to maintain up-to-date documentation
without manual intervention, ensuring that documentation stays synchronized with code changes.
This is particularly valuable for Rust projects where comprehensive documentation is essential
to understand complex APIs and safety contracts.</p>
<h3>Automated documentation deployment</h3>
<p>The following code shows the CI/CD configuration for automatically generating and deploying Rust documentation using
<code>cargo doc</code> and GitLab Pages.</p>
<pre><code class="language-yaml"># Generate and publish documentation using GitLab Pages
build-documentation:
  extends: .rust-template                                # Use Rust template configuration
  stage: build                                           # Execute during build stage
  variables:
    GIT_SUBMODULE_STRATEGY: recursive                    # Clone submodules recursively if needed
  pages: true                                            # Enable GitLab Pages deployment
  script:
    - cargo doc --no-deps                                # Generate documentation without dependencies
    - mv target/doc public                               # Move docs to public directory for Pages
  artifacts:
    paths:
      - public                                           # GitLab Pages serves from public directory
  rules:
    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH     # Only run on default branch (main/master)
  environment:
    name: documentation                                  # Environment name for tracking
    url: $CI_PAGES_URL/mortgage_calculator/index.html   # Documentation URL
  allow_failure: true                                    # Allow documentation build to fail
</code></pre>
<p>Once the job is complete, you can see the deployed documentation by visiting the <a href="https://docs.gitlab.com/ci/environments/">GitLab Environment</a> it has been deployed to.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314541/aofa6wwjugeyeshuwg9r.png" alt="Pages environment"></p>
<p>This allows you to manage multiple versions of the documentation in different envrionments.
The documentation will be deployed consistent with the <code>cargo doc</code> output:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314541/go0tmljjzoxq5bujsdbv.png" alt="Pages build"></p>
<h2>Deploy anywhere</h2>
<p>One of GitLab's greatest strengths is its infrastructure-agnostic approach to deployment.
Whether your organization runs on traditional on-premises servers, modern cloud platforms,
hybrid environments, or edge computing infrastructure, GitLab's CI/CD system can deploy Rust
applications seamlessly across any target environment.</p>
<p>GitLab's deployment flexibility stems from its container-first approach and extensive integration
ecosystem. The platform supports deployment to virtually any infrastructure that can run
containers, virtual machines, or bare-metal applications. This versatility is particularly
valuable for Rust applications, which often need to run in diverse environments ranging from
resource-constrained embedded systems to high-performance cloud clusters.</p>
<h3>Kubernetes deployment</h3>
<p>GitLab simplifies Kubernetes deployments by providing built-in cluster integration and
pre-configured Docker images that include essential tools like Helm and kubectl, eliminating
the need for developers to set up complex deployment environments.</p>
<pre><code class="language-yaml"># Deploy application to Kubernetes cluster
deploy:kubernetes:
  stage: deploy                                          # Execute during deploy stage
  image: registry.gitlab.com/gitlab-org/cluster-integration/helm-install-image:helm-3.10.0-kube-1.24.6-alpine-3.15  # Image with Helm and kubectl
  variables:
    HELM_HOST: &quot;localhost:44134&quot;                         # Helm host configuration
    HELM_DEPLOY_NAME: mortgage-calc-$CI_COMMIT_REF_NAME  # Deployment name based on branch
    HELM_DEPLOY_NAMESPACE: calc-app                      # Kubernetes namespace for deployment
    KUBE_CONTEXT: $CI_PROJECT_PATH:rust-mortgage-calculator  # Kubernetes context to use
  script:
    - kubectl config use-context $KUBE_CONTEXT          # Set the kubectl context
    # Deploy using Helm with custom values and Docker image
    - helm upgrade --install $HELM_DEPLOY_NAME chart -f chart/values.yaml
      --namespace $HELM_DEPLOY_NAMESPACE
      --create-namespace
      --set image=$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG
      --set calc.name=$HELM_DEPLOY_NAME 
  needs:
    - package:docker                                     # Depends on Docker image being available
</code></pre>
<p>This GitLab CI configuration defines one deployment job <code>deploy:kubernetes</code> that uses Helm to deploy the
mortgage calculator application to a Kubernetes cluster, creating or upgrading the deployment in a
dedicated namespace while using the Docker image built in the previous packaging stage.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314538/bgmbh4qyfxcnnlqvsitc.png" alt="Kubernetes output"></p>
<h2>GitLab Duo AI features</h2>
<p><a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo</a> AI features provide significant advantages for Rust development by offering intelligent code
suggestions and explanations specifically tailored to the language's unique syntax and patterns.</p>
<p>The GitLab platform supports Rust as one of its <a href="https://docs.gitlab.com/user/project/repository/code_suggestions/supported_extensions/#supported-languages-by-ide">directly-supported languages</a> for every IDE, ensuring high-quality code completion and generation
that understands Rust's ownership model, memory safety principles, and idiomatic patterns.</p>
<h3>GitLab Duo Code Suggestions</h3>
<p>GitLab Duo's ability to provide contextual code suggestions while typing helps developers navigate Rust's
sometimes complex syntax more efficiently, reducing the learning curve for newcomers and accelerating
productivity for experienced developers.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314538/uvy6hmzvyd0mnqeic9tq.png" alt="Code Suggestions"></p>
<h3>GitLab Duo Chat</h3>
<p><a href="https://about.gitlab.com/blog/gitlab-duo-chat-gets-agentic-ai-makeover/">GitLab Duo Chat</a> complements the code suggestions by offering conversational assistance for explaining
Rust code sections, debugging compiler errors, and providing guidance on best practices. This is
particularly valuable in Rust development where compiler error messages, while helpful, can
sometimes be overwhelming for developers transitioning from other languages. The AI can help interpret
Rust's detailed error messages and suggest fixes, making the development process more efficient by
reducing the time spent deciphering compilation issues.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314537/depxztu1h89bez3ylwk3.png" alt="GitLab Duo Chat"></p>
<p>GitLab Duo Chat can also be used directly from Vulnerability Report to explain a vulnerability. GitLab Duo <a href="https://about.gitlab.com/the-source/ai/understand-and-resolve-vulnerabilities-with-ai-powered-gitlab-duo/">Vulnerability Explanation</a> represents a
significant advancement in making application security more accessible and actionable for development teams. Rather than simply flagging potential issues with
cryptic error codes. or technical jargon, AI breaks down each vulnerability's nature, potential impact, and remediation steps in terms that developers at
all skill levels can quickly grasp. This democratization of security knowledge accelerates the remediation process, reduces the back-and-forth between security
and development teams, and ultimately helps organizations ship more secure code faster:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405091/rrcenbfazhhulmrp99yx.png" alt="Vulnerability Explain 1">
&lt;p&gt;&lt;/p&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405094/b3o4lkexyn9lp41ib8ye.png" alt="Vulnerability Explain 2">
&lt;p&gt;&lt;/p&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405095/y56wq8j5tg10t4dgbgfq.png" alt="Vulnerability Explain 3">
&lt;p&gt;&lt;/p&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405090/mpc1mst4ydijpqdtlljm.png" alt="Vulnerability Explain 4">
&lt;p&gt;&lt;/p&gt;</p>
<p>GitLab Duo also provides <a href="https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/">Agentic Chat</a>, which serves as an intelligent development companion for Rust
applications, offering context-aware assistance throughout the entire development lifecycle. Developers
can leverage its conversational interface to generate Rust code snippets, scaffold new Rust projects with
appropriate <code>Cargo.toml</code> configurations, and much more.</p>
<h3>GitLab Duo Vulnerability Resolution</h3>
<p>GitLab Duo <a href="https://docs.gitlab.com/user/application_security/vulnerabilities/#vulnerability-resolution">Vulnerability Resolution</a> uses AI to automatically generate specific code fixes for detected
security issues, dramatically reducing remediation time from hours to minutes. AI analyzes vulnerable code patterns
and proposes precise patches tailored to the project's context, language, and dependencies while maintaining code
functionality and style consistency. This automation is particularly effective for common vulnerabilities like SQL
injection and cross-site scripting, enabling development teams to maintain velocity while significantly improving their
security posture without disrupting the development workflow.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405090/blpwclp68igekkecbyna.png" alt="Duo Remediate Example 1">
&lt;p&gt;&lt;/p&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405090/avvncsspwyirtk14jdbe.png" alt="Duo Remediate Example 2">
&lt;p&gt;&lt;/p&gt;</p>
<h3>GitLab Duo Code Review</h3>
<p>GitLab Duo's <a href="https://docs.gitlab.com/user/project/merge_requests/duo_in_merge_requests/#have-gitlab-duo-review-your-code">AI-powered code review</a> enhances the development process by providing intelligent, automated feedback on
MRs before human reviewers engage. AI analyzes code changes for potential bugs, security vulnerabilities,
performance issues, and adherence to coding standards, offering contextual suggestions and explanations that help developers
catch issues early. By augmenting traditional peer reviews with consistent, immediate AI insights, this feature reduces
the burden on senior developers, accelerates the review cycle, and ensures that basic quality checks are consistently
applied across all code contributions, ultimately improving code quality while allowing human reviewers to focus on
higher-level architectural and business logic concerns.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405090/hewxrp2f22mf2fe4daaa.png" alt="Duo Code Review 1">
&lt;p&gt;&lt;/p&gt;</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756405091/qbw1gi0l4ngysnyjwoy8.png" alt="Duo Code Review 2">
&lt;p&gt;&lt;/p&gt;</p>
<p>These are just some of the AI feautures that can be used to allow you to ship more secure Rust software faster than ever.
To learn about all the GitLab AI features provided, visit the <a href="https://about.gitlab.com/gitlab-duo/">GitLab Duo solution page</a>.</p>
<h2>The GitLab advantage for Rust</h2>
<p>GitLab provides a complete development platform that matches Rust's comprehensive approach:</p>
<p><strong>Integrated Workflow:</strong></p>
<ul>
<li><strong>Single Platform:</strong> Code, CI/CD, security, and deployment in one place</li>
<li><strong>Rust-optimized:</strong> Docker-based builds perfect for Rust's toolchain</li>
<li><strong>Security First:</strong> Built-in security scanning</li>
<li><strong>Enterprise-ready:</strong> Scalable infrastructure for large teams</li>
</ul>
<p><strong>Performance Benefits:</strong></p>
<ul>
<li><strong>Efficient Caching:</strong> Speeds up Rust's longer compilation times</li>
<li><strong>Parallel Builds:</strong> Maximizes GitLab Runner efficiency</li>
<li><strong>Artifact Management:</strong> Streamlined binary distribution</li>
</ul>
<p><strong>Developer Experience:</strong></p>
<ul>
<li><strong>Familiar Tools:</strong> Leverage standard Rust tooling (Cargo, Clippy, rustfmt)</li>
<li><strong>Visual Feedback:</strong> Comprehensive dashboards and reporting</li>
<li><strong>Automation:</strong> Reduces manual deployment and testing overhead</li>
<li><strong>GitLab Duo AI:</strong> Ship more secure software faster with AI throughout the entire software development lifecycle</li>
</ul>
<p>GitLab's platform capabilities perfectly complement Rust's strengths, creating an ecosystem
where safety, performance, and developer productivity converge. Rust applications on GitLab
represent the cutting edge of software development—powered by a platform that understands and
enhances the Rust development experience.</p>
<p>To learn more about the benefits of GitLab, sign up for a <a href="https://about.gitlab.com/free-trial/">free trial of GitLab Ultimate with Duo Enterprise</a>.</p>
]]></content>
        <author>
            <name>Fernando Diaz</name>
            <uri>https://about.gitlab.com/blog/authors/fernando-diaz</uri>
        </author>
        <published>2025-09-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why enterprise independence matters more than ever in DevSecOps]]></title>
        <id>https://about.gitlab.com/blog/why-enterprise-independence-matters-more-than-ever-in-devsecops/</id>
        <link href="https://about.gitlab.com/blog/why-enterprise-independence-matters-more-than-ever-in-devsecops/"/>
        <updated>2025-09-02T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>For over a decade, GitLab has been committed to transparency, independence, and putting developers first. Today, as the industry evolves, this matters more than ever. Enterprise leaders are asking critical questions: Who ultimately controls your development infrastructure? How is your code being used in AI systems? What happens when vendor priorities shift away from your critical requirements?</p>
<p>Last month, <a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">we announced GitLab 18.3</a>, the latest release of our AI-native DevSecOps platform. Agent Insights, part of GitLab Duo Agent Platform, provides visibility into agent decision-making processes. Expanded AI model support means no vendor lock-in. Enhanced governance controls help enable compliance across multiple jurisdictions.</p>
<p>These aren't just features. They're demonstrations of the transparency, independence, and developer-first approach that defines GitLab. Here's how this strategy translates into practice.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1115249475?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Who is GitLab_Robin_090225_FINAL&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h2>AI transparency across the DevSecOps lifecycle</h2>
<p><strong>At GitLab, our decade-long commitment to transparency directly addresses these concerns.</strong> As artificial intelligence becomes increasingly integrated into development workflows, organizations are rightfully concerned about how their code and data are being used for AI training.</p>
<p>The GitLab <a href="https://about.gitlab.com/ai-transparency-center/">AI Transparency Center</a>, launched in April 2024, provides clear documentation of our data governance practices, privacy protections, and ethical AI principles. Unlike platforms that may operate AI features with unclear data usage policies, GitLab prioritizes transparency so that customers  can understand <a href="https://docs.gitlab.com/user/gitlab_duo/data_usage/">exactly how their data is processed</a>, stored, and protected — with no training on that data.</p>
<p>Our approach extends to model flexibility and vendor independence. While some platforms lock customers into single, large language model (LLM) providers, creating additional vendor dependencies and potential single points of failure, GitLab's AI features are powered by a variety of models. This approach enables us to support a wide range of use cases, providing customers with the flexibility to align with their strategic priorities.</p>
<p>As we further develop GitLab Duo Agent Platform, we remain focused on data control and maintaining comprehensive human-in-the-loop controls. And GitLab Duo Self-Hosted provides complete data sovereignty with air-gapped deployment options, zero-day data retention policies, and the ability to process all AI requests within your own infrastructure.</p>
<p>Since May 2024, we've also maintained an <a href="https://handbook.gitlab.com/handbook/product/ai/continuity-plan/">AI continuity plan</a> with an industry-leading commitment: the ability to evaluate and move to a new model within 30 days if a provider changes its practices regarding customer data. This proactive approach to AI vendor risk management reflects our dedication to customer control.</p>
<h2>Choice in deployment, choice in cloud provider</h2>
<p><strong>You should be able to choose how and where to deploy your DevSecOps environment.</strong> GitLab provides genuine deployment flexibility. Organizations can choose from on-premises installations, multi-tenant SaaS, or GitLab Dedicated, our fully managed single-tenant SaaS solution, without sacrificing functionality or facing artificial restrictions designed to drive ecosystem lock-in. GitLab is also cloud-neutral, allowing customers to use the cloud provider that best suits their business needs and environment.</p>
<p>This flexibility proves invaluable when navigating complex jurisdictional requirements and regulatory challenges. When new data localization laws emerge — as we've seen across the European Union and other regions — organizations using GitLab can rapidly adapt their deployment strategies without being constrained by ecosystem dependencies.</p>
<p>From a procurement and risk management perspective, platform independence also provides crucial leverage in contract negotiations. Organizations aren't forced into restrictive licensing agreements that prioritize vendor interests over customer needs. This independence becomes particularly critical as enterprises become more vigilant about who controls their AI stack.</p>
<h2>Security and compliance: Built-in and always a priority</h2>
<p><strong>Security and compliance are now equally important to development features and should be built into the platform, not retrofitted as an afterthought.</strong> GitLab's single platform approach provides significant advantages over fragmented platforms that rely on third-party add-ins to match basic security and governance features. This architectural difference has significant implications for possible legal risk, operational efficiency, and regulatory compliance. Each additional tool in the chain represents another potential point of failure, another set of terms and conditions to negotiate, and another source of risk.</p>
<p>GitLab provides comprehensive built-in security and compliance capabilities, including custom compliance frameworks, dynamic application security testing (DAST), API fuzz testing, coverage-guided fuzzing, and infrastructure-as-code testing. These capabilities are natively integrated into the platform, offering consistent policy enforcement and reducing the compliance complexity and additional costs that come with managing multiple third-party tools.</p>
<p>Our <a href="https://docs.gitlab.com/user/compliance/compliance_center/">compliance center</a> provides a central location for teams to manage their compliance standards, adherence reporting, violations reporting, and compliance frameworks for their group. This unified approach to compliance management is particularly valuable for organizations operating in highly-regulated industries where audit trails and compliance documentation are critical.</p>
<h2>Staying close to our open source community</h2>
<p><strong>The best tools are shaped by the people who use them.</strong> Our commitment to open source and engagement with our community has been core to GitLab since our founding. For instance, our <a href="https://about.gitlab.com/community/co-create/">Co-Create program</a> is a collaborative initiative that enables customers to work directly with GitLab engineers to contribute features, fixes, and enhancements to the GitLab platform.</p>
<p>Our transparency value remains fundamental to our business. An example of this is our <a href="https://gitlab.com/groups/gitlab-org/-/issues">open issue tracker</a>, where customers can follow our progress and engage directly with the GitLab team in discussions about ways we can improve our product. We recently launched our <a href="https://about.gitlab.com/blog/inside-gitlabs-healthy-backlog-initiative/">Healthy Backlog Initiative</a> to give customers even greater visibility into our planning and direct their feedback to places with the greatest impact.</p>
<p>Our approach enables organizations to contribute to and benefit from open source innovation while maintaining the governance, audit trails, and security controls required for regulated environments.</p>
<h2>Data governance: Your data, your control</h2>
<p><strong>You maintain complete control over your data and how it's processed.</strong> Data governance has become an increasingly critical factor in enterprise technology decisions, driven by a complex web of national and regional data protection laws and growing concern about control over sensitive intellectual property — like source code, customer insights, strategic initiatives, and competitive intelligence.</p>
<p>With GitLab, you can manage who has access to AI-powered capabilities within the platform, extending beyond simple access controls to encompass encryption standards and audit capabilities aligned to regulatory frameworks. Also, customers' code and data are never used to train AI models.</p>
<h2>The choice is clear</h2>
<p>GitLab continues to lead in AI-native DevSecOps platform innovation – our recent <a href="https://about.gitlab.com/blog/gitlab-18-3-expanding-ai-orchestration-in-software-engineering/">18.3 release</a> demonstrates this – while staying true to the independence and transparency commitments that have always guided us.</p>
<p>Customers have a choice and it's clear: retaining control vs. vendor lock-in; transparency vs. uncertainty; dedication to innovation vs. whims of the larger ecosystem.</p>
<p>GitLab provides the foundation for sustainable digital transformation that balances innovation with independence, helping you achieve business value for your customers.</p>
<p><a href="https://about.gitlab.com/free-trial/">Try GitLab Ultimate with GitLab Duo for free today.</a></p>
]]></content>
        <author>
            <name>Robin Schulman</name>
            <uri>https://about.gitlab.com/blog/authors/robin-schulman</uri>
        </author>
        <published>2025-09-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Fine-grained permissions for job tokens is now GA]]></title>
        <id>https://about.gitlab.com/blog/fine-grained-job-tokens-ga/</id>
        <link href="https://about.gitlab.com/blog/fine-grained-job-tokens-ga/"/>
        <updated>2025-08-26T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><a href="https://about.gitlab.com/topics/ci-cd/">CI/CD</a> pipelines often inherit overprivileged permissions from user accounts, creating significant security risks if pipelines are compromised or tokens are leaked. <a href="https://about.gitlab.com/releases/2025/08/21/gitlab-18-3-released/">GitLab 18.3</a> introduces fine-grained permissions for job tokens to solve this problem, moving this security enhancement from Beta to GA.</p>
<p>This capability allows maintainers to implement granular permissions that control job token access to API resources. Following the <a href="https://about.gitlab.com/blog/the-ultimate-guide-to-least-privilege-access-with-gitlab/">principle of least privilege</a>, these job tokens have no ability to access any API resources until you explicitly grant them permissions.</p>
<p>This initial release includes fine-grained permissions for the following resources:</p>
<ul>
<li>Repositories</li>
<li>Deployments</li>
<li>Environments</li>
<li>Jobs</li>
<li>Packages</li>
<li>Pipelines</li>
<li>Releases</li>
<li>Secure Files</li>
<li>Terraform State</li>
</ul>
<p>Additional API endpoints are planned for future releases. For more information, see the <a href="https://gitlab.com/groups/gitlab-org/-/epics/6310">associated epic</a>.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1755633419/izgwpj45oxoof0frvhap.png" alt="fine-grained permissions example"></p>
<h2>The bigger picture</h2>
<p>This release represents a critical step in GitLab's broader mission to improve your software supply chain security. Historically, job tokens have been bound to the user running the pipeline, inheriting their privileges and creating security risks if pipelines are compromised.</p>
<p>Fine-grained permissions for job tokens provide a foundation for a more secure CI/CD ecosystem that:</p>
<ul>
<li><strong>Reduces attack surface</strong>: Implements the principle of least privilege by limiting access to only necessary resources</li>
<li><strong>Eliminates dependency on long-lived tokens</strong>: Provides a secure alternative that reduces the need for personal access tokens and other persistent credentials</li>
<li><strong>Prepares for machine-based identity</strong>: This opt-in approach lays the groundwork for eventually decoupling job tokens from user identities entirely, moving toward true machine-to-machine authentication</li>
<li><strong>Enables secure automation at scale</strong>: Supports complex deployment workflows and CI/CD components without compromising security</li>
</ul>
<h2>Getting started</h2>
<p>Security teams and DevOps engineers should evaluate this feature for any projects running automated deployments, package publishing, or infrastructure management. Since this is an opt-in capability, you can migrate gradually to minimize disruption to your existing pipelines.</p>
<p>Start by identifying your most critical pipelines and auditing their current permission requirements. Then enable fine-grained permissions and configure the minimal access needed for each project. For more information, see the <a href="https://docs.gitlab.com/ci/jobs/fine_grained_permissions/">documentation on fine-grained permissions for CI/CD job tokens</a>.</p>
]]></content>
        <author>
            <name>Alex Mark</name>
            <uri>https://about.gitlab.com/blog/authors/alex-mark</uri>
        </author>
        <author>
            <name>Joe Randazzo</name>
            <uri>https://about.gitlab.com/blog/authors/joe-randazzo</uri>
        </author>
        <published>2025-08-26T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Custom admin roles are now GA]]></title>
        <id>https://about.gitlab.com/blog/custom-admin-roles-now-ga/</id>
        <link href="https://about.gitlab.com/blog/custom-admin-roles-now-ga/"/>
        <updated>2025-08-25T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>GitLab is introducing granular permissions for the Admin area in GitLab Self-Managed and GitLab Dedicated instances. These custom admin roles allow organizations to implement the <a href="https://about.gitlab.com/blog/the-ultimate-guide-to-least-privilege-access-with-gitlab/">principle of least privilege</a> for their instances while maintaining operational efficiency. Similar to custom roles for groups and projects, custom admin roles provide fine-grained permissions to control access to the Admin area.</p>
<p>These granular admin permissions allow organizations to create purpose-built administrative roles instead of granting complete administrator access to users. Potential use cases include:</p>
<ul>
<li><strong>Platform Team:</strong> Access to runner management, instance monitoring, and performance metrics</li>
<li><strong>Support Team:</strong> Access to user management and troubleshooting workflows</li>
<li><strong>Leadership Team:</strong> Access to dashboards, usage statistics, and licensing</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756121189/xnnoyowwutlbxu9unho5.png" alt="Custom admin role"></p>
<h2>Features</h2>
<ul>
<li><strong>Granular permissions:</strong> Custom permissions let you build a role that fits your needs.</li>
<li><strong>Instance-level management:</strong> Custom admin roles are created and managed centrally.</li>
<li><strong>LDAP integration:</strong> Support for mapping large user sets to roles through directory servers.</li>
<li><strong>Audit integration:</strong> Works with existing <a href="https://docs.gitlab.com/administration/settings/sign_in_restrictions/#admin-mode">Admin mode</a> and audit events.</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1756121190/wedoc6gi4upivvjezyeu.png" alt="Custom admin role"></p>
<h2>Mission: Improve software supply chain security</h2>
<p>This feature represents a critical step in GitLab's broader mission to improve your software supply chain security. As part of this mission, GitLab has also added custom roles for projects and groups and <a href="https://docs.gitlab.com/ci/jobs/fine_grained_permissions/">granular permissions for CI/CD job tokens</a>.</p>
<p>For more information on custom admin roles, see <a href="https://docs.gitlab.com/user/custom_roles/">custom roles</a>. Additional permissions are planned for future releases. To share feedback, see the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509376">custom roles issue</a>.</p>
]]></content>
        <author>
            <name>Joe Randazzo</name>
            <uri>https://about.gitlab.com/blog/authors/joe-randazzo</uri>
        </author>
        <published>2025-08-25T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Embedded views: The future of work tracking in GitLab]]></title>
        <id>https://about.gitlab.com/blog/embedded-views-the-future-of-work-tracking-in-gitlab/</id>
        <link href="https://about.gitlab.com/blog/embedded-views-the-future-of-work-tracking-in-gitlab/"/>
        <updated>2025-08-21T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Ever find yourself switching between tabs in GitLab just to keep track of
what’s happening in your project? Maybe you’re checking on an issue, then
jumping to a merge request, then over to an epic to see how everything
connects. Before you know it, you’ve got a browser full of tabs and you’ve
lost your train of thought.</p>
<p>If that sounds familiar, you’re definitely not alone. So many teams waste time and energy flipping through various items in their project management software, just trying to get a handle on their work.</p>
<p>That's why we created <a href="https://docs.gitlab.com/user/glql/#embedded-views">embedded views</a>, powered by <a href="https://docs.gitlab.com/user/glql/">GitLab Query Language (GLQL)</a>. With embedded views, <a href="https://about.gitlab.com/releases/2025/08/21/gitlab-18-3-released/">available in 18.3</a>, you get live, relevant information right where you’re already working in GitLab. No more endless context switching. No more outdated reports. Just the info you need, right when you need it.</p>
<h2>Why embedded views matter</h2>
<p>Embedded views are more than just a new feature, they're a fundamental shift in how teams understand and track their work within GitLab. With embedded views, teams can maintain context while accessing real-time information, creating shared understanding, and improving collaboration without ever leaving their current workflow. It’s about making work tracking feel natural and effortless, so you can focus on what matters.</p>
<h2>How it works: Real-time data right where you need it the most</h2>
<p>Embedded views let you insert live GLQL queries in Markdown code blocks throughout wiki pages, epics, issues, and merge requests. Here's what makes them so useful:</p>
<h3>Always up to date</h3>
<p>GLQL queries are dynamic, pulling fresh data each time the page loads, so your embedded views always reflect the current state of your work, not the state when you embedded the view. When changes happen to issues, merge requests, or milestones, a page refresh will show those updates in your embedded view.</p>
<h3>Contextual awareness</h3>
<p>Use functions like <code>currentUser()</code> and <code>today()</code> to make queries context-specific. Your embedded views automatically adapt to show relevant information for whoever is viewing them, creating personalized experiences without manual configuration.</p>
<h3>Powerful filtering</h3>
<p>Filter by fields like assignee, author, label, milestone, health status, creation date, and more. Use logical expressions to get exactly the data you want. We support more than 30 fields as of 18.3.</p>
<h3>Customizable display</h3>
<p>You can display your data as a table, a list, or a numbered list. Choose which fields to show, set a limit on the number of items, and specify the sort order to keep your view focused and actionable.</p>
<h3>Availability</h3>
<p>You can use embedded views in group and project wikis, epic and issue descriptions, merge requests, and comments. GLQL is available across all GitLab tiers: Free, Premium, and Ultimate, on GitLab.com, GitLab Self-Managed, and GitLab Dedicated. Certain functionality, such as displaying epics, status, custom fields, iterations, and weights, is available in the Premium and Ultimate tiers. Displaying health status is available only in Ultimate.</p>
<h2>See embedded views in action</h2>
<p>The syntax of an embedded view's source is a superset of YAML that consists of:</p>
<ul>
<li>The <code>query</code> parameter: Expressions joined together with a logical operator, such as <code>and</code>.</li>
<li>Parameters related to the presentation layer, like <code>display</code>, <code>limit</code>, or <code>fields</code>, <code>title</code>, and <code>description</code>
represented as YAML.</li>
</ul>
<p>A view is defined in Markdown as a code block, similar to other code blocks like Mermaid.</p>
<p>For example:</p>
<blockquote>
<p>Display a table of first 5 open issues assigned to the authenticated user in <code>gitlab-org/gitlab</code>.
Display columns <code>title</code>, <code>state</code>, <code>health</code>, <code>description</code>, <code>epic</code>, <code>milestone</code>, <code>weight</code>, and <code>updated</code>.</p>
</blockquote>
<pre><code class="language-yaml">```glql
display: table
title: GLQL table 🎉
description: This view lists my open issues
fields: title, state, health, epic, milestone, weight, updated
limit: 5
query: project = &quot;gitlab-org/gitlab&quot; AND assignee = currentUser() AND state = opened
```
</code></pre>
<p>This source should render a table like the one below:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1755193172/ibzfopvpztpglnccwrjj.png" alt=""></p>
<p>An easy way to create your first embedded view is to navigate to the <strong>More options</strong> dropdown in the rich text editor toolbar. Once in this toolbar, select <strong>Embedded view</strong>, which populates the following query in a Markdown code block:</p>
<pre><code class="language-yaml">```glql
query: assignee = currentUser()
fields: title, createdAt, milestone, assignee
title: Issues assigned to current user
```
</code></pre>
<p>Save your changes to the comment or description where the code block appears, and you're done! You've successfully created your first embedded view!</p>
<h2>How GitLab uses embedded views</h2>
<p>Whether tracking merge requests targeting security releases, triaging bugs to improve backlog hygiene, or managing team onboarding and milestone planning, we rely on embedded views for mission-critical processes every day. This isn't just a feature we built, it's a tool we depend on to run our business effectively. When you adopt embedded views, you're getting a tested solution that's already helping GitLab teams work more efficiently, make data-driven decisions, and maintain visibility across complex workflows. Simply stated, embedded views can transform how your team accesses and analyzes the work that matters most to your success.</p>
<p>To learn and see more about how GitLab is using embedded views internally, check out <a href="https://about.gitlab.com/blog/how-gitlab-measures-red-team-impact-the-adoption-rate-metric/">How GitLab measures Red Team impact: The adoption rate metric</a>, and Global Search Release Planning issues for the <a href="https://gitlab.com/gitlab-org/search-team/team-tasks/-/issues/239">18.1</a>, <a href="https://gitlab.com/gitlab-org/search-team/team-tasks/-/issues/241">18.2</a>, and <a href="https://gitlab.com/gitlab-org/search-team/team-tasks/-/issues/245">18.3</a> milestones.</p>
<h2>What's next</h2>
<p>Embedded views are just the start of <a href="https://about.gitlab.com/direction/plan/knowledge/">Knowledge Group's</a> vision for work tracking. Learn more about what we're focusing on next in the <a href="https://gitlab.com/groups/gitlab-org/-/epics/15249">embedded views post-GA epic</a>. As embedded views evolve we're committed to making them even more powerful and <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/548722">accessible</a>.</p>
<h2>Share your experience</h2>
<p>Share your feedback in the <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/509792">embedded views GA feedback issue</a> or via the <a href="https://gitlab.fra1.qualtrics.com/jfe/form/SV_6PFhgZMBA06kr7E">embedded views GA survey</a>. Whether you've discovered innovative use cases, encountered challenges, or have ideas for improvements, we want to hear from you.</p>
]]></content>
        <author>
            <name>Matthew Macfarlane</name>
            <uri>https://about.gitlab.com/blog/authors/matthew-macfarlane</uri>
        </author>
        <author>
            <name>Himanshu Kapoor</name>
            <uri>https://about.gitlab.com/blog/authors/himanshu-kapoor</uri>
        </author>
        <author>
            <name>Alex Fracazo</name>
            <uri>https://about.gitlab.com/blog/authors/alex-fracazo</uri>
        </author>
        <published>2025-08-21T00:00:00.000Z</published>
    </entry>
</feed>