[{"data":1,"prerenderedAt":1166},["ShallowReactive",2],{"navigation_docs":3,"-guides-customize-schedule-and-webhook-work":520,"-guides-customize-schedule-and-webhook-work-surround":1161},[4,28,51,191,222,485],{"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,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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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,"page":-1},"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":110,"body":522,"description":1154,"extension":1155,"links":1156,"meta":1157,"navigation":1158,"path":111,"seo":1159,"stem":112,"__hash__":1160},"docs\u002F3.guides\u002F2.customize\u002F3.schedule-and-webhook-work.md",{"type":523,"value":524,"toc":1143},"minimark",[525,543,548,562,566,716,719,723,745,750,766,811,822,874,878,888,952,968,972,1033,1046,1050,1113,1116,1120,1139],[526,527,528,529,534,535,539,540,542],"p",{},"Set up a ",[530,531,533],"a",{"href":532},"\u002Fconcepts\u002Fvocabulary#trigger","trigger"," that files a paused\n",[530,536,538],{"href":537},"\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 ",[530,541,440],{"href":441},".",[544,545,547],"h2",{"id":546},"before-you-start","Before you start",[549,550,551,559],"ul",{},[552,553,554,555,542],"li",{},"A repo connected with ",[556,557,558],"code",{},"kraft repo connect",[552,560,561],{},"A running Kraft server.",[544,563,565],{"id":564},"schedule-a-work-item","Schedule a work item",[567,568,569,667],"ol",{},[552,570,571,572,575,576,579,580],{},"Add a ",[556,573,574],{},"schedules:"," entry to ",[556,577,578],{},"$KRAFT_HOME\u002Fconfig\u002Fintake.yaml",":",[581,582,588],"pre",{"className":583,"code":584,"filename":585,"language":586,"meta":587,"style":587},"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","",[556,589,590,603,623,634,645,656],{"__ignoreMap":587},[591,592,595,599],"span",{"class":593,"line":594},"line",1,[591,596,598],{"class":597},"sb7M8","schedules",[591,600,602],{"class":601},"s7iLA",":\n",[591,604,606,609,612,615,619],{"class":593,"line":605},2,[591,607,608],{"class":601},"  - ",[591,610,611],{"class":597},"cron",[591,613,614],{"class":601},": ",[591,616,618],{"class":617},"semJd","\"0 9 * * 1,2,3,4,5\"",[591,620,622],{"class":621},"sq92B","  # 9:00 UTC on weekdays\n",[591,624,626,629,631],{"class":593,"line":625},3,[591,627,628],{"class":597},"    repo",[591,630,614],{"class":601},[591,632,633],{"class":617},"\u002Fpath\u002Fto\u002Frepo\n",[591,635,637,640,642],{"class":593,"line":636},4,[591,638,639],{"class":597},"    chain",[591,641,614],{"class":601},[591,643,644],{"class":617},"default\n",[591,646,648,651,653],{"class":593,"line":647},5,[591,649,650],{"class":597},"    title",[591,652,614],{"class":601},[591,654,655],{"class":617},"\"Weekday dependency check\"\n",[591,657,659,662,664],{"class":593,"line":658},6,[591,660,661],{"class":597},"    description",[591,663,614],{"class":601},[591,665,666],{"class":617},"\"Filed by the 09:00 UTC weekday schedule\"\n",[552,668,669,670,689,700,703,704,707,708,710,711,715],{},"Make the server read the file:",[581,671,675],{"className":672,"code":673,"language":674,"meta":587,"style":587},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","kraft admin reload\n","bash",[556,676,677],{"__ignoreMap":587},[591,678,679,683,686],{"class":593,"line":594},[591,680,682],{"class":681},"szw1H","kraft",[591,684,685],{"class":617}," admin",[591,687,688],{"class":617}," reload\n",[581,690,695],{"className":691,"code":693,"language":694,"meta":587},[692],"language-text","reloaded \u003CN> template(s) and policy.yaml and intake.yaml\n","text",[556,696,697],{"__ignoreMap":587},[591,698,693],{"className":699},[593],[701,702],"br",{},"A file Kraft refused to read is named on a ",[556,705,706],{},"refused:"," line below it, and the\nrunning one is kept.",[701,709],{},"If you add the schedule in Settings › Auto-intake (",[712,713,714],"strong",{},"Add schedule",") instead of\nediting the file, you need no reload.",[526,717,718],{},"Kraft evaluates the schedule in UTC. The next matching minute files the item.",[544,720,722],{"id":721},"file-a-work-item-from-a-webhook","File a work item from a webhook",[526,724,725,726,729,730,733,734,737,738,741,742,542],{},"Post to ",[556,727,728],{},"\u002Fapi\u002Ftriggers"," from anything that can fire a webhook, such as CI or a\nscript. The body takes ",[556,731,732],{},"title",", ",[556,735,736],{},"repo",", and optionally ",[556,739,740],{},"chain"," and ",[556,743,744],{},"description",[746,747,749],"h3",{"id":748},"call-it-from-the-same-machine","Call it from the same machine",[526,751,752,753,756,757,733,759,762,763,579],{},"While Kraft is bound to ",[556,754,755],{},"127.0.0.1"," (the default), a call from the same machine\nneeds no login. Address Kraft as ",[556,758,755],{},[556,760,761],{},"localhost",", or ",[556,764,765],{},"[::1]",[581,767,769],{"className":672,"code":768,"language":674,"meta":587,"style":587},"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",[556,770,771,793,803],{"__ignoreMap":587},[591,772,773,776,780,783,786,789],{"class":593,"line":594},[591,774,775],{"class":681},"curl",[591,777,779],{"class":778},"ssYy9"," -s",[591,781,782],{"class":778}," -X",[591,784,785],{"class":617}," POST",[591,787,788],{"class":617}," http:\u002F\u002F127.0.0.1:8765\u002Fapi\u002Ftriggers",[591,790,792],{"class":791},"sklAV"," \\\n",[591,794,795,798,801],{"class":593,"line":605},[591,796,797],{"class":778},"  -H",[591,799,800],{"class":617}," 'Content-Type: application\u002Fjson'",[591,802,792],{"class":791},[591,804,805,808],{"class":593,"line":625},[591,806,807],{"class":778},"  -d",[591,809,810],{"class":617}," '{\"title\": \"Dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\", \"chain\": \"default\"}'\n",[526,812,813,814,817,818,821],{},"Kraft answers ",[556,815,816],{},"201"," with the new work item as JSON, filed ",[556,819,820],{},"paused",". Cut to the\nfields that matter, the body reads:",[581,823,827],{"className":824,"code":825,"language":826,"meta":587,"style":587},"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",[556,828,829],{"__ignoreMap":587},[591,830,831,834,837,839,842,844,847,849,852,854,857,859,862,864,867,869,871],{"class":593,"line":594},[591,832,833],{"class":601},"{",[591,835,836],{"class":597},"\"id\"",[591,838,614],{"class":601},[591,840,841],{"class":617},"\"\u003Cwork-item-id>\"",[591,843,733],{"class":601},[591,845,846],{"class":597},"\"title\"",[591,848,614],{"class":601},[591,850,851],{"class":617},"\"Dependency check\"",[591,853,733],{"class":601},[591,855,856],{"class":597},"\"status\"",[591,858,614],{"class":601},[591,860,861],{"class":617},"\"paused\"",[591,863,733],{"class":601},[591,865,866],{"class":597},"\"...\"",[591,868,614],{"class":601},[591,870,866],{"class":617},[591,872,873],{"class":601},"}\n",[746,875,877],{"id":876},"call-it-from-another-machine","Call it from another machine",[526,879,880,881,884,885,887],{},"After a non-loopback bind, every call needs the trigger token from\n",[556,882,883],{},"$KRAFT_HOME\u002Frun\u002Ftrigger-token",", including one from the same machine. Use the\naddress you reach Kraft at, and see ",[530,886,144],{"href":145},"\nfor how to bind:",[581,889,891],{"className":672,"code":890,"language":674,"meta":587,"style":587},"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",[556,892,893,922,937,945],{"__ignoreMap":587},[591,894,895,897,899,901,903,906,909,912,915,918,920],{"class":593,"line":594},[591,896,775],{"class":681},[591,898,779],{"class":778},[591,900,782],{"class":778},[591,902,785],{"class":617},[591,904,905],{"class":617}," https:\u002F\u002F",[591,907,908],{"class":791},"\u003C",[591,910,911],{"class":617},"your-tunnel-hostnam",[591,913,914],{"class":601},"e",[591,916,917],{"class":791},">",[591,919,728],{"class":617},[591,921,792],{"class":791},[591,923,924,926,929,932,935],{"class":593,"line":605},[591,925,797],{"class":778},[591,927,928],{"class":617}," \"Authorization: Bearer $(",[591,930,931],{"class":681},"cat",[591,933,934],{"class":617}," ~\u002F.kraft\u002Frun\u002Ftrigger-token)\"",[591,936,792],{"class":791},[591,938,939,941,943],{"class":593,"line":625},[591,940,797],{"class":778},[591,942,800],{"class":617},[591,944,792],{"class":791},[591,946,947,949],{"class":593,"line":636},[591,948,807],{"class":778},[591,950,951],{"class":617}," '{\"title\": \"Dependency check\", \"repo\": \"\u002Fpath\u002Fto\u002Frepo\"}'\n",[526,953,954,955,958,959,962,963,967],{},"The trigger token is accepted only by ",[556,956,957],{},"POST \u002Fapi\u002Ftriggers",", so it is the one to\nstore as a CI secret or give a webhook sender. Do not use ",[556,960,961],{},"run\u002Fmcp-token"," there:\nit is a full-admin credential. See\n",[530,964,966],{"href":965},"\u002Fguides\u002Frun\u002Fremote-access#rotate-the-token","Rotate the token"," for how to rotate either.",[746,969,971],{"id":970},"if-you-get-403-or-401","If you get 403 or 401",[973,974,975,988],"table",{},[976,977,978],"thead",{},[979,980,981,985],"tr",{},[982,983,984],"th",{},"Your call",[982,986,987],{},"What happens",[989,990,991,1007,1022],"tbody",{},[979,992,993,1004],{},[994,995,996,997,733,999,1001,1002],"td",{},"From the same machine, Kraft bound to loopback, addressed as ",[556,998,755],{},[556,1000,761],{}," or ",[556,1003,765],{},[994,1005,1006],{},"It works with no credential.",[979,1008,1009,1012],{},[994,1010,1011],{},"Through a tunnel or reverse proxy, Kraft bound to loopback",[994,1013,1014,1017,1018,1021],{},[556,1015,1016],{},"403"," (",[556,1019,1020],{},"unexpected Host","), whatever the credential.",[979,1023,1024,1027],{},[994,1025,1026],{},"Kraft bound beyond loopback, with no trigger token",[994,1028,1029,1032],{},[556,1030,1031],{},"401",", even from the same machine.",[526,1034,1035,1036,1038,1039,1043,1044,542],{},"For a webhook that arrives through a tunnel or reverse proxy, follow\n",[530,1037,148],{"href":149},".\n",[530,1040,1042],{"href":1041},"\u002Freference\u002Fhttp-api#who-may-call","Who may call"," lists every cause of a ",[556,1045,1016],{},[544,1047,1049],{"id":1048},"check-it-worked","Check it worked",[567,1051,1052,1059,1103],{},[552,1053,1054,1055,1058],{},"For a schedule, wait for the next matching UTC minute, or test it right away:\nset ",[556,1056,1057],{},"cron: \"* * * * *\"",", reload, and do the checks below. Then restore the real\nexpression and reload again, or the schedule files an item every minute.",[552,1060,1061,1062,1080,1094,1096,1097,1100,1101,542],{},"List the paused items and look for the new one:",[581,1063,1065],{"className":672,"code":1064,"language":674,"meta":587,"style":587},"kraft view list --status=paused\n",[556,1066,1067],{"__ignoreMap":587},[591,1068,1069,1071,1074,1077],{"class":593,"line":594},[591,1070,682],{"class":681},[591,1072,1073],{"class":617}," view",[591,1075,1076],{"class":617}," list",[591,1078,1079],{"class":778}," --status=paused\n",[581,1081,1084],{"className":1082,"code":1083,"language":694,"meta":587},[692],"ID              STATUS  GATE  NODE  TITLE\n\u003Cwork-item-id>  paused  -     -     Weekday dependency check\n",[556,1085,1086,1090],{"__ignoreMap":587},[591,1087,1089],{"className":1088},[593],"ID              STATUS  GATE  NODE  TITLE\n",[591,1091,1093],{"className":1092},[593],"\u003Cwork-item-id>  paused  -     -     Weekday dependency check\n",[701,1095],{},"The item shows under Not started on the board, and its ",[556,1098,1099],{},"STATUS"," reads\n",[556,1102,820],{},[552,1104,1105,1106,1109,1110,542],{},"Start it when you are ready: click its row on the board, then ",[712,1107,1108],{},"Start"," in the\nside panel, or run ",[556,1111,1112],{},"kraft item resume ID",[526,1114,1115],{},"If nothing appears, check the server log for a skipped-trigger warning. It names\nthe unconnected repo or the unknown chain.",[544,1117,1119],{"id":1118},"next-steps","Next steps",[549,1121,1122,1127,1132],{},[552,1123,1124,1126],{},[530,1125,440],{"href":441},": the fields and status codes.",[552,1128,1129,1131],{},[530,1130,144],{"href":145},": reach the server from another machine.",[552,1133,1134,1136,1137,542],{},[530,1135,334],{"href":335},": the rest of ",[556,1138,334],{},[1140,1141,1142],"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":587,"searchDepth":605,"depth":605,"links":1144},[1145,1146,1147,1152,1153],{"id":546,"depth":605,"text":547},{"id":564,"depth":605,"text":565},{"id":721,"depth":605,"text":722,"children":1148},[1149,1150,1151],{"id":748,"depth":625,"text":749},{"id":876,"depth":625,"text":877},{"id":970,"depth":625,"text":971},{"id":1048,"depth":605,"text":1049},{"id":1118,"depth":605,"text":1119},"File a paused work item on a cron schedule or from a webhook, then check that it arrived.","md",null,{},true,{"title":110,"description":1154},"Kca-B9P_B9HHTpVseEnLMRjAkmFa88_mH8j83Vy3H5Q",[1162,1164],{"title":106,"path":107,"stem":108,"description":1163,"children":-1},"Add the shipped security-review and gate-review skills to a chain of your own, since no shipped chain uses them.",{"title":114,"path":115,"stem":116,"description":1165,"children":-1},"Publish chains, library components, skills and agent profiles as a Kraft add-on in a collection, then install, use and update it on another instance.",1791801161391]