[{"data":1,"prerenderedAt":860},["ShallowReactive",2],{"navigation_docs":3,"-guides-upgrading-templates":270,"-guides-upgrading-templates-surround":855},[4,28,51,110,243],{"title":5,"path":6,"stem":7,"children":8},"Get started","\u002Fget-started","1.get-started",[9,12,16,20,24],{"title":10,"path":6,"stem":11},"Overview","1.get-started\u002Findex",{"title":13,"path":14,"stem":15},"Why Kraft","\u002Fget-started\u002Fwhy-kraft","1.get-started\u002F0.why-kraft",{"title":17,"path":18,"stem":19},"Install","\u002Fget-started\u002Finstall","1.get-started\u002F1.install",{"title":21,"path":22,"stem":23},"Your first work item","\u002Fget-started\u002Ffirst-work-item","1.get-started\u002F2.first-work-item",{"title":25,"path":26,"stem":27},"Troubleshooting and FAQ","\u002Fget-started\u002Ftroubleshooting","1.get-started\u002F3.troubleshooting",{"title":29,"path":30,"stem":31,"children":32},"Concepts","\u002Fconcepts","2.concepts",[33,35,39,43,47],{"title":10,"path":30,"stem":34},"2.concepts\u002Findex",{"title":36,"path":37,"stem":38},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F1.vocabulary",{"title":40,"path":41,"stem":42},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F2.how-a-work-item-runs",{"title":44,"path":45,"stem":46},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F3.caps-and-budgets",{"title":48,"path":49,"stem":50},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F4.permission-gate",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,62,66,70,74,78,82,86,90,94,98,102,106],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61},"Use Kraft from your agent","\u002Fguides\u002Fagent-integration","3.guides\u002F01.agent-integration",{"title":63,"path":64,"stem":65},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F02.kraft-lite",{"title":67,"path":68,"stem":69},"Remote access","\u002Fguides\u002Fremote-access","3.guides\u002F03.remote-access",{"title":71,"path":72,"stem":73},"Add or override a harness","\u002Fguides\u002Fadding-a-harness","3.guides\u002F04.adding-a-harness",{"title":75,"path":76,"stem":77},"Schedule or webhook work","\u002Fguides\u002Fschedule-and-webhook-work","3.guides\u002F05.schedule-and-webhook-work",{"title":79,"path":80,"stem":81},"Add a security review or a gate reviewer","\u002Fguides\u002Fadd-review-agents","3.guides\u002F06.add-review-agents",{"title":83,"path":84,"stem":85},"Kraft for VS Code","\u002Fguides\u002Fvscode","3.guides\u002F07.vscode",{"title":87,"path":88,"stem":89},"Reviewing a change","\u002Fguides\u002Freview-a-change","3.guides\u002F08.review-a-change",{"title":91,"path":92,"stem":93},"Write your own chain","\u002Fguides\u002Fwrite-your-own-chain","3.guides\u002F09.write-your-own-chain",{"title":95,"path":96,"stem":97},"Switch a harness","\u002Fguides\u002Fswitch-harness","3.guides\u002F10.switch-harness",{"title":99,"path":100,"stem":101},"Upgrade your templates","\u002Fguides\u002Fupgrading-templates","3.guides\u002F11.upgrading-templates",{"title":103,"path":104,"stem":105},"Operations","\u002Fguides\u002Foperations","3.guides\u002F12.operations",{"title":107,"path":108,"stem":109},"Worker Kit","\u002Fguides\u002Fworker-kit","3.guides\u002F13.worker-kit",{"title":111,"path":112,"stem":113,"children":114},"Reference","\u002Freference","4.reference",[115,117,139,183,201,205,227,231,235,239],{"title":10,"path":112,"stem":116},"4.reference\u002Findex",{"title":118,"path":119,"stem":120,"children":121},"CLI","\u002Freference\u002Fcli","4.reference\u002F1.cli\u002Findex",[122,123,127,131,135],{"title":10,"path":119,"stem":120},{"title":124,"path":125,"stem":126},"Item verbs","\u002Freference\u002Fcli\u002Fitem","4.reference\u002F1.cli\u002F2.item",{"title":128,"path":129,"stem":130},"View verbs","\u002Freference\u002Fcli\u002Fview","4.reference\u002F1.cli\u002F3.view",{"title":132,"path":133,"stem":134},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","4.reference\u002F1.cli\u002F4.repo",{"title":136,"path":137,"stem":138},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","4.reference\u002F1.cli\u002F5.admin",{"title":140,"path":141,"stem":142,"children":143},"Configuration","\u002Freference\u002Fconfiguration","4.reference\u002F2.configuration\u002Findex",[144,145,155,159,163,167,171,175,179],{"title":10,"path":141,"stem":142},{"title":146,"path":147,"stem":148,"children":149},"Repos","\u002Freference\u002Fconfiguration\u002Frepos","4.reference\u002F2.configuration\u002F2.repos\u002Findex",[150,151],{"title":10,"path":147,"stem":148},{"title":152,"path":153,"stem":154},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","4.reference\u002F2.configuration\u002F2.repos\u002F3.workspaces",{"title":156,"path":157,"stem":158},"Policy","\u002Freference\u002Fconfiguration\u002Fpolicy","4.reference\u002F2.configuration\u002F3.policy",{"title":160,"path":161,"stem":162},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","4.reference\u002F2.configuration\u002F4.library-and-chains",{"title":164,"path":165,"stem":166},"Harnesses file","\u002Freference\u002Fconfiguration\u002Fharnesses-file","4.reference\u002F2.configuration\u002F5.harnesses-file",{"title":168,"path":169,"stem":170},"Access","\u002Freference\u002Fconfiguration\u002Faccess","4.reference\u002F2.configuration\u002F6.access",{"title":172,"path":173,"stem":174},"Intake","\u002Freference\u002Fconfiguration\u002Fintake","4.reference\u002F2.configuration\u002F7.intake",{"title":176,"path":177,"stem":178},"Sandbox host","\u002Freference\u002Fconfiguration\u002Fsandbox","4.reference\u002F2.configuration\u002F8.sandbox",{"title":180,"path":181,"stem":182},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","4.reference\u002F2.configuration\u002F9.environment-variables",{"title":184,"path":185,"stem":186,"children":187},"Chain nodes","\u002Freference\u002Fchain-nodes","4.reference\u002F3.chain-nodes\u002Findex",[188,189,193,197],{"title":10,"path":185,"stem":186},{"title":190,"path":191,"stem":192},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","4.reference\u002F3.chain-nodes\u002F2.subprocess-tasks",{"title":194,"path":195,"stem":196},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","4.reference\u002F3.chain-nodes\u002F3.fix-loop",{"title":198,"path":199,"stem":200},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","4.reference\u002F3.chain-nodes\u002F4.result-file",{"title":202,"path":203,"stem":204},"Permission gate","\u002Freference\u002Fpermissions","4.reference\u002F4.permissions",{"title":206,"path":207,"stem":208,"children":209},"Agent harnesses","\u002Freference\u002Fharnesses","4.reference\u002F5.harnesses\u002Findex",[210,211,215,219,223],{"title":10,"path":207,"stem":208},{"title":212,"path":213,"stem":214},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","4.reference\u002F5.harnesses\u002F2.unattended-runs",{"title":216,"path":217,"stem":218},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","4.reference\u002F5.harnesses\u002F3.agent-profiles",{"title":220,"path":221,"stem":222},"Harness files","\u002Freference\u002Fharnesses\u002Fharness-files","4.reference\u002F5.harnesses\u002F4.harness-files",{"title":224,"path":225,"stem":226},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","4.reference\u002F5.harnesses\u002F5.fallback-and-escalation",{"title":228,"path":229,"stem":230},"Inbound triggers","\u002Freference\u002Ftriggers","4.reference\u002F6.triggers",{"title":232,"path":233,"stem":234},"HTTP API","\u002Freference\u002Fhttp-api","4.reference\u002F7.http-api",{"title":236,"path":237,"stem":238},"MCP tools","\u002Freference\u002Fmcp-tools","4.reference\u002F8.mcp-tools",{"title":240,"path":241,"stem":242},"Events","\u002Freference\u002Fevents","4.reference\u002F9.events",{"title":244,"path":245,"stem":246,"children":247},"Project","\u002Fproject","5.project",[248,250,254,258,262,266],{"title":10,"path":245,"stem":249},"5.project\u002Findex",{"title":251,"path":252,"stem":253},"Architecture","\u002Fproject\u002Farchitecture","5.project\u002F1.architecture",{"title":255,"path":256,"stem":257},"Contributing","\u002Fproject\u002Fcontributing","5.project\u002F2.contributing",{"title":259,"path":260,"stem":261},"Security","\u002Fproject\u002Fsecurity","5.project\u002F3.security",{"title":263,"path":264,"stem":265},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","5.project\u002F4.data-and-privacy",{"title":267,"path":268,"stem":269},"Status and support","\u002Fproject\u002Fstatus-and-support","5.project\u002F5.status-and-support",{"id":271,"title":272,"body":273,"description":848,"extension":849,"links":850,"meta":851,"navigation":852,"path":100,"seo":853,"stem":101,"__hash__":854},"docs\u002F3.guides\u002F11.upgrading-templates.md","Upgrading your templates",{"type":274,"value":275,"toc":839},"minimark",[276,285,290,316,320,323,408,426,430,433,449,467,482,486,492,583,602,613,617,628,665,668,694,704,707,732,736,782,792,815,819,835],[277,278,279,280,284],"p",{},"Kraft seeds ",[281,282,283],"code",{},"$KRAFT_HOME\u002Ftemplates\u002F"," from its packaged defaults on first run\nand never overwrites it after. An upgrade cannot clobber your edits. It also\nnever brings you new shipped nodes, tasks or policy keys. This guide shows how\nto see what changed and take what you want.",[286,287,289],"h2",{"id":288},"before-you-start","Before you start",[291,292,293,307],"ul",{},[294,295,296,297,300,301,306],"li",{},"You have upgraded Kraft (",[281,298,299],{},"kraft admin update","). See\n",[302,303,305],"a",{"href":304},"\u002Fget-started\u002Finstall#upgrading","Upgrading",".",[294,308,309,310,313,314,306],{},"Your templates live in ",[281,311,312],{},"~\u002F.kraft\u002Ftemplates\u002F",", or ",[281,315,283],{},[286,317,319],{"id":318},"keep-your-templates-in-git","Keep your templates in git",[277,321,322],{},"Do this once, before your next upgrade. A git history lets you see your own\nedits apart from Kraft's, and undo a bad merge.",[324,325,330],"pre",{"className":326,"code":327,"language":328,"meta":329,"style":329},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd ~\u002F.kraft\u002Ftemplates\ngit init\nprintf 'access.yaml\\nnotify.yaml\\n' > .gitignore\ngit add -A\ngit commit -m \"My Kraft templates\"\n","bash","",[281,331,332,345,355,377,388],{"__ignoreMap":329},[333,334,337,341],"span",{"class":335,"line":336},"line",1,[333,338,340],{"class":339},"s2Zo4","cd",[333,342,344],{"class":343},"sfazB"," ~\u002F.kraft\u002Ftemplates\n",[333,346,348,352],{"class":335,"line":347},2,[333,349,351],{"class":350},"sBMFI","git",[333,353,354],{"class":343}," init\n",[333,356,358,361,365,368,371,374],{"class":335,"line":357},3,[333,359,360],{"class":339},"printf",[333,362,364],{"class":363},"sMK4o"," '",[333,366,367],{"class":343},"access.yaml\\nnotify.yaml\\n",[333,369,370],{"class":363},"'",[333,372,373],{"class":363}," >",[333,375,376],{"class":343}," .gitignore\n",[333,378,380,382,385],{"class":335,"line":379},4,[333,381,351],{"class":350},[333,383,384],{"class":343}," add",[333,386,387],{"class":343}," -A\n",[333,389,391,393,396,399,402,405],{"class":335,"line":390},5,[333,392,351],{"class":350},[333,394,395],{"class":343}," commit",[333,397,398],{"class":343}," -m",[333,400,401],{"class":363}," \"",[333,403,404],{"class":343},"My Kraft templates",[333,406,407],{"class":363},"\"\n",[277,409,410,411,414,415,418,419,422,423,306],{},"Leave ",[281,412,413],{},"access.yaml"," and ",[281,416,417],{},"notify.yaml"," out. One holds your password hash, the\nother a webhook URL that usually carries a token. Keep the repository on this\nmachine: ",[281,420,421],{},"repos.yaml"," can hold secrets in a repo's ",[281,424,425],{},"env:",[286,427,429],{"id":428},"see-what-is-new","See what is new",[277,431,432],{},"Start with the checks that know what shipped:",[324,434,436],{"className":326,"code":435,"language":328,"meta":329,"style":329},"kraft admin doctor\n",[281,437,438],{"__ignoreMap":329},[333,439,440,443,446],{"class":335,"line":336},[333,441,442],{"class":350},"kraft",[333,444,445],{"class":343}," admin",[333,447,448],{"class":343}," doctor\n",[291,450,451,461],{},[294,452,453,454,457,458,306],{},"The ",[281,455,456],{},"capabilities"," row lists what this Kraft can do that your templates\npredate, each with the edit that adopts it. Your templates record the\nversion they were seeded from in ",[281,459,460],{},"templates\u002F.seeded-version",[294,462,453,463,466],{},[281,464,465],{},"chain_templates"," row names nodes a shipped chain has that your copy\nlacks. It compares node ids only, so a clean row does not prove the chains\nmatch.",[277,468,469,470,473,474,477,478,481],{},"With the Claude Code plugin, ",[281,471,472],{},"\u002Fkraft:check"," runs these checks and ",[281,475,476],{},"templates lint",", and explains each row. It also flags a ",[281,479,480],{},"plugin:skill"," in your chains\nthat your agent does not have. It only reports until you ask it to change\nsomething.",[286,483,485],{"id":484},"diff-against-the-packaged-defaults","Diff against the packaged defaults",[277,487,488,489,491],{},"The packaged defaults sit inside the installed Kraft. This finds them through\nthe Python that runs your ",[281,490,442],{}," command, for a uv, script or Homebrew\ninstall:",[324,493,495],{"className":326,"code":494,"language":328,"meta":329,"style":329},"KRAFT_PY=\"$(head -1 \"$(command -v kraft)\" | cut -c3-)\"\nSHIPPED=\"$(\"$KRAFT_PY\" -c 'import kraft.paths; print(kraft.paths.BUNDLED \u002F \"templates\")')\"\ndiff -ru \"$SHIPPED\" ~\u002F.kraft\u002Ftemplates\n",[281,496,497,538,566],{"__ignoreMap":329},[333,498,499,503,506,509,512,515,517,520,523,526,529,532,535],{"class":335,"line":336},[333,500,502],{"class":501},"sTEyZ","KRAFT_PY",[333,504,505],{"class":363},"=",[333,507,508],{"class":363},"\"$(",[333,510,511],{"class":350},"head",[333,513,514],{"class":343}," -1 ",[333,516,508],{"class":363},[333,518,519],{"class":339},"command",[333,521,522],{"class":343}," -v kraft",[333,524,525],{"class":363},")\"",[333,527,528],{"class":363}," |",[333,530,531],{"class":350}," cut",[333,533,534],{"class":343}," -c3-",[333,536,537],{"class":363},")\"\n",[333,539,540,543,545,547,550,553,555,558,560,563],{"class":335,"line":347},[333,541,542],{"class":501},"SHIPPED",[333,544,505],{"class":363},[333,546,508],{"class":363},[333,548,549],{"class":350},"\"",[333,551,552],{"class":501},"$KRAFT_PY",[333,554,549],{"class":350},[333,556,557],{"class":343}," -c ",[333,559,370],{"class":363},[333,561,562],{"class":343},"import kraft.paths; print(kraft.paths.BUNDLED \u002F \"templates\")",[333,564,565],{"class":363},"')\"\n",[333,567,568,571,574,576,579,581],{"class":335,"line":357},[333,569,570],{"class":350},"diff",[333,572,573],{"class":343}," -ru",[333,575,401],{"class":363},[333,577,578],{"class":501},"$SHIPPED",[333,580,549],{"class":363},[333,582,344],{"class":343},[277,584,585,586,594,595,598,599,306],{},"The same files are in the repo's\n",[302,587,591],{"href":588,"rel":589},"https:\u002F\u002Fgithub.com\u002FitsOmidKarami\u002Fkraft\u002Ftree\u002Fmain\u002Ftemplates",[590],"nofollow",[281,592,593],{},"templates\u002F","\ndirectory. Use the tag for your version, such as ",[281,596,597],{},"v1.1.0",", not ",[281,600,601],{},"main",[277,603,604,605,608,609,612],{},"In the diff, a line starting ",[281,606,607],{},"-"," is in the shipped file and not in yours. That\nis either something new or something you removed on purpose. Your git log\ntells the two apart. ",[281,610,611],{},"Only in"," lines name whole files, such as a chain you\nadded.",[286,614,616],{"id":615},"merge-what-you-want","Merge what you want",[277,618,619,620,623,624,627],{},"Copy changes into your files by hand. Do not copy the shipped files over\nyours: your library holds your own ",[281,621,622],{},"model",", ",[281,625,626],{},"effort"," and harness choices, and\na copy destroys them.",[291,629,630,640,653],{},[294,631,632,636,637,306],{},[633,634,635],"strong",{},"A new library task or node."," Copy its entry into your ",[281,638,639],{},"library.yaml",[294,641,642,645,646,649,650,652],{},[633,643,644],{},"A new node in a shipped chain."," Add it to your copy of that chain in\n",[281,647,648],{},"chains\u002F",". If your chain is a copy of a shipped one with your own nodes\nadded, as in ",[302,651,91],{"href":92},", add the\nnew node there too.",[294,654,655,662,663,306],{},[633,656,657,658,661],{},"A new ",[281,659,660],{},"policy.yaml"," key."," Add it only if you want to change its default.\nA key your file leaves out takes the default. See\n",[302,664,156],{"href":157},[277,666,667],{},"Then check and load the result:",[324,669,671],{"className":326,"code":670,"language":328,"meta":329,"style":329},"kraft admin templates lint\nkraft admin reload\n",[281,672,673,685],{"__ignoreMap":329},[333,674,675,677,679,682],{"class":335,"line":336},[333,676,442],{"class":350},[333,678,445],{"class":343},[333,680,681],{"class":343}," templates",[333,683,684],{"class":343}," lint\n",[333,686,687,689,691],{"class":335,"line":347},[333,688,442],{"class":350},[333,690,445],{"class":343},[333,692,693],{"class":343}," reload\n",[277,695,696,699,700,703],{},[281,697,698],{},"lint"," checks every chain against your library and exits 1 on any error.\n",[281,701,702],{},"reload"," makes the running server read the files, with no restart. It exits 1\nand names any chain that does not resolve.",[277,705,706],{},"To check the packaged set on its own, without a server:",[324,708,710],{"className":326,"code":709,"language":328,"meta":329,"style":329},"kraft admin templates lint --dir \"$SHIPPED\"\n",[281,711,712],{"__ignoreMap":329},[333,713,714,716,718,720,723,726,728,730],{"class":335,"line":336},[333,715,442],{"class":350},[333,717,445],{"class":343},[333,719,681],{"class":343},[333,721,722],{"class":343}," lint",[333,724,725],{"class":343}," --dir",[333,727,401],{"class":363},[333,729,578],{"class":501},[333,731,407],{"class":363},[286,733,735],{"id":734},"verify","Verify",[324,737,739],{"className":326,"code":738,"language":328,"meta":329,"style":329},"kraft admin templates show default --resolved\nkraft admin doctor\ncd ~\u002F.kraft\u002Ftemplates && git diff\n",[281,740,741,758,766],{"__ignoreMap":329},[333,742,743,745,747,749,752,755],{"class":335,"line":336},[333,744,442],{"class":350},[333,746,445],{"class":343},[333,748,681],{"class":343},[333,750,751],{"class":343}," show",[333,753,754],{"class":343}," default",[333,756,757],{"class":343}," --resolved\n",[333,759,760,762,764],{"class":335,"line":347},[333,761,442],{"class":350},[333,763,445],{"class":343},[333,765,448],{"class":343},[333,767,768,770,773,776,779],{"class":335,"line":357},[333,769,340],{"class":339},[333,771,772],{"class":343}," ~\u002F.kraft\u002Ftemplates",[333,774,775],{"class":363}," &&",[333,777,778],{"class":350}," git",[333,780,781],{"class":343}," diff\n",[277,783,784,787,788,791],{},[281,785,786],{},"show --resolved"," prints the chain as it will run, with each library entry\nexpanded, so you can check the new node or task is there. ",[281,789,790],{},"git diff"," shows\nexactly what the merge changed. Commit it.",[277,793,453,794,796,797,800,801,804,805,807,808,811,812,814],{},[281,795,456],{}," row drops a capability once your files hold the key its\nedit adds: ",[281,798,799],{},"profiles:"," in ",[281,802,803],{},"harnesses.yaml",", or the task or steering profile\nin ",[281,806,639],{},". It checks that the key exists, not that you wired it into\na chain, so ",[281,809,810],{},"mr_rebase"," clears as soon as ",[281,813,639],{}," defines it.",[286,816,818],{"id":817},"related","Related",[291,820,821,831],{},[294,822,823,827,828,830],{},[302,824,826],{"href":825},"\u002Freference\u002Fcli\u002Fadmin#migrating-a-pre-v1-template-configuration","Migrating a pre-V1 template configuration",":\nthe one upgrade that replaces ",[281,829,593],{},", with a backup.",[294,832,833],{},[302,834,160],{"href":161},[836,837,838],"style",{},"html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":329,"searchDepth":347,"depth":347,"links":840},[841,842,843,844,845,846,847],{"id":288,"depth":347,"text":289},{"id":318,"depth":347,"text":319},{"id":428,"depth":347,"text":429},{"id":484,"depth":347,"text":485},{"id":615,"depth":347,"text":616},{"id":734,"depth":347,"text":735},{"id":817,"depth":347,"text":818},"Pick up new shipped chains, library tasks and policy after a Kraft upgrade, without losing your own edits.","md",null,{},{"title":99},{"title":272,"description":848},"YgObBFY78okYYxp91yb7WfQlo0xO6hT8va_ofidmm8g",[856,858],{"title":95,"path":96,"stem":97,"description":857,"children":-1},"Run some or all of a chain's agent tasks on Codex, Cursor, OpenCode, Gemini or Amp instead of Claude Code, and what changes when you do.",{"title":103,"path":104,"stem":105,"description":859,"children":-1},"Back up Kraft's database, find its logs, reclaim worktree disk space, run two instances side by side, and run Kraft as a service.",1790824541546]