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