[{"data":1,"prerenderedAt":1257},["ShallowReactive",2],{"navigation_docs":3,"-reference-configuration-harnesses-file":520,"-reference-configuration-harnesses-file-surround":1252},[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":326,"body":522,"description":1246,"extension":1247,"links":1248,"meta":1249,"navigation":666,"path":327,"seo":1250,"stem":328,"__hash__":1251},"docs\u002F5.reference\u002F03.configuration\u002F05.harnesses-file.md",{"type":523,"value":524,"toc":1234},"minimark",[525,550,562,570,577,722,877,882,897,907,914,921,928,1004,1104,1113,1117,1137,1140,1144,1155,1205,1209,1230],[526,527,528,531,532,535,536,539,540,545,546,549],"p",{},[529,530,326],"code",{}," has two sections: ",[529,533,534],{},"harnesses:"," declares the harness profiles that agent tasks select, and the optional ",[529,537,538],{},"profiles:"," declares the ",[541,542,544],"a",{"href":543},"\u002Fconcepts\u002Fvocabulary#agent-profile","agent profiles",", the model tiers a task selects with ",[529,547,548],{},"profile:",".",[526,551,552,553,555,556,561],{},"Kraft reads the file again at each agent launch, so an edit reaches the next launch without a restart. A task whose harness profile is missing or disabled, or whose ",[529,554,326],{}," cannot be read, stops and waits for you, with the reason in its session log. Kraft never falls back to another harness profile unless the task declares a ",[541,557,558],{"href":429},[529,559,560],{},"fallback:"," list.",[563,564,566,569],"h2",{"id":565},"harnesses-harness-profiles",[529,567,568],{},"harnesses",": harness profiles",[526,571,572,573,576],{},"A harness profile is a configured instance of an agent-runtime provider: the executable to run and the runtime options to start from. A harness profile selects only from what its provider supports. Every agent task's ",[529,574,575],{},"harness:"," names a harness profile here, never a provider directly.",[578,579,585],"pre",{"className":580,"code":581,"filename":582,"language":583,"meta":584,"style":584},"language-yaml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","harnesses:\n  codex:\n    provider: codex\n    enabled: true\n    executable: codex\n    defaults:\n      effort: medium\n\n  claude:\n    provider: claude\n    enabled: true\n    executable: claude\n    defaults:\n      model: sonnet\n","config\u002Fharnesses.yaml","yaml","",[529,586,587,599,607,620,632,642,650,661,668,676,686,695,704,711],{"__ignoreMap":584},[588,589,592,595],"span",{"class":590,"line":591},"line",1,[588,593,568],{"class":594},"sb7M8",[588,596,598],{"class":597},"s7iLA",":\n",[588,600,602,605],{"class":590,"line":601},2,[588,603,604],{"class":594},"  codex",[588,606,598],{"class":597},[588,608,610,613,616],{"class":590,"line":609},3,[588,611,612],{"class":594},"    provider",[588,614,615],{"class":597},": ",[588,617,619],{"class":618},"semJd","codex\n",[588,621,623,626,628],{"class":590,"line":622},4,[588,624,625],{"class":594},"    enabled",[588,627,615],{"class":597},[588,629,631],{"class":630},"ssYy9","true\n",[588,633,635,638,640],{"class":590,"line":634},5,[588,636,637],{"class":594},"    executable",[588,639,615],{"class":597},[588,641,619],{"class":618},[588,643,645,648],{"class":590,"line":644},6,[588,646,647],{"class":594},"    defaults",[588,649,598],{"class":597},[588,651,653,656,658],{"class":590,"line":652},7,[588,654,655],{"class":594},"      effort",[588,657,615],{"class":597},[588,659,660],{"class":618},"medium\n",[588,662,664],{"class":590,"line":663},8,[588,665,667],{"emptyLinePlaceholder":666},true,"\n",[588,669,671,674],{"class":590,"line":670},9,[588,672,673],{"class":594},"  claude",[588,675,598],{"class":597},[588,677,679,681,683],{"class":590,"line":678},10,[588,680,612],{"class":594},[588,682,615],{"class":597},[588,684,685],{"class":618},"claude\n",[588,687,689,691,693],{"class":590,"line":688},11,[588,690,625],{"class":594},[588,692,615],{"class":597},[588,694,631],{"class":630},[588,696,698,700,702],{"class":590,"line":697},12,[588,699,637],{"class":594},[588,701,615],{"class":597},[588,703,685],{"class":618},[588,705,707,709],{"class":590,"line":706},13,[588,708,647],{"class":594},[588,710,598],{"class":597},[588,712,714,717,719],{"class":590,"line":713},14,[588,715,716],{"class":594},"      model",[588,718,615],{"class":597},[588,720,721],{"class":618},"sonnet\n",[723,724,725,744],"table",{},[726,727,728],"thead",{},[729,730,731,735,738,741],"tr",{},[732,733,734],"th",{},"Field",[732,736,737],{},"Type",[732,739,740],{},"Default",[732,742,743],{},"Meaning",[745,746,747,774,814,835,854],"tbody",{},[729,748,749,755,758,761],{},[750,751,752],"td",{},[529,753,754],{},"\u003Charness id>",[750,756,757],{},"string",[750,759,760],{},"required",[750,762,763,764,766,767,770,771,549],{},"The name a task's ",[529,765,575],{}," selects: a lowercase letter, then lowercase letters, digits, ",[529,768,769],{},"_"," and ",[529,772,773],{},"-",[729,775,776,781,783,785],{},[750,777,778],{},[529,779,780],{},"provider",[750,782,757],{},[750,784,760],{},[750,786,787,788,791,792,791,795,791,798,791,801,791,804,807,808,811,812,549],{},"The provider this harness profile configures: ",[529,789,790],{},"claude",", ",[529,793,794],{},"codex",[529,796,797],{},"cursor",[529,799,800],{},"opencode",[529,802,803],{},"gemini",[529,805,806],{},"antigravity"," or ",[529,809,810],{},"amp",". See ",[541,813,410],{"href":411},[729,815,816,821,824,829],{},[750,817,818],{},[529,819,820],{},"enabled",[750,822,823],{},"boolean",[750,825,826],{},[529,827,828],{},"true",[750,830,831,834],{},[529,832,833],{},"false"," takes the harness profile out of service, and a task selecting it stops and waits for you.",[729,836,837,842,844,847],{},[750,838,839],{},[529,840,841],{},"executable",[750,843,757],{},[750,845,846],{},"the provider's own command",[750,848,849,850,853],{},"The command to launch when it differs from the provider's default; the provider's own subcommand (",[529,851,852],{},"codex exec",") is kept after it.",[729,855,856,861,864,869],{},[750,857,858],{},[529,859,860],{},"defaults",[750,862,863],{},"mapping",[750,865,866],{},[529,867,868],{},"{}",[750,870,871,872,549],{},"The lowest-precedence runtime options. See ",[541,873,875],{"href":874},"#defaults",[529,876,860],{},[878,879,880],"h3",{"id":860},[529,881,860],{},[526,883,884,886,887,791,890,770,893,896],{},[529,885,860],{}," takes ",[529,888,889],{},"model",[529,891,892],{},"effort",[529,894,895],{},"permission_mode",". Two refusals apply to any other key:",[898,899,900,904],"ul",{},[901,902,903],"li",{},"Kraft refuses the file when it reads it if the provider does not declare the key, or does not accept the value.",[901,905,906],{},"A key the provider declares but Kraft does not apply stops the task that selects the harness profile, and the task waits for you.",[526,908,909,910,770,912,549],{},"Which options each provider declares is listed in ",[541,911,410],{"href":411},[541,913,424],{"href":425},[563,915,917,920],{"id":916},"profiles-agent-profiles",[529,918,919],{},"profiles",": agent profiles",[526,922,923,924,927],{},"An ",[541,925,926],{"href":421},"agent profile"," names the model and effort a tier runs on, for each provider.",[578,929,931],{"className":580,"code":930,"filename":582,"language":583,"meta":584,"style":584},"profiles:\n  strong:\n    providers:\n      claude: { model: sonnet, effort: high }\n      codex: { model: gpt-5.6-terra, effort: high }\n",[529,932,933,939,946,953,980],{"__ignoreMap":584},[588,934,935,937],{"class":590,"line":591},[588,936,919],{"class":594},[588,938,598],{"class":597},[588,940,941,944],{"class":590,"line":601},[588,942,943],{"class":594},"  strong",[588,945,598],{"class":597},[588,947,948,951],{"class":590,"line":609},[588,949,950],{"class":594},"    providers",[588,952,598],{"class":597},[588,954,955,958,961,963,965,968,970,972,974,977],{"class":590,"line":622},[588,956,957],{"class":594},"      claude",[588,959,960],{"class":597},": { ",[588,962,889],{"class":594},[588,964,615],{"class":597},[588,966,967],{"class":618},"sonnet",[588,969,791],{"class":597},[588,971,892],{"class":594},[588,973,615],{"class":597},[588,975,976],{"class":618},"high",[588,978,979],{"class":597}," }\n",[588,981,982,985,987,989,991,994,996,998,1000,1002],{"class":590,"line":634},[588,983,984],{"class":594},"      codex",[588,986,960],{"class":597},[588,988,889],{"class":594},[588,990,615],{"class":597},[588,992,993],{"class":618},"gpt-5.6-terra",[588,995,791],{"class":597},[588,997,892],{"class":594},[588,999,615],{"class":597},[588,1001,976],{"class":618},[588,1003,979],{"class":597},[723,1005,1006,1018],{},[726,1007,1008],{},[729,1009,1010,1012,1014,1016],{},[732,1011,734],{},[732,1013,737],{},[732,1015,740],{},[732,1017,743],{},[745,1019,1020,1040,1062,1085],{},[729,1021,1022,1027,1029,1031],{},[750,1023,1024],{},[529,1025,1026],{},"\u003Cagent profile id>",[750,1028,757],{},[750,1030,760],{},[750,1032,763,1033,1035,1036,770,1038,549],{},[529,1034,548],{}," selects: lowercase letters, digits, ",[529,1037,769],{},[529,1039,773],{},[729,1041,1042,1047,1049,1055],{},[750,1043,1044],{},[529,1045,1046],{},"providers",[750,1048,863],{},[750,1050,1051,1052,1054],{},"required, unless ",[529,1053,889],{}," is given",[750,1056,1057,1058,1061],{},"Maps a provider ID to ",[529,1059,1060],{},"{model, effort?}","; a provider left out cannot run this agent profile. The shape the Harnesses screen writes.",[729,1063,1064,1070,1073,1076],{},[750,1065,1066,791,1068],{},[529,1067,889],{},[529,1069,892],{},[750,1071,1072],{},"mapping, string",[750,1074,1075],{},"none",[750,1077,1078,1079,1081,1082,1084],{},"The older shape, still read: one ",[529,1080,889],{}," map and one ",[529,1083,892],{}," shared by every provider. An agent profile is written in one shape, never both.",[729,1086,1087,1092,1095,1097],{},[750,1088,1089],{},[529,1090,1091],{},"fallback",[750,1093,1094],{},"list",[750,1096,1075],{},[750,1098,1099,1100,1103],{},"The tier's default ",[541,1101,1102],{"href":429},"fallback list"," for a task that sets none.",[526,1105,1106,1107,1109,1110,1112],{},"Kraft refuses an agent profile that has neither ",[529,1108,1046],{}," nor the older ",[529,1111,889],{},", and one where either is empty.",[563,1114,1116],{"id":1115},"inspect-and-edit","Inspect and edit",[898,1118,1119,1125,1131,1134],{},[901,1120,1121,1124],{},[529,1122,1123],{},"kraft admin harnesses"," lists every harness profile with its provider and the library tasks that select it, then each agent profile.",[901,1126,1127,1130],{},[529,1128,1129],{},"kraft admin harnesses ID"," shows one harness profile.",[901,1132,1133],{},"Settings › Harnesses shows each harness with its access, its executable and defaults, and what its provider accepts, and each agent profile with one lane per provider.",[901,1135,1136],{},"Settings › Harnesses edits one harness or agent profile at a time: a harness's access, executable and defaults, and an agent profile's provider entries (model and effort). It also renames, copies and removes an agent profile.",[526,1138,1139],{},"Kraft refuses a save that would stop an agent task of any chain that loads today from launching, and writes nothing. A save writes only what it changed: the file's comments and layout stay.",[878,1141,1143],{"id":1142},"a-harnesss-access","A harness's access",[526,1145,1146,1147,1150,1151,1154],{},"A harness's access is one of three values. It is set by where the harness is listed in the two ",[529,1148,1149],{},"allowed_harnesses"," lists of ",[541,1152,318],{"href":1153},"\u002Freference\u002Fconfiguration\u002Fpolicy#defaults-and-maxima",":",[723,1156,1157,1167],{},[726,1158,1159],{},[729,1160,1161,1164],{},[732,1162,1163],{},"Access",[732,1165,1166],{},"Where the harness is listed",[745,1168,1169,1182,1197],{},[729,1170,1171,1174],{},[750,1172,1173],{},"Available",[750,1175,1176,1177,770,1179,549],{},"In ",[529,1178,860],{},[529,1180,1181],{},"maxima",[729,1183,1184,1187],{},[750,1185,1186],{},"Override",[750,1188,1189,1190,1192,1193,1196],{},"Only in ",[529,1191,1181],{},"; a task may use it only if its own ",[529,1194,1195],{},"policy:"," widens it.",[729,1198,1199,1202],{},[750,1200,1201],{},"Never",[750,1203,1204],{},"In neither.",[563,1206,1208],{"id":1207},"related","Related",[898,1210,1211,1216,1225],{},[901,1212,1213,1215],{},[541,1214,420],{"href":421},": how a task selects a tier and how it resolves per provider.",[901,1217,1218,1220,1221,1224],{},[541,1219,424],{"href":425},": the files in ",[529,1222,1223],{},"config\u002Fharnesses\u002F"," that describe a harness itself, not a harness profile of it.",[901,1226,1227,1229],{},[541,1228,123],{"href":124},": move one task from one harness profile to another.",[1231,1232,1233],"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 .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);}",{"title":584,"searchDepth":601,"depth":601,"links":1235},[1236,1240,1242,1245],{"id":565,"depth":601,"text":1237,"children":1238},"harnesses: harness profiles",[1239],{"id":860,"depth":609,"text":860},{"id":916,"depth":601,"text":1241},"profiles: agent profiles",{"id":1115,"depth":601,"text":1116,"children":1243},[1244],{"id":1142,"depth":609,"text":1143},{"id":1207,"depth":601,"text":1208},"Every field in harnesses.yaml: the harnesses section (harness profiles) and the profiles section (agent profiles).","md",null,{},{"title":326,"description":1246},"depIUbRLJ9iFIYzsNtr6zpfs6hofP9EmwAvx3JDkvW8",[1253,1255],{"title":322,"path":323,"stem":324,"description":1254,"children":-1},"The sections of library.yaml, the keys a library task takes for each kind, and how chains\u002F*.yaml files compose them into chain templates.",{"title":330,"path":331,"stem":332,"description":1256,"children":-1},"Every field in access.yaml: bind address, port, password, session expiry and allowed hosts.",1791801174392]