[{"data":1,"prerenderedAt":1002},["ShallowReactive",2],{"/blog/suspicious-git-activity-security-update":3,"navigation-en-us":218,"banner-en-us":645,"footer-en-us":655,"blog-post-authors-en-us-GitLab":900,"blog-related-posts-en-us-suspicious-git-activity-security-update":915,"blog-promotions-en-us":939,"next-steps-en-us":992},{"id":4,"title":5,"authors":6,"body":8,"category":198,"date":199,"description":200,"extension":201,"externalUrl":202,"faq":202,"featured":203,"heroImage":204,"meta":205,"navigation":206,"path":207,"seo":208,"slug":212,"stem":213,"tags":214,"template":216,"updatedDate":202,"__hash__":217},"blogPosts/en-us/blog/suspicious-git-activity-security-update.md","Repositories held for ransom by using valid credentials",[7],"GitLab",{"type":9,"value":10,"toc":191},"minimark",[11,22,31,43,48,63,72,75,79,87,92,95,115,121,144,148,151,161,164,167,181,184,188],[12,13,14,15,21],"p",{},"We've learned of suspicious Git activity using valid credentials (a password or personal access token) on GitLab. We identified the source based on a support ticket filed by ",[16,17,20],"a",{"href":18,"rel":19},"https://security.stackexchange.com/questions/209448/gitlab-account-hacked-and-repo-wiped",[],"Stefan Gabos"," yesterday, and immediately began investigating the issue. This is a user insecure practices issue, and is not specific to GitLab, as other git repositories are affected by this as well. We are issuing this advisory to all git repo users so that we can help heighten awareness of this issue and help git's user community protect their own data.",[12,23,24,25,30],{},"The breaches seem to rely on the attacker having knowledge of the affected users' passwords in order ",[16,26,29],{"href":27,"rel":28},"https://www.zdnet.com/article/a-hacker-is-wiping-git-repositories-and-asking-for-a-ransom/",[],"to wipe their Git repositories and hold them for ransom",". We have notified affected GitLab users and are working as quickly as possible to resolve the issue.",[32,33,34],"blockquote",{},[12,35,36,40],{},[37,38,39],"em",{},"“As a result of our investigation, we have strong evidence that the compromised accounts have account passwords being stored in plaintext on a deployment of a related repository. We strongly encourage the use of password management tools to store passwords in a more secure manner, and enabling two-factor authentication wherever possible, both of which would have prevented this issue.”",[37,41,42],{},"- Kathy Wang, Senior Director, Security",[44,45,47],"h2",{"id":46},"how-you-can-protect-yourself","How you can protect yourself",[12,49,50,51,56,57,62],{},"These breaches seemed to rely on the attacker having knowledge of the affected user’s password. We highly recommend strong passwords and unique passwords for everything (using a good password manager helps manage this). We strongly recommend all GitLab users enable ",[16,52,55],{"href":53,"rel":54},"https://docs.gitlab.com/user/profile/account/two_factor_authentication/",[],"two-factor authentication"," and use ",[16,58,61],{"href":59,"rel":60},"https://docs.gitlab.com/user/ssh/",[],"SSH keys"," to strengthen your GitLab account.",[12,64,65,66,71],{},"You may further protect your groups by applying the ",[16,67,70],{"href":68,"rel":69},"https://docs.gitlab.com/security/two_factor_authentication/#enforcing-2fa-for-all-users-in-a-group",[],"“Require all users in this group to setup Two-factor authentication”"," setting in the Group settings under “Permissions, LFS, 2FA”.",[12,73,74],{},"In this case, it can help to prevent a breach.",[44,76,78],{"id":77},"mitigation","Mitigation",[12,80,81,82,86],{},"We believe that no data has been lost, unless the owner/maintainer of the repository did not have a local copy and the GitLab copy was the only one. In some cases, repository files were changed. After updating account credentials, we recommend making use of ",[83,84,85],"code",{},"git"," commands to restore your repository to its previous state. If you have a full current copy of the repository on your computer, you can force push to the current HEAD of your local copy using:",[12,88,89],{},[83,90,91],{},"git push origin HEAD:master --force",[12,93,94],{},"Otherwise, you can still clone the repository and make use of:",[96,97,98,107],"ul",{},[99,100,101,106],"li",{},[16,102,105],{"href":103,"rel":104},"https://git-scm.com/docs/git-reflog",[],"git reflog"," or",[99,108,109,114],{},[16,110,113],{"href":111,"rel":112},"https://git-scm.com/docs/git-fsck",[],"git fsck"," to find your last commit and change the HEAD",[12,116,117,118,120],{},"As this is related to the use of ",[83,119,85],{},", GitLab does not have its own documentation or examples, but we have found these articles that may be of use:",[96,122,123,130,137],{},[99,124,125],{},[16,126,129],{"href":127,"rel":128},"https://git-scm.com/doc",[],"Git documentation",[99,131,132],{},[16,133,136],{"href":134,"rel":135},"https://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head-undo-commits/34519716#34519716",[],"How to move HEAD",[99,138,139],{},[16,140,143],{"href":141,"rel":142},"https://opensolitude.com/2012/02/29/recover-git-branch.html",[],"Use git fsck to recover a deleted branch",[44,145,147],{"id":146},"details","Details",[12,149,150],{},"On May 2, 2019 at approximately 10:00pm GMT GitLab received the first report of a repository being wiped with a single file left in place that demanded a bitcoin ransom be paid for the return of data:",[152,153,159],"pre",{"className":154,"code":156,"language":157,"meta":158},[155],"language-text","To recover your lost data and avoid leaking it: Send us 0.1 Bitcoin (BTC) to our Bitcoin address 1ES14c7qLb5CYhLMUekctxLgc1FV2Ti9DA and contact us by Email at admin@gitsbackup.com with your Git login and a Proof of Payment. If you are unsure if we have your data, contact us and we will send you a proof. Your code is downloaded and backed up on our servers. If we dont receive your payment in the next 10 Days, we will make your code public or use them otherwise.\n","text","",[83,160,156],{"__ignoreMap":158},[12,162,163],{},"We began to receive multiple reports, and were able to search through logs and repositories to determine the extent of the impact. A few repositories had the ransom threat left behind, some repositories were simply wiped, and a few accounts appeared to be successfully accessed by the attacker but not modified. All total, 131 users and 163 repositories were, at a minimum, accessed by the attacker. Affected accounts were temporarily disabled, and the owners were notified.",[12,165,166],{},"We noticed the following items in reference to this incident:",[96,168,169,172,175,178],{},[99,170,171],{},"The source IP of the attacks came from the 185.234.216.0/24 range.",[99,173,174],{},"The attacker appeared to use some type of “update script” in an attempt to perform the accesses, and the nature of the individual accesses strongly suggested the use of plaintext passwords that were locally stored.",[99,176,177],{},"Virtually all of the repositories were private repositories.",[99,179,180],{},"None of the accounts impacted had two-factor authentication enabled.",[12,182,183],{},"Since not all of the accesses resulted in both a repository wipe and a ransom note, this suggests that the attacker’s update script was possibly not working properly. This could be a result of a generic script being used against GitLab as well as GitHub and Bitbucket.",[44,185,187],{"id":186},"conclusion","Conclusion",[12,189,190],{},"We are continuing our investigation, and if we uncover more details that we feel will benefit our users and the security community at large, we will communicate that information as quickly and as transparently as possible. We are constantly looking for ways to improve our security and would appreciate any comments and questions you might have.",{"title":158,"searchDepth":192,"depth":192,"links":193},2,[194,195,196,197],{"id":46,"depth":192,"text":47},{"id":77,"depth":192,"text":78},{"id":146,"depth":192,"text":147},{"id":186,"depth":192,"text":187},"company","2019-05-03","We’ve learned of suspicious Git activity on GitLab. Affected users have been notified.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666262/Blog/Hero%20Images/default-blog-image.png",{},true,"/en-us/blog/suspicious-git-activity-security-update",{"title":5,"description":200,"ogTitle":5,"ogDescription":200,"noIndex":203,"ogImage":204,"ogUrl":209,"ogSiteName":210,"ogType":211,"canonicalUrls":209},"https://about.gitlab.com/blog/suspicious-git-activity-security-update","https://about.gitlab.com","article","suspicious-git-activity-security-update","en-us/blog/suspicious-git-activity-security-update",[215],"security","BlogPost","COd0A6TGoSo0Z2FHnGC3VfWaSWexAa-IfWtn71WdpBU",{"logo":219,"freeTrial":224,"sales":229,"login":234,"items":239,"search":565,"minimal":596,"duo":615,"switchNav":624,"pricingDeployment":635},{"config":220},{"href":221,"dataGaName":222,"dataGaLocation":223},"/","gitlab logo","header",{"text":225,"config":226},"Get free trial",{"href":227,"dataGaName":228,"dataGaLocation":223},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":230,"config":231},"Request a demo",{"href":232,"dataGaName":233,"dataGaLocation":223},"/sales/?contact-topic=request-demo","sales",{"text":235,"config":236},"Sign in",{"href":237,"dataGaName":238,"dataGaLocation":223},"https://gitlab.com/users/sign_in/","sign in",[240,269,369,374,488,543],{"text":241,"config":242,"menu":244},"Platform",{"dataNavLevelOne":243},"platform",{"type":245,"columns":246},"cards",[247,253,261],{"title":241,"description":248,"link":249},"The intelligent orchestration platform for DevSecOps",{"text":250,"config":251},"Explore our Platform",{"href":252,"dataGaName":243,"dataGaLocation":223},"/platform/",{"title":254,"description":255,"link":256},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":257,"config":258},"Meet GitLab Duo",{"href":259,"dataGaName":260,"dataGaLocation":223},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":262,"description":263,"link":264},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":265,"config":266},"Learn more",{"href":267,"dataGaName":268,"dataGaLocation":223},"/why-gitlab/","why gitlab",{"text":270,"left":206,"config":271,"menu":273},"Product",{"dataNavLevelOne":272},"solutions",{"type":274,"link":275,"columns":279,"feature":348},"lists",{"text":276,"config":277},"View all Solutions",{"href":278,"dataGaName":272,"dataGaLocation":223},"/solutions/",[280,304,327],{"title":281,"description":282,"link":283,"items":288},"Automation","CI/CD and automation to accelerate deployment",{"config":284},{"icon":285,"href":286,"dataGaName":287,"dataGaLocation":223},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[289,293,296,300],{"text":290,"config":291},"CI/CD",{"href":292,"dataGaLocation":223,"dataGaName":290},"/solutions/continuous-integration/",{"text":254,"config":294},{"href":259,"dataGaLocation":223,"dataGaName":295},"gitlab duo agent platform - product menu",{"text":297,"config":298},"Source Code Management",{"href":299,"dataGaLocation":223,"dataGaName":297},"/solutions/source-code-management/",{"text":301,"config":302},"Automated Software Delivery",{"href":286,"dataGaLocation":223,"dataGaName":303},"Automated software delivery",{"title":305,"description":306,"link":307,"items":312},"Security","Deliver code faster without compromising security",{"config":308},{"href":309,"dataGaName":310,"dataGaLocation":223,"icon":311},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[313,317,322],{"text":314,"config":315},"Application Security Testing",{"href":309,"dataGaName":316,"dataGaLocation":223},"Application security testing",{"text":318,"config":319},"Software Supply Chain Security",{"href":320,"dataGaLocation":223,"dataGaName":321},"/solutions/supply-chain/","Software supply chain security",{"text":323,"config":324},"Software Compliance",{"href":325,"dataGaName":326,"dataGaLocation":223},"/solutions/software-compliance/","software compliance",{"title":328,"link":329,"items":334},"Measurement",{"config":330},{"icon":331,"href":332,"dataGaName":333,"dataGaLocation":223},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[335,339,343],{"text":336,"config":337},"Visibility & Measurement",{"href":332,"dataGaLocation":223,"dataGaName":338},"Visibility and Measurement",{"text":340,"config":341},"Value Stream Management",{"href":342,"dataGaLocation":223,"dataGaName":340},"/solutions/value-stream-management/",{"text":344,"config":345},"Analytics & Insights",{"href":346,"dataGaLocation":223,"dataGaName":347},"/solutions/analytics-and-insights/","Analytics and insights",{"title":349,"type":274,"items":350},"GitLab for",[351,357,363],{"text":352,"config":353},"Enterprise",{"icon":354,"href":355,"dataGaLocation":223,"dataGaName":356},"Building","/enterprise/","enterprise",{"text":358,"config":359},"Small Business",{"icon":360,"href":361,"dataGaLocation":223,"dataGaName":362},"Work","/small-business/","small business",{"text":364,"config":365},"Public Sector",{"icon":366,"href":367,"dataGaLocation":223,"dataGaName":368},"Organization","/solutions/public-sector/","public sector",{"text":370,"config":371},"Pricing",{"href":372,"dataGaName":373,"dataGaLocation":223,"dataNavLevelOne":373},"/pricing/","pricing",{"text":375,"config":376,"menu":378},"Resources",{"dataNavLevelOne":377},"resources",{"type":274,"link":379,"columns":383,"feature":477},{"text":380,"config":381},"View all resources",{"href":382,"dataGaName":377,"dataGaLocation":223},"/resources/",[384,417,444],{"title":385,"items":386},"Getting started",[387,392,397,402,407,412],{"text":388,"config":389},"Install",{"href":390,"dataGaName":391,"dataGaLocation":223},"/install/","install",{"text":393,"config":394},"Quick start guides",{"href":395,"dataGaName":396,"dataGaLocation":223},"/get-started/","quick setup checklists",{"text":398,"config":399},"Learn",{"href":400,"dataGaLocation":223,"dataGaName":401},"https://university.gitlab.com/","learn",{"text":403,"config":404},"Product documentation",{"href":405,"dataGaName":406,"dataGaLocation":223},"https://docs.gitlab.com/","product documentation",{"text":408,"config":409},"Best practice videos",{"href":410,"dataGaName":411,"dataGaLocation":223},"/getting-started-videos/","best practice videos",{"text":413,"config":414},"Integrations",{"href":415,"dataGaName":416,"dataGaLocation":223},"/integrations/","integrations",{"title":418,"items":419},"Discover",[420,425,430,435,439],{"text":421,"config":422},"Customer success stories",{"href":423,"dataGaName":424,"dataGaLocation":223},"/customers/","customer success stories",{"text":426,"config":427},"Blog",{"href":428,"dataGaName":429,"dataGaLocation":223},"/blog/","blog",{"text":431,"config":432},"Demo Hub",{"href":433,"dataGaName":434,"dataGaLocation":223},"/demo-hub/","demo hub",{"text":436,"config":437},"The Source",{"href":438,"dataGaName":429,"dataGaLocation":223},"/the-source/",{"text":440,"config":441},"Remote",{"href":442,"dataGaName":443,"dataGaLocation":223},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":445,"items":446},"Connect",[447,452,457,462,467,472],{"text":448,"config":449},"GitLab Services",{"href":450,"dataGaName":451,"dataGaLocation":223},"/services/","services",{"text":453,"config":454},"Contribute",{"href":455,"dataGaName":456,"dataGaLocation":223},"https://contributors.gitlab.com","contribute",{"text":458,"config":459},"Community",{"href":460,"dataGaName":461,"dataGaLocation":223},"/community/","community",{"text":463,"config":464},"Forum",{"href":465,"dataGaName":466,"dataGaLocation":223},"https://forum.gitlab.com/","forum",{"text":468,"config":469},"Events",{"href":470,"dataGaName":471,"dataGaLocation":223},"/events/","events",{"text":473,"config":474},"Partners",{"href":475,"dataGaName":476,"dataGaLocation":223},"/partners/","partners",{"config":478,"title":481,"text":482,"link":483},{"background":479,"textColor":480},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":484,"config":485},"Read the latest",{"href":486,"dataGaName":487,"dataGaLocation":223},"/whats-new/","whats new",{"text":489,"config":490,"menu":491},"Company",{"dataNavLevelOne":198},{"type":274,"columns":492},[493],{"items":494},[495,500,506,508,513,518,523,528,533,538],{"text":496,"config":497},"About",{"href":498,"dataGaName":499,"dataGaLocation":223},"/company/","about",{"text":501,"config":502,"footerGa":505},"Jobs",{"href":503,"dataGaName":504,"dataGaLocation":223},"/jobs/","jobs",{"dataGaName":504},{"text":468,"config":507},{"href":470,"dataGaName":471,"dataGaLocation":223},{"text":509,"config":510},"Leadership",{"href":511,"dataGaName":512,"dataGaLocation":223},"/company/team/e-group/","leadership",{"text":514,"config":515},"Handbook",{"href":516,"dataGaName":517,"dataGaLocation":223},"https://handbook.gitlab.com/","handbook",{"text":519,"config":520},"Investor relations",{"href":521,"dataGaName":522,"dataGaLocation":223},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":524,"config":525},"Trust Center",{"href":526,"dataGaName":527,"dataGaLocation":223},"/security/","trust center",{"text":529,"config":530},"AI Transparency Center",{"href":531,"dataGaName":532,"dataGaLocation":223},"/ai-transparency-center/","ai transparency center",{"text":534,"config":535},"Newsletter",{"href":536,"dataGaName":537,"dataGaLocation":223},"/company/contact/#contact-forms","newsletter",{"text":539,"config":540},"Press",{"href":541,"dataGaName":542,"dataGaLocation":223},"/press/","press",{"text":544,"config":545,"menu":546},"Contact us",{"dataNavLevelOne":198},{"type":274,"columns":547},[548],{"items":549},[550,555,560],{"text":551,"config":552},"Talk to sales",{"href":553,"dataGaName":554,"dataGaLocation":223},"/sales/","talk to sales",{"text":556,"config":557},"Support portal",{"href":558,"dataGaName":559,"dataGaLocation":223},"https://support.gitlab.com/hc/en-us","support portal",{"text":561,"config":562},"Customer portal",{"href":563,"dataGaName":564,"dataGaLocation":223},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":566,"login":567,"suggestions":574},"Close",{"text":568,"link":569},"To search repositories and projects, login to",{"text":570,"config":571},"gitlab.com",{"href":237,"dataGaName":572,"dataGaLocation":573},"search login","search",{"text":575,"default":576},"Suggestions",[577,579,583,585,589,593],{"text":254,"config":578},{"href":259,"dataGaName":254,"dataGaLocation":573},{"text":580,"config":581},"Code Suggestions (AI)",{"href":582,"dataGaName":580,"dataGaLocation":573},"/solutions/code-suggestions/",{"text":290,"config":584},{"href":292,"dataGaName":290,"dataGaLocation":573},{"text":586,"config":587},"GitLab on AWS",{"href":588,"dataGaName":586,"dataGaLocation":573},"/partners/technology-partners/aws/",{"text":590,"config":591},"GitLab on Google Cloud",{"href":592,"dataGaName":590,"dataGaLocation":573},"/partners/technology-partners/google-cloud-platform/",{"text":594,"config":595},"Why GitLab?",{"href":267,"dataGaName":594,"dataGaLocation":573},{"freeTrial":597,"mobileIcon":602,"desktopIcon":607,"secondaryButton":610},{"text":598,"config":599},"Start free trial",{"href":600,"dataGaName":228,"dataGaLocation":601},"https://gitlab.com/-/trials/new/","nav",{"altText":603,"config":604},"Gitlab Icon",{"src":605,"dataGaName":606,"dataGaLocation":601},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":603,"config":608},{"src":609,"dataGaName":606,"dataGaLocation":601},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":611,"config":612},"Get Started",{"href":613,"dataGaName":614,"dataGaLocation":601},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":616,"mobileIcon":620,"desktopIcon":622},{"text":617,"config":618},"Learn more about GitLab Duo",{"href":259,"dataGaName":619,"dataGaLocation":601},"gitlab duo",{"altText":603,"config":621},{"src":605,"dataGaName":606,"dataGaLocation":601},{"altText":603,"config":623},{"src":609,"dataGaName":606,"dataGaLocation":601},{"button":625,"mobileIcon":630,"desktopIcon":632},{"text":626,"config":627},"/switch",{"href":628,"dataGaName":629,"dataGaLocation":601},"#contact","switch",{"altText":603,"config":631},{"src":605,"dataGaName":606,"dataGaLocation":601},{"altText":603,"config":633},{"src":634,"dataGaName":606,"dataGaLocation":601},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":636,"mobileIcon":641,"desktopIcon":643},{"text":637,"config":638},"Back to pricing",{"href":372,"dataGaName":639,"dataGaLocation":601,"icon":640},"back to pricing","GoBack",{"altText":603,"config":642},{"src":605,"dataGaName":606,"dataGaLocation":601},{"altText":603,"config":644},{"src":609,"dataGaName":606,"dataGaLocation":601},{"title":646,"titleMobile":647,"button":648,"config":653},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":265,"config":649},{"href":650,"dataGaName":651,"dataGaLocation":652},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":654,"disabled":203},"release",{"data":656},{"text":657,"source":658,"edit":664,"contribute":669,"config":674,"items":679,"minimal":889},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":659,"config":660},"View page source",{"href":661,"dataGaName":662,"dataGaLocation":663},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":665,"config":666},"Edit this page",{"href":667,"dataGaName":668,"dataGaLocation":663},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":670,"config":671},"Please contribute",{"href":672,"dataGaName":673,"dataGaLocation":663},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":675,"facebook":676,"youtube":677,"linkedin":678},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[680,727,781,825,857],{"title":370,"links":681,"subMenu":696},[682,686,691],{"text":683,"config":684},"View plans",{"href":372,"dataGaName":685,"dataGaLocation":663},"view plans",{"text":687,"config":688},"Why Premium?",{"href":689,"dataGaName":690,"dataGaLocation":663},"/pricing/premium/","why premium",{"text":692,"config":693},"Why Ultimate?",{"href":694,"dataGaName":695,"dataGaLocation":663},"/pricing/ultimate/","why ultimate",[697],{"title":698,"links":699},"Contact Us",[700,703,705,707,712,717,722],{"text":701,"config":702},"Contact sales",{"href":553,"dataGaName":233,"dataGaLocation":663},{"text":556,"config":704},{"href":558,"dataGaName":559,"dataGaLocation":663},{"text":561,"config":706},{"href":563,"dataGaName":564,"dataGaLocation":663},{"text":708,"config":709},"Status",{"href":710,"dataGaName":711,"dataGaLocation":663},"https://status.gitlab.com/","status",{"text":713,"config":714},"Terms of use",{"href":715,"dataGaName":716,"dataGaLocation":663},"/terms/","terms of use",{"text":718,"config":719},"Privacy statement",{"href":720,"dataGaName":721,"dataGaLocation":663},"/privacy/","privacy statement",{"text":723,"config":724},"Cookie preferences",{"dataGaName":725,"dataGaLocation":663,"id":726,"isOneTrustButton":206},"cookie preferences","ot-sdk-btn",{"title":270,"links":728,"subMenu":737},[729,733],{"text":730,"config":731},"DevSecOps platform",{"href":252,"dataGaName":732,"dataGaLocation":663},"devsecops platform",{"text":734,"config":735},"AI-Assisted Development",{"href":259,"dataGaName":736,"dataGaLocation":663},"ai-assisted development",[738],{"title":739,"links":740},"Topics",[741,746,751,756,761,766,771,776],{"text":742,"config":743},"CICD",{"href":744,"dataGaName":745,"dataGaLocation":663},"/topics/ci-cd/","cicd",{"text":747,"config":748},"GitOps",{"href":749,"dataGaName":750,"dataGaLocation":663},"/topics/gitops/","gitops",{"text":752,"config":753},"DevOps",{"href":754,"dataGaName":755,"dataGaLocation":663},"/topics/devops/","devops",{"text":757,"config":758},"Version Control",{"href":759,"dataGaName":760,"dataGaLocation":663},"/topics/version-control/","version control",{"text":762,"config":763},"DevSecOps",{"href":764,"dataGaName":765,"dataGaLocation":663},"/topics/devsecops/","devsecops",{"text":767,"config":768},"Cloud Native",{"href":769,"dataGaName":770,"dataGaLocation":663},"/topics/cloud-native/","cloud native",{"text":772,"config":773},"AI for Coding",{"href":774,"dataGaName":775,"dataGaLocation":663},"/topics/devops/ai-for-coding/","ai for coding",{"text":777,"config":778},"Agentic AI",{"href":779,"dataGaName":780,"dataGaLocation":663},"/topics/agentic-ai/","agentic ai",{"title":782,"links":783},"Solutions",[784,786,788,793,797,800,804,807,809,812,815,820],{"text":314,"config":785},{"href":309,"dataGaName":314,"dataGaLocation":663},{"text":303,"config":787},{"href":286,"dataGaName":287,"dataGaLocation":663},{"text":789,"config":790},"Agile development",{"href":791,"dataGaName":792,"dataGaLocation":663},"/solutions/agile-delivery/","agile delivery",{"text":794,"config":795},"SCM",{"href":299,"dataGaName":796,"dataGaLocation":663},"source code management",{"text":742,"config":798},{"href":292,"dataGaName":799,"dataGaLocation":663},"continuous integration & delivery",{"text":801,"config":802},"Value stream management",{"href":342,"dataGaName":803,"dataGaLocation":663},"value stream management",{"text":747,"config":805},{"href":806,"dataGaName":750,"dataGaLocation":663},"/solutions/gitops/",{"text":352,"config":808},{"href":355,"dataGaName":356,"dataGaLocation":663},{"text":810,"config":811},"Small business",{"href":361,"dataGaName":362,"dataGaLocation":663},{"text":813,"config":814},"Public sector",{"href":367,"dataGaName":368,"dataGaLocation":663},{"text":816,"config":817},"Education",{"href":818,"dataGaName":819,"dataGaLocation":663},"/solutions/education/","education",{"text":821,"config":822},"Financial services",{"href":823,"dataGaName":824,"dataGaLocation":663},"/solutions/finance/","financial services",{"title":375,"links":826},[827,829,831,833,836,838,841,843,845,847,849,851,853,855],{"text":388,"config":828},{"href":390,"dataGaName":391,"dataGaLocation":663},{"text":393,"config":830},{"href":395,"dataGaName":396,"dataGaLocation":663},{"text":398,"config":832},{"href":400,"dataGaName":401,"dataGaLocation":663},{"text":403,"config":834},{"href":405,"dataGaName":835,"dataGaLocation":663},"docs",{"text":426,"config":837},{"href":428,"dataGaName":429,"dataGaLocation":663},{"text":839,"config":840},"What's new",{"href":486,"dataGaName":487,"dataGaLocation":663},{"text":421,"config":842},{"href":423,"dataGaName":424,"dataGaLocation":663},{"text":440,"config":844},{"href":442,"dataGaName":443,"dataGaLocation":663},{"text":448,"config":846},{"href":450,"dataGaName":451,"dataGaLocation":663},{"text":453,"config":848},{"href":455,"dataGaName":456,"dataGaLocation":663},{"text":458,"config":850},{"href":460,"dataGaName":461,"dataGaLocation":663},{"text":463,"config":852},{"href":465,"dataGaName":466,"dataGaLocation":663},{"text":468,"config":854},{"href":470,"dataGaName":471,"dataGaLocation":663},{"text":473,"config":856},{"href":475,"dataGaName":476,"dataGaLocation":663},{"title":489,"links":858},[859,861,863,865,867,869,873,878,880,882,884],{"text":496,"config":860},{"href":498,"dataGaName":198,"dataGaLocation":663},{"text":501,"config":862},{"href":503,"dataGaName":504,"dataGaLocation":663},{"text":509,"config":864},{"href":511,"dataGaName":512,"dataGaLocation":663},{"text":514,"config":866},{"href":516,"dataGaName":517,"dataGaLocation":663},{"text":519,"config":868},{"href":521,"dataGaName":522,"dataGaLocation":663},{"text":870,"config":871},"Sustainability",{"href":872,"dataGaName":870,"dataGaLocation":663},"/sustainability/",{"text":874,"config":875},"Diversity, inclusion and belonging (DIB)",{"href":876,"dataGaName":877,"dataGaLocation":663},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":524,"config":879},{"href":526,"dataGaName":527,"dataGaLocation":663},{"text":534,"config":881},{"href":536,"dataGaName":537,"dataGaLocation":663},{"text":539,"config":883},{"href":541,"dataGaName":542,"dataGaLocation":663},{"text":885,"config":886},"Modern Slavery Transparency Statement",{"href":887,"dataGaName":888,"dataGaLocation":663},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":890},[891,894,897],{"text":892,"config":893},"Terms",{"href":715,"dataGaName":716,"dataGaLocation":663},{"text":895,"config":896},"Cookies",{"dataGaName":725,"dataGaLocation":663,"id":726,"isOneTrustButton":206},{"text":898,"config":899},"Privacy",{"href":720,"dataGaName":721,"dataGaLocation":663},[901],{"id":902,"title":903,"body":202,"config":904,"content":906,"description":202,"extension":909,"meta":910,"navigation":206,"path":911,"seo":912,"stem":913,"__hash__":914},"blogAuthors/en-us/blog/authors/gitlab.yml","Gitlab",{"template":905},"BlogAuthor",{"name":7,"config":907},{"headshot":908,"ctfId":7},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","yml",{},"/en-us/blog/authors/gitlab",{},"en-us/blog/authors/gitlab","XCBKIcPoCs6zi2oHG7o-bAp52Jhaw8_zGhIJ2jNrEjU",[916,924,931],{"title":917,"description":918,"heroImage":919,"category":198,"date":920,"authors":921,"slug":923,"externalUrl":202},"Why GitLab signed the Open Weights and American AI Leadership letter","GitLab supports customer choice, data privacy, and AI model neutrality, empowering teams to run secure, cost-effective, local solutions.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785333264/ww4mlighwlvvzgnmbe6w.png","2026-07-29",[922],"Bill Staples","open-weight-model-letter",{"title":925,"description":926,"heroImage":927,"category":198,"date":928,"authors":929,"slug":930,"externalUrl":202},"GitLab Act 2","A letter to our customers and our investors.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776362275/ozbwn9tk0dditpnfddlz.png","2026-05-11",[922],"gitlab-act-2",{"title":932,"description":933,"heroImage":934,"category":198,"date":935,"authors":936,"slug":938,"externalUrl":202},"GitLab named a 2026 Omdia Universe Leader","Omdia's 2026 report on AI-assisted software development ranked 19 vendors. Here is what GitLab's top scores mean for engineering teams.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-13",[937],"Rebecca Carter","gitlab-named-a-2026-omdia-universe-leader",{"promotions":940},[941,955,967,978],{"id":942,"categories":943,"header":945,"text":946,"button":947,"image":952},"ai-modernization",[944],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":948,"config":949},"Get your AI maturity score",{"href":950,"dataGaName":951,"dataGaLocation":429},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":953},{"src":954},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":956,"categories":957,"header":959,"text":946,"button":960,"image":964},"devops-modernization",[958,765],"product","Are you just managing tools or shipping innovation?",{"text":961,"config":962},"Get your DevOps maturity score",{"href":963,"dataGaName":951,"dataGaLocation":429},"/assessments/devops-modernization-assessment/",{"config":965},{"src":966},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":968,"categories":969,"header":970,"text":946,"button":971,"image":975},"security-modernization",[215],"Are you trading speed for security?",{"text":972,"config":973},"Get your security maturity score",{"href":974,"dataGaName":951,"dataGaLocation":429},"/assessments/security-modernization-assessment/",{"config":976},{"src":977},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":979,"paths":980,"header":983,"text":984,"button":985,"image":990},"github-azure-migration",[981,982],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":986,"config":987},"See how GitLab compares to GitHub",{"href":988,"dataGaName":989,"dataGaLocation":429},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":991},{"src":966},{"header":993,"blurb":994,"button":995,"secondaryButton":1000},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":996,"config":997},"Get your free trial",{"href":998,"dataGaName":228,"dataGaLocation":999},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":701,"config":1001},{"href":553,"dataGaName":233,"dataGaLocation":999},1786803765636]