[{"data":1,"prerenderedAt":917},["ShallowReactive",2],{"navigation_docs":3,"-engineering-github-personal-access-token":348,"-engineering-github-personal-access-token-surround":913},[4,8,68,98,216,245,259,280,344],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"icon":10,"path":11,"stem":12,"children":13,"page":63},"Company","i-lucide-building-2","\u002Fcompany","1.company",[14,18,22,26,30,34,38,42,46,50,64],{"title":15,"path":16,"stem":17},"About","\u002Fcompany\u002Fabout","1.company\u002F0.about",{"title":19,"path":20,"stem":21},"Values","\u002Fcompany\u002Fvalues","1.company\u002F1.values",{"title":23,"path":24,"stem":25},"Communication","\u002Fcompany\u002Fcommunication","1.company\u002Fcommunication",{"title":27,"path":28,"stem":29},"Competition","\u002Fcompany\u002Fcompetition","1.company\u002Fcompetition",{"title":31,"path":32,"stem":33},"Hybrid Working","\u002Fcompany\u002Fhybrid-working","1.company\u002Fhybrid-working",{"title":35,"path":36,"stem":37},"Manchester Office","\u002Fcompany\u002Foffice","1.company\u002Foffice",{"title":39,"path":40,"stem":41},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":43,"path":44,"stem":45},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":47,"path":48,"stem":49},"Product Strategy","\u002Fcompany\u002Fproduct-strategy","1.company\u002Fproduct-strategy",{"title":51,"path":52,"stem":53,"children":54,"page":63},"Products","\u002Fcompany\u002Fproducts","1.company\u002Fproducts",[55,59],{"title":56,"path":57,"stem":58},"Capability Exchange","\u002Fcompany\u002Fproducts\u002Fcapability-exchange","1.company\u002Fproducts\u002Fcapability-exchange",{"title":60,"path":61,"stem":62},"ESProfiler Platform","\u002Fcompany\u002Fproducts\u002Fesprofiler","1.company\u002Fproducts\u002Fesprofiler",false,{"title":65,"path":66,"stem":67},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":63},"People Ops","i-lucide-users","\u002Fpeople-ops","2.people-ops",[74,78,82,86,90,94],{"title":75,"path":76,"stem":77},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":79,"path":80,"stem":81},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":83,"path":84,"stem":85},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":87,"path":88,"stem":89},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":91,"path":92,"stem":93},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":95,"path":96,"stem":97},"Recruitment","\u002Fpeople-ops\u002Frecruitment","2.people-ops\u002Frecruitment",{"title":99,"icon":100,"path":101,"stem":102,"children":103,"page":63},"Engineering","i-lucide-rocket","\u002Fengineering","3.engineering",[104,147,151,171,192,196,204,208,212],{"title":105,"path":106,"stem":107,"children":108,"page":63},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",[109,113,117,121,125,138],{"title":110,"path":111,"stem":112},"Development Setup","\u002Fengineering\u002Fcontributing\u002Fdevelopment-setup","3.engineering\u002Fcontributing\u002F1.development-setup",{"title":114,"path":115,"stem":116},"Engineering Operations","\u002Fengineering\u002Fcontributing\u002Fengineering-operations","3.engineering\u002Fcontributing\u002F2.engineering-operations",{"title":118,"path":119,"stem":120},"Documentation","\u002Fengineering\u002Fcontributing\u002Fdocumentation","3.engineering\u002Fcontributing\u002F3.documentation",{"title":122,"path":123,"stem":124},"Agentic Coding","\u002Fengineering\u002Fcontributing\u002Fagentic-coding","3.engineering\u002Fcontributing\u002Fagentic-coding",{"title":126,"path":127,"stem":128,"children":129,"page":63},"Back End","\u002Fengineering\u002Fcontributing\u002Fback-end","3.engineering\u002Fcontributing\u002Fback-end",[130,134],{"title":131,"path":132,"stem":133},"API Guidelines","\u002Fengineering\u002Fcontributing\u002Fback-end\u002Fapi-guidelines","3.engineering\u002Fcontributing\u002Fback-end\u002Fapi-guidelines",{"title":135,"path":136,"stem":137},"LLM Prompts & Langfuse Integration","\u002Fengineering\u002Fcontributing\u002Fback-end\u002Fllm-prompts","3.engineering\u002Fcontributing\u002Fback-end\u002Fllm-prompts",{"title":139,"path":140,"stem":141,"children":142,"page":63},"Front End","\u002Fengineering\u002Fcontributing\u002Ffront-end","3.engineering\u002Fcontributing\u002Ffront-end",[143],{"title":144,"path":145,"stem":146},"Testing","\u002Fengineering\u002Fcontributing\u002Ffront-end\u002Ftesting","3.engineering\u002Fcontributing\u002Ffront-end\u002Ftesting",{"title":148,"path":149,"stem":150},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":152,"path":153,"stem":154,"children":155},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",[156,159,163,167],{"title":56,"path":157,"stem":158},"\u002Fengineering\u002Fdeployment\u002Fcapability-exchange","3.engineering\u002Fdeployment\u002Fcapability-exchange",{"title":160,"path":161,"stem":162},"Langfuse Deployment","\u002Fengineering\u002Fdeployment\u002Fecs-langfuse-deployment","3.engineering\u002Fdeployment\u002Fecs-langfuse-deployment",{"title":164,"path":165,"stem":166},"ESP Platform Configuration","\u002Fengineering\u002Fdeployment\u002Fesp-platform-configuration","3.engineering\u002Fdeployment\u002Fesp-platform-configuration",{"title":168,"path":169,"stem":170},"Platform","\u002Fengineering\u002Fdeployment\u002Fplatform","3.engineering\u002Fdeployment\u002Fplatform",{"title":172,"path":173,"stem":174,"children":175,"page":63},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[176,180,184,188],{"title":177,"path":178,"stem":179},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":181,"path":182,"stem":183},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":185,"path":186,"stem":187},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":189,"path":190,"stem":191},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":193,"path":194,"stem":195},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":168,"path":197,"stem":198,"children":199,"page":63},"\u002Fengineering\u002Fplatform","3.engineering\u002Fplatform",[200],{"title":201,"path":202,"stem":203},"useAPI","\u002Fengineering\u002Fplatform\u002Fuse-api","3.engineering\u002Fplatform\u002Fuse-api",{"title":205,"path":206,"stem":207},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":209,"path":210,"stem":211},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":213,"path":214,"stem":215},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":217,"icon":218,"path":219,"stem":220,"children":221,"page":63},"Design","i-lucide-palette","\u002Fdesign","4.design",[222,226,230,234,238,241],{"title":223,"path":224,"stem":225},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002F1.design-thinking",{"title":227,"path":228,"stem":229},"Figma","\u002Fdesign\u002Ffigma-structure","4.design\u002F2.figma-structure",{"title":231,"path":232,"stem":233},"Design & Development","\u002Fdesign\u002Fdesign-and-development","4.design\u002F3.design-and-development",{"title":235,"path":236,"stem":237},"Branding","\u002Fdesign\u002Fbranding","4.design\u002F4.branding",{"title":213,"path":239,"stem":240},"\u002Fdesign\u002Ftools","4.design\u002F5.tools",{"title":242,"path":243,"stem":244},"Customer Success","\u002Fdesign\u002Fworking-with-customers","4.design\u002F6.working-with-customers",{"title":246,"icon":247,"path":248,"stem":249,"children":250,"page":63},"Sales","i-lucide-dollar-sign","\u002Fsales","4.sales",[251,255],{"title":252,"path":253,"stem":254},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":256,"path":257,"stem":258},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":63},"Marketing","i-lucide-book-image","\u002Fmarketing","5.marketing",[265,269,273,276],{"title":266,"path":267,"stem":268},"Content","\u002Fmarketing\u002Fcontent","5.marketing\u002Fcontent",{"title":270,"path":271,"stem":272},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":213,"path":274,"stem":275},"\u002Fmarketing\u002Ftools","5.marketing\u002Ftools",{"title":277,"path":278,"stem":279},"Website","\u002Fmarketing\u002Fwebsite","5.marketing\u002Fwebsite",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":63},"AI & Data Ops","i-lucide-database","\u002Fdata-ops","6.data-ops",[286,294,298,323,340],{"title":56,"path":287,"stem":288,"children":289,"page":63},"\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[290],{"title":291,"path":292,"stem":293},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":295,"path":296,"stem":297},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":299,"path":300,"stem":301,"children":302,"page":63},"Data Management","\u002Fdata-ops\u002Fdata-management","6.data-ops\u002Fdata-management",[303,307,311,315,319],{"title":304,"path":305,"stem":306},"Adding Products","\u002Fdata-ops\u002Fdata-management\u002Fadding-products","6.data-ops\u002Fdata-management\u002Fadding-products",{"title":308,"path":309,"stem":310},"Adding Vendors","\u002Fdata-ops\u002Fdata-management\u002Fadding-vendors","6.data-ops\u002Fdata-management\u002Fadding-vendors",{"title":312,"path":313,"stem":314},"Framework Mapping","\u002Fdata-ops\u002Fdata-management\u002Fframework-mapping","6.data-ops\u002Fdata-management\u002Fframework-mapping",{"title":316,"path":317,"stem":318},"Refreshing Vendors","\u002Fdata-ops\u002Fdata-management\u002Frefreshing-vendors","6.data-ops\u002Fdata-management\u002Frefreshing-vendors",{"title":320,"path":321,"stem":322},"Reviewing Draft Vendors","\u002Fdata-ops\u002Fdata-management\u002Freviewing-draft-vendors","6.data-ops\u002Fdata-management\u002Freviewing-draft-vendors",{"title":324,"path":325,"stem":326,"children":327,"page":63},"LLM Ops","\u002Fdata-ops\u002Fllm-ops","6.data-ops\u002Fllm-ops",[328,332,336],{"title":329,"path":330,"stem":331},"Agents","\u002Fdata-ops\u002Fllm-ops\u002Fagents","6.data-ops\u002Fllm-ops\u002F1.agents",{"title":333,"path":334,"stem":335},"ESPi Architecture & Query Flow","\u002Fdata-ops\u002Fllm-ops\u002Fespi-architecture","6.data-ops\u002Fllm-ops\u002F2.espi-architecture",{"title":337,"path":338,"stem":339},"Evaluating Agents","\u002Fdata-ops\u002Fllm-ops\u002Fevaluations","6.data-ops\u002Fllm-ops\u002F3.evaluations",{"title":341,"path":342,"stem":343},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":345,"path":346,"stem":347},"Glossary","\u002Fglossary","glossary",{"id":349,"title":181,"body":350,"description":805,"extension":908,"links":909,"meta":910,"navigation":691,"path":182,"seo":911,"stem":183,"__hash__":912},"docs\u002F3.engineering\u002Fgithub\u002Fpersonal-access-token.md",{"type":351,"value":352,"toc":889},"minimark",[353,358,362,365,368,372,381,384,418,421,432,449,451,458,465,470,531,535,538,598,619,621,625,630,680,692,694,698,744,746,750,753,786,790,796,806,810,814,820,824,843,845,849],[354,355,357],"h2",{"id":356},"personal-access-tokens-pats","Personal Access Tokens (PATs)",[359,360,361],"p",{},"A Personal Access Token (PAT) is used to authenticate with GitHub in place of a password — for example, when pulling private packages, publishing packages, or using the GitHub API from scripts and CI\u002FCD pipelines.",[359,363,364],{},"GitHub offers two types of PATs:",[366,367],"hr",{},[354,369,371],{"id":370},"token-types","Token Types",[373,374,376,377],"h3",{"id":375},"fine-grained-tokens-recommended-for-most-tasks","Fine-grained Tokens ",[378,379,380],"em",{},"(recommended for most tasks)",[359,382,383],{},"Fine-grained tokens are the newer, more secure token format introduced by GitHub. They offer:",[385,386,387,395,406,412],"ul",{},[388,389,390,394],"li",{},[391,392,393],"strong",{},"Repository-scoped access"," — you select exactly which repositories the token can access, rather than granting access to everything.",[388,396,397,400,401,405],{},[391,398,399],{},"Granular permissions"," — instead of broad scopes (e.g. ",[402,403,404],"code",{},"repo","), you choose specific read\u002Fwrite permissions per resource (Issues, Pull Requests, Contents, etc.).",[388,407,408,411],{},[391,409,410],{},"Expiry enforcement"," — fine-grained tokens require an expiry date (maximum 1 year).",[388,413,414,417],{},[391,415,416],{},"Owner approval"," — if your organisation enforces it, tokens may require admin approval before they become active.",[359,419,420],{},"Fine-grained tokens are ideal for:",[385,422,423,426,429],{},[388,424,425],{},"Accessing or cloning specific repositories",[388,427,428],{},"Operating GitHub Actions with least-privilege access",[388,430,431],{},"Anything where limiting blast radius is important",[433,434,435],"blockquote",{},[359,436,437,440,441,444,445,448],{},[391,438,439],{},"Limitation:"," Fine-grained tokens ",[391,442,443],{},"cannot"," currently authenticate against the ",[391,446,447],{},"GitHub Packages \u002F npm registry",". If your task involves installing or publishing packages, you must use a Classic token.",[366,450],{},[373,452,454,455],{"id":453},"classic-tokens-required-for-github-packages","Classic Tokens ",[378,456,457],{},"(required for GitHub Packages)",[359,459,460,461,464],{},"Classic tokens use a broad, scope-based permission model and have been available since GitHub's early API days. While less granular than fine-grained tokens, they are currently the ",[391,462,463],{},"only supported token type"," for GitHub Packages authentication.",[466,467,469],"h4",{"id":468},"when-you-must-use-a-classic-token","When you must use a Classic token",[471,472,473,486],"table",{},[474,475,476],"thead",{},[477,478,479,483],"tr",{},[480,481,482],"th",{},"Use Case",[480,484,485],{},"Classic Token Required?",[487,488,489,505,516,523],"tbody",{},[477,490,491,502],{},[492,493,494,497,498,501],"td",{},[402,495,496],{},"npm install"," \u002F ",[402,499,500],{},"yarn install"," from a private GitHub Package registry",[492,503,504],{},"✅ Yes",[477,506,507,514],{},[492,508,509,510,513],{},"Publishing a package to GitHub Packages (",[402,511,512],{},"npm publish",")",[492,515,504],{},[477,517,518,521],{},[492,519,520],{},"Reading\u002Finstalling packages in CI\u002FCD (e.g. GitHub Actions, local dev)",[492,522,504],{},[477,524,525,528],{},[492,526,527],{},"General GitHub API access or repository operations",[492,529,530],{},"❌ Fine-grained preferred",[466,532,534],{"id":533},"required-scopes-for-package-work","Required scopes for package work",[359,536,537],{},"When creating a Classic token for package consumption or development, select the following scopes:",[471,539,540,550],{},[474,541,542],{},[477,543,544,547],{},[480,545,546],{},"Scope",[480,548,549],{},"Purpose",[487,551,552,562,572,585],{},[477,553,554,559],{},[492,555,556],{},[402,557,558],{},"read:packages",[492,560,561],{},"Download \u002F install packages from the GitHub Package Registry",[477,563,564,569],{},[492,565,566],{},[402,567,568],{},"write:packages",[492,570,571],{},"Publish packages to the GitHub Package Registry",[477,573,574,578],{},[492,575,576],{},[402,577,404],{},[492,579,580,581,584],{},"Required when the package repository is ",[391,582,583],{},"private"," — allows the registry to verify access",[477,586,587,592],{},[492,588,589],{},[402,590,591],{},"delete:packages",[492,593,594,597],{},[378,595,596],{},"(Optional)"," Remove package versions you own",[433,599,600],{},[359,601,602,605,606,609,610,612,613,615,616,618],{},[391,603,604],{},"Tip:"," If you only need to ",[391,607,608],{},"consume"," (install) packages and not publish them, ",[402,611,558],{}," + ",[402,614,404],{}," is sufficient. Only add ",[402,617,568],{}," if you are actively developing and publishing packages.",[366,620],{},[354,622,624],{"id":623},"how-to-create-a-classic-token","How to Create a Classic Token",[433,626,627],{},[359,628,629],{},"This is the token type you will need for local development and CI\u002FCD package access.",[631,632,633,644,659,666,673],"ol",{},[388,634,635,636,643],{},"Go to ",[637,638,642],"a",{"href":639,"rel":640},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens\u002Fnew",[641],"nofollow","GitHub Tokens (Classic)"," — ensure you are logged into the correct account.",[388,645,646,647,650,651,654,655,658],{},"Give the token a descriptive ",[391,648,649],{},"Note",", e.g. ",[402,652,653],{},"Package Development"," or ",[402,656,657],{},"Package Read-Only",".",[388,660,661,662,665],{},"Set an ",[391,663,664],{},"Expiration"," — choose an appropriate window (e.g. 90 days). Avoid \"No expiration\" for security reasons.",[388,667,668,669,672],{},"Under ",[391,670,671],{},"Select scopes",", tick the scopes relevant to your use case (see table above).",[388,674,675,676,679],{},"Click ",[391,677,678],{},"Generate token"," and copy it immediately — GitHub will not show it again.",[681,682],"iframe",{"width":683,"height":684,"src":685,"className":686,"title":688,"frameBorder":689,"allow":690,"allowFullScreen":691},560,315,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FWJI2V86zs2A",[687],"mx-auto","YouTube video player","0","accelerometer;",true,[366,693],{},[354,695,697],{"id":696},"how-to-create-a-fine-grained-token","How to Create a Fine-grained Token",[631,699,700,707,712,717,723,733,739],{},[388,701,635,702,643],{},[637,703,706],{"href":704,"rel":705},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Fpersonal-access-tokens\u002Fnew",[641],"GitHub Fine-grained Tokens",[388,708,646,709,658],{},[391,710,711],{},"Token name",[388,713,661,714,716],{},[391,715,664],{}," (required — up to 365 days).",[388,718,668,719,722],{},[391,720,721],{},"Resource owner",", select the organisation or your personal account.",[388,724,668,725,728,729,732],{},[391,726,727],{},"Repository access",", choose ",[378,730,731],{},"Only select repositories"," and pick the repositories needed.",[388,734,668,735,738],{},[391,736,737],{},"Permissions",", expand each section and set only the minimum permissions required.",[388,740,675,741,743],{},[391,742,678],{}," and copy it immediately.",[366,745],{},[354,747,749],{"id":748},"configuring-projects-to-use-tokens","Configuring projects to use tokens",[359,751,752],{},"This setup works for both local development and CI\u002FCD pipelines.",[631,754,755,765],{},[388,756,757,758,654,761,764],{},"Configure projects to use tokens in the ",[402,759,760],{},".npmrc",[402,762,763],{},".yarnrc.yml"," files.",[388,766,767,768,771,772],{},"Set the ",[402,769,770],{},"NODE_AUTH_TOKEN"," environment variable to your Classic token when applicable in:\n",[385,773,774,780],{},[388,775,776,777],{},"GitHub Repository Secrets for ",[391,778,779],{},"CI\u002FCD pipelines",[388,781,782,783,658],{},"User Account System environment variables for ",[391,784,785],{},"local development",[373,787,789],{"id":788},"_1-for-yarn-projects","1. For Yarn Projects",[359,791,792,793,795],{},"Once you have a Classic token, configure npm to authenticate against the GitHub Package Registry by adding the following to the project-level ",[402,794,763],{},":",[797,798,803],"pre",{"className":799,"code":801,"language":802},[800],"language-text","npmScopes:\n  es-profiler:\n    npmAlwaysAuth: false\n    npmAuthToken: ${NODE_AUTH_TOKEN:-}\n    npmRegistryServer: \"https:\u002F\u002Fnpm.pkg.github.com\"\n","text",[402,804,801],{"__ignoreMap":805},"",[373,807,809],{"id":808},"_1-for-npm-projects","1. For NPM Projects",[359,811,792,812,795],{},[402,813,760],{},[797,815,818],{"className":816,"code":817,"language":802},[800],"\u002F\u002Fnpm.pkg.github.com\u002F:_authToken=${NODE_AUTH_TOKEN}\n@es-profiler:registry=https:\u002F\u002Fnpm.pkg.github.com\n",[402,819,817],{"__ignoreMap":805},[373,821,823],{"id":822},"_2-for-local-development","2. For Local Development",[433,825,826],{},[359,827,828,831,832,835,836,839,840,658],{},[391,829,830],{},"Never commit your token to source control."," Use environment variables or secrets management instead. In CI\u002FCD pipelines, store the token as a secret (e.g. ",[402,833,834],{},"GITHUB_TOKEN"," or a custom secret) and reference it in your ",[402,837,838],{},"npmrc"," via ",[402,841,842],{},"${TOKEN_ENV_VAR}",[366,844],{},[354,846,848],{"id":847},"best-practices","Best Practices",[385,850,851,857,866,877,883],{},[388,852,853,856],{},[391,854,855],{},"Rotate tokens regularly"," — set a calendar reminder before your token expires.",[388,858,859,862,863,865],{},[391,860,861],{},"Use the minimum required scopes"," — avoid ",[402,864,404],{}," on Classic tokens unless the package repository is private.",[388,867,868,871,872,658],{},[391,869,870],{},"Revoke unused tokens"," — audit your tokens periodically at ",[637,873,876],{"href":874,"rel":875},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens",[641],"github.com\u002Fsettings\u002Ftokens",[388,878,879,882],{},[391,880,881],{},"Never share tokens"," — each developer and each CI\u002FCD pipeline should have its own token.",[388,884,885,888],{},[391,886,887],{},"Prefer fine-grained tokens"," for any non-package GitHub API usage.",{"title":805,"searchDepth":890,"depth":890,"links":891},2,[892,893,900,901,902,907],{"id":356,"depth":890,"text":357},{"id":370,"depth":890,"text":371,"children":894},[895,898],{"id":375,"depth":896,"text":897},3,"Fine-grained Tokens (recommended for most tasks)",{"id":453,"depth":896,"text":899},"Classic Tokens (required for GitHub Packages)",{"id":623,"depth":890,"text":624},{"id":696,"depth":890,"text":697},{"id":748,"depth":890,"text":749,"children":903},[904,905,906],{"id":788,"depth":896,"text":789},{"id":808,"depth":896,"text":809},{"id":822,"depth":896,"text":823},{"id":847,"depth":890,"text":848},"md",null,{},{"description":805},"mV45VhJHcUtyhT5mLV2CMK-EPx1m4TKfPDuvFtYUnGI",[914,915],{"title":177,"path":178,"stem":179,"description":805,"children":-1},{"title":185,"path":186,"stem":187,"description":916,"children":-1},"Troubleshooting guide for GitHub issues.",1789726612457]