[{"data":1,"prerenderedAt":1150},["ShallowReactive",2],{"navigation_docs":3,"-guides-customize-schedule-and-webhook-work":504,"-guides-customize-schedule-and-webhook-work-surround":1145},[4,28,51,187,214,469],{"title":5,"path":6,"stem":7,"children":8,"page":-1},"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,"page":-1},"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,"page":-1},"Guides","\u002Fguides","3.guides",[56,58,96,113,134,183],{"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],{"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,"children":117,"page":95},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses",[118,122,126,130],{"title":119,"path":120,"stem":121},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":123,"path":124,"stem":125},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":127,"path":128,"stem":129},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":131,"path":132,"stem":133},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":135,"path":136,"stem":137,"children":138,"page":95},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run",[139,143,147,151,155,159,163,167,171,175,179],{"title":140,"path":141,"stem":142},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":144,"path":145,"stem":146},"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":148,"path":149,"stem":150},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":152,"path":153,"stem":154},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":156,"path":157,"stem":158},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":160,"path":161,"stem":162},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":164,"path":165,"stem":166},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":168,"path":169,"stem":170},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":172,"path":173,"stem":174},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":176,"path":177,"stem":178},"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":180,"path":181,"stem":182},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":184,"path":185,"stem":186},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":188,"path":189,"stem":190,"children":191,"page":-1},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[192,194,198,202,206,210],{"title":10,"path":189,"stem":193},"4.troubleshooting\u002Findex",{"title":195,"path":196,"stem":197},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":199,"path":200,"stem":201},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":203,"path":204,"stem":205},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":207,"path":208,"stem":209},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":211,"path":212,"stem":213},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":215,"path":216,"stem":217,"children":218,"page":-1},"Reference","\u002Freference","5.reference",[219,221,259,281,285,375,393,419,423,427,461,465],{"title":10,"path":216,"stem":220},"5.reference\u002Findex",{"title":222,"path":223,"stem":224,"children":225,"page":-1},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[226,227,231,235,239,243,247,251,255],{"title":10,"path":223,"stem":224},{"title":228,"path":229,"stem":230},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":232,"path":233,"stem":234},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":236,"path":237,"stem":238},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":240,"path":241,"stem":242},"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":244,"path":245,"stem":246},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":248,"path":249,"stem":250},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":252,"path":253,"stem":254},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":256,"path":257,"stem":258},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":260,"path":261,"stem":262,"children":263,"page":-1},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[264,265,269,273,277],{"title":10,"path":261,"stem":262},{"title":266,"path":267,"stem":268},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":270,"path":271,"stem":272},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":274,"path":275,"stem":276},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":278,"path":279,"stem":280},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":282,"path":283,"stem":284},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":286,"path":287,"stem":288,"children":289,"page":-1},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[290,291,309,313,317,321,325,329,333,337,371],{"title":10,"path":287,"stem":288},{"title":292,"path":293,"stem":294,"children":295,"page":-1},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[296,297,301,305],{"title":10,"path":293,"stem":294},{"title":298,"path":299,"stem":300},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":302,"path":303,"stem":304},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":306,"path":307,"stem":308},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":310,"path":311,"stem":312},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":314,"path":315,"stem":316},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":318,"path":319,"stem":320},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":322,"path":323,"stem":324},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":326,"path":327,"stem":328},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":330,"path":331,"stem":332},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":334,"path":335,"stem":336},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":338,"path":339,"stem":340,"children":341,"page":-1},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[342,343,347,351,355,359,363,367],{"title":10,"path":339,"stem":340},{"title":344,"path":345,"stem":346},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":348,"path":349,"stem":350},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":352,"path":353,"stem":354},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":356,"path":357,"stem":358},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":360,"path":361,"stem":362},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":364,"path":365,"stem":366},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":368,"path":369,"stem":370},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":372,"path":373,"stem":374},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":376,"path":377,"stem":378,"children":379,"page":-1},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[380,381,385,389],{"title":10,"path":377,"stem":378},{"title":382,"path":383,"stem":384},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":386,"path":387,"stem":388},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":390,"path":391,"stem":392},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":394,"path":395,"stem":396,"children":397,"page":-1},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[398,399,403,407,411,415],{"title":10,"path":395,"stem":396},{"title":400,"path":401,"stem":402},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":404,"path":405,"stem":406},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":408,"path":409,"stem":410},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":412,"path":413,"stem":414},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":416,"path":417,"stem":418},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":420,"path":421,"stem":422},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":424,"path":425,"stem":426},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":428,"path":429,"stem":430,"children":431,"page":-1},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[432,433,437,441,445,449,453,457],{"title":10,"path":429,"stem":430},{"title":434,"path":435,"stem":436},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":438,"path":439,"stem":440},"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":442,"path":443,"stem":444},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":446,"path":447,"stem":448},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":450,"path":451,"stem":452},"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":454,"path":455,"stem":456},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":458,"path":459,"stem":460},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":462,"path":463,"stem":464},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":466,"path":467,"stem":468},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":470,"path":471,"stem":472,"children":473,"page":-1},"Security and project","\u002Fproject","6.project",[474,476,480,484,488,492,496,500],{"title":10,"path":471,"stem":475},"6.project\u002Findex",{"title":477,"path":478,"stem":479},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":481,"path":482,"stem":483},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":485,"path":486,"stem":487},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":489,"path":490,"stem":491},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":493,"path":494,"stem":495},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":497,"path":498,"stem":499},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":501,"path":502,"stem":503},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":505,"title":110,"body":506,"description":1138,"extension":1139,"links":1140,"meta":1141,"navigation":1142,"path":111,"seo":1143,"stem":112,"__hash__":1144},"docs\u002F3.guides\u002F2.customize\u002F3.schedule-and-webhook-work.md",{"type":507,"value":508,"toc":1127},"minimark",[509,527,532,546,550,700,703,707,729,734,750,795,806,858,862,872,936,952,956,1017,1030,1034,1097,1100,1104,1123],[510,511,512,513,518,519,523,524,526],"p",{},"Set up a ",[514,515,517],"a",{"href":516},"\u002Fconcepts\u002Fvocabulary#trigger","trigger"," that files a paused\n",[514,520,522],{"href":521},"\u002Fconcepts\u002Fvocabulary#work-item","work item"," for you, from a cron schedule or from\na webhook, and check that the item arrived. The fields and the HTTP contract are\nin ",[514,525,424],{"href":425},".",[528,529,531],"h2",{"id":530},"before-you-start","Before you start",[533,534,535,543],"ul",{},[536,537,538,539,526],"li",{},"A repo connected with ",[540,541,542],"code",{},"kraft repo connect",[536,544,545],{},"A running Kraft server.",[528,547,549],{"id":548},"schedule-a-work-item","Schedule a work item",[551,552,553,651],"ol",{},[536,554,555,556,559,560,563,564],{},"Add a ",[540,557,558],{},"schedules:"," entry to ",[540,561,562],{},"$KRAFT_HOME\u002Fconfig\u002Fintake.yaml",":",[565,566,572],"pre",{"className":567,"code":568,"filename":569,"language":570,"meta":571,"style":571},"language-yaml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","schedules:\n  - cron: \"0 9 * * 1,2,3,4,5\"  # 9:00 UTC on weekdays\n    repo: \u002Fpath\u002Fto\u002Frepo\n    chain: default\n    title: \"Weekday dependency check\"\n    description: \"Filed by the 09:00 UTC weekday schedule\"\n","config\u002Fintake.yaml","yaml","",[540,573,574,587,607,618,629,640],{"__ignoreMap":571},[575,576,579,583],"span",{"class":577,"line":578},"line",1,[575,580,582],{"class":581},"sb7M8","schedules",[575,584,586],{"class":585},"s7iLA",":\n",[575,588,590,593,596,599,603],{"class":577,"line":589},2,[575,591,592],{"class":585},"  - ",[575,594,595],{"class":581},"cron",[575,597,598],{"class":585},": ",[575,600,602],{"class":601},"semJd","\"0 9 * * 1,2,3,4,5\"",[575,604,606],{"class":605},"sq92B","  # 9:00 UTC on weekdays\n",[575,608,610,613,615],{"class":577,"line":609},3,[575,611,612],{"class":581},"    repo",[575,614,598],{"class":585},[575,616,617],{"class":601},"\u002Fpath\u002Fto\u002Frepo\n",[575,619,621,624,626],{"class":577,"line":620},4,[575,622,623],{"class":581},"    chain",[575,625,598],{"class":585},[575,627,628],{"class":601},"default\n",[575,630,632,635,637],{"class":577,"line":631},5,[575,633,634],{"class":581},"    title",[575,636,598],{"class":585},[575,638,639],{"class":601},"\"Weekday dependency check\"\n",[575,641,643,646,648],{"class":577,"line":642},6,[575,644,645],{"class":581},"    description",[575,647,598],{"class":585},[575,649,650],{"class":601},"\"Filed by the 09:00 UTC weekday schedule\"\n",[536,652,653,654,673,684,687,688,691,692,694,695,699],{},"Make the server read the file:",[565,655,659],{"className":656,"code":657,"language":658,"meta":571,"style":571},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","kraft admin reload\n","bash",[540,660,661],{"__ignoreMap":571},[575,662,663,667,670],{"class":577,"line":578},[575,664,666],{"class":665},"szw1H","kraft",[575,668,669],{"class":601}," admin",[575,671,672],{"class":601}," reload\n",[565,674,679],{"className":675,"code":677,"language":678,"meta":571},[676],"language-text","reloaded \u003CN> template(s) and policy.yaml and intake.yaml\n","text",[540,680,681],{"__ignoreMap":571},[575,682,677],{"className":683},[577],[685,686],"br",{},"A file Kraft refused to read is named on a ",[540,689,690],{},"refused:"," line below it, and the\nrunning one is kept.",[685,693],{},"If you add the schedule in Settings › Auto-intake (",[696,697,698],"strong",{},"Add schedule",") instead of\nediting the file, you need no reload.",[510,701,702],{},"Kraft evaluates the schedule in UTC. The next matching minute files the item.",[528,704,706],{"id":705},"file-a-work-item-from-a-webhook","File a work item from a webhook",[510,708,709,710,713,714,717,718,721,722,725,726,526],{},"Post to ",[540,711,712],{},"\u002Fapi\u002Ftriggers"," from anything that can fire a webhook, such as CI or a\nscript. The body takes ",[540,715,716],{},"title",", ",[540,719,720],{},"repo",", and optionally ",[540,723,724],{},"chain"," and ",[540,727,728],{},"description",[730,731,733],"h3",{"id":732},"call-it-from-the-same-machine","Call it from the same machine",[510,735,736,737,740,741,717,743,746,747,563],{},"While Kraft is bound to ",[540,738,739],{},"127.0.0.1"," (the default), a call from the same machine\nneeds no login. Address Kraft as ",[540,742,739],{},[540,744,745],{},"localhost",", or ",[540,748,749],{},"[::1]",[565,751,753],{"className":656,"code":752,"language":658,"meta":571,"style":571},"curl -s -X POST http:\u002F\u002F127.0.0.1:8765\u002Fapi\u002Ftriggers \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"title\": \"Dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\", \"chain\": \"default\"}'\n",[540,754,755,777,787],{"__ignoreMap":571},[575,756,757,760,764,767,770,773],{"class":577,"line":578},[575,758,759],{"class":665},"curl",[575,761,763],{"class":762},"ssYy9"," -s",[575,765,766],{"class":762}," -X",[575,768,769],{"class":601}," POST",[575,771,772],{"class":601}," http:\u002F\u002F127.0.0.1:8765\u002Fapi\u002Ftriggers",[575,774,776],{"class":775},"sklAV"," \\\n",[575,778,779,782,785],{"class":577,"line":589},[575,780,781],{"class":762},"  -H",[575,783,784],{"class":601}," 'Content-Type: application\u002Fjson'",[575,786,776],{"class":775},[575,788,789,792],{"class":577,"line":609},[575,790,791],{"class":762},"  -d",[575,793,794],{"class":601}," '{\"title\": \"Dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\", \"chain\": \"default\"}'\n",[510,796,797,798,801,802,805],{},"Kraft answers ",[540,799,800],{},"201"," with the new work item as JSON, filed ",[540,803,804],{},"paused",". Cut to the\nfields that matter, the body reads:",[565,807,811],{"className":808,"code":809,"language":810,"meta":571,"style":571},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\"id\": \"\u003Cwork-item-id>\", \"title\": \"Dependency check\", \"status\": \"paused\", \"...\": \"...\"}\n","json",[540,812,813],{"__ignoreMap":571},[575,814,815,818,821,823,826,828,831,833,836,838,841,843,846,848,851,853,855],{"class":577,"line":578},[575,816,817],{"class":585},"{",[575,819,820],{"class":581},"\"id\"",[575,822,598],{"class":585},[575,824,825],{"class":601},"\"\u003Cwork-item-id>\"",[575,827,717],{"class":585},[575,829,830],{"class":581},"\"title\"",[575,832,598],{"class":585},[575,834,835],{"class":601},"\"Dependency check\"",[575,837,717],{"class":585},[575,839,840],{"class":581},"\"status\"",[575,842,598],{"class":585},[575,844,845],{"class":601},"\"paused\"",[575,847,717],{"class":585},[575,849,850],{"class":581},"\"...\"",[575,852,598],{"class":585},[575,854,850],{"class":601},[575,856,857],{"class":585},"}\n",[730,859,861],{"id":860},"call-it-from-another-machine","Call it from another machine",[510,863,864,865,868,869,871],{},"After a non-loopback bind, every call needs the trigger token from\n",[540,866,867],{},"$KRAFT_HOME\u002Frun\u002Ftrigger-token",", including one from the same machine. Use the\naddress you reach Kraft at, and see ",[514,870,140],{"href":141},"\nfor how to bind:",[565,873,875],{"className":656,"code":874,"language":658,"meta":571,"style":571},"curl -s -X POST https:\u002F\u002F\u003Cyour-tunnel-hostname>\u002Fapi\u002Ftriggers \\\n  -H \"Authorization: Bearer $(cat ~\u002F.kraft\u002Frun\u002Ftrigger-token)\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"title\": \"Dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\"}'\n",[540,876,877,906,921,929],{"__ignoreMap":571},[575,878,879,881,883,885,887,890,893,896,899,902,904],{"class":577,"line":578},[575,880,759],{"class":665},[575,882,763],{"class":762},[575,884,766],{"class":762},[575,886,769],{"class":601},[575,888,889],{"class":601}," https:\u002F\u002F",[575,891,892],{"class":775},"\u003C",[575,894,895],{"class":601},"your-tunnel-hostnam",[575,897,898],{"class":585},"e",[575,900,901],{"class":775},">",[575,903,712],{"class":601},[575,905,776],{"class":775},[575,907,908,910,913,916,919],{"class":577,"line":589},[575,909,781],{"class":762},[575,911,912],{"class":601}," \"Authorization: Bearer $(",[575,914,915],{"class":665},"cat",[575,917,918],{"class":601}," ~\u002F.kraft\u002Frun\u002Ftrigger-token)\"",[575,920,776],{"class":775},[575,922,923,925,927],{"class":577,"line":609},[575,924,781],{"class":762},[575,926,784],{"class":601},[575,928,776],{"class":775},[575,930,931,933],{"class":577,"line":620},[575,932,791],{"class":762},[575,934,935],{"class":601}," '{\"title\": \"Dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\"}'\n",[510,937,938,939,942,943,946,947,951],{},"The trigger token is accepted only by ",[540,940,941],{},"POST \u002Fapi\u002Ftriggers",", so it is the one to\nstore as a CI secret or give a webhook sender. Do not use ",[540,944,945],{},"run\u002Fmcp-token"," there:\nit is a full-admin credential. See\n",[514,948,950],{"href":949},"\u002Fguides\u002Frun\u002Fremote-access#rotate-the-token","Rotate the token"," for how to rotate either.",[730,953,955],{"id":954},"if-you-get-403-or-401","If you get 403 or 401",[957,958,959,972],"table",{},[960,961,962],"thead",{},[963,964,965,969],"tr",{},[966,967,968],"th",{},"Your call",[966,970,971],{},"What happens",[973,974,975,991,1006],"tbody",{},[963,976,977,988],{},[978,979,980,981,717,983,985,986],"td",{},"From the same machine, Kraft bound to loopback, addressed as ",[540,982,739],{},[540,984,745],{}," or ",[540,987,749],{},[978,989,990],{},"It works with no credential.",[963,992,993,996],{},[978,994,995],{},"Through a tunnel or reverse proxy, Kraft bound to loopback",[978,997,998,1001,1002,1005],{},[540,999,1000],{},"403"," (",[540,1003,1004],{},"unexpected Host","), whatever the credential.",[963,1007,1008,1011],{},[978,1009,1010],{},"Kraft bound beyond loopback, with no trigger token",[978,1012,1013,1016],{},[540,1014,1015],{},"401",", even from the same machine.",[510,1018,1019,1020,1022,1023,1027,1028,526],{},"For a webhook that arrives through a tunnel or reverse proxy, follow\n",[514,1021,144],{"href":145},".\n",[514,1024,1026],{"href":1025},"\u002Freference\u002Fhttp-api#who-may-call","Who may call"," lists every cause of a ",[540,1029,1000],{},[528,1031,1033],{"id":1032},"check-it-worked","Check it worked",[551,1035,1036,1043,1087],{},[536,1037,1038,1039,1042],{},"For a schedule, wait for the next matching UTC minute, or test it right away:\nset ",[540,1040,1041],{},"cron: \"* * * * *\"",", reload, and do the checks below. Then restore the real\nexpression and reload again, or the schedule files an item every minute.",[536,1044,1045,1046,1064,1078,1080,1081,1084,1085,526],{},"List the paused items and look for the new one:",[565,1047,1049],{"className":656,"code":1048,"language":658,"meta":571,"style":571},"kraft view list --status=paused\n",[540,1050,1051],{"__ignoreMap":571},[575,1052,1053,1055,1058,1061],{"class":577,"line":578},[575,1054,666],{"class":665},[575,1056,1057],{"class":601}," view",[575,1059,1060],{"class":601}," list",[575,1062,1063],{"class":762}," --status=paused\n",[565,1065,1068],{"className":1066,"code":1067,"language":678,"meta":571},[676],"ID              STATUS  GATE  NODE  TITLE\n\u003Cwork-item-id>  paused  -     -     Weekday dependency check\n",[540,1069,1070,1074],{"__ignoreMap":571},[575,1071,1073],{"className":1072},[577],"ID              STATUS  GATE  NODE  TITLE\n",[575,1075,1077],{"className":1076},[577],"\u003Cwork-item-id>  paused  -     -     Weekday dependency check\n",[685,1079],{},"The item shows under Not started on the board, and its ",[540,1082,1083],{},"STATUS"," reads\n",[540,1086,804],{},[536,1088,1089,1090,1093,1094,526],{},"Start it when you are ready: click its row on the board, then ",[696,1091,1092],{},"Start"," in the\nside panel, or run ",[540,1095,1096],{},"kraft item resume ID",[510,1098,1099],{},"If nothing appears, check the server log for a skipped-trigger warning. It names\nthe unconnected repo or the unknown chain.",[528,1101,1103],{"id":1102},"next-steps","Next steps",[533,1105,1106,1111,1116],{},[536,1107,1108,1110],{},[514,1109,424],{"href":425},": the fields and status codes.",[536,1112,1113,1115],{},[514,1114,140],{"href":141},": reach the server from another machine.",[536,1117,1118,1120,1121,526],{},[514,1119,326],{"href":327},": the rest of ",[540,1122,326],{},[1124,1125,1126],"style",{},"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 .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .sq92B, html code.shiki .sq92B{--shiki-light:#66707B;--shiki-default:#66707B;--shiki-dark:#BDC4CC}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 .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}",{"title":571,"searchDepth":589,"depth":589,"links":1128},[1129,1130,1131,1136,1137],{"id":530,"depth":589,"text":531},{"id":548,"depth":589,"text":549},{"id":705,"depth":589,"text":706,"children":1132},[1133,1134,1135],{"id":732,"depth":609,"text":733},{"id":860,"depth":609,"text":861},{"id":954,"depth":609,"text":955},{"id":1032,"depth":589,"text":1033},{"id":1102,"depth":589,"text":1103},"File a paused work item on a cron schedule or from a webhook, then check that it arrived.","md",null,{},true,{"title":110,"description":1138},"Kca-B9P_B9HHTpVseEnLMRjAkmFa88_mH8j83Vy3H5Q",[1146,1148],{"title":106,"path":107,"stem":108,"description":1147,"children":-1},"Add the shipped security-review and gate-review skills to a chain of your own, since no shipped chain uses them.",{"title":119,"path":120,"stem":121,"description":1149,"children":-1},"Run some or all of a chain's agent tasks on Codex, Cursor, OpenCode, Gemini, Antigravity or Amp instead of Claude Code, and what changes when you do.",1791801239522]