[{"data":1,"prerenderedAt":852},["ShallowReactive",2],{"navigation_docs":3,"-guide-approval-control":66,"-guide-approval-control-surround":847},[4,22,54],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Getting Started","\u002Fgetting-started","docs",[9,13,17],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Installation","\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":18,"path":19,"stem":20},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","docs\u002F1.getting-started\u002F3.agent-skills",false,{"title":23,"path":24,"stem":7,"children":25,"page":21},"Guide","\u002Fguide",[26,30,34,38,42,46,50],{"title":27,"path":28,"stem":29},"Quick Start","\u002Fguide\u002Fquick-start","docs\u002F2.guide\u002F1.quick-start",{"title":31,"path":32,"stem":33},"Scope with Presets","\u002Fguide\u002Fpresets","docs\u002F2.guide\u002F2.presets",{"title":35,"path":36,"stem":37},"Control Write Safety","\u002Fguide\u002Fapproval-control","docs\u002F2.guide\u002F3.approval-control",{"title":39,"path":40,"stem":41},"Commit Attribution","\u002Fguide\u002Fcommit-attribution","docs\u002F2.guide\u002F4.commit-attribution",{"title":43,"path":44,"stem":45},"Configure Token Scopes","\u002Fguide\u002Ftoken-permissions","docs\u002F2.guide\u002F5.token-and-permissions",{"title":47,"path":48,"stem":49},"Examples","\u002Fguide\u002Fexamples","docs\u002F2.guide\u002F6.examples",{"title":51,"path":52,"stem":53},"Durable workflows (Vercel Workflow)","\u002Fguide\u002Fdurable-workflows","docs\u002F2.guide\u002F7.durable-workflows",{"title":55,"path":56,"stem":7,"children":57,"page":21},"Api","\u002Fapi",[58,62],{"title":59,"path":60,"stem":61},"Tools Catalog","\u002Fapi\u002Ftools-catalog","docs\u002F3.api\u002F1.tools-catalog",{"title":63,"path":64,"stem":65},"API Reference","\u002Fapi\u002Freference","docs\u002F3.api\u002F2.reference",{"id":67,"title":35,"body":68,"description":833,"extension":834,"links":835,"meta":844,"navigation":148,"path":36,"seo":845,"stem":37,"__hash__":846},"docs\u002Fdocs\u002F2.guide\u002F3.approval-control.md",{"type":69,"value":70,"toc":824},"minimark",[71,75,80,98,102,105,181,185,188,254,258,261,445,449,689,693,708,776,792,804,808,820],[72,73,74],"p",{},"Write operations like merging a PR or closing an issue can have irreversible consequences. The SDK provides an approval layer that intercepts mutations before they execute.",[76,77,79],"h2",{"id":78},"ai-assistant-prompt-write-safety","AI assistant prompt (write safety)",[81,82,88],"pre",{"className":83,"code":84,"filename":85,"language":86,"meta":87,"style":87},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Configure @github-tools\u002Fsdk write safety in this project: use requireApproval on createGithubTools or createGithubAgent so destructive GitHub actions stay human-gated where appropriate. Follow https:\u002F\u002Fgithub-tools.com\u002Fguide\u002Fapproval-control and cross-check the PAT with https:\u002F\u002Fgithub-tools.com\u002Fguide\u002Ftoken-permissions. Note: requireApproval is not enforced by createDurableGithubAgent today — use non-durable agents or app-level guards for durable paths.\n","Prompt","txt","",[89,90,91],"code",{"__ignoreMap":87},[92,93,96],"span",{"class":94,"line":95},"line",1,[92,97,84],{},[76,99,101],{"id":100},"require-approval-for-all-writes","Require approval for all writes",[72,103,104],{},"By default, every write operation requires explicit approval. You don't need to pass any extra option:",[81,106,111],{"className":107,"code":108,"filename":109,"language":110,"meta":87,"style":87},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createGithubTools } from '@github-tools\u002Fsdk'\n\nconst tools = createGithubTools({\n  })\n\n","default-approval.ts","ts",[89,112,113,143,150,172],{"__ignoreMap":87},[92,114,115,119,123,127,130,133,136,140],{"class":94,"line":95},[92,116,118],{"class":117},"s7zQu","import",[92,120,122],{"class":121},"sMK4o"," {",[92,124,126],{"class":125},"sTEyZ"," createGithubTools",[92,128,129],{"class":121}," }",[92,131,132],{"class":117}," from",[92,134,135],{"class":121}," '",[92,137,139],{"class":138},"sfazB","@github-tools\u002Fsdk",[92,141,142],{"class":121},"'\n",[92,144,146],{"class":94,"line":145},2,[92,147,149],{"emptyLinePlaceholder":148},true,"\n",[92,151,153,157,160,163,166,169],{"class":94,"line":152},3,[92,154,156],{"class":155},"spNyl","const",[92,158,159],{"class":125}," tools ",[92,161,162],{"class":121},"=",[92,164,126],{"class":165},"s2Zo4",[92,167,168],{"class":125},"(",[92,170,171],{"class":121},"{\n",[92,173,175,178],{"class":94,"line":174},4,[92,176,177],{"class":121},"  }",[92,179,180],{"class":125},")\n",[76,182,184],{"id":183},"disable-approval-in-trusted-environments","Disable approval in trusted environments",[72,186,187],{},"In CI pipelines or automated workflows where human review happens elsewhere (e.g. PR-based), you can disable approval entirely:",[81,189,192],{"className":107,"code":190,"filename":191,"language":110,"meta":87,"style":87},"import { createGithubTools } from '@github-tools\u002Fsdk'\n\nconst tools = createGithubTools({\n  requireApproval: false,\n})\n","ci-pipeline.ts",[89,193,194,212,216,230,246],{"__ignoreMap":87},[92,195,196,198,200,202,204,206,208,210],{"class":94,"line":95},[92,197,118],{"class":117},[92,199,122],{"class":121},[92,201,126],{"class":125},[92,203,129],{"class":121},[92,205,132],{"class":117},[92,207,135],{"class":121},[92,209,139],{"class":138},[92,211,142],{"class":121},[92,213,214],{"class":94,"line":145},[92,215,149],{"emptyLinePlaceholder":148},[92,217,218,220,222,224,226,228],{"class":94,"line":152},[92,219,156],{"class":155},[92,221,159],{"class":125},[92,223,162],{"class":121},[92,225,126],{"class":165},[92,227,168],{"class":125},[92,229,171],{"class":121},[92,231,232,236,239,243],{"class":94,"line":174},[92,233,235],{"class":234},"swJcz","  requireApproval",[92,237,238],{"class":121},":",[92,240,242],{"class":241},"sfNiH"," false",[92,244,245],{"class":121},",\n",[92,247,249,252],{"class":94,"line":248},5,[92,250,251],{"class":121},"}",[92,253,180],{"class":125},[76,255,257],{"id":256},"configure-approval-per-operation","Configure approval per operation",[72,259,260],{},"For nuanced policies, enable approval selectively. This example approves destructive actions but allows comments freely:",[81,262,265],{"className":107,"code":263,"filename":264,"language":110,"meta":87,"style":87},"import { createGithubTools } from '@github-tools\u002Fsdk'\n\nconst tools = createGithubTools({\n  requireApproval: {\n    createBranch: false,\n    forkRepository: true,\n    createRepository: true,\n    mergePullRequest: true,\n    createOrUpdateFile: true,\n    closeIssue: true,\n    createPullRequest: false,\n    addPullRequestComment: false,\n    createIssue: false,\n    addIssueComment: false,\n  },\n})\n","selective-approval.ts",[89,266,267,285,289,303,312,323,336,348,360,372,384,396,408,420,432,438],{"__ignoreMap":87},[92,268,269,271,273,275,277,279,281,283],{"class":94,"line":95},[92,270,118],{"class":117},[92,272,122],{"class":121},[92,274,126],{"class":125},[92,276,129],{"class":121},[92,278,132],{"class":117},[92,280,135],{"class":121},[92,282,139],{"class":138},[92,284,142],{"class":121},[92,286,287],{"class":94,"line":145},[92,288,149],{"emptyLinePlaceholder":148},[92,290,291,293,295,297,299,301],{"class":94,"line":152},[92,292,156],{"class":155},[92,294,159],{"class":125},[92,296,162],{"class":121},[92,298,126],{"class":165},[92,300,168],{"class":125},[92,302,171],{"class":121},[92,304,305,307,309],{"class":94,"line":174},[92,306,235],{"class":234},[92,308,238],{"class":121},[92,310,311],{"class":121}," {\n",[92,313,314,317,319,321],{"class":94,"line":248},[92,315,316],{"class":234},"    createBranch",[92,318,238],{"class":121},[92,320,242],{"class":241},[92,322,245],{"class":121},[92,324,326,329,331,334],{"class":94,"line":325},6,[92,327,328],{"class":234},"    forkRepository",[92,330,238],{"class":121},[92,332,333],{"class":241}," true",[92,335,245],{"class":121},[92,337,339,342,344,346],{"class":94,"line":338},7,[92,340,341],{"class":234},"    createRepository",[92,343,238],{"class":121},[92,345,333],{"class":241},[92,347,245],{"class":121},[92,349,351,354,356,358],{"class":94,"line":350},8,[92,352,353],{"class":234},"    mergePullRequest",[92,355,238],{"class":121},[92,357,333],{"class":241},[92,359,245],{"class":121},[92,361,363,366,368,370],{"class":94,"line":362},9,[92,364,365],{"class":234},"    createOrUpdateFile",[92,367,238],{"class":121},[92,369,333],{"class":241},[92,371,245],{"class":121},[92,373,375,378,380,382],{"class":94,"line":374},10,[92,376,377],{"class":234},"    closeIssue",[92,379,238],{"class":121},[92,381,333],{"class":241},[92,383,245],{"class":121},[92,385,387,390,392,394],{"class":94,"line":386},11,[92,388,389],{"class":234},"    createPullRequest",[92,391,238],{"class":121},[92,393,242],{"class":241},[92,395,245],{"class":121},[92,397,399,402,404,406],{"class":94,"line":398},12,[92,400,401],{"class":234},"    addPullRequestComment",[92,403,238],{"class":121},[92,405,242],{"class":241},[92,407,245],{"class":121},[92,409,411,414,416,418],{"class":94,"line":410},13,[92,412,413],{"class":234},"    createIssue",[92,415,238],{"class":121},[92,417,242],{"class":241},[92,419,245],{"class":121},[92,421,423,426,428,430],{"class":94,"line":422},14,[92,424,425],{"class":234},"    addIssueComment",[92,427,238],{"class":121},[92,429,242],{"class":241},[92,431,245],{"class":121},[92,433,435],{"class":94,"line":434},15,[92,436,437],{"class":121},"  },\n",[92,439,441,443],{"class":94,"line":440},16,[92,442,251],{"class":121},[92,444,180],{"class":125},[76,446,448],{"id":447},"assess-risk-by-operation","Assess risk by operation",[450,451,452,468],"table",{},[453,454,455],"thead",{},[456,457,458,462,465],"tr",{},[459,460,461],"th",{},"Operation",[459,463,464],{},"Risk",[459,466,467],{},"Suggested policy",[469,470,471,485,496,507,518,531,543,556,567,578,589,600,611,622,633,645,656,667,678],"tbody",{},[456,472,473,479,482],{},[474,475,476],"td",{},[89,477,478],{},"createRepository",[474,480,481],{},"High",[474,483,484],{},"Always require approval",[456,486,487,492,494],{},[474,488,489],{},[89,490,491],{},"forkRepository",[474,493,481],{},[474,495,484],{},[456,497,498,503,505],{},[474,499,500],{},[89,501,502],{},"createOrUpdateFile",[474,504,481],{},[474,506,484],{},[456,508,509,514,516],{},[474,510,511],{},[89,512,513],{},"mergePullRequest",[474,515,481],{},[474,517,484],{},[456,519,520,525,528],{},[474,521,522],{},[89,523,524],{},"closeIssue",[474,526,527],{},"Medium",[474,529,530],{},"Require in production repos",[456,532,533,538,540],{},[474,534,535],{},[89,536,537],{},"createPullRequest",[474,539,527],{},[474,541,542],{},"Optional in trusted CI",[456,544,545,550,553],{},[474,546,547],{},[89,548,549],{},"createBranch",[474,551,552],{},"Low",[474,554,555],{},"Usually skip",[456,557,558,563,565],{},[474,559,560],{},[89,561,562],{},"addPullRequestComment",[474,564,552],{},[474,566,555],{},[456,568,569,574,576],{},[474,570,571],{},[89,572,573],{},"createPullRequestReview",[474,575,527],{},[474,577,530],{},[456,579,580,585,587],{},[474,581,582],{},[89,583,584],{},"addIssueComment",[474,586,552],{},[474,588,555],{},[456,590,591,596,598],{},[474,592,593],{},[89,594,595],{},"addLabels",[474,597,552],{},[474,599,555],{},[456,601,602,607,609],{},[474,603,604],{},[89,605,606],{},"removeLabel",[474,608,552],{},[474,610,555],{},[456,612,613,618,620],{},[474,614,615],{},[89,616,617],{},"deleteGist",[474,619,481],{},[474,621,484],{},[456,623,624,629,631],{},[474,625,626],{},[89,627,628],{},"createGist",[474,630,527],{},[474,632,542],{},[456,634,635,640,642],{},[474,636,637],{},[89,638,639],{},"updateGist",[474,641,527],{},[474,643,644],{},"Require in production",[456,646,647,652,654],{},[474,648,649],{},[89,650,651],{},"createGistComment",[474,653,552],{},[474,655,555],{},[456,657,658,663,665],{},[474,659,660],{},[89,661,662],{},"triggerWorkflow",[474,664,481],{},[474,666,484],{},[456,668,669,674,676],{},[474,670,671],{},[89,672,673],{},"cancelWorkflowRun",[474,675,481],{},[474,677,484],{},[456,679,680,685,687],{},[474,681,682],{},[89,683,684],{},"rerunWorkflowRun",[474,686,527],{},[474,688,530],{},[76,690,692],{"id":691},"override-approval-per-tool","Override approval per tool",[72,694,695,696,699,700,707],{},"You can also set ",[89,697,698],{},"needsApproval"," via the ",[701,702,704],"a",{"href":703},"\u002Fapi\u002Freference#tool-overrides",[89,705,706],{},"overrides"," option, which supports all AI SDK tool properties:",[81,709,712],{"className":107,"code":710,"filename":711,"language":110,"meta":87,"style":87},"createGithubTools({\n  overrides: {\n    addIssueComment: { needsApproval: false },\n    mergePullRequest: { needsApproval: true },\n  },\n})\n","override-approval.ts",[89,713,714,723,732,750,766,770],{"__ignoreMap":87},[92,715,716,719,721],{"class":94,"line":95},[92,717,718],{"class":165},"createGithubTools",[92,720,168],{"class":125},[92,722,171],{"class":121},[92,724,725,728,730],{"class":94,"line":145},[92,726,727],{"class":234},"  overrides",[92,729,238],{"class":121},[92,731,311],{"class":121},[92,733,734,736,738,740,743,745,747],{"class":94,"line":152},[92,735,425],{"class":234},[92,737,238],{"class":121},[92,739,122],{"class":121},[92,741,742],{"class":234}," needsApproval",[92,744,238],{"class":121},[92,746,242],{"class":241},[92,748,749],{"class":121}," },\n",[92,751,752,754,756,758,760,762,764],{"class":94,"line":174},[92,753,353],{"class":234},[92,755,238],{"class":121},[92,757,122],{"class":121},[92,759,742],{"class":234},[92,761,238],{"class":121},[92,763,333],{"class":241},[92,765,749],{"class":121},[92,767,768],{"class":94,"line":248},[92,769,437],{"class":121},[92,771,772,774],{"class":94,"line":325},[92,773,251],{"class":121},[92,775,180],{"class":125},[72,777,778,779,782,783,785,786,788,789,791],{},"When both ",[89,780,781],{},"requireApproval"," and ",[89,784,706],{}," set ",[89,787,698],{}," for the same tool, the ",[89,790,706],{}," value wins (it is applied last).",[793,794,795,796,799,800,803],"warning",{},"Approval is one safety layer, not the only one. Combine it with least-privilege ",[701,797,798],{"href":44},"token scopes"," and narrow ",[701,801,802],{"href":32},"presets",".",[76,805,807],{"id":806},"external-references","External references",[809,810,811],"ul",{},[812,813,814],"li",{},[701,815,819],{"href":816,"rel":817},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fconfiguring-branches-and-merges-in-your-repository\u002Fmanaging-protected-branches",[818],"nofollow","GitHub branch protection rules",[821,822,823],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":87,"searchDepth":145,"depth":145,"links":825},[826,827,828,829,830,831,832],{"id":78,"depth":145,"text":79},{"id":100,"depth":145,"text":101},{"id":183,"depth":145,"text":184},{"id":256,"depth":145,"text":257},{"id":447,"depth":145,"text":448},{"id":691,"depth":145,"text":692},{"id":806,"depth":145,"text":807},"Gate dangerous operations with human approval policies.","md",[836,841],{"label":837,"icon":838,"to":44,"color":839,"variant":840},"Configure token scopes","i-lucide-key-round","neutral","subtle",{"label":842,"icon":843,"to":48,"color":839,"variant":840},"See examples","i-lucide-code",{},{"title":35,"description":833},"nviBhEHZMLjrqk5iyhlpGw-Y_tUukxK4TlDa4UO0Jzk",[848,850],{"title":31,"path":32,"stem":33,"description":849,"children":-1},"Expose only the tools your workflow needs using presets.",{"title":39,"path":40,"stem":41,"description":851,"children":-1},"Configure author, committer, and co-authorship for commits created by GitHub tools.",1779365451999]