[{"data":1,"prerenderedAt":959},["ShallowReactive",2],{"/en-us/blog/fine-grained-pats":3,"navigation-en-us":191,"banner-en-us":607,"footer-en-us":615,"blog-post-authors-en-us-Nelly Vahab":858,"blog-related-posts-en-us-fine-grained-pats":874,"blog-promotions-en-us":897,"next-steps-en-us":949},{"id":4,"title":5,"authors":6,"body":8,"category":170,"date":171,"description":172,"extension":173,"externalUrl":174,"featured":175,"heroImage":176,"meta":177,"navigation":178,"path":179,"seo":180,"slug":184,"stem":185,"tags":186,"template":189,"updatedDate":174,"__hash__":190},"blogPosts/en-us/blog/fine-grained-pats.md","Limit credential exposure with fine-grained personal access tokens",[7],"Nelly Vahab",{"type":9,"value":10,"toc":162},"minimark",[11,24,29,32,35,39,42,75,87,94,97,101,111,114,118,121,144,153],[12,13,14,15,19,20,23],"p",{},"Personal access tokens (PATs) authenticate most of the automation that runs in GitLab. When a token is issued with a broad scope like ",[16,17,18],"code",{},"api"," or ",[16,21,22],{},"read_api",", it extends permissions across many projects and groups. Fine-grained permissions for PATs, now in beta, let you scope a token to exactly the privileges the job requires — read access to one project's code, say, instead of read access across every project the user can reach.",[25,26,28],"h2",{"id":27},"the-case-for-narrowing-pat-privileges","The case for narrowing PAT privileges",[12,30,31],{},"A maintainer on 20 projects might carry a single token that can read source, modify pipelines, pull from the container registry, and decrypt CI/CD variables across all those projects. The token is scoped to the user, not a specific task, so if it leaks, it exposes every project the user can touch.",[12,33,34],{},"Fine-grained PATs let teams ensure that scope follows the task: A read-only token issued for one project is read-only on that project alone. When exposed, investigation and remediation start and end there. Fine-grained PATs join safeguards like lifetime limits and automatic revocation, which limit how long an attacker can misuse a stolen token.",[25,36,38],{"id":37},"whats-new","What’s new",[12,40,41],{},"You can define a fine-grained PAT along two dimensions:",[43,44,45,53],"ul",{},[46,47,48,52],"li",{},[49,50,51],"strong",{},"Where it can reach:"," personal projects only, all projects and groups you’re a member of, or only the projects and groups you select.",[46,54,55,58,59,63,64,63,67,70,71,74],{},[49,56,57],{},"What it can do there:"," per‑resource permissions across the things developers automate against (Issues, Merge Requests, Pipelines, Repositories, Container Registry, and more), with ",[60,61,62],"em",{},"Create",", ",[60,65,66],{},"Read",[60,68,69],{},"Update",", and ",[60,72,73],{},"Delete"," assigned independently for each resource.",[12,76,77,78,80,81,83,84,86],{},"Instead of one PAT that can do everything you can do, you issue one PAT per job, carrying exactly that job's permission set. A pipeline that pushes container images doesn't get an ",[16,79,18],{},"-scoped token; it gets a token scoped to the Container Registry on a single project, with ",[60,82,62],{}," and ",[60,85,66],{}," and nothing else. If that token leaks, the blast radius is one registry on one project, not your entire footprint.",[12,88,89],{},[90,91],"img",{"alt":92,"src":93,"title":92},"Define a fine-grained PAT's scope by selecting which groups or projects it can reach, then assigning per-resource permissions.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778165319/xd7h7xets7s2muovbpwe.png",[12,95,96],{},"The tokens table has been updated to make this auditable at a glance. Every token you’ve created (coarse or fine-grained) shows the exact scopes and per-resource permissions, so over-privileged tokens are easier to spot during reviews.",[25,98,100],{"id":99},"todays-coverage-and-future-roadmap","Today’s coverage and future roadmap",[12,102,103,104,110],{},"We advise against using fine-grained PATs in production workloads until general availability. Fine-grained PATs currently cover about 75% of ",[105,106,109],"a",{"href":107,"rel":108},"https://docs.gitlab.com/auth/tokens/fine_grained_access_tokens/#available-fine-grained-permissions",[],"REST API endpoints",". In the months ahead, we're adding support for the remaining REST endpoints and expanding GraphQL coverage.",[12,112,113],{},"Existing PATs continue working as before. During the beta, you can create traditional and fine-grained PATs side by side as you evaluate the new model.",[25,115,117],{"id":116},"learn-more-and-share-feedback","Learn more and share feedback",[12,119,120],{},"To create a fine-grained personal access token:",[122,123,124,130,141],"ol",{},[46,125,126,127],{},"Navigate to ",[49,128,129],{},"User Settings → Personal Access Tokens.",[46,131,132,133,136,137,140],{},"Choose ",[49,134,135],{},"Fine-grained token"," from the ",[49,138,139],{},"Generate token"," dropdown.",[46,142,143],{},"Define the scope.",[12,145,146,147,152],{},"To view administrative controls and the full list of supported resources and permissions, check out access the ",[105,148,151],{"href":149,"rel":150},"https://docs.gitlab.com/auth/tokens/fine_grained_access_tokens/",[],"fine-grained personal access tokens documentation",".",[12,154,155,156,161],{},"We’d love to hear how fine-grained permissions for PATs work in your environment, and what else you need to fully adopt least-privilege token patterns. Please share your feedback in this ",[105,157,160],{"href":158,"rel":159},"https://gitlab.com/gitlab-org/gitlab/-/work_items/553887",[],"roadmap epic"," to help shape our next iterations.",{"title":163,"searchDepth":164,"depth":164,"links":165},"",2,[166,167,168,169],{"id":27,"depth":164,"text":28},{"id":37,"depth":164,"text":38},{"id":99,"depth":164,"text":100},{"id":116,"depth":164,"text":117},"security","2026-05-07","Explore tokens that carry only the permissions they need, and nothing more. Then join the beta program.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772029801/qk75nu1eezxa6aiefpup.png",{},true,"/en-us/blog/fine-grained-pats",{"config":181,"title":182,"ogTitle":183,"description":172},{"noIndex":175},"Limit token exposure with fine-grained PATs","A leaked personal access token shouldn't expose every project its owner can reach. Fine-grained PATs scope each token’s permissions to the job.","fine-grained-pats","en-us/blog/fine-grained-pats",[170,187,188],"product","features","BlogPost","N4CyM0O9WIhGJq0aGLvUnZ-oGFhfl6ZX6lF_tC1LxEk",{"logo":192,"freeTrial":197,"sales":202,"login":207,"items":212,"search":527,"minimal":558,"duo":577,"switchNav":586,"pricingDeployment":597},{"config":193},{"href":194,"dataGaName":195,"dataGaLocation":196},"/","gitlab logo","header",{"text":198,"config":199},"Get free trial",{"href":200,"dataGaName":201,"dataGaLocation":196},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":203,"config":204},"Talk to sales",{"href":205,"dataGaName":206,"dataGaLocation":196},"/sales/","sales",{"text":208,"config":209},"Sign in",{"href":210,"dataGaName":211,"dataGaLocation":196},"https://gitlab.com/users/sign_in/","sign in",[213,242,342,347,451,507],{"text":214,"config":215,"menu":217},"Platform",{"dataNavLevelOne":216},"platform",{"type":218,"columns":219},"cards",[220,226,234],{"title":214,"description":221,"link":222},"The intelligent orchestration platform for DevSecOps",{"text":223,"config":224},"Explore our Platform",{"href":225,"dataGaName":216,"dataGaLocation":196},"/platform/",{"title":227,"description":228,"link":229},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":230,"config":231},"Meet GitLab Duo",{"href":232,"dataGaName":233,"dataGaLocation":196},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":235,"description":236,"link":237},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":238,"config":239},"Learn more",{"href":240,"dataGaName":241,"dataGaLocation":196},"/why-gitlab/","why gitlab",{"text":243,"left":178,"config":244,"menu":246},"Product",{"dataNavLevelOne":245},"solutions",{"type":247,"link":248,"columns":252,"feature":321},"lists",{"text":249,"config":250},"View all Solutions",{"href":251,"dataGaName":245,"dataGaLocation":196},"/solutions/",[253,277,300],{"title":254,"description":255,"link":256,"items":261},"Automation","CI/CD and automation to accelerate deployment",{"config":257},{"icon":258,"href":259,"dataGaName":260,"dataGaLocation":196},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[262,266,269,273],{"text":263,"config":264},"CI/CD",{"href":265,"dataGaLocation":196,"dataGaName":263},"/solutions/continuous-integration/",{"text":227,"config":267},{"href":232,"dataGaLocation":196,"dataGaName":268},"gitlab duo agent platform - product menu",{"text":270,"config":271},"Source Code Management",{"href":272,"dataGaLocation":196,"dataGaName":270},"/solutions/source-code-management/",{"text":274,"config":275},"Automated Software Delivery",{"href":259,"dataGaLocation":196,"dataGaName":276},"Automated software delivery",{"title":278,"description":279,"link":280,"items":285},"Security","Deliver code faster without compromising security",{"config":281},{"href":282,"dataGaName":283,"dataGaLocation":196,"icon":284},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[286,290,295],{"text":287,"config":288},"Application Security Testing",{"href":282,"dataGaName":289,"dataGaLocation":196},"Application security testing",{"text":291,"config":292},"Software Supply Chain Security",{"href":293,"dataGaLocation":196,"dataGaName":294},"/solutions/supply-chain/","Software supply chain security",{"text":296,"config":297},"Software Compliance",{"href":298,"dataGaName":299,"dataGaLocation":196},"/solutions/software-compliance/","software compliance",{"title":301,"link":302,"items":307},"Measurement",{"config":303},{"icon":304,"href":305,"dataGaName":306,"dataGaLocation":196},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[308,312,316],{"text":309,"config":310},"Visibility & Measurement",{"href":305,"dataGaLocation":196,"dataGaName":311},"Visibility and Measurement",{"text":313,"config":314},"Value Stream Management",{"href":315,"dataGaLocation":196,"dataGaName":313},"/solutions/value-stream-management/",{"text":317,"config":318},"Analytics & Insights",{"href":319,"dataGaLocation":196,"dataGaName":320},"/solutions/analytics-and-insights/","Analytics and insights",{"title":322,"type":247,"items":323},"GitLab for",[324,330,336],{"text":325,"config":326},"Enterprise",{"icon":327,"href":328,"dataGaLocation":196,"dataGaName":329},"Building","/enterprise/","enterprise",{"text":331,"config":332},"Small Business",{"icon":333,"href":334,"dataGaLocation":196,"dataGaName":335},"Work","/small-business/","small business",{"text":337,"config":338},"Public Sector",{"icon":339,"href":340,"dataGaLocation":196,"dataGaName":341},"Organization","/solutions/public-sector/","public sector",{"text":343,"config":344},"Pricing",{"href":345,"dataGaName":346,"dataGaLocation":196,"dataNavLevelOne":346},"/pricing/","pricing",{"text":348,"config":349,"menu":351},"Resources",{"dataNavLevelOne":350},"resources",{"type":247,"link":352,"columns":356,"feature":440},{"text":353,"config":354},"View all resources",{"href":355,"dataGaName":350,"dataGaLocation":196},"/resources/",[357,390,412],{"title":358,"items":359},"Getting started",[360,365,370,375,380,385],{"text":361,"config":362},"Install",{"href":363,"dataGaName":364,"dataGaLocation":196},"/install/","install",{"text":366,"config":367},"Quick start guides",{"href":368,"dataGaName":369,"dataGaLocation":196},"/get-started/","quick setup checklists",{"text":371,"config":372},"Learn",{"href":373,"dataGaLocation":196,"dataGaName":374},"https://university.gitlab.com/","learn",{"text":376,"config":377},"Product documentation",{"href":378,"dataGaName":379,"dataGaLocation":196},"https://docs.gitlab.com/","product documentation",{"text":381,"config":382},"Best practice videos",{"href":383,"dataGaName":384,"dataGaLocation":196},"/getting-started-videos/","best practice videos",{"text":386,"config":387},"Integrations",{"href":388,"dataGaName":389,"dataGaLocation":196},"/integrations/","integrations",{"title":391,"items":392},"Discover",[393,398,403,407],{"text":394,"config":395},"Customer success stories",{"href":396,"dataGaName":397,"dataGaLocation":196},"/customers/","customer success stories",{"text":399,"config":400},"Blog",{"href":401,"dataGaName":402,"dataGaLocation":196},"/blog/","blog",{"text":404,"config":405},"The Source",{"href":406,"dataGaName":402,"dataGaLocation":196},"/the-source/",{"text":408,"config":409},"Remote",{"href":410,"dataGaName":411,"dataGaLocation":196},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":413,"items":414},"Connect",[415,420,425,430,435],{"text":416,"config":417},"GitLab Services",{"href":418,"dataGaName":419,"dataGaLocation":196},"/services/","services",{"text":421,"config":422},"Community",{"href":423,"dataGaName":424,"dataGaLocation":196},"/community/","community",{"text":426,"config":427},"Forum",{"href":428,"dataGaName":429,"dataGaLocation":196},"https://forum.gitlab.com/","forum",{"text":431,"config":432},"Events",{"href":433,"dataGaName":434,"dataGaLocation":196},"/events/","events",{"text":436,"config":437},"Partners",{"href":438,"dataGaName":439,"dataGaLocation":196},"/partners/","partners",{"config":441,"title":444,"text":445,"link":446},{"background":442,"textColor":443},"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":447,"config":448},"Read the latest",{"href":449,"dataGaName":450,"dataGaLocation":196},"/whats-new/","whats new",{"text":452,"config":453,"menu":455},"Company",{"dataNavLevelOne":454},"company",{"type":247,"columns":456},[457],{"items":458},[459,464,470,472,477,482,487,492,497,502],{"text":460,"config":461},"About",{"href":462,"dataGaName":463,"dataGaLocation":196},"/company/","about",{"text":465,"config":466,"footerGa":469},"Jobs",{"href":467,"dataGaName":468,"dataGaLocation":196},"/jobs/","jobs",{"dataGaName":468},{"text":431,"config":471},{"href":433,"dataGaName":434,"dataGaLocation":196},{"text":473,"config":474},"Leadership",{"href":475,"dataGaName":476,"dataGaLocation":196},"/company/team/e-group/","leadership",{"text":478,"config":479},"Handbook",{"href":480,"dataGaName":481,"dataGaLocation":196},"https://handbook.gitlab.com/","handbook",{"text":483,"config":484},"Investor relations",{"href":485,"dataGaName":486,"dataGaLocation":196},"https://ir.gitlab.com/","investor relations",{"text":488,"config":489},"Trust Center",{"href":490,"dataGaName":491,"dataGaLocation":196},"/security/","trust center",{"text":493,"config":494},"AI Transparency Center",{"href":495,"dataGaName":496,"dataGaLocation":196},"/ai-transparency-center/","ai transparency center",{"text":498,"config":499},"Newsletter",{"href":500,"dataGaName":501,"dataGaLocation":196},"/company/contact/#contact-forms","newsletter",{"text":503,"config":504},"Press",{"href":505,"dataGaName":506,"dataGaLocation":196},"/press/","press",{"text":508,"config":509,"menu":510},"Contact us",{"dataNavLevelOne":454},{"type":247,"columns":511},[512],{"items":513},[514,517,522],{"text":203,"config":515},{"href":205,"dataGaName":516,"dataGaLocation":196},"talk to sales",{"text":518,"config":519},"Support portal",{"href":520,"dataGaName":521,"dataGaLocation":196},"https://support.gitlab.com","support portal",{"text":523,"config":524},"Customer portal",{"href":525,"dataGaName":526,"dataGaLocation":196},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":528,"login":529,"suggestions":536},"Close",{"text":530,"link":531},"To search repositories and projects, login to",{"text":532,"config":533},"gitlab.com",{"href":210,"dataGaName":534,"dataGaLocation":535},"search login","search",{"text":537,"default":538},"Suggestions",[539,541,545,547,551,555],{"text":227,"config":540},{"href":232,"dataGaName":227,"dataGaLocation":535},{"text":542,"config":543},"Code Suggestions (AI)",{"href":544,"dataGaName":542,"dataGaLocation":535},"/solutions/code-suggestions/",{"text":263,"config":546},{"href":265,"dataGaName":263,"dataGaLocation":535},{"text":548,"config":549},"GitLab on AWS",{"href":550,"dataGaName":548,"dataGaLocation":535},"/partners/technology-partners/aws/",{"text":552,"config":553},"GitLab on Google Cloud",{"href":554,"dataGaName":552,"dataGaLocation":535},"/partners/technology-partners/google-cloud-platform/",{"text":556,"config":557},"Why GitLab?",{"href":240,"dataGaName":556,"dataGaLocation":535},{"freeTrial":559,"mobileIcon":564,"desktopIcon":569,"secondaryButton":572},{"text":560,"config":561},"Start free trial",{"href":562,"dataGaName":201,"dataGaLocation":563},"https://gitlab.com/-/trials/new/","nav",{"altText":565,"config":566},"Gitlab Icon",{"src":567,"dataGaName":568,"dataGaLocation":563},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":565,"config":570},{"src":571,"dataGaName":568,"dataGaLocation":563},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":573,"config":574},"Get Started",{"href":575,"dataGaName":576,"dataGaLocation":563},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":578,"mobileIcon":582,"desktopIcon":584},{"text":579,"config":580},"Learn more about GitLab Duo",{"href":232,"dataGaName":581,"dataGaLocation":563},"gitlab duo",{"altText":565,"config":583},{"src":567,"dataGaName":568,"dataGaLocation":563},{"altText":565,"config":585},{"src":571,"dataGaName":568,"dataGaLocation":563},{"button":587,"mobileIcon":592,"desktopIcon":594},{"text":588,"config":589},"/switch",{"href":590,"dataGaName":591,"dataGaLocation":563},"#contact","switch",{"altText":565,"config":593},{"src":567,"dataGaName":568,"dataGaLocation":563},{"altText":565,"config":595},{"src":596,"dataGaName":568,"dataGaLocation":563},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":598,"mobileIcon":603,"desktopIcon":605},{"text":599,"config":600},"Back to pricing",{"href":345,"dataGaName":601,"dataGaLocation":563,"icon":602},"back to pricing","GoBack",{"altText":565,"config":604},{"src":567,"dataGaName":568,"dataGaLocation":563},{"altText":565,"config":606},{"src":571,"dataGaName":568,"dataGaLocation":563},{"title":608,"button":609,"config":613},"GitLab Orbit is here: The context layer for AI agents.",{"text":238,"config":610},{"href":611,"dataGaName":612,"dataGaLocation":196},"/gitlab-orbit/","orbit",{"layout":614,"disabled":175},"release",{"data":616},{"text":617,"source":618,"edit":624,"contribute":629,"config":634,"items":639,"minimal":847},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":619,"config":620},"View page source",{"href":621,"dataGaName":622,"dataGaLocation":623},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":625,"config":626},"Edit this page",{"href":627,"dataGaName":628,"dataGaLocation":623},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":630,"config":631},"Please contribute",{"href":632,"dataGaName":633,"dataGaLocation":623},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":635,"facebook":636,"youtube":637,"linkedin":638},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[640,687,741,785,815],{"title":343,"links":641,"subMenu":656},[642,646,651],{"text":643,"config":644},"View plans",{"href":345,"dataGaName":645,"dataGaLocation":623},"view plans",{"text":647,"config":648},"Why Premium?",{"href":649,"dataGaName":650,"dataGaLocation":623},"/pricing/premium/","why premium",{"text":652,"config":653},"Why Ultimate?",{"href":654,"dataGaName":655,"dataGaLocation":623},"/pricing/ultimate/","why ultimate",[657],{"title":658,"links":659},"Contact Us",[660,663,665,667,672,677,682],{"text":661,"config":662},"Contact sales",{"href":205,"dataGaName":206,"dataGaLocation":623},{"text":518,"config":664},{"href":520,"dataGaName":521,"dataGaLocation":623},{"text":523,"config":666},{"href":525,"dataGaName":526,"dataGaLocation":623},{"text":668,"config":669},"Status",{"href":670,"dataGaName":671,"dataGaLocation":623},"https://status.gitlab.com/","status",{"text":673,"config":674},"Terms of use",{"href":675,"dataGaName":676,"dataGaLocation":623},"/terms/","terms of use",{"text":678,"config":679},"Privacy statement",{"href":680,"dataGaName":681,"dataGaLocation":623},"/privacy/","privacy statement",{"text":683,"config":684},"Cookie preferences",{"dataGaName":685,"dataGaLocation":623,"id":686,"isOneTrustButton":178},"cookie preferences","ot-sdk-btn",{"title":243,"links":688,"subMenu":697},[689,693],{"text":690,"config":691},"DevSecOps platform",{"href":225,"dataGaName":692,"dataGaLocation":623},"devsecops platform",{"text":694,"config":695},"AI-Assisted Development",{"href":232,"dataGaName":696,"dataGaLocation":623},"ai-assisted development",[698],{"title":699,"links":700},"Topics",[701,706,711,716,721,726,731,736],{"text":702,"config":703},"CICD",{"href":704,"dataGaName":705,"dataGaLocation":623},"/topics/ci-cd/","cicd",{"text":707,"config":708},"GitOps",{"href":709,"dataGaName":710,"dataGaLocation":623},"/topics/gitops/","gitops",{"text":712,"config":713},"DevOps",{"href":714,"dataGaName":715,"dataGaLocation":623},"/topics/devops/","devops",{"text":717,"config":718},"Version Control",{"href":719,"dataGaName":720,"dataGaLocation":623},"/topics/version-control/","version control",{"text":722,"config":723},"DevSecOps",{"href":724,"dataGaName":725,"dataGaLocation":623},"/topics/devsecops/","devsecops",{"text":727,"config":728},"Cloud Native",{"href":729,"dataGaName":730,"dataGaLocation":623},"/topics/cloud-native/","cloud native",{"text":732,"config":733},"AI for Coding",{"href":734,"dataGaName":735,"dataGaLocation":623},"/topics/devops/ai-for-coding/","ai for coding",{"text":737,"config":738},"Agentic AI",{"href":739,"dataGaName":740,"dataGaLocation":623},"/topics/agentic-ai/","agentic ai",{"title":742,"links":743},"Solutions",[744,746,748,753,757,760,764,767,769,772,775,780],{"text":287,"config":745},{"href":282,"dataGaName":287,"dataGaLocation":623},{"text":276,"config":747},{"href":259,"dataGaName":260,"dataGaLocation":623},{"text":749,"config":750},"Agile development",{"href":751,"dataGaName":752,"dataGaLocation":623},"/solutions/agile-delivery/","agile delivery",{"text":754,"config":755},"SCM",{"href":272,"dataGaName":756,"dataGaLocation":623},"source code management",{"text":702,"config":758},{"href":265,"dataGaName":759,"dataGaLocation":623},"continuous integration & delivery",{"text":761,"config":762},"Value stream management",{"href":315,"dataGaName":763,"dataGaLocation":623},"value stream management",{"text":707,"config":765},{"href":766,"dataGaName":710,"dataGaLocation":623},"/solutions/gitops/",{"text":325,"config":768},{"href":328,"dataGaName":329,"dataGaLocation":623},{"text":770,"config":771},"Small business",{"href":334,"dataGaName":335,"dataGaLocation":623},{"text":773,"config":774},"Public sector",{"href":340,"dataGaName":341,"dataGaLocation":623},{"text":776,"config":777},"Education",{"href":778,"dataGaName":779,"dataGaLocation":623},"/solutions/education/","education",{"text":781,"config":782},"Financial services",{"href":783,"dataGaName":784,"dataGaLocation":623},"/solutions/finance/","financial services",{"title":348,"links":786},[787,789,791,793,796,798,801,803,805,807,809,811,813],{"text":361,"config":788},{"href":363,"dataGaName":364,"dataGaLocation":623},{"text":366,"config":790},{"href":368,"dataGaName":369,"dataGaLocation":623},{"text":371,"config":792},{"href":373,"dataGaName":374,"dataGaLocation":623},{"text":376,"config":794},{"href":378,"dataGaName":795,"dataGaLocation":623},"docs",{"text":399,"config":797},{"href":401,"dataGaName":402,"dataGaLocation":623},{"text":799,"config":800},"What's new",{"href":449,"dataGaName":450,"dataGaLocation":623},{"text":394,"config":802},{"href":396,"dataGaName":397,"dataGaLocation":623},{"text":408,"config":804},{"href":410,"dataGaName":411,"dataGaLocation":623},{"text":416,"config":806},{"href":418,"dataGaName":419,"dataGaLocation":623},{"text":421,"config":808},{"href":423,"dataGaName":424,"dataGaLocation":623},{"text":426,"config":810},{"href":428,"dataGaName":429,"dataGaLocation":623},{"text":431,"config":812},{"href":433,"dataGaName":434,"dataGaLocation":623},{"text":436,"config":814},{"href":438,"dataGaName":439,"dataGaLocation":623},{"title":452,"links":816},[817,819,821,823,825,827,831,836,838,840,842],{"text":460,"config":818},{"href":462,"dataGaName":454,"dataGaLocation":623},{"text":465,"config":820},{"href":467,"dataGaName":468,"dataGaLocation":623},{"text":473,"config":822},{"href":475,"dataGaName":476,"dataGaLocation":623},{"text":478,"config":824},{"href":480,"dataGaName":481,"dataGaLocation":623},{"text":483,"config":826},{"href":485,"dataGaName":486,"dataGaLocation":623},{"text":828,"config":829},"Sustainability",{"href":830,"dataGaName":828,"dataGaLocation":623},"/sustainability/",{"text":832,"config":833},"Diversity, inclusion and belonging (DIB)",{"href":834,"dataGaName":835,"dataGaLocation":623},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":488,"config":837},{"href":490,"dataGaName":491,"dataGaLocation":623},{"text":498,"config":839},{"href":500,"dataGaName":501,"dataGaLocation":623},{"text":503,"config":841},{"href":505,"dataGaName":506,"dataGaLocation":623},{"text":843,"config":844},"Modern Slavery Transparency Statement",{"href":845,"dataGaName":846,"dataGaLocation":623},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":848},[849,852,855],{"text":850,"config":851},"Terms",{"href":675,"dataGaName":676,"dataGaLocation":623},{"text":853,"config":854},"Cookies",{"dataGaName":685,"dataGaLocation":623,"id":686,"isOneTrustButton":178},{"text":856,"config":857},"Privacy",{"href":680,"dataGaName":681,"dataGaLocation":623},[859],{"id":860,"title":7,"body":174,"config":861,"content":863,"description":174,"extension":868,"meta":869,"navigation":178,"path":870,"seo":871,"stem":872,"__hash__":873},"blogAuthors/en-us/blog/authors/nelly-vahab.yml",{"template":862},"BlogAuthor",{"name":7,"config":864},{"headshot":865,"socialProof":866},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1778164986/ahjkssshimei2id1aztu.png",{"gitlabHandle":867},"NellyVahab","yml",{},"/en-us/blog/authors/nelly-vahab",{},"en-us/blog/authors/nelly-vahab","3k8cjh4irYsV6IH_Yz2aztdO6ugtn72iGhYnoPsmdlk",[875,883,890],{"title":876,"description":877,"heroImage":878,"category":170,"date":879,"authors":880,"slug":882,"externalUrl":174},"Full security scanner coverage of your codebase in minutes","Security configuration profiles lead to faster scanner rollouts. Learn how this new capability in GitLab 19.0 covers thousands of projects in minutes, no gaps.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1779189265/iqzyhhiwagxzwywvjzow.png","2026-05-26",[881],"Michael Omokoh","security-configuration-profiles",{"title":884,"description":885,"heroImage":878,"category":170,"date":879,"authors":886,"slug":889,"externalUrl":174},"Reduce supply chain risk with SBOM-based dependency scanning","Detect transitive dependencies, trace how they entered your project, and prioritize them by real-world exposure.",[887,888],"Mark Settle","Joel Patterson","sbom-based-dependency-scanning",{"title":891,"description":892,"heroImage":878,"category":170,"date":893,"authors":894,"slug":896,"externalUrl":174},"Manage CI/CD credentials with GitLab Secrets Manager","Each secret is scoped to its environment or branch and governed by the same controls you use for code. Join the public beta in GitLab 19.0.","2026-05-21",[895,887],"Joe Randazzo","secrets-manager-in-public-beta",{"promotions":898},[899,913,924,935],{"id":900,"categories":901,"header":903,"text":904,"button":905,"image":910},"ai-modernization",[902],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":906,"config":907},"Get your AI maturity score",{"href":908,"dataGaName":909,"dataGaLocation":402},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":911},{"src":912},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":914,"categories":915,"header":916,"text":904,"button":917,"image":921},"devops-modernization",[187,725],"Are you just managing tools or shipping innovation?",{"text":918,"config":919},"Get your DevOps maturity score",{"href":920,"dataGaName":909,"dataGaLocation":402},"/assessments/devops-modernization-assessment/",{"config":922},{"src":923},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":925,"categories":926,"header":927,"text":904,"button":928,"image":932},"security-modernization",[170],"Are you trading speed for security?",{"text":929,"config":930},"Get your security maturity score",{"href":931,"dataGaName":909,"dataGaLocation":402},"/assessments/security-modernization-assessment/",{"config":933},{"src":934},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":936,"paths":937,"header":940,"text":941,"button":942,"image":947},"github-azure-migration",[938,939],"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":943,"config":944},"See how GitLab compares to GitHub",{"href":945,"dataGaName":946,"dataGaLocation":402},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":948},{"src":923},{"header":950,"blurb":951,"button":952,"secondaryButton":957},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":953,"config":954},"Get your free trial",{"href":955,"dataGaName":201,"dataGaLocation":956},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":661,"config":958},{"href":205,"dataGaName":206,"dataGaLocation":956},1781392800716]