[{"data":1,"prerenderedAt":1262},["ShallowReactive",2],{"navigation_docs":3,"-guides-run-run-items-in-place":551,"-guides-run-run-items-in-place-surround":1257},[4,32,55,206,237,516],{"title":5,"path":6,"stem":7,"children":8},"Get started","\u002Fget-started","1.get-started",[9,12,16,20,24,28],{"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},"The real chain","\u002Fget-started\u002Fthe-real-chain","1.get-started\u002F3.the-real-chain",{"title":29,"path":30,"stem":31},"FAQ","\u002Fget-started\u002Ffaq","1.get-started\u002F4.faq",{"title":33,"path":34,"stem":35,"children":36},"Concepts","\u002Fconcepts","2.concepts",[37,39,43,47,51],{"title":10,"path":34,"stem":38},"2.concepts\u002Findex",{"title":40,"path":41,"stem":42},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F1.how-a-work-item-runs",{"title":44,"path":45,"stem":46},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F2.caps-and-budgets",{"title":48,"path":49,"stem":50},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F3.permission-gate",{"title":52,"path":53,"stem":54},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F4.vocabulary",{"title":56,"path":57,"stem":58,"children":59},"Guides","\u002Fguides","3.guides",[60,62,100,126,148,202],{"title":10,"path":57,"stem":61},"3.guides\u002Findex",{"title":63,"path":64,"stem":65,"children":66},"Day to day","\u002Fguides\u002Fday-to-day","3.guides\u002F1.day-to-day\u002Findex",[67,68,72,76,80,84,88,92,96],{"title":10,"path":64,"stem":65},{"title":69,"path":70,"stem":71},"The setup wizard on first start","\u002Fguides\u002Fday-to-day\u002Ffirst-run","3.guides\u002F1.day-to-day\u002F2.first-run",{"title":73,"path":74,"stem":75},"File a work item","\u002Fguides\u002Fday-to-day\u002Ffile-a-work-item","3.guides\u002F1.day-to-day\u002F3.file-a-work-item",{"title":77,"path":78,"stem":79},"Use Kraft from your agent","\u002Fguides\u002Fday-to-day\u002Fagent-integration","3.guides\u002F1.day-to-day\u002F4.agent-integration",{"title":81,"path":82,"stem":83},"Reviewing a change","\u002Fguides\u002Fday-to-day\u002Freview-a-change","3.guides\u002F1.day-to-day\u002F5.review-a-change",{"title":85,"path":86,"stem":87},"Raise a cap on a stopped item","\u002Fguides\u002Fday-to-day\u002Fraise-a-cap","3.guides\u002F1.day-to-day\u002F6.raise-a-cap",{"title":89,"path":90,"stem":91},"Kraft for VS Code","\u002Fguides\u002Fday-to-day\u002Fvscode","3.guides\u002F1.day-to-day\u002F7.vscode",{"title":93,"path":94,"stem":95},"Kraft on a phone","\u002Fguides\u002Fday-to-day\u002Fkraft-on-a-phone","3.guides\u002F1.day-to-day\u002F8.kraft-on-a-phone",{"title":97,"path":98,"stem":99},"Get notified when an item needs you","\u002Fguides\u002Fday-to-day\u002Fnotifications","3.guides\u002F1.day-to-day\u002F9.notifications",{"title":101,"path":102,"stem":103,"children":104},"Customize and automate","\u002Fguides\u002Fcustomize","3.guides\u002F2.customize\u002Findex",[105,106,110,114,118,122],{"title":10,"path":102,"stem":103},{"title":107,"path":108,"stem":109},"Write your own chain","\u002Fguides\u002Fcustomize\u002Fwrite-your-own-chain","3.guides\u002F2.customize\u002F1.write-your-own-chain",{"title":111,"path":112,"stem":113},"Add a security review or a gate reviewer","\u002Fguides\u002Fcustomize\u002Fadd-review-agents","3.guides\u002F2.customize\u002F2.add-review-agents",{"title":115,"path":116,"stem":117},"Schedule or webhook work","\u002Fguides\u002Fcustomize\u002Fschedule-and-webhook-work","3.guides\u002F2.customize\u002F3.schedule-and-webhook-work",{"title":119,"path":120,"stem":121},"Share chains with add-ons","\u002Fguides\u002Fcustomize\u002Fshare-chains-with-addons","3.guides\u002F2.customize\u002F4.share-chains-with-addons",{"title":123,"path":124,"stem":125},"Publish an add-on","\u002Fguides\u002Fcustomize\u002Fpublish-an-add-on","3.guides\u002F2.customize\u002F5.publish-an-add-on",{"title":127,"path":128,"stem":129,"children":130},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses\u002Findex",[131,132,136,140,144],{"title":10,"path":128,"stem":129},{"title":133,"path":134,"stem":135},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":137,"path":138,"stem":139},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":141,"path":142,"stem":143},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":145,"path":146,"stem":147},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":149,"path":150,"stem":151,"children":152},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run\u002Findex",[153,154,158,162,166,170,174,178,182,186,190,194,198],{"title":10,"path":150,"stem":151},{"title":155,"path":156,"stem":157},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":159,"path":160,"stem":161},"Put a proxy in front of Kraft","\u002Fguides\u002Frun\u002Fput-a-proxy-in-front-of-kraft","3.guides\u002F4.run\u002F02.put-a-proxy-in-front-of-kraft",{"title":163,"path":164,"stem":165},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":167,"path":168,"stem":169},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":171,"path":172,"stem":173},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":175,"path":176,"stem":177},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":179,"path":180,"stem":181},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":183,"path":184,"stem":185},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":187,"path":188,"stem":189},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":191,"path":192,"stem":193},"Upgrade from 0.x or a release candidate","\u002Fguides\u002Frun\u002Fupgrade-from-0-x-or-a-release-candidate","3.guides\u002F4.run\u002F10.upgrade-from-0-x-or-a-release-candidate",{"title":195,"path":196,"stem":197},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":199,"path":200,"stem":201},"Run items in your own checkout","\u002Fguides\u002Frun\u002Frun-items-in-place","3.guides\u002F4.run\u002F12.run-items-in-place",{"title":203,"path":204,"stem":205},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":207,"path":208,"stem":209,"children":210},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[211,213,217,221,225,229,233],{"title":10,"path":208,"stem":212},"4.troubleshooting\u002Findex",{"title":214,"path":215,"stem":216},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":218,"path":219,"stem":220},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":222,"path":223,"stem":224},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":226,"path":227,"stem":228},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":230,"path":231,"stem":232},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":234,"path":235,"stem":236},"Add-on problems","\u002Ftroubleshooting\u002Faddon-problems","4.troubleshooting\u002F6.addon-problems",{"title":238,"path":239,"stem":240,"children":241},"Reference","\u002Freference","5.reference",[242,244,286,308,312,316,414,432,458,462,466,500,504,508,512],{"title":10,"path":239,"stem":243},"5.reference\u002Findex",{"title":245,"path":246,"stem":247,"children":248},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[249,250,254,258,262,266,270,274,278,282],{"title":10,"path":246,"stem":247},{"title":251,"path":252,"stem":253},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":255,"path":256,"stem":257},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":259,"path":260,"stem":261},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":263,"path":264,"stem":265},"Fix loops and test scopes","\u002Freference\u002Fweb-ui\u002Ffix-loops-and-test-scopes","5.reference\u002F00.web-ui\u002F3.fix-loops-and-test-scopes",{"title":267,"path":268,"stem":269},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":271,"path":272,"stem":273},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":275,"path":276,"stem":277},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":279,"path":280,"stem":281},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":283,"path":284,"stem":285},"Cap stops and raises","\u002Freference\u002Fweb-ui\u002Fcap-stops-and-raises","5.reference\u002F00.web-ui\u002F8.cap-stops-and-raises",{"title":287,"path":288,"stem":289,"children":290},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[291,292,296,300,304],{"title":10,"path":288,"stem":289},{"title":293,"path":294,"stem":295},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":297,"path":298,"stem":299},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":301,"path":302,"stem":303},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":305,"path":306,"stem":307},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":309,"path":310,"stem":311},"Console","\u002Freference\u002Fconsole","5.reference\u002F01.console",{"title":313,"path":314,"stem":315},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":317,"path":318,"stem":319,"children":320},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[321,322,340,344,348,352,356,360,364,368,402,406,410],{"title":10,"path":318,"stem":319},{"title":323,"path":324,"stem":325,"children":326},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[327,328,332,336],{"title":10,"path":324,"stem":325},{"title":329,"path":330,"stem":331},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":333,"path":334,"stem":335},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":337,"path":338,"stem":339},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":341,"path":342,"stem":343},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":345,"path":346,"stem":347},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":349,"path":350,"stem":351},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":353,"path":354,"stem":355},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":357,"path":358,"stem":359},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":361,"path":362,"stem":363},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":365,"path":366,"stem":367},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":369,"path":370,"stem":371,"children":372},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[373,374,378,382,386,390,394,398],{"title":10,"path":370,"stem":371},{"title":375,"path":376,"stem":377},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":379,"path":380,"stem":381},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":383,"path":384,"stem":385},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":387,"path":388,"stem":389},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":391,"path":392,"stem":393},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":395,"path":396,"stem":397},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":399,"path":400,"stem":401},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":403,"path":404,"stem":405},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":407,"path":408,"stem":409},"Add-ons and collections","\u002Freference\u002Fconfiguration\u002Faddons","5.reference\u002F03.configuration\u002F12.addons",{"title":411,"path":412,"stem":413},"Repo libraries","\u002Freference\u002Fconfiguration\u002Frepo-libraries","5.reference\u002F03.configuration\u002F13.repo-libraries",{"title":415,"path":416,"stem":417,"children":418},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[419,420,424,428],{"title":10,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":425,"path":426,"stem":427},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":429,"path":430,"stem":431},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":433,"path":434,"stem":435,"children":436},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[437,438,442,446,450,454],{"title":10,"path":434,"stem":435},{"title":439,"path":440,"stem":441},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":443,"path":444,"stem":445},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":447,"path":448,"stem":449},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":451,"path":452,"stem":453},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":455,"path":456,"stem":457},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":459,"path":460,"stem":461},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":463,"path":464,"stem":465},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":467,"path":468,"stem":469,"children":470},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[471,472,476,480,484,488,492,496],{"title":10,"path":468,"stem":469},{"title":473,"path":474,"stem":475},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":477,"path":478,"stem":479},"Gates, run control, ending and retry","\u002Freference\u002Fhttp-api\u002Fgates-run-control-and-ending","5.reference\u002F08.http-api\u002F3.gates-run-control-and-ending",{"title":481,"path":482,"stem":483},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":485,"path":486,"stem":487},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":489,"path":490,"stem":491},"Repos, chains, harnesses and the server","\u002Freference\u002Fhttp-api\u002Frepos-chains-harnesses-and-server","5.reference\u002F08.http-api\u002F6.repos-chains-harnesses-and-server",{"title":493,"path":494,"stem":495},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":497,"path":498,"stem":499},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":501,"path":502,"stem":503},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":505,"path":506,"stem":507},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":509,"path":510,"stem":511},"VS Code extension","\u002Freference\u002Fvscode-extension","5.reference\u002F11.vscode-extension",{"title":513,"path":514,"stem":515},"Changes from 1.4 to 2.0","\u002Freference\u002Fchanges-from-1-4","5.reference\u002F12.changes-from-1-4",{"title":517,"path":518,"stem":519,"children":520},"Project","\u002Fproject","6.project",[521,523,527,531,535,539,543,547],{"title":10,"path":518,"stem":522},"6.project\u002Findex",{"title":524,"path":525,"stem":526},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":528,"path":529,"stem":530},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":532,"path":533,"stem":534},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":536,"path":537,"stem":538},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":540,"path":541,"stem":542},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":544,"path":545,"stem":546},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":548,"path":549,"stem":550},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":552,"title":199,"body":553,"description":1250,"extension":1251,"links":1252,"meta":1253,"navigation":1254,"path":200,"seo":1255,"stem":201,"__hash__":1256},"docs\u002F3.guides\u002F4.run\u002F12.run-items-in-place.md",{"type":554,"value":555,"toc":1231},"minimark",[556,563,582,590,595,607,615,632,636,658,687,700,736,746,768,772,779,790,817,821,826,829,853,861,868,872,899,938,944,947,950,961,971,974,977,984,987,1004,1012,1016,1022,1025,1036,1076,1083,1144,1147,1151,1163,1166,1177,1183,1187,1227],[557,558,559],"p",{},[560,561,562],"em",{},"Added in 2.1",[557,564,565,566,571,572,576,577,581],{},"By default every ",[567,568,570],"a",{"href":569},"\u002Fconcepts\u002Fvocabulary#work-item","work item"," gets its own\n",[567,573,575],{"href":574},"\u002Fconcepts\u002Fvocabulary#worktree","worktree",", so your checkout stays as you left\nit. An ",[578,579,580],"strong",{},"in-place"," item runs in the repo's own folder instead, on its own\nbranch, beside whatever you are doing there. This page says when that is worth\nit, what Kraft checks so it never forces anything in your folder, and what to\ndo when it stops.",[557,583,584,585,589],{},"Stopped already? Jump to ",[567,586,588],{"href":587},"#clear-a-checkout-stop","Clear a checkout stop",".",[591,592,594],"h2",{"id":593},"when-to-run-in-place","When to run in place",[557,596,597,598,602,603,606],{},"Run in place when a repo's environment is slow or awkward to set up again for\nevery item, and you never run two of its items at once. An in-place item runs\nno ",[599,600,601],"code",{},"setup_command"," and copies no ",[599,604,605],{},"local_files",": your checkout is already set\nup.",[557,608,609,610,614],{},"Keep worktrees when you want items to run side by side, or a\n",[567,611,613],{"href":612},"\u002Fconcepts\u002Fvocabulary#sandbox","sandbox",". In place, the trade-offs are:",[616,617,618,622,625],"ul",{},[619,620,621],"li",{},"One in-place item works in a checkout at a time. The others wait.",[619,623,624],{},"Your checkout moves onto the item's branch while it works, and stays there\nafterwards. Kraft never switches it back.",[619,626,627,628,589],{},"The agents run unsandboxed, as you, in the folder your shell and editor use.\nSee ",[567,629,631],{"href":630},"#no-sandbox-and-no-cursor","No sandbox, and no Cursor",[591,633,635],{"id":634},"turn-it-on","Turn it on",[557,637,638,639,642,643,646,647,653,654,657],{},"For every new item of a repo, connect it with ",[599,640,641],{},"--in-place",", which saves\n",[599,644,645],{},"worktrees: false"," on its ",[567,648,650,652],{"href":649},"\u002Freference\u002Fconfiguration\u002Frepos#worktrees",[599,651,323],{}," entry",".\nOn a repo already connected, the same command saves the setting and says so.\nIn the web UI it is the repo's ",[578,655,656],{},"worktrees"," switch in Settings › Repos, under\nthe Running group's defaults.",[659,660,665],"pre",{"className":661,"code":662,"language":663,"meta":664,"style":664},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","kraft repo connect --in-place\n","bash","",[599,666,667],{"__ignoreMap":664},[668,669,672,676,680,683],"span",{"class":670,"line":671},"line",1,[668,673,675],{"class":674},"szw1H","kraft",[668,677,679],{"class":678},"semJd"," repo",[668,681,682],{"class":678}," connect",[668,684,686],{"class":685},"ssYy9"," --in-place\n",[557,688,689,690,692,693,696,697,699],{},"For one item, say so when you file it. ",[599,691,641],{}," runs it in the checkout,\n",[599,694,695],{},"--worktree"," gives it a worktree even on a ",[599,698,645],{}," repo. Either one\noverrides the repo's setting:",[659,701,704],{"className":661,"code":702,"language":663,"meta":703,"style":664},"kraft item create \"tidy the parser\" --in-place\nkraft item create \"try the big refactor\" --worktree\n","each",[599,705,706,721],{"__ignoreMap":664},[668,707,708,710,713,716,719],{"class":670,"line":671},[668,709,675],{"class":674},[668,711,712],{"class":678}," item",[668,714,715],{"class":678}," create",[668,717,718],{"class":678}," \"tidy the parser\"",[668,720,686],{"class":685},[668,722,724,726,728,730,733],{"class":670,"line":723},2,[668,725,675],{"class":674},[668,727,712],{"class":678},[668,729,715],{"class":678},[668,731,732],{"class":678}," \"try the big refactor\"",[668,734,735],{"class":685}," --worktree\n",[557,737,738,739,741,742,745],{},"The choice is frozen when the item is filed. Changing ",[599,740,323],{}," later moves\nno item already filed, and nothing changes an item's choice: file it again.\nThe board and the item page mark an in-place item ",[578,743,744],{},"in your checkout",", and\nthe item page's Overview names the checkout's path.",[557,747,748,749,751,752,755,756,758,759,761,762,764,765,767],{},"Kraft refuses an in-place item that would also be sandboxed, naming the\nsetting that turns the sandbox on. A workspace item never runs in place: one\nfiled on a ",[599,750,645],{}," ",[567,753,754],{"href":338},"workspace","\nroot is refused until you file it with ",[599,757,695],{},". A ",[599,760,323],{}," entry with\nboth ",[599,763,645],{}," and a ",[599,766,613],{}," does not load.",[591,769,771],{"id":770},"one-item-at-a-time","One item at a time",[557,773,774,775,778],{},"An in-place item holds its checkout only while something works in it: while\nthe item is ",[599,776,777],{},"active",", or while an escalation, a reply to a review thread or an\nagent's gate review runs for it. At a gate, paused, waiting on CI or stopped,\nwith no such agent running, it holds nothing, and you can use the folder\nfreely, switching branches included.",[557,780,781,782,785,786,789],{},"When a second in-place item of the same folder would start, resume, retry or\ncontinue past a gate while the first holds the checkout, it is ",[599,783,784],{},"queued","\ninstead. The board shows ",[599,787,788],{},"waiting for the checkout: “\u003Ctitle>” is using it",",\nand the item's Queued card links to that item. It starts by itself, in the\norder it queued, when that item lets go. Nothing you asked for is lost\nmeanwhile: an approval stands and a steer is kept.",[616,791,792,798,801,808,811],{},[619,793,794,795,797],{},"Two ",[599,796,323],{}," entries pointing at the same folder share it, through a\nlink or, on a case-insensitive disk such as macOS's, a name in another case.",[619,799,800],{},"Worktree items of the same repo never wait for it, and run beside it as\nbefore.",[619,802,803,804,807],{},"It is not a slot. ",[599,805,806],{},"max_concurrent"," counts as it always has.",[619,809,810],{},"An escalation, a reply or a gate review takes the checkout with the same\nchecks as a task. An agent Kraft starts on its own (the reply at a gate it\nopens, the gate's review, an automatic escalation) waits for a checkout in\nuse, queued like a start, and runs when it frees. To decide the gate or\nretry the item yourself meanwhile, pause it first; that drops the waiting\nagent.",[619,812,813,816],{},[599,814,815],{},"kraft item skip"," cannot queue: it answers that the checkout is in use by the\nother item. Try again when that one stops.",[591,818,820],{"id":819},"what-kraft-checks","What Kraft checks",[822,823,825],"h3",{"id":824},"before-a-task","Before a task",[557,827,828],{},"Kraft takes the checkout right before each agent or command task, never\nearlier:",[830,831,832,835,850],"ol",{},[619,833,834],{},"It refuses a checkout with a rebase, merge, cherry-pick, revert or bisect\nunder way, or with unmerged paths. Your uncommitted edits are not a reason\nto stop.",[619,836,837,838,841,842,845,846,849],{},"If the checkout is not on the item's branch, it runs a plain\n",[599,839,840],{},"git checkout \u003Citem branch>",", never ",[599,843,844],{},"-f",". Git carries your uncommitted edits\nacross, and refuses only when the switch would overwrite one. The switch is\non the item's history as ",[599,847,848],{},"checkout_switched",", naming the branch it left.",[619,851,852],{},"On the item's first task, its spec and plan are copied in and committed on\nits branch, by path.",[557,854,855,856,860],{},"The item's branch starts from its ",[567,857,859],{"href":858},"\u002Fconcepts\u002Fvocabulary#base-branch","base branch",",\nnever from whatever you had checked out: your uncommitted edits ride across\nonto it, untouched and uncommitted.",[557,862,863,864,867],{},"Kraft never writes your git config: its identity reaches git and the agents\nthrough the environment. Before an agent or command task it records the\nbranch's tip and which paths you already had changed (",[599,865,866],{},"task_marked",").",[822,869,871],{"id":870},"after-an-agent-task","After an agent task",[557,873,874,875,878,879,878,882,885,886,889,890,893,894,898],{},"The agent is told it is in your checkout: commit only its own files, by path,\nand never ",[599,876,877],{},"git add -A",", ",[599,880,881],{},"stash",[599,883,884],{},"checkout"," or ",[599,887,888],{},"reset",". The agent resolving a\nrebase conflict may rebase with ",[599,891,892],{},"--autostash"," (see ",[567,895,897],{"href":896},"#rebases","Rebases","). After\nit exits, Kraft checks, and never repairs:",[616,900,901,907,913,922,928],{},[619,902,903,906],{},[578,904,905],{},"The branch."," The checkout must still be on the item's branch, and every\ncommit made during the task must be on it. A rebase, merge, cherry-pick or\nrevert you began on the item's branch and left under way is named as that,\nnot as a switch. Files a git operation of yours left mid-way are never\ntaken for the task's.",[619,908,909,912],{},[578,910,911],{},"Your files."," The agent's commits must not touch a path you had already\nchanged before it started. Kraft compares every path the branch gained\nduring the task, a branch the agent merged in included, and every path of a\ncommit made in your checkout during it, even one a later commit or a reset\nundid. A commit you make on the item's branch while a task runs counts as\nthe task's.",[619,914,915,918,919,921],{},[578,916,917],{},"The base branch's commits."," Commits a merge or rebase brings from the\nbase branch do not count, unless your edit to a path was stashed for that\nmerge or rebase (",[599,920,892],{},") and the base branch changed that path too.\nThen the path counts, and the item stops for you to check it.",[619,923,924,927],{},[578,925,926],{},"Tasks side by side."," When tasks of one step run at once, a path changed\nafter one of them started counts as that task's work, not yours.",[619,929,930,933,934,937],{},[578,931,932],{},"Leftovers."," Paths changed during the task and left uncommitted are\nrecorded on the item's history as ",[599,935,936],{},"left_uncommitted",". Kraft never commits\nthem. Kraft cannot tell a file you edit while the task runs from one the\nagent left behind, so your edit lands in that list too: check it.",[557,939,940,941,943],{},"A command task, such as the test suite, gets the branch check too. If the\ncheckout moved while it ran, its result was about other code: the item stops\nas ",[599,942,884],{}," and retrying it runs the command again.",[557,945,946],{},"A later task that commits a file an earlier task left behind, unchanged since,\nis the item's own work and does not count as yours. The item's diff and review\nshow its branch's commits only, never your uncommitted files.",[822,948,897],{"id":949},"rebases",[557,951,952,953,956,957,960],{},"When the item's branch moves onto a newer base and the checkout is on that\nbranch, Kraft runs ",[599,954,955],{},"git rebase --autostash"," there: your edits are stashed for\nthe seconds the rebase takes, then put back. They come back unstaged, with\ntheir content kept: stage again whatever you had staged, partial hunks\nincluded. When the checkout is elsewhere,\nKraft rebases in a throwaway worktree under ",[599,958,959],{},"run\u002Fscratch\u002F"," and removes it, so\nyour checkout never moves.",[557,962,963,964,966,967,589],{},"A rebase that conflicts is aborted, and the agent that resolves it takes the\ncheckout like any task. That agent runs the rebase again with\n",[599,965,955],{},", the one stash it is allowed, so your edits are set\naside and put back the same way. When they do not fit, the item stops as it\ndoes for Kraft's own rebase: see\n",[567,968,970],{"href":969},"#recover-your-stashed-edits","Recover your stashed edits",[557,972,973],{},"Unlike Kraft's own rebase, the agent's keeps your edits out of the checkout\nfor as long as it takes to resolve. They come back when the rebase finishes or\nis aborted.",[557,975,976],{},"A rebase that would overwrite a file ignored in your\ncheckout but tracked on the newer base is refused, and in that case no agent\nis sent to resolve a conflict either. Before that agent, Kraft switches your\ncheckout to the item's branch first, so the files ignored are the ones that\nbranch ignores.",[557,978,979,980,983],{},"Git is never stopped part\nway through your checkout: a server told to stop waits for the rebase to\nfinish, and ",[599,981,982],{},"kraft admin stop"," waits for it, up to about 80 seconds in all.",[591,985,588],{"id":986},"clear-a-checkout-stop",[557,988,989,990,993,994,996,997,1000,1001,1003],{},"The item stops as ",[578,991,992],{},"Needs you",", with the stop kind ",[599,995,884],{},", when Kraft\ncould not take the checkout without forcing it, or a task left it in a state\nKraft will not repair. The reason names the files or branches. Nothing is\nundone and nothing is forced. Fix what it names, then run ",[599,998,999],{},"kraft item retry ID",".\nA ",[599,1002,884],{}," stop is never escalated to an agent on its own.",[557,1005,1006,1007,1011],{},"Every reason and its fix are in\n",[567,1008,1010],{"href":1009},"\u002Ftroubleshooting\u002Fwhy-did-my-item-stop#git-state-of-the-worktree","Git state of the worktree",".\nTwo need more than a line, below.",[822,1013,1015],{"id":1014},"after-the-checkout-moved","After the checkout moved",[557,1017,1018,1019,1021],{},"Kraft did not switch your checkout back when it stopped. When you retry, the\nitem's next task takes the checkout as any task does: a plain\n",[599,1020,840],{}," that keeps your uncommitted edits. If an edit\nwould clash with the item's branch, commit or stash it first, or the retry\nstops again, naming the files. When the stop also lists commits made off the\nitem's branch, the retry runs the task again.",[591,1023,970],{"id":1024},"recover-your-stashed-edits",[557,1026,1027,1028,1031,1032,1035],{},"When your stashed edits do not fit the newer base, git puts them back with\nconflict markers in the named files and keeps the originals in a stash entry\nnamed ",[599,1029,1030],{},"autostash",". Kraft records that entry's commit on the stop. Use the sha,\nnot ",[599,1033,1034],{},"stash@{n}",": the stash list is shared by every checkout of the repo, and\nits numbers move.",[830,1037,1038,1056,1062,1073],{},[619,1039,1040,1041,1044,1045,1048,1049,1051,1052,1055],{},"In the checkout, list the conflicted files with ",[599,1042,1043],{},"git status",". Your edits\nto the other files came back too, but staged (",[599,1046,1047],{},"M "," in ",[599,1050,1043],{},"):\n",[599,1053,1054],{},"git reset -q -- \u003Cfile>"," unstages one.",[619,1057,1058,1059,1061],{},"Resolve each one, keeping your edits and the newer base's, then mark it\nresolved with ",[599,1060,1054],{},", which leaves your edits in the\nfile, unstaged.",[619,1063,1064,1065,1068,1069,1072],{},"Once your edits are back, drop the entry yourself. Find its current number\nwith ",[599,1066,1067],{},"git stash list",", then ",[599,1070,1071],{},"git stash drop 'stash@{n}'",". Kraft never drops\nit.",[619,1074,1075],{},"Retry the item.",[557,1077,1078,1079,1082],{},"The sha is for reading your originals while you resolve, not for applying them\nagain: on the rebased branch, ",[599,1080,1081],{},"git stash apply \u003Csha>"," makes the same conflict.\nIt applies cleanly only on a checkout of the old base.",[659,1084,1086],{"className":661,"code":1085,"language":663,"meta":703,"style":664},"git stash show -p \u003Csha>\ngit show \u003Csha>:\u003Cfile>\n",[599,1087,1088,1115],{"__ignoreMap":664},[668,1089,1090,1093,1096,1099,1102,1106,1109,1112],{"class":670,"line":671},[668,1091,1092],{"class":674},"git",[668,1094,1095],{"class":678}," stash",[668,1097,1098],{"class":678}," show",[668,1100,1101],{"class":685}," -p",[668,1103,1105],{"class":1104},"sklAV"," \u003C",[668,1107,1108],{"class":678},"sh",[668,1110,567],{"class":1111},"s7iLA",[668,1113,1114],{"class":1104},">\n",[668,1116,1117,1119,1121,1123,1125,1127,1130,1133,1136,1139,1142],{"class":670,"line":723},[668,1118,1092],{"class":674},[668,1120,1098],{"class":678},[668,1122,1105],{"class":1104},[668,1124,1108],{"class":678},[668,1126,567],{"class":1111},[668,1128,1129],{"class":1104},">",[668,1131,1132],{"class":678},":",[668,1134,1135],{"class":1104},"\u003C",[668,1137,1138],{"class":678},"fil",[668,1140,1141],{"class":1111},"e",[668,1143,1114],{"class":1104},[557,1145,1146],{},"The first prints your original changes as a diff, the second one original file\nwhole.",[591,1148,1150],{"id":1149},"abandon-or-archive-an-in-place-item","Abandon or archive an in-place item",[557,1152,1153,1154,1157,1158,1162],{},"Abandoning or archiving an in-place item never deletes the folder and never\nstops a process running in it. The item's branch is deleted unless the\ncheckout is on it, another use of the checkout holds it, or (on archive) it\nholds commits nowhere else. Then the branch stays, and the answer and the\nevent say why in ",[599,1155,1156],{},"branch_kept",".\n",[567,1159,1161],{"href":1160},"\u002Fguides\u002Frun\u002Flogs-and-disk-space#limit-the-disk-worktrees-use","Storage limits","\nnever measure, hold or archive an in-place item.",[591,1164,631],{"id":1165},"no-sandbox-and-no-cursor",[557,1167,1168,1169,1172,1173,1176],{},"An in-place item is never sandboxed: its agents' files land in the folder you\nwork in, which is what a sandbox exists to prevent. Kraft refuses the\ncombination when the item is filed, and stops a task as ",[599,1170,1171],{},"config"," if the repo\ngained a sandbox since. ",[567,1174,524],{"href":1175},"\u002Fproject\u002Fsecurity#workers-and-the-sandbox","\nhas what that means for you.",[557,1178,1179,1180,589],{},"The Cursor harness writes its permission hook into the folder it runs in, so an\nin-place item that needs that hook stops before the agent starts, asking for\nanother harness. See ",[567,1181,1182],{"href":134},"Switch harness",[591,1184,1186],{"id":1185},"related","Related",[616,1188,1189,1196,1211,1216],{},[619,1190,1191],{},[567,1192,1193,1195],{"href":649},[599,1194,656],{}," in repos.yaml",[619,1197,1198,1204,1205],{},[567,1199,1201],{"href":1200},"\u002Freference\u002Fcli\u002Fitem#filing-a-work-item",[599,1202,1203],{},"kraft item create"," and ",[567,1206,1208],{"href":1207},"\u002Freference\u002Fcli\u002Frepo#connect-a-repo",[599,1209,1210],{},"kraft repo connect",[619,1212,1213],{},[567,1214,214],{"href":1215},"\u002Ftroubleshooting\u002Fwhy-did-my-item-stop#by-stop-kind",[619,1217,1218,1220,1221,878,1223,1204,1225],{},[567,1219,505],{"href":506},": ",[599,1222,848],{},[599,1224,866],{},[599,1226,936],{},[1228,1229,1230],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}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 .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}",{"title":664,"searchDepth":723,"depth":723,"links":1232},[1233,1234,1235,1236,1242,1245,1246,1248,1249],{"id":593,"depth":723,"text":594},{"id":634,"depth":723,"text":635},{"id":770,"depth":723,"text":771},{"id":819,"depth":723,"text":820,"children":1237},[1238,1240,1241],{"id":824,"depth":1239,"text":825},3,{"id":870,"depth":1239,"text":871},{"id":949,"depth":1239,"text":897},{"id":986,"depth":723,"text":588,"children":1243},[1244],{"id":1014,"depth":1239,"text":1015},{"id":1024,"depth":723,"text":970},{"id":1149,"depth":723,"text":1247},"Abandon or archive an in-​place item",{"id":1165,"depth":723,"text":631},{"id":1185,"depth":723,"text":1186},"Let a repo's work items run in the folder you connected, instead of in a git worktree each, and get one going again when Kraft stops it to keep your edits safe.","md",null,{},true,{"title":199,"description":1250},"ilLZX0BQfYuDij9ccf1k_7hXfnuUwyl3pHkaOQDBqb0",[1258,1260],{"title":195,"path":196,"stem":197,"description":1259,"children":-1},"What a rollback does to the database and the config directory, and the steps that take an upgraded install from 2.0 back to 1.4.",{"title":203,"path":204,"stem":205,"description":1261,"children":-1},"The Kraft Lite plugin, which runs a chain inside one agent session with no service, and its slash commands.",1792362349433]