[{"data":1,"prerenderedAt":715},["ShallowReactive",2],{"/blog/authors/oliver-smith":3,"navigation-en-us":22,"banner-en-us":450,"footer-en-us":461,"blog-author-posts-en-us-oliver-smith":706},{"id":4,"title":5,"body":6,"config":7,"content":10,"description":6,"extension":15,"meta":16,"navigation":17,"path":18,"seo":19,"stem":20,"__hash__":21},"blogAuthors/en-us/blog/authors/oliver-smith.yml","Oliver Smith",null,{"template":8,"gitlabHandle":9},"BlogAuthor","ojsmith",{"name":5,"role":11,"bio":12,"config":13},"","Senior Threat Intelligence Engineer",{"headshot":14},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769722302/juupgr8w0batn0fek4xp.jpg","yml",{},true,"/en-us/blog/authors/oliver-smith",{},"en-us/blog/authors/oliver-smith","As55YdsLIHnkiElMCl4VahGEjaCR5uH_Py6RHVb0uxE",{"logo":23,"freeTrial":28,"sales":33,"login":38,"items":43,"search":370,"minimal":401,"duo":420,"switchNav":429,"pricingDeployment":440},{"config":24},{"href":25,"dataGaName":26,"dataGaLocation":27},"/","gitlab logo","header",{"text":29,"config":30},"Get free trial",{"href":31,"dataGaName":32,"dataGaLocation":27},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":34,"config":35},"Request a demo",{"href":36,"dataGaName":37,"dataGaLocation":27},"/sales/?contact-topic=request-demo","sales",{"text":39,"config":40},"Sign in",{"href":41,"dataGaName":42,"dataGaLocation":27},"https://gitlab.com/users/sign_in/","sign in",[44,73,173,178,292,348],{"text":45,"config":46,"menu":48},"Platform",{"dataNavLevelOne":47},"platform",{"type":49,"columns":50},"cards",[51,57,65],{"title":45,"description":52,"link":53},"The intelligent orchestration platform for DevSecOps",{"text":54,"config":55},"Explore our Platform",{"href":56,"dataGaName":47,"dataGaLocation":27},"/platform/",{"title":58,"description":59,"link":60},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":61,"config":62},"Meet GitLab Duo",{"href":63,"dataGaName":64,"dataGaLocation":27},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":66,"description":67,"link":68},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":69,"config":70},"Learn more",{"href":71,"dataGaName":72,"dataGaLocation":27},"/why-gitlab/","why gitlab",{"text":74,"left":17,"config":75,"menu":77},"Product",{"dataNavLevelOne":76},"solutions",{"type":78,"link":79,"columns":83,"feature":152},"lists",{"text":80,"config":81},"View all Solutions",{"href":82,"dataGaName":76,"dataGaLocation":27},"/solutions/",[84,108,131],{"title":85,"description":86,"link":87,"items":92},"Automation","CI/CD and automation to accelerate deployment",{"config":88},{"icon":89,"href":90,"dataGaName":91,"dataGaLocation":27},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[93,97,100,104],{"text":94,"config":95},"CI/CD",{"href":96,"dataGaLocation":27,"dataGaName":94},"/solutions/continuous-integration/",{"text":58,"config":98},{"href":63,"dataGaLocation":27,"dataGaName":99},"gitlab duo agent platform - product menu",{"text":101,"config":102},"Source Code Management",{"href":103,"dataGaLocation":27,"dataGaName":101},"/solutions/source-code-management/",{"text":105,"config":106},"Automated Software Delivery",{"href":90,"dataGaLocation":27,"dataGaName":107},"Automated software delivery",{"title":109,"description":110,"link":111,"items":116},"Security","Deliver code faster without compromising security",{"config":112},{"href":113,"dataGaName":114,"dataGaLocation":27,"icon":115},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[117,121,126],{"text":118,"config":119},"Application Security Testing",{"href":113,"dataGaName":120,"dataGaLocation":27},"Application security testing",{"text":122,"config":123},"Software Supply Chain Security",{"href":124,"dataGaLocation":27,"dataGaName":125},"/solutions/supply-chain/","Software supply chain security",{"text":127,"config":128},"Software Compliance",{"href":129,"dataGaName":130,"dataGaLocation":27},"/solutions/software-compliance/","software compliance",{"title":132,"link":133,"items":138},"Measurement",{"config":134},{"icon":135,"href":136,"dataGaName":137,"dataGaLocation":27},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[139,143,147],{"text":140,"config":141},"Visibility & Measurement",{"href":136,"dataGaLocation":27,"dataGaName":142},"Visibility and Measurement",{"text":144,"config":145},"Value Stream Management",{"href":146,"dataGaLocation":27,"dataGaName":144},"/solutions/value-stream-management/",{"text":148,"config":149},"Analytics & Insights",{"href":150,"dataGaLocation":27,"dataGaName":151},"/solutions/analytics-and-insights/","Analytics and insights",{"title":153,"type":78,"items":154},"GitLab for",[155,161,167],{"text":156,"config":157},"Enterprise",{"icon":158,"href":159,"dataGaLocation":27,"dataGaName":160},"Building","/enterprise/","enterprise",{"text":162,"config":163},"Small Business",{"icon":164,"href":165,"dataGaLocation":27,"dataGaName":166},"Work","/small-business/","small business",{"text":168,"config":169},"Public Sector",{"icon":170,"href":171,"dataGaLocation":27,"dataGaName":172},"Organization","/solutions/public-sector/","public sector",{"text":174,"config":175},"Pricing",{"href":176,"dataGaName":177,"dataGaLocation":27,"dataNavLevelOne":177},"/pricing/","pricing",{"text":179,"config":180,"menu":182},"Resources",{"dataNavLevelOne":181},"resources",{"type":78,"link":183,"columns":187,"feature":281},{"text":184,"config":185},"View all resources",{"href":186,"dataGaName":181,"dataGaLocation":27},"/resources/",[188,221,248],{"title":189,"items":190},"Getting started",[191,196,201,206,211,216],{"text":192,"config":193},"Install",{"href":194,"dataGaName":195,"dataGaLocation":27},"/install/","install",{"text":197,"config":198},"Quick start guides",{"href":199,"dataGaName":200,"dataGaLocation":27},"/get-started/","quick setup checklists",{"text":202,"config":203},"Learn",{"href":204,"dataGaLocation":27,"dataGaName":205},"https://university.gitlab.com/","learn",{"text":207,"config":208},"Product documentation",{"href":209,"dataGaName":210,"dataGaLocation":27},"https://docs.gitlab.com/","product documentation",{"text":212,"config":213},"Best practice videos",{"href":214,"dataGaName":215,"dataGaLocation":27},"/getting-started-videos/","best practice videos",{"text":217,"config":218},"Integrations",{"href":219,"dataGaName":220,"dataGaLocation":27},"/integrations/","integrations",{"title":222,"items":223},"Discover",[224,229,234,239,243],{"text":225,"config":226},"Customer success stories",{"href":227,"dataGaName":228,"dataGaLocation":27},"/customers/","customer success stories",{"text":230,"config":231},"Blog",{"href":232,"dataGaName":233,"dataGaLocation":27},"/blog/","blog",{"text":235,"config":236},"Demo Hub",{"href":237,"dataGaName":238,"dataGaLocation":27},"/demo-hub/","demo hub",{"text":240,"config":241},"The Source",{"href":242,"dataGaName":233,"dataGaLocation":27},"/the-source/",{"text":244,"config":245},"Remote",{"href":246,"dataGaName":247,"dataGaLocation":27},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":249,"items":250},"Connect",[251,256,261,266,271,276],{"text":252,"config":253},"GitLab Services",{"href":254,"dataGaName":255,"dataGaLocation":27},"/services/","services",{"text":257,"config":258},"Contribute",{"href":259,"dataGaName":260,"dataGaLocation":27},"https://contributors.gitlab.com","contribute",{"text":262,"config":263},"Community",{"href":264,"dataGaName":265,"dataGaLocation":27},"/community/","community",{"text":267,"config":268},"Forum",{"href":269,"dataGaName":270,"dataGaLocation":27},"https://forum.gitlab.com/","forum",{"text":272,"config":273},"Events",{"href":274,"dataGaName":275,"dataGaLocation":27},"/events/","events",{"text":277,"config":278},"Partners",{"href":279,"dataGaName":280,"dataGaLocation":27},"/partners/","partners",{"config":282,"title":285,"text":286,"link":287},{"background":283,"textColor":284},"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":288,"config":289},"Read the latest",{"href":290,"dataGaName":291,"dataGaLocation":27},"/whats-new/","whats new",{"text":293,"config":294,"menu":296},"Company",{"dataNavLevelOne":295},"company",{"type":78,"columns":297},[298],{"items":299},[300,305,311,313,318,323,328,333,338,343],{"text":301,"config":302},"About",{"href":303,"dataGaName":304,"dataGaLocation":27},"/company/","about",{"text":306,"config":307,"footerGa":310},"Jobs",{"href":308,"dataGaName":309,"dataGaLocation":27},"/jobs/","jobs",{"dataGaName":309},{"text":272,"config":312},{"href":274,"dataGaName":275,"dataGaLocation":27},{"text":314,"config":315},"Leadership",{"href":316,"dataGaName":317,"dataGaLocation":27},"/company/team/e-group/","leadership",{"text":319,"config":320},"Handbook",{"href":321,"dataGaName":322,"dataGaLocation":27},"https://handbook.gitlab.com/","handbook",{"text":324,"config":325},"Investor relations",{"href":326,"dataGaName":327,"dataGaLocation":27},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":329,"config":330},"Trust Center",{"href":331,"dataGaName":332,"dataGaLocation":27},"/security/","trust center",{"text":334,"config":335},"AI Transparency Center",{"href":336,"dataGaName":337,"dataGaLocation":27},"/ai-transparency-center/","ai transparency center",{"text":339,"config":340},"Newsletter",{"href":341,"dataGaName":342,"dataGaLocation":27},"/company/contact/#contact-forms","newsletter",{"text":344,"config":345},"Press",{"href":346,"dataGaName":347,"dataGaLocation":27},"/press/","press",{"text":349,"config":350,"menu":351},"Contact us",{"dataNavLevelOne":295},{"type":78,"columns":352},[353],{"items":354},[355,360,365],{"text":356,"config":357},"Talk to sales",{"href":358,"dataGaName":359,"dataGaLocation":27},"/sales/","talk to sales",{"text":361,"config":362},"Support portal",{"href":363,"dataGaName":364,"dataGaLocation":27},"https://support.gitlab.com/hc/en-us","support portal",{"text":366,"config":367},"Customer portal",{"href":368,"dataGaName":369,"dataGaLocation":27},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":371,"login":372,"suggestions":379},"Close",{"text":373,"link":374},"To search repositories and projects, login to",{"text":375,"config":376},"gitlab.com",{"href":41,"dataGaName":377,"dataGaLocation":378},"search login","search",{"text":380,"default":381},"Suggestions",[382,384,388,390,394,398],{"text":58,"config":383},{"href":63,"dataGaName":58,"dataGaLocation":378},{"text":385,"config":386},"Code Suggestions (AI)",{"href":387,"dataGaName":385,"dataGaLocation":378},"/solutions/code-suggestions/",{"text":94,"config":389},{"href":96,"dataGaName":94,"dataGaLocation":378},{"text":391,"config":392},"GitLab on AWS",{"href":393,"dataGaName":391,"dataGaLocation":378},"/partners/technology-partners/aws/",{"text":395,"config":396},"GitLab on Google Cloud",{"href":397,"dataGaName":395,"dataGaLocation":378},"/partners/technology-partners/google-cloud-platform/",{"text":399,"config":400},"Why GitLab?",{"href":71,"dataGaName":399,"dataGaLocation":378},{"freeTrial":402,"mobileIcon":407,"desktopIcon":412,"secondaryButton":415},{"text":403,"config":404},"Start free trial",{"href":405,"dataGaName":32,"dataGaLocation":406},"https://gitlab.com/-/trials/new/","nav",{"altText":408,"config":409},"Gitlab Icon",{"src":410,"dataGaName":411,"dataGaLocation":406},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":408,"config":413},{"src":414,"dataGaName":411,"dataGaLocation":406},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":416,"config":417},"Get Started",{"href":418,"dataGaName":419,"dataGaLocation":406},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":421,"mobileIcon":425,"desktopIcon":427},{"text":422,"config":423},"Learn more about GitLab Duo",{"href":63,"dataGaName":424,"dataGaLocation":406},"gitlab duo",{"altText":408,"config":426},{"src":410,"dataGaName":411,"dataGaLocation":406},{"altText":408,"config":428},{"src":414,"dataGaName":411,"dataGaLocation":406},{"button":430,"mobileIcon":435,"desktopIcon":437},{"text":431,"config":432},"/switch",{"href":433,"dataGaName":434,"dataGaLocation":406},"#contact","switch",{"altText":408,"config":436},{"src":410,"dataGaName":411,"dataGaLocation":406},{"altText":408,"config":438},{"src":439,"dataGaName":411,"dataGaLocation":406},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":441,"mobileIcon":446,"desktopIcon":448},{"text":442,"config":443},"Back to pricing",{"href":176,"dataGaName":444,"dataGaLocation":406,"icon":445},"back to pricing","GoBack",{"altText":408,"config":447},{"src":410,"dataGaName":411,"dataGaLocation":406},{"altText":408,"config":449},{"src":414,"dataGaName":411,"dataGaLocation":406},{"title":451,"titleMobile":452,"button":453,"config":458},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":69,"config":454},{"href":455,"dataGaName":456,"dataGaLocation":457},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":459,"disabled":460},"release",false,{"data":462},{"text":463,"source":464,"edit":470,"contribute":475,"config":480,"items":485,"minimal":695},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":465,"config":466},"View page source",{"href":467,"dataGaName":468,"dataGaLocation":469},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":471,"config":472},"Edit this page",{"href":473,"dataGaName":474,"dataGaLocation":469},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":476,"config":477},"Please contribute",{"href":478,"dataGaName":479,"dataGaLocation":469},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":481,"facebook":482,"youtube":483,"linkedin":484},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[486,533,587,631,663],{"title":174,"links":487,"subMenu":502},[488,492,497],{"text":489,"config":490},"View plans",{"href":176,"dataGaName":491,"dataGaLocation":469},"view plans",{"text":493,"config":494},"Why Premium?",{"href":495,"dataGaName":496,"dataGaLocation":469},"/pricing/premium/","why premium",{"text":498,"config":499},"Why Ultimate?",{"href":500,"dataGaName":501,"dataGaLocation":469},"/pricing/ultimate/","why ultimate",[503],{"title":504,"links":505},"Contact Us",[506,509,511,513,518,523,528],{"text":507,"config":508},"Contact sales",{"href":358,"dataGaName":37,"dataGaLocation":469},{"text":361,"config":510},{"href":363,"dataGaName":364,"dataGaLocation":469},{"text":366,"config":512},{"href":368,"dataGaName":369,"dataGaLocation":469},{"text":514,"config":515},"Status",{"href":516,"dataGaName":517,"dataGaLocation":469},"https://status.gitlab.com/","status",{"text":519,"config":520},"Terms of use",{"href":521,"dataGaName":522,"dataGaLocation":469},"/terms/","terms of use",{"text":524,"config":525},"Privacy statement",{"href":526,"dataGaName":527,"dataGaLocation":469},"/privacy/","privacy statement",{"text":529,"config":530},"Cookie preferences",{"dataGaName":531,"dataGaLocation":469,"id":532,"isOneTrustButton":17},"cookie preferences","ot-sdk-btn",{"title":74,"links":534,"subMenu":543},[535,539],{"text":536,"config":537},"DevSecOps platform",{"href":56,"dataGaName":538,"dataGaLocation":469},"devsecops platform",{"text":540,"config":541},"AI-Assisted Development",{"href":63,"dataGaName":542,"dataGaLocation":469},"ai-assisted development",[544],{"title":545,"links":546},"Topics",[547,552,557,562,567,572,577,582],{"text":548,"config":549},"CICD",{"href":550,"dataGaName":551,"dataGaLocation":469},"/topics/ci-cd/","cicd",{"text":553,"config":554},"GitOps",{"href":555,"dataGaName":556,"dataGaLocation":469},"/topics/gitops/","gitops",{"text":558,"config":559},"DevOps",{"href":560,"dataGaName":561,"dataGaLocation":469},"/topics/devops/","devops",{"text":563,"config":564},"Version Control",{"href":565,"dataGaName":566,"dataGaLocation":469},"/topics/version-control/","version control",{"text":568,"config":569},"DevSecOps",{"href":570,"dataGaName":571,"dataGaLocation":469},"/topics/devsecops/","devsecops",{"text":573,"config":574},"Cloud Native",{"href":575,"dataGaName":576,"dataGaLocation":469},"/topics/cloud-native/","cloud native",{"text":578,"config":579},"AI for Coding",{"href":580,"dataGaName":581,"dataGaLocation":469},"/topics/devops/ai-for-coding/","ai for coding",{"text":583,"config":584},"Agentic AI",{"href":585,"dataGaName":586,"dataGaLocation":469},"/topics/agentic-ai/","agentic ai",{"title":588,"links":589},"Solutions",[590,592,594,599,603,606,610,613,615,618,621,626],{"text":118,"config":591},{"href":113,"dataGaName":118,"dataGaLocation":469},{"text":107,"config":593},{"href":90,"dataGaName":91,"dataGaLocation":469},{"text":595,"config":596},"Agile development",{"href":597,"dataGaName":598,"dataGaLocation":469},"/solutions/agile-delivery/","agile delivery",{"text":600,"config":601},"SCM",{"href":103,"dataGaName":602,"dataGaLocation":469},"source code management",{"text":548,"config":604},{"href":96,"dataGaName":605,"dataGaLocation":469},"continuous integration & delivery",{"text":607,"config":608},"Value stream management",{"href":146,"dataGaName":609,"dataGaLocation":469},"value stream management",{"text":553,"config":611},{"href":612,"dataGaName":556,"dataGaLocation":469},"/solutions/gitops/",{"text":156,"config":614},{"href":159,"dataGaName":160,"dataGaLocation":469},{"text":616,"config":617},"Small business",{"href":165,"dataGaName":166,"dataGaLocation":469},{"text":619,"config":620},"Public sector",{"href":171,"dataGaName":172,"dataGaLocation":469},{"text":622,"config":623},"Education",{"href":624,"dataGaName":625,"dataGaLocation":469},"/solutions/education/","education",{"text":627,"config":628},"Financial services",{"href":629,"dataGaName":630,"dataGaLocation":469},"/solutions/finance/","financial services",{"title":179,"links":632},[633,635,637,639,642,644,647,649,651,653,655,657,659,661],{"text":192,"config":634},{"href":194,"dataGaName":195,"dataGaLocation":469},{"text":197,"config":636},{"href":199,"dataGaName":200,"dataGaLocation":469},{"text":202,"config":638},{"href":204,"dataGaName":205,"dataGaLocation":469},{"text":207,"config":640},{"href":209,"dataGaName":641,"dataGaLocation":469},"docs",{"text":230,"config":643},{"href":232,"dataGaName":233,"dataGaLocation":469},{"text":645,"config":646},"What's new",{"href":290,"dataGaName":291,"dataGaLocation":469},{"text":225,"config":648},{"href":227,"dataGaName":228,"dataGaLocation":469},{"text":244,"config":650},{"href":246,"dataGaName":247,"dataGaLocation":469},{"text":252,"config":652},{"href":254,"dataGaName":255,"dataGaLocation":469},{"text":257,"config":654},{"href":259,"dataGaName":260,"dataGaLocation":469},{"text":262,"config":656},{"href":264,"dataGaName":265,"dataGaLocation":469},{"text":267,"config":658},{"href":269,"dataGaName":270,"dataGaLocation":469},{"text":272,"config":660},{"href":274,"dataGaName":275,"dataGaLocation":469},{"text":277,"config":662},{"href":279,"dataGaName":280,"dataGaLocation":469},{"title":293,"links":664},[665,667,669,671,673,675,679,684,686,688,690],{"text":301,"config":666},{"href":303,"dataGaName":295,"dataGaLocation":469},{"text":306,"config":668},{"href":308,"dataGaName":309,"dataGaLocation":469},{"text":314,"config":670},{"href":316,"dataGaName":317,"dataGaLocation":469},{"text":319,"config":672},{"href":321,"dataGaName":322,"dataGaLocation":469},{"text":324,"config":674},{"href":326,"dataGaName":327,"dataGaLocation":469},{"text":676,"config":677},"Sustainability",{"href":678,"dataGaName":676,"dataGaLocation":469},"/sustainability/",{"text":680,"config":681},"Diversity, inclusion and belonging (DIB)",{"href":682,"dataGaName":683,"dataGaLocation":469},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":329,"config":685},{"href":331,"dataGaName":332,"dataGaLocation":469},{"text":339,"config":687},{"href":341,"dataGaName":342,"dataGaLocation":469},{"text":344,"config":689},{"href":346,"dataGaName":347,"dataGaLocation":469},{"text":691,"config":692},"Modern Slavery Transparency Statement",{"href":693,"dataGaName":694,"dataGaLocation":469},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":696},[697,700,703],{"text":698,"config":699},"Terms",{"href":521,"dataGaName":522,"dataGaLocation":469},{"text":701,"config":702},"Cookies",{"dataGaName":531,"dataGaLocation":469,"id":532,"isOneTrustButton":17},{"text":704,"config":705},"Privacy",{"href":526,"dataGaName":527,"dataGaLocation":469},[707],{"title":708,"heroImage":709,"category":710,"description":711,"authors":712,"date":713,"slug":714,"externalUrl":6},"GitLab Threat Intelligence Team reveals North Korean tradecraft","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751464282/r2ovpvmizpkcngy9kzqu.png","security-labs","Gain threat intelligence about North Korea’s Contagious Interview and fake IT worker campaigns and learn how GitLab disrupted their operations.",[5],"2026-02-19","gitlab-threat-intelligence-reveals-north-korean-tradecraft",1786803729946]