[{"data":1,"prerenderedAt":699},["ShallowReactive",2],{"/en-us/blog/authors/oliver-smith":3,"navigation-en-us":22,"banner-en-us":438,"footer-en-us":447,"blog-author-posts-en-us-oliver-smith":690},{"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":358,"minimal":389,"duo":408,"switchNav":417,"pricingDeployment":428},{"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},"Talk to sales",{"href":36,"dataGaName":37,"dataGaLocation":27},"/sales/","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,282,338],{"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":271},{"text":184,"config":185},"View all resources",{"href":186,"dataGaName":181,"dataGaLocation":27},"/resources/",[188,221,243],{"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,238],{"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},"The Source",{"href":237,"dataGaName":233,"dataGaLocation":27},"/the-source/",{"text":239,"config":240},"Remote",{"href":241,"dataGaName":242,"dataGaLocation":27},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":244,"items":245},"Connect",[246,251,256,261,266],{"text":247,"config":248},"GitLab Services",{"href":249,"dataGaName":250,"dataGaLocation":27},"/services/","services",{"text":252,"config":253},"Community",{"href":254,"dataGaName":255,"dataGaLocation":27},"/community/","community",{"text":257,"config":258},"Forum",{"href":259,"dataGaName":260,"dataGaLocation":27},"https://forum.gitlab.com/","forum",{"text":262,"config":263},"Events",{"href":264,"dataGaName":265,"dataGaLocation":27},"/events/","events",{"text":267,"config":268},"Partners",{"href":269,"dataGaName":270,"dataGaLocation":27},"/partners/","partners",{"config":272,"title":275,"text":276,"link":277},{"background":273,"textColor":274},"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":278,"config":279},"Read the latest",{"href":280,"dataGaName":281,"dataGaLocation":27},"/whats-new/","whats new",{"text":283,"config":284,"menu":286},"Company",{"dataNavLevelOne":285},"company",{"type":78,"columns":287},[288],{"items":289},[290,295,301,303,308,313,318,323,328,333],{"text":291,"config":292},"About",{"href":293,"dataGaName":294,"dataGaLocation":27},"/company/","about",{"text":296,"config":297,"footerGa":300},"Jobs",{"href":298,"dataGaName":299,"dataGaLocation":27},"/jobs/","jobs",{"dataGaName":299},{"text":262,"config":302},{"href":264,"dataGaName":265,"dataGaLocation":27},{"text":304,"config":305},"Leadership",{"href":306,"dataGaName":307,"dataGaLocation":27},"/company/team/e-group/","leadership",{"text":309,"config":310},"Handbook",{"href":311,"dataGaName":312,"dataGaLocation":27},"https://handbook.gitlab.com/","handbook",{"text":314,"config":315},"Investor relations",{"href":316,"dataGaName":317,"dataGaLocation":27},"https://ir.gitlab.com/","investor relations",{"text":319,"config":320},"Trust Center",{"href":321,"dataGaName":322,"dataGaLocation":27},"/security/","trust center",{"text":324,"config":325},"AI Transparency Center",{"href":326,"dataGaName":327,"dataGaLocation":27},"/ai-transparency-center/","ai transparency center",{"text":329,"config":330},"Newsletter",{"href":331,"dataGaName":332,"dataGaLocation":27},"/company/contact/#contact-forms","newsletter",{"text":334,"config":335},"Press",{"href":336,"dataGaName":337,"dataGaLocation":27},"/press/","press",{"text":339,"config":340,"menu":341},"Contact us",{"dataNavLevelOne":285},{"type":78,"columns":342},[343],{"items":344},[345,348,353],{"text":34,"config":346},{"href":36,"dataGaName":347,"dataGaLocation":27},"talk to sales",{"text":349,"config":350},"Support portal",{"href":351,"dataGaName":352,"dataGaLocation":27},"https://support.gitlab.com","support portal",{"text":354,"config":355},"Customer portal",{"href":356,"dataGaName":357,"dataGaLocation":27},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":359,"login":360,"suggestions":367},"Close",{"text":361,"link":362},"To search repositories and projects, login to",{"text":363,"config":364},"gitlab.com",{"href":41,"dataGaName":365,"dataGaLocation":366},"search login","search",{"text":368,"default":369},"Suggestions",[370,372,376,378,382,386],{"text":58,"config":371},{"href":63,"dataGaName":58,"dataGaLocation":366},{"text":373,"config":374},"Code Suggestions (AI)",{"href":375,"dataGaName":373,"dataGaLocation":366},"/solutions/code-suggestions/",{"text":94,"config":377},{"href":96,"dataGaName":94,"dataGaLocation":366},{"text":379,"config":380},"GitLab on AWS",{"href":381,"dataGaName":379,"dataGaLocation":366},"/partners/technology-partners/aws/",{"text":383,"config":384},"GitLab on Google Cloud",{"href":385,"dataGaName":383,"dataGaLocation":366},"/partners/technology-partners/google-cloud-platform/",{"text":387,"config":388},"Why GitLab?",{"href":71,"dataGaName":387,"dataGaLocation":366},{"freeTrial":390,"mobileIcon":395,"desktopIcon":400,"secondaryButton":403},{"text":391,"config":392},"Start free trial",{"href":393,"dataGaName":32,"dataGaLocation":394},"https://gitlab.com/-/trials/new/","nav",{"altText":396,"config":397},"Gitlab Icon",{"src":398,"dataGaName":399,"dataGaLocation":394},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":396,"config":401},{"src":402,"dataGaName":399,"dataGaLocation":394},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":404,"config":405},"Get Started",{"href":406,"dataGaName":407,"dataGaLocation":394},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":409,"mobileIcon":413,"desktopIcon":415},{"text":410,"config":411},"Learn more about GitLab Duo",{"href":63,"dataGaName":412,"dataGaLocation":394},"gitlab duo",{"altText":396,"config":414},{"src":398,"dataGaName":399,"dataGaLocation":394},{"altText":396,"config":416},{"src":402,"dataGaName":399,"dataGaLocation":394},{"button":418,"mobileIcon":423,"desktopIcon":425},{"text":419,"config":420},"/switch",{"href":421,"dataGaName":422,"dataGaLocation":394},"#contact","switch",{"altText":396,"config":424},{"src":398,"dataGaName":399,"dataGaLocation":394},{"altText":396,"config":426},{"src":427,"dataGaName":399,"dataGaLocation":394},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":429,"mobileIcon":434,"desktopIcon":436},{"text":430,"config":431},"Back to pricing",{"href":176,"dataGaName":432,"dataGaLocation":394,"icon":433},"back to pricing","GoBack",{"altText":396,"config":435},{"src":398,"dataGaName":399,"dataGaLocation":394},{"altText":396,"config":437},{"src":402,"dataGaName":399,"dataGaLocation":394},{"title":439,"button":440,"config":444},"GitLab Orbit is here: The context layer for AI agents.",{"text":69,"config":441},{"href":442,"dataGaName":443,"dataGaLocation":27},"/gitlab-orbit/","orbit",{"layout":445,"disabled":446},"release",false,{"data":448},{"text":449,"source":450,"edit":456,"contribute":461,"config":466,"items":471,"minimal":679},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":451,"config":452},"View page source",{"href":453,"dataGaName":454,"dataGaLocation":455},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":457,"config":458},"Edit this page",{"href":459,"dataGaName":460,"dataGaLocation":455},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":462,"config":463},"Please contribute",{"href":464,"dataGaName":465,"dataGaLocation":455},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":467,"facebook":468,"youtube":469,"linkedin":470},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[472,519,573,617,647],{"title":174,"links":473,"subMenu":488},[474,478,483],{"text":475,"config":476},"View plans",{"href":176,"dataGaName":477,"dataGaLocation":455},"view plans",{"text":479,"config":480},"Why Premium?",{"href":481,"dataGaName":482,"dataGaLocation":455},"/pricing/premium/","why premium",{"text":484,"config":485},"Why Ultimate?",{"href":486,"dataGaName":487,"dataGaLocation":455},"/pricing/ultimate/","why ultimate",[489],{"title":490,"links":491},"Contact Us",[492,495,497,499,504,509,514],{"text":493,"config":494},"Contact sales",{"href":36,"dataGaName":37,"dataGaLocation":455},{"text":349,"config":496},{"href":351,"dataGaName":352,"dataGaLocation":455},{"text":354,"config":498},{"href":356,"dataGaName":357,"dataGaLocation":455},{"text":500,"config":501},"Status",{"href":502,"dataGaName":503,"dataGaLocation":455},"https://status.gitlab.com/","status",{"text":505,"config":506},"Terms of use",{"href":507,"dataGaName":508,"dataGaLocation":455},"/terms/","terms of use",{"text":510,"config":511},"Privacy statement",{"href":512,"dataGaName":513,"dataGaLocation":455},"/privacy/","privacy statement",{"text":515,"config":516},"Cookie preferences",{"dataGaName":517,"dataGaLocation":455,"id":518,"isOneTrustButton":17},"cookie preferences","ot-sdk-btn",{"title":74,"links":520,"subMenu":529},[521,525],{"text":522,"config":523},"DevSecOps platform",{"href":56,"dataGaName":524,"dataGaLocation":455},"devsecops platform",{"text":526,"config":527},"AI-Assisted Development",{"href":63,"dataGaName":528,"dataGaLocation":455},"ai-assisted development",[530],{"title":531,"links":532},"Topics",[533,538,543,548,553,558,563,568],{"text":534,"config":535},"CICD",{"href":536,"dataGaName":537,"dataGaLocation":455},"/topics/ci-cd/","cicd",{"text":539,"config":540},"GitOps",{"href":541,"dataGaName":542,"dataGaLocation":455},"/topics/gitops/","gitops",{"text":544,"config":545},"DevOps",{"href":546,"dataGaName":547,"dataGaLocation":455},"/topics/devops/","devops",{"text":549,"config":550},"Version Control",{"href":551,"dataGaName":552,"dataGaLocation":455},"/topics/version-control/","version control",{"text":554,"config":555},"DevSecOps",{"href":556,"dataGaName":557,"dataGaLocation":455},"/topics/devsecops/","devsecops",{"text":559,"config":560},"Cloud Native",{"href":561,"dataGaName":562,"dataGaLocation":455},"/topics/cloud-native/","cloud native",{"text":564,"config":565},"AI for Coding",{"href":566,"dataGaName":567,"dataGaLocation":455},"/topics/devops/ai-for-coding/","ai for coding",{"text":569,"config":570},"Agentic AI",{"href":571,"dataGaName":572,"dataGaLocation":455},"/topics/agentic-ai/","agentic ai",{"title":574,"links":575},"Solutions",[576,578,580,585,589,592,596,599,601,604,607,612],{"text":118,"config":577},{"href":113,"dataGaName":118,"dataGaLocation":455},{"text":107,"config":579},{"href":90,"dataGaName":91,"dataGaLocation":455},{"text":581,"config":582},"Agile development",{"href":583,"dataGaName":584,"dataGaLocation":455},"/solutions/agile-delivery/","agile delivery",{"text":586,"config":587},"SCM",{"href":103,"dataGaName":588,"dataGaLocation":455},"source code management",{"text":534,"config":590},{"href":96,"dataGaName":591,"dataGaLocation":455},"continuous integration & delivery",{"text":593,"config":594},"Value stream management",{"href":146,"dataGaName":595,"dataGaLocation":455},"value stream management",{"text":539,"config":597},{"href":598,"dataGaName":542,"dataGaLocation":455},"/solutions/gitops/",{"text":156,"config":600},{"href":159,"dataGaName":160,"dataGaLocation":455},{"text":602,"config":603},"Small business",{"href":165,"dataGaName":166,"dataGaLocation":455},{"text":605,"config":606},"Public sector",{"href":171,"dataGaName":172,"dataGaLocation":455},{"text":608,"config":609},"Education",{"href":610,"dataGaName":611,"dataGaLocation":455},"/solutions/education/","education",{"text":613,"config":614},"Financial services",{"href":615,"dataGaName":616,"dataGaLocation":455},"/solutions/finance/","financial services",{"title":179,"links":618},[619,621,623,625,628,630,633,635,637,639,641,643,645],{"text":192,"config":620},{"href":194,"dataGaName":195,"dataGaLocation":455},{"text":197,"config":622},{"href":199,"dataGaName":200,"dataGaLocation":455},{"text":202,"config":624},{"href":204,"dataGaName":205,"dataGaLocation":455},{"text":207,"config":626},{"href":209,"dataGaName":627,"dataGaLocation":455},"docs",{"text":230,"config":629},{"href":232,"dataGaName":233,"dataGaLocation":455},{"text":631,"config":632},"What's new",{"href":280,"dataGaName":281,"dataGaLocation":455},{"text":225,"config":634},{"href":227,"dataGaName":228,"dataGaLocation":455},{"text":239,"config":636},{"href":241,"dataGaName":242,"dataGaLocation":455},{"text":247,"config":638},{"href":249,"dataGaName":250,"dataGaLocation":455},{"text":252,"config":640},{"href":254,"dataGaName":255,"dataGaLocation":455},{"text":257,"config":642},{"href":259,"dataGaName":260,"dataGaLocation":455},{"text":262,"config":644},{"href":264,"dataGaName":265,"dataGaLocation":455},{"text":267,"config":646},{"href":269,"dataGaName":270,"dataGaLocation":455},{"title":283,"links":648},[649,651,653,655,657,659,663,668,670,672,674],{"text":291,"config":650},{"href":293,"dataGaName":285,"dataGaLocation":455},{"text":296,"config":652},{"href":298,"dataGaName":299,"dataGaLocation":455},{"text":304,"config":654},{"href":306,"dataGaName":307,"dataGaLocation":455},{"text":309,"config":656},{"href":311,"dataGaName":312,"dataGaLocation":455},{"text":314,"config":658},{"href":316,"dataGaName":317,"dataGaLocation":455},{"text":660,"config":661},"Sustainability",{"href":662,"dataGaName":660,"dataGaLocation":455},"/sustainability/",{"text":664,"config":665},"Diversity, inclusion and belonging (DIB)",{"href":666,"dataGaName":667,"dataGaLocation":455},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":319,"config":669},{"href":321,"dataGaName":322,"dataGaLocation":455},{"text":329,"config":671},{"href":331,"dataGaName":332,"dataGaLocation":455},{"text":334,"config":673},{"href":336,"dataGaName":337,"dataGaLocation":455},{"text":675,"config":676},"Modern Slavery Transparency Statement",{"href":677,"dataGaName":678,"dataGaLocation":455},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":680},[681,684,687],{"text":682,"config":683},"Terms",{"href":507,"dataGaName":508,"dataGaLocation":455},{"text":685,"config":686},"Cookies",{"dataGaName":517,"dataGaLocation":455,"id":518,"isOneTrustButton":17},{"text":688,"config":689},"Privacy",{"href":512,"dataGaName":513,"dataGaLocation":455},[691],{"title":692,"heroImage":693,"category":694,"description":695,"authors":696,"date":697,"slug":698,"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",1781392662942]