[{"data":1,"prerenderedAt":1506},["ShallowReactive",2],{"navigation_docs":3,"-guides-run-logs-and-disk-space":520,"-guides-run-logs-and-disk-space-surround":1501},[4,28,51,191,222,485],{"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},"FAQ","\u002Fget-started\u002Ffaq","1.get-started\u002F3.faq",{"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},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F1.how-a-work-item-runs",{"title":40,"path":41,"stem":42},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F2.caps-and-budgets",{"title":44,"path":45,"stem":46},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F3.permission-gate",{"title":48,"path":49,"stem":50},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F4.vocabulary",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,96,117,138,187],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61,"children":62,"page":95},"Day to day","\u002Fguides\u002Fday-to-day","3.guides\u002F1.day-to-day",[63,67,71,75,79,83,87,91],{"title":64,"path":65,"stem":66},"The setup wizard on first start","\u002Fguides\u002Fday-to-day\u002Ffirst-run","3.guides\u002F1.day-to-day\u002F2.first-run",{"title":68,"path":69,"stem":70},"File a work item","\u002Fguides\u002Fday-to-day\u002Ffile-a-work-item","3.guides\u002F1.day-to-day\u002F3.file-a-work-item",{"title":72,"path":73,"stem":74},"Use Kraft from your agent","\u002Fguides\u002Fday-to-day\u002Fagent-integration","3.guides\u002F1.day-to-day\u002F4.agent-integration",{"title":76,"path":77,"stem":78},"Reviewing a change","\u002Fguides\u002Fday-to-day\u002Freview-a-change","3.guides\u002F1.day-to-day\u002F5.review-a-change",{"title":80,"path":81,"stem":82},"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":84,"path":85,"stem":86},"Kraft for VS Code","\u002Fguides\u002Fday-to-day\u002Fvscode","3.guides\u002F1.day-to-day\u002F7.vscode",{"title":88,"path":89,"stem":90},"Kraft on a phone","\u002Fguides\u002Fday-to-day\u002Fkraft-on-a-phone","3.guides\u002F1.day-to-day\u002F8.kraft-on-a-phone",{"title":92,"path":93,"stem":94},"Get notified when an item needs you","\u002Fguides\u002Fday-to-day\u002Fnotifications","3.guides\u002F1.day-to-day\u002F9.notifications",false,{"title":97,"path":98,"stem":99,"children":100,"page":95},"Customize and automate","\u002Fguides\u002Fcustomize","3.guides\u002F2.customize",[101,105,109,113],{"title":102,"path":103,"stem":104},"Write your own chain","\u002Fguides\u002Fcustomize\u002Fwrite-your-own-chain","3.guides\u002F2.customize\u002F1.write-your-own-chain",{"title":106,"path":107,"stem":108},"Add a security review or a gate reviewer","\u002Fguides\u002Fcustomize\u002Fadd-review-agents","3.guides\u002F2.customize\u002F2.add-review-agents",{"title":110,"path":111,"stem":112},"Schedule or webhook work","\u002Fguides\u002Fcustomize\u002Fschedule-and-webhook-work","3.guides\u002F2.customize\u002F3.schedule-and-webhook-work",{"title":114,"path":115,"stem":116},"Share chains with add-ons","\u002Fguides\u002Fcustomize\u002Fshare-chains-with-addons","3.guides\u002F2.customize\u002F4.share-chains-with-addons",{"title":118,"path":119,"stem":120,"children":121,"page":95},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses",[122,126,130,134],{"title":123,"path":124,"stem":125},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":127,"path":128,"stem":129},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":131,"path":132,"stem":133},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":135,"path":136,"stem":137},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":139,"path":140,"stem":141,"children":142,"page":95},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run",[143,147,151,155,159,163,167,171,175,179,183],{"title":144,"path":145,"stem":146},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":148,"path":149,"stem":150},"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":152,"path":153,"stem":154},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":156,"path":157,"stem":158},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":160,"path":161,"stem":162},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":164,"path":165,"stem":166},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":168,"path":169,"stem":170},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":172,"path":173,"stem":174},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":176,"path":177,"stem":178},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":180,"path":181,"stem":182},"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":184,"path":185,"stem":186},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":188,"path":189,"stem":190},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":192,"path":193,"stem":194,"children":195},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[196,198,202,206,210,214,218],{"title":10,"path":193,"stem":197},"4.troubleshooting\u002Findex",{"title":199,"path":200,"stem":201},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":203,"path":204,"stem":205},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":207,"path":208,"stem":209},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":211,"path":212,"stem":213},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":215,"path":216,"stem":217},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":219,"path":220,"stem":221},"Add-on problems","\u002Ftroubleshooting\u002Faddon-problems","4.troubleshooting\u002F6.addon-problems",{"title":223,"path":224,"stem":225,"children":226},"Reference","\u002Freference","5.reference",[227,229,267,289,293,391,409,435,439,443,477,481],{"title":10,"path":224,"stem":228},"5.reference\u002Findex",{"title":230,"path":231,"stem":232,"children":233},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[234,235,239,243,247,251,255,259,263],{"title":10,"path":231,"stem":232},{"title":236,"path":237,"stem":238},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":240,"path":241,"stem":242},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":244,"path":245,"stem":246},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":248,"path":249,"stem":250},"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":252,"path":253,"stem":254},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":256,"path":257,"stem":258},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":260,"path":261,"stem":262},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":264,"path":265,"stem":266},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":268,"path":269,"stem":270,"children":271},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[272,273,277,281,285],{"title":10,"path":269,"stem":270},{"title":274,"path":275,"stem":276},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":278,"path":279,"stem":280},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":282,"path":283,"stem":284},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":286,"path":287,"stem":288},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":290,"path":291,"stem":292},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":294,"path":295,"stem":296,"children":297},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[298,299,317,321,325,329,333,337,341,345,379,383,387],{"title":10,"path":295,"stem":296},{"title":300,"path":301,"stem":302,"children":303},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[304,305,309,313],{"title":10,"path":301,"stem":302},{"title":306,"path":307,"stem":308},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":310,"path":311,"stem":312},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":314,"path":315,"stem":316},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":318,"path":319,"stem":320},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":322,"path":323,"stem":324},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":326,"path":327,"stem":328},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":330,"path":331,"stem":332},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":334,"path":335,"stem":336},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":338,"path":339,"stem":340},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":342,"path":343,"stem":344},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":346,"path":347,"stem":348,"children":349},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[350,351,355,359,363,367,371,375],{"title":10,"path":347,"stem":348},{"title":352,"path":353,"stem":354},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":356,"path":357,"stem":358},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":360,"path":361,"stem":362},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":364,"path":365,"stem":366},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":368,"path":369,"stem":370},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":372,"path":373,"stem":374},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":376,"path":377,"stem":378},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":380,"path":381,"stem":382},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":384,"path":385,"stem":386},"Add-ons and collections","\u002Freference\u002Fconfiguration\u002Faddons","5.reference\u002F03.configuration\u002F12.addons",{"title":388,"path":389,"stem":390},"Repo libraries","\u002Freference\u002Fconfiguration\u002Frepo-libraries","5.reference\u002F03.configuration\u002F13.repo-libraries",{"title":392,"path":393,"stem":394,"children":395},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[396,397,401,405],{"title":10,"path":393,"stem":394},{"title":398,"path":399,"stem":400},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":402,"path":403,"stem":404},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":406,"path":407,"stem":408},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":410,"path":411,"stem":412,"children":413},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[414,415,419,423,427,431],{"title":10,"path":411,"stem":412},{"title":416,"path":417,"stem":418},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":420,"path":421,"stem":422},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":424,"path":425,"stem":426},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":428,"path":429,"stem":430},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":432,"path":433,"stem":434},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":436,"path":437,"stem":438},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":440,"path":441,"stem":442},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":444,"path":445,"stem":446,"children":447},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[448,449,453,457,461,465,469,473],{"title":10,"path":445,"stem":446},{"title":450,"path":451,"stem":452},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":454,"path":455,"stem":456},"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":458,"path":459,"stem":460},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":462,"path":463,"stem":464},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":466,"path":467,"stem":468},"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":470,"path":471,"stem":472},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":474,"path":475,"stem":476},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":478,"path":479,"stem":480},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":482,"path":483,"stem":484},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":486,"path":487,"stem":488,"children":489},"Security and project","\u002Fproject","6.project",[490,492,496,500,504,508,512,516],{"title":10,"path":487,"stem":491},"6.project\u002Findex",{"title":493,"path":494,"stem":495},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":497,"path":498,"stem":499},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":501,"path":502,"stem":503},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":505,"path":506,"stem":507},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":509,"path":510,"stem":511},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":513,"path":514,"stem":515},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":517,"path":518,"stem":519},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":521,"title":160,"body":522,"description":1494,"extension":1495,"links":1496,"meta":1497,"navigation":1498,"path":161,"seo":1499,"stem":162,"__hash__":1500},"docs\u002F3.guides\u002F4.run\u002F05.logs-and-disk-space.md",{"type":523,"value":524,"toc":1482},"minimark",[525,540,545,584,588,595,630,633,683,690,709,737,747,750,783,792,796,802,855,886,962,969,972,996,999,1024,1035,1045,1050,1057,1103,1130,1139,1153,1157,1162,1197,1204,1207,1220,1224,1236,1396,1409,1413,1429,1441,1445,1478],[526,527,528,529,533,534,539],"p",{},"You will find the log you need, read what an agent printed with ",[530,531,532],"code",{},"kraft view logs",", and free the disk space that ",[535,536,538],"a",{"href":537},"\u002Fconcepts\u002Fvocabulary#worktree","worktrees"," take.",[541,542,544],"h2",{"id":543},"before-you-start","Before you start",[546,547,548,576],"ul",{},[549,550,551,554,555,558,559,561,562,565,566,569,570,572,573,575],"li",{},[530,552,553],{},"$KRAFT_HOME"," is ",[530,556,557],{},"~\u002F.kraft"," unless you set it; see\n",[535,560,380],{"href":381},". The\ncommands find ",[530,563,564],{},"run\u002F"," as Kraft does: ",[530,567,568],{},"$KRAFT_RUN_DIR"," when you set it, else\n",[530,571,564],{}," under ",[530,574,553],{},".",[549,577,578,579,583],{},"Deleting old session logs needs the server stopped. If Kraft runs as a\nservice, stop it as ",[535,580,582],{"href":581},"\u002Fguides\u002Frun\u002Frun-as-a-service#stop-a-service","Stop a service","\nsays.",[541,585,587],{"id":586},"find-the-logs","Find the logs",[526,589,590,591,594],{},"All logs are in ",[530,592,593],{},"run\u002Flogs\u002F",":",[546,596,597,611,617],{},[549,598,599,602,603,606,607,610],{},[530,600,601],{},"server.log"," is the server's own output: startup, shutdown and its reason,\nerrors. A foreground ",[530,604,605],{},"kraft"," writes here as well as to the terminal. Kraft\nmoves it to ",[530,608,609],{},"server.log.1"," at start once it passes about 8 MB, replacing the\nlast one.",[549,612,613,616],{},[530,614,615],{},"\u003Csession id>.log"," is one worker session: everything an agent or command\nprinted. Kraft never deletes these.",[549,618,619,622,623,626,627,629],{},[530,620,621],{},"\u003Csession id>.times.jsonl"," holds when each line of that session's log was\nwritten, one JSON object per line: ",[530,624,625],{},"{\"n\": \u003Cline number>, \"t\": \u003Ctimestamp>}",".\n",[530,628,532],{}," and the item page's log take a line's time from it when the\nline carries none of its own.",[526,631,632],{},"Read a session's log through Kraft rather than by file name:",[634,635,636,649],"table",{},[637,638,639],"thead",{},[640,641,642,646],"tr",{},[643,644,645],"th",{},"Command",[643,647,648],{},"What it shows",[650,651,652,663,673],"tbody",{},[640,653,654,660],{},[655,656,657],"td",{},[530,658,659],{},"kraft view logs ID",[655,661,662],{},"The newest session. While the item is stopped, the one that stopped it.",[640,664,665,670],{},[655,666,667],{},[530,668,669],{},"kraft view logs ID --session SESSION",[655,671,672],{},"One session.",[640,674,675,680],{},[655,676,677],{},[530,678,679],{},"kraft view logs ID -f",[655,681,682],{},"A running session, followed.",[526,684,685,686,689],{},"A session's log is its output with stdout and stderr merged. Each line shows a\ntime, a source and the text. The time is when Kraft saw the line, in UTC. It is\n",[530,687,688],{},"--:--:--"," for a session Kraft took over after a restart, and for a log from\nbefore Kraft recorded times.",[526,691,692,693,696,697,700,701,704,705,708],{},"The source is ",[530,694,695],{},"stdout"," for a plain line. A line of the agent's structured\nlog is ",[530,698,699],{},"agent"," (what the agent says), ",[530,702,703],{},"tool"," (a tool call or its result) or\n",[530,706,707],{},"sys"," (the session's own start and result lines):",[710,711,717],"pre",{"className":712,"code":714,"language":715,"meta":716},[713],"language-text","09:30:15 sys    init claude-sonnet-5-5\n09:30:17 agent  I'll start with the failing test.\n09:30:18 tool   Read(tests\u002Ftest_board.py)\n09:30:21 stdout npm warn deprecated inflight@1.0.6\n","text","",[530,718,719,725,729,733],{"__ignoreMap":716},[720,721,724],"span",{"className":722},[723],"line","09:30:15 sys    init claude-sonnet-5-5\n",[720,726,728],{"className":727},[723],"09:30:17 agent  I'll start with the failing test.\n",[720,730,732],{"className":731},[723],"09:30:18 tool   Read(tests\u002Ftest_board.py)\n",[720,734,736],{"className":735},[723],"09:30:21 stdout npm warn deprecated inflight@1.0.6\n",[526,738,739,740,742,743,746],{},"While the item is stopped, a bare ",[530,741,659],{}," shows the session that\nstopped it, and names the newest one, such as an auto-escalation, on stderr.\nWith ",[530,744,745],{},"-f"," it follows the newest one instead, and names on stderr the session\nthat stopped the item.",[526,748,749],{},"To list an item's session ids:",[710,751,755],{"className":752,"code":753,"language":754,"meta":716,"style":716},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","kraft view events ID --type worker_session_created --json\n","bash",[530,756,757],{"__ignoreMap":716},[720,758,760,763,767,770,773,777,780],{"class":723,"line":759},1,[720,761,605],{"class":762},"szw1H",[720,764,766],{"class":765},"semJd"," view",[720,768,769],{"class":765}," events",[720,771,772],{"class":765}," ID",[720,774,776],{"class":775},"ssYy9"," --type",[720,778,779],{"class":765}," worker_session_created",[720,781,782],{"class":775}," --json\n",[526,784,785,786,788,789,575],{},"You know it worked when ",[530,787,659],{}," prints the lines the agent or\ncommand wrote. For the server's own log, read the end of ",[530,790,791],{},"run\u002Flogs\u002Fserver.log",[541,793,795],{"id":794},"limit-the-disk-worktrees-use","Limit the disk worktrees use",[526,797,798,799,801],{},"Without a limit, worktrees use disk until you notice. Set one in ",[530,800,318],{},"\nand Kraft tells you before the disk is full, and holds new starts at the limit:",[710,803,808],{"className":804,"code":805,"filename":806,"language":807,"meta":716,"style":716},"language-yaml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","storage:\n  worktrees:\n    limit: 10G\n    quota: 8G   # optional; defaults to 80% of limit\n","config\u002Fpolicy.yaml","yaml",[530,809,810,820,828,840],{"__ignoreMap":716},[720,811,812,816],{"class":723,"line":759},[720,813,815],{"class":814},"sb7M8","storage",[720,817,819],{"class":818},"s7iLA",":\n",[720,821,823,826],{"class":723,"line":822},2,[720,824,825],{"class":814},"  worktrees",[720,827,819],{"class":818},[720,829,831,834,837],{"class":723,"line":830},3,[720,832,833],{"class":814},"    limit",[720,835,836],{"class":818},": ",[720,838,839],{"class":765},"10G\n",[720,841,843,846,848,851],{"class":723,"line":842},4,[720,844,845],{"class":814},"    quota",[720,847,836],{"class":818},[720,849,850],{"class":765},"8G",[720,852,854],{"class":853},"sq92B","   # optional; defaults to 80% of limit\n",[526,856,857,858,861,862,866,867,870,871,874,875,878,879,882,883,575],{},"Run ",[530,859,860],{},"kraft admin reload"," to apply it, or edit ",[863,864,865],"strong",{},"Settings › Policy ›\nHousekeeping › Storage",". A size is a whole number and a unit: ",[530,868,869],{},"1000M",", ",[530,872,873],{},"10G",",\n",[530,876,877],{},"1T",". A bare ",[530,880,881],{},"10"," is refused. See ",[535,884,318],{"href":885},"\u002Freference\u002Fconfiguration\u002Fpolicy#storage-keys",[634,887,888,901],{},[637,889,890],{},[640,891,892,895,898],{},[643,893,894],{},"State",[643,896,897],{},"When",[643,899,900],{},"What Kraft does",[650,902,903,919,945],{},[640,904,905,910,916],{},[655,906,907],{},[530,908,909],{},"ok",[655,911,912,913,575],{},"Usage is at or under ",[530,914,915],{},"quota",[655,917,918],{},"Nothing.",[640,920,921,926,935],{},[655,922,923],{},[530,924,925],{},"over_quota",[655,927,928,929,931,932,575],{},"Usage is over ",[530,930,915],{},", at or under ",[530,933,934],{},"limit",[655,936,937,938,941,942,575],{},"Warns in ",[530,939,940],{},"kraft admin doctor"," and ",[530,943,944],{},"kraft admin health",[640,946,947,952,956],{},[655,948,949],{},[530,950,951],{},"held",[655,953,928,954,575],{},[530,955,934],{},[655,957,958,959,575],{},"Queues starts that need a new worktree, and the instance reads ",[530,960,961],{},"degraded",[526,963,964,965,575],{},"The figure is the disk the worktrees and sandbox stores take, measured every 10\nminutes and at startup. Kraft deletes nothing for the limit on its own unless\nyou turn on ",[535,966,968],{"href":967},"#let-kraft-make-room","automatic clean-up",[526,970,971],{},"See where you stand:",[710,973,975],{"className":752,"code":974,"language":754,"meta":716,"style":716},"kraft admin doctor\nkraft admin health\n",[530,976,977,987],{"__ignoreMap":716},[720,978,979,981,984],{"class":723,"line":759},[720,980,605],{"class":762},[720,982,983],{"class":765}," admin",[720,985,986],{"class":765}," doctor\n",[720,988,989,991,993],{"class":723,"line":822},[720,990,605],{"class":762},[720,992,983],{"class":765},[720,994,995],{"class":765}," health\n",[526,997,998],{},"Over the limit, make room in any of these ways, then wait about 10 seconds for\nthe queue to start what is held:",[546,1000,1001,1012,1017],{},[549,1002,1003,1006,1007,1011],{},[863,1004,1005],{},"Archive finished items",", from ",[535,1008,1010],{"href":1009},"#clean-up-from-the-storage-page","Settings › Storage"," or the board's Done group. Archiving removes the\nworktree and any uncommitted changes in it, keeps a branch with unpushed\ncommits, and leaves the item restorable under Archived.",[549,1013,1014],{},[863,1015,1016],{},"Finish or abandon live work.",[549,1018,1019],{},[863,1020,1021,1022,575],{},"Raise ",[530,1023,934],{},[526,1025,1026,1027,1030,1031,1034],{},"A start that is held shows as ",[530,1028,1029],{},"queued"," with ",[530,1032,1033],{},"work_item_storage_held"," on its\ntimeline. An item that already has its worktree is never held, so finishing it\nis always possible.",[526,1036,785,1037,1039,1040,1042,1043,575],{},[530,1038,940],{}," reports the storage line as ",[530,1041,909],{},",\nand a held item leaves ",[530,1044,1029],{},[1046,1047,1049],"h3",{"id":1048},"let-kraft-make-room","Let Kraft make room",[526,1051,1052,1053,1056],{},"An instance left running unattended can sit held with nobody to clean up. Add\n",[530,1054,1055],{},"auto_cleanup"," and Kraft archives finished items itself when worktrees pass\nthe limit:",[710,1058,1060],{"className":804,"code":1059,"filename":806,"language":807,"meta":716,"style":716},"storage:\n  worktrees:\n    limit: 10G\n    auto_cleanup:\n      min_age: 24h   # the default; the block being there is what turns it on\n",[530,1061,1062,1068,1074,1082,1089],{"__ignoreMap":716},[720,1063,1064,1066],{"class":723,"line":759},[720,1065,815],{"class":814},[720,1067,819],{"class":818},[720,1069,1070,1072],{"class":723,"line":822},[720,1071,825],{"class":814},[720,1073,819],{"class":818},[720,1075,1076,1078,1080],{"class":723,"line":830},[720,1077,833],{"class":814},[720,1079,836],{"class":818},[720,1081,839],{"class":765},[720,1083,1084,1087],{"class":723,"line":842},[720,1085,1086],{"class":814},"    auto_cleanup",[720,1088,819],{"class":818},[720,1090,1092,1095,1097,1100],{"class":723,"line":1091},5,[720,1093,1094],{"class":814},"      min_age",[720,1096,836],{"class":818},[720,1098,1099],{"class":765},"24h",[720,1101,1102],{"class":853},"   # the default; the block being there is what turns it on\n",[526,1104,1105,1106,1108,1109,1111,1112,1115,1116,870,1119,870,1121,1124,1125,1127,1128,575],{},"Over ",[530,1107,934],{},", Kraft archives completed and abandoned items, oldest first, until\nusage is at or under ",[530,1110,915],{},". It never takes an item that ended less than\n",[530,1113,1114],{},"min_age"," ago, a number of hours or days (",[530,1117,1118],{},"12h",[530,1120,1099],{},[530,1122,1123],{},"2d","). The floor is\nthere because an item that just ended, or a cancelled one you kept to salvage,\nmay hold uncommitted work, and archiving removes it. A branch with unpushed\ncommits is kept. ",[530,1126,1055],{}," needs a ",[530,1129,934],{},[526,1131,1132,1133,1135,1136,1138],{},"If every finished item is newer than ",[530,1134,1114],{},", nothing is archived and starts\nstay held. ",[530,1137,940],{}," then says how many finished items were too\nrecent, and you make room as above.",[526,1140,1141,1142,1145,1146,1149,1150,575],{},"You know it ran when an item's timeline has ",[530,1143,1144],{},"work_item_archived"," with\n",[530,1147,1148],{},"reason: storage",", and the Archived view shows it as archived by ",[530,1151,1152],{},"auto",[541,1154,1156],{"id":1155},"clean-up-from-the-storage-page","Clean up from the Storage page",[526,1158,1159,1161],{},[863,1160,1010],{}," shows what each worktree uses and archives the finished ones for you. Use it when worktrees are over the limit, or when you want the space back.",[1163,1164,1165,1175,1182,1192],"ol",{},[549,1166,1167,1168,1170,1171,1174],{},"Open ",[863,1169,1010],{},". The bar shows the figure against the quota and the limit. ",[863,1172,1173],{},"Refresh"," measures again; the figure on the page is the last measurement, with its age beside the title.",[549,1176,1177,1178,1181],{},"Tick the rows you want to free. Only completed and abandoned items that are not archived have a box. ",[863,1179,1180],{},"Clean up all reclaimable"," takes every one of them.",[549,1183,1184,1185,1188,1189,1191],{},"Press ",[863,1186,1187],{},"Clean up selected"," or ",[863,1190,1180],{},", and read the confirmation. It lists what is freed, where usage lands against the quota and limit, and per item the uncommitted files that will be lost and whether the branch stays.",[549,1193,1184,1194,575],{},[863,1195,1196],{},"Archive N items",[526,1198,1199,1200,1203],{},"Each item moves to ",[863,1201,1202],{},"Archived",". Its worktree and any uncommitted changes in it are gone, a branch with commits nothing else holds is kept, and you can restore the item from Archived as a record without its worktree. Held starts go within seconds of the clean-up.",[526,1205,1206],{},"You know it worked when the bar drops below the limit and the archived rows leave the list.",[526,1208,1209,1210,1213,1214,1217,1218,575],{},"From a shell, ",[530,1211,1212],{},"kraft view storage"," prints the same breakdown and ",[530,1215,1216],{},"kraft item archive --reclaimable"," archives after showing the same confirmation. See ",[535,1219,278],{"href":279},[541,1221,1223],{"id":1222},"reclaim-disk-space","Reclaim disk space",[526,1225,1226,1227,1231,1232,1235],{},"Each ",[535,1228,1230],{"href":1229},"\u002Fconcepts\u002Fvocabulary#work-item","work item"," gets a git worktree in ",[530,1233,1234],{},"run\u002Fworktrees\u002F\u003Citem id>\u002F",", a full\ncheckout of its repo, plus any dependencies its setup command installed. That\nadds up.",[1163,1237,1238,1326,1386],{},[549,1239,1240,1241,1312,1315,1316,1319,1320,1322,1323,1325],{},"See what uses space:",[710,1242,1244],{"className":752,"code":1243,"language":754,"meta":716,"style":716},"run=\"${KRAFT_RUN_DIR:-${KRAFT_HOME:-$HOME\u002F.kraft}\u002Frun}\"\ndu -sh \"$run\"\u002F*\n",[530,1245,1246,1292],{"__ignoreMap":716},[720,1247,1248,1251,1255,1258,1261,1264,1267,1270,1272,1275,1278,1280,1282,1285,1287,1289],{"class":723,"line":759},[720,1249,1250],{"class":818},"run",[720,1252,1254],{"class":1253},"sklAV","=",[720,1256,1257],{"class":765},"\"${",[720,1259,1260],{"class":818},"KRAFT_RUN_DIR",[720,1262,1263],{"class":1253},":-",[720,1265,1266],{"class":765},"${",[720,1268,1269],{"class":818},"KRAFT_HOME",[720,1271,1263],{"class":1253},[720,1273,1274],{"class":818},"$HOME",[720,1276,1277],{"class":1253},"\u002F",[720,1279,575],{"class":765},[720,1281,605],{"class":818},[720,1283,1284],{"class":765},"}",[720,1286,1277],{"class":1253},[720,1288,1250],{"class":818},[720,1290,1291],{"class":765},"}\"\n",[720,1293,1294,1297,1300,1303,1306,1309],{"class":723,"line":822},[720,1295,1296],{"class":762},"du",[720,1298,1299],{"class":775}," -sh",[720,1301,1302],{"class":765}," \"",[720,1304,1305],{"class":818},"$run",[720,1307,1308],{"class":765},"\"\u002F",[720,1310,1311],{"class":775},"*\n",[1313,1314],"br",{},"With ",[530,1317,1318],{},"storage.worktrees.limit"," set, ",[530,1321,1212],{}," lists the worktrees item by item instead. ",[530,1324,1216],{}," archives every finished one, after showing what each loses.",[549,1327,1328,1329],{},"Remove the worktrees you no longer need. A worktree is removed when its item\nis abandoned or archived:",[546,1330,1331,1345,1367],{},[549,1332,1333,1336,1337,1340,1341,1344],{},[863,1334,1335],{},"Abandon"," a work item you no longer want: ",[530,1338,1339],{},"kraft item abandon ID --yes",".\nIt removes the worktree, and deletes the item's local branch and its\nattachment copies in ",[530,1342,1343],{},"run\u002Fattachments\u002F",". Uncommitted work is lost, and so\nare commits you never pushed.",[549,1346,1347,1350,1351,1354,1355,1358,1359,1362,1363,1366],{},[863,1348,1349],{},"Archive"," a completed or abandoned item from the board's Done group,\nwith ",[530,1352,1353],{},"kraft item archive ID"," (it previews first and needs ",[530,1356,1357],{},"--yes","), or\nwith ",[530,1360,1361],{},"POST \u002Fapi\u002Fwork-items\u002FID\u002Farchive",". It removes the worktree and keeps\nthe item's record and its attachment copies, so you can still duplicate\nit. Commit uncommitted changes in the worktree first, or copy them out from\n",[530,1364,1365],{},"kraft repo open ID",": archiving loses them.",[549,1368,1369,1372,1373,1376,1377,1379,1380,1383,1384,575],{},[863,1370,1371],{},"Auto-archive."," ",[530,1374,1375],{},"archive.after_days"," in ",[530,1378,318],{}," archives completed\nand abandoned items that old. The shipped file sets ",[530,1381,1382],{},"30",". Lower it to\nreclaim space sooner. See ",[535,1385,318],{"href":319},[549,1387,1388,1389,1391,1392,1395],{},"Delete old session logs in ",[530,1390,593],{}," and result files in ",[530,1393,1394],{},"run\u002Fresults\u002F"," by\nhand, with the server stopped. They stay after archiving.",[526,1397,785,1398,1401,1402,1404,1405,1408],{},[530,1399,1400],{},"du -sh \"$run\"\u002F*"," shows ",[530,1403,538],{}," smaller, and\n",[530,1406,1407],{},"ls \"$run\u002Fworktrees\""," no longer lists the item.",[1046,1410,1412],{"id":1411},"what-archive-does-to-the-branch","What archive does to the branch",[546,1414,1415,1418],{},[549,1416,1417],{},"It deletes the local branch only when every commit on it is somewhere else\ntoo: another branch such as the base, a remote-tracking branch, a tag, or what\nKraft pushed. Otherwise the branch stays, and the archive event says how many\ncommits it kept.",[549,1419,1420,1421,1424,1425,1428],{},"Commits on a detached HEAD in the worktree are kept on a new branch,\n",[530,1422,1423],{},"kraft\u002Frescued\u002F\u003Citem id>",". If Kraft cannot make that branch, it archives the\nitem but leaves the worktree, and the archive event's ",[530,1426,1427],{},"worktree_kept"," says\nwhy.",[526,1430,1431,941,1434,1437,1438,575],{},[530,1432,1433],{},"kraft item complete",[530,1435,1436],{},"kraft item cancel"," keep the worktree until the\nitem is archived. A cancelled item that never pushed keeps its branch after\nthat too. Delete it by hand once you are done with it:\n",[530,1439,1440],{},"git branch -D \u003Cbranch>",[541,1442,1444],{"id":1443},"next-steps","Next steps",[546,1446,1447,1453,1458,1471],{},[549,1448,1449,1452],{},[535,1450,260],{"href":1451},"\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings#storage",": the Storage screen in full",[549,1454,1455,1457],{},[535,1456,156],{"href":157},": copy the database before you delete anything by hand",[549,1459,1460,1462,1463,870,1466,1468,1469],{},[535,1461,318],{"href":319},": set ",[530,1464,1465],{},"storage.worktrees",[530,1467,1375],{}," and the rest of ",[530,1470,318],{},[549,1472,1473,1475,1476],{},[535,1474,278],{"href":279},": every flag of ",[530,1477,532],{},[1479,1480,1481],"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 .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sq92B, html code.shiki .sq92B{--shiki-light:#66707B;--shiki-default:#66707B;--shiki-dark:#BDC4CC}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}",{"title":716,"searchDepth":822,"depth":822,"links":1483},[1484,1485,1486,1489,1490,1493],{"id":543,"depth":822,"text":544},{"id":586,"depth":822,"text":587},{"id":794,"depth":822,"text":795,"children":1487},[1488],{"id":1048,"depth":830,"text":1049},{"id":1155,"depth":822,"text":1156},{"id":1222,"depth":822,"text":1223,"children":1491},[1492],{"id":1411,"depth":830,"text":1412},{"id":1443,"depth":822,"text":1444},"Where Kraft writes its logs, how to read a session's log, and how to free the disk space worktrees use.","md",null,{},true,{"title":160,"description":1494},"rLxzypXQ_R9rp0x6FA-_KzP4mIZdQDssYjLQdsG0mbA",[1502,1504],{"title":156,"path":157,"stem":158,"description":1503,"children":-1},"Back up Kraft's database while the server runs, check the backup, restore it, and find the copy Kraft makes before an upgrade.",{"title":164,"path":165,"stem":166,"description":1505,"children":-1},"Start Kraft at login and restart it if it exits, set its environment, stop or remove the service, and run a second instance beside the first.",1791801171504]