[{"data":1,"prerenderedAt":1323},["ShallowReactive",2],{"navigation_docs":3,"-reference-harnesses-agent-profiles":520,"-reference-harnesses-agent-profiles-surround":1318},[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":420,"body":522,"description":1311,"extension":1312,"links":1313,"meta":1314,"navigation":1315,"path":421,"seo":1316,"stem":422,"__hash__":1317},"docs\u002F5.reference\u002F05.harnesses\u002F3.agent-profiles.md",{"type":523,"value":524,"toc":1298},"minimark",[525,586,784,842,847,854,961,964,970,975,987,1029,1033,1044,1067,1071,1087,1109,1113,1143,1153,1162,1166,1169,1182,1185,1196,1199,1220,1223,1227,1255,1264,1268,1294],[526,527,528,529,537,538,542,543,542,545,548,549,552,553,556,557,560,561,563,564,567,568,572,573,577,578,580,581,585],"p",{},"An ",[530,531,532],"strong",{},[533,534,536],"a",{"href":535},"\u002Fconcepts\u002Fvocabulary#agent-profile","agent profile"," is a named model tier (",[539,540,541],"code",{},"deep",", ",[539,544,530],{},[539,546,547],{},"fast",") that a task selects with ",[539,550,551],{},"profile:"," instead of spelling out ",[539,554,555],{},"model:"," and ",[539,558,559],{},"effort:",". It lives in ",[539,562,326],{}," under ",[539,565,566],{},"profiles:",", beside the ",[533,569,571],{"href":570},"\u002Fconcepts\u002Fvocabulary#harness-profile","harness profiles",". It does not depend on the ",[533,574,576],{"href":575},"\u002Fconcepts\u002Fvocabulary#harness","harness",": ",[539,579,541],{}," is the same tier on Claude Code or Codex, with the model id spelled per ",[533,582,584],{"href":583},"\u002Fconcepts\u002Fvocabulary#provider","provider",".",[587,588,594],"pre",{"className":589,"code":590,"filename":591,"language":592,"meta":593,"style":593},"language-yaml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","profiles:\n  deep:\n    providers:\n      claude: { model: opus, effort: high }\n      codex: { model: gpt-5.6-sol, effort: high }\n  strong:\n    providers:\n      claude: { model: sonnet, effort: high }\n      codex: { model: gpt-5.6-terra, effort: high }\n  fast:\n    providers:\n      claude: { model: haiku, effort: low }\n","config\u002Fharnesses.yaml","yaml","",[539,595,596,609,617,625,656,681,689,696,720,744,752,759],{"__ignoreMap":593},[597,598,601,605],"span",{"class":599,"line":600},"line",1,[597,602,604],{"class":603},"sb7M8","profiles",[597,606,608],{"class":607},"s7iLA",":\n",[597,610,612,615],{"class":599,"line":611},2,[597,613,614],{"class":603},"  deep",[597,616,608],{"class":607},[597,618,620,623],{"class":599,"line":619},3,[597,621,622],{"class":603},"    providers",[597,624,608],{"class":607},[597,626,628,631,634,637,639,643,645,648,650,653],{"class":599,"line":627},4,[597,629,630],{"class":603},"      claude",[597,632,633],{"class":607},": { ",[597,635,636],{"class":603},"model",[597,638,577],{"class":607},[597,640,642],{"class":641},"semJd","opus",[597,644,542],{"class":607},[597,646,647],{"class":603},"effort",[597,649,577],{"class":607},[597,651,652],{"class":641},"high",[597,654,655],{"class":607}," }\n",[597,657,659,662,664,666,668,671,673,675,677,679],{"class":599,"line":658},5,[597,660,661],{"class":603},"      codex",[597,663,633],{"class":607},[597,665,636],{"class":603},[597,667,577],{"class":607},[597,669,670],{"class":641},"gpt-5.6-sol",[597,672,542],{"class":607},[597,674,647],{"class":603},[597,676,577],{"class":607},[597,678,652],{"class":641},[597,680,655],{"class":607},[597,682,684,687],{"class":599,"line":683},6,[597,685,686],{"class":603},"  strong",[597,688,608],{"class":607},[597,690,692,694],{"class":599,"line":691},7,[597,693,622],{"class":603},[597,695,608],{"class":607},[597,697,699,701,703,705,707,710,712,714,716,718],{"class":599,"line":698},8,[597,700,630],{"class":603},[597,702,633],{"class":607},[597,704,636],{"class":603},[597,706,577],{"class":607},[597,708,709],{"class":641},"sonnet",[597,711,542],{"class":607},[597,713,647],{"class":603},[597,715,577],{"class":607},[597,717,652],{"class":641},[597,719,655],{"class":607},[597,721,723,725,727,729,731,734,736,738,740,742],{"class":599,"line":722},9,[597,724,661],{"class":603},[597,726,633],{"class":607},[597,728,636],{"class":603},[597,730,577],{"class":607},[597,732,733],{"class":641},"gpt-5.6-terra",[597,735,542],{"class":607},[597,737,647],{"class":603},[597,739,577],{"class":607},[597,741,652],{"class":641},[597,743,655],{"class":607},[597,745,747,750],{"class":599,"line":746},10,[597,748,749],{"class":603},"  fast",[597,751,608],{"class":607},[597,753,755,757],{"class":599,"line":754},11,[597,756,622],{"class":603},[597,758,608],{"class":607},[597,760,762,764,766,768,770,773,775,777,779,782],{"class":599,"line":761},12,[597,763,630],{"class":603},[597,765,633],{"class":607},[597,767,636],{"class":603},[597,769,577],{"class":607},[597,771,772],{"class":641},"haiku",[597,774,542],{"class":607},[597,776,647],{"class":603},[597,778,577],{"class":607},[597,780,781],{"class":641},"low",[597,783,655],{"class":607},[587,785,788],{"className":589,"code":786,"filename":787,"language":592,"meta":593,"style":593},"tasks:\n  implementer: { kind: agent, harness: claude, profile: strong, prompt: \"...\" }\n","config\u002Flibrary.yaml",[539,789,790,797],{"__ignoreMap":593},[597,791,792,795],{"class":599,"line":600},[597,793,794],{"class":603},"tasks",[597,796,608],{"class":607},[597,798,799,802,804,807,809,812,814,816,818,821,823,826,828,830,832,835,837,840],{"class":599,"line":611},[597,800,801],{"class":603},"  implementer",[597,803,633],{"class":607},[597,805,806],{"class":603},"kind",[597,808,577],{"class":607},[597,810,811],{"class":641},"agent",[597,813,542],{"class":607},[597,815,576],{"class":603},[597,817,577],{"class":607},[597,819,820],{"class":641},"claude",[597,822,542],{"class":607},[597,824,825],{"class":603},"profile",[597,827,577],{"class":607},[597,829,530],{"class":641},[597,831,542],{"class":607},[597,833,834],{"class":603},"prompt",[597,836,577],{"class":607},[597,838,839],{"class":641},"\"...\"",[597,841,655],{"class":607},[843,844,846],"h2",{"id":845},"define-an-agent-profile","Define an agent profile",[526,848,849,850,853],{},"Settings › Harnesses writes this shape. Each provider has its own effort, so the providers need not share an effort scale (",[539,851,852],{},"max"," is Claude's, not Codex's).",[855,856,857,876],"table",{},[858,859,860],"thead",{},[861,862,863,867,870,873],"tr",{},[864,865,866],"th",{},"Field",[864,868,869],{},"Type",[864,871,872],{},"Default",[864,874,875],{},"Meaning",[877,878,879,911,927,942],"tbody",{},[861,880,881,887,890,898],{},[882,883,884],"td",{},[539,885,886],{},"providers",[882,888,889],{},"mapping",[882,891,892,893,897],{},"required, unless the ",[533,894,896],{"href":895},"#the-older-shape","older shape"," is used",[882,899,900,901,903,904,542,907,910],{},"A map keyed by ",[530,902,584],{}," id, not harness id. Two harnesses on one provider (",[539,905,906],{},"claude-work",[539,908,909],{},"claude-personal",") share one spelling.",[861,912,913,918,921,924],{},[882,914,915],{},[539,916,917],{},"providers.\u003Cid>.model",[882,919,920],{},"string",[882,922,923],{},"required",[882,925,926],{},"The model id, spelled the way that provider accepts it.",[861,928,929,934,936,939],{},[882,930,931],{},[539,932,933],{},"providers.\u003Cid>.effort",[882,935,920],{},[882,937,938],{},"unset",[882,940,941],{},"The effort for that provider. It must be one the provider accepts.",[861,943,944,949,952,954],{},[882,945,946],{},[539,947,948],{},"fallback",[882,950,951],{},"list",[882,953,938],{},[882,955,956,957,960],{},"The default ",[533,958,959],{"href":429},"fallback list"," for a task that selects the agent profile and sets none of its own.",[526,962,963],{},"An agent profile may leave a provider out. It then cannot run on a harness of that provider. Only a task that actually pairs the two is refused, so a new provider never breaks an existing agent profile. Kraft never guesses a model for a provider the agent profile does not name.",[526,965,966,967,585],{},"An agent profile is written in one shape, never both. A bad effort is named: ",[539,968,969],{},"profiles.deep.providers.codex: effort 'max' is not accepted by provider 'codex'",[971,972,974],"h3",{"id":973},"the-older-shape","The older shape",[526,976,977,978,980,981,983,984,986],{},"An older shape, one ",[539,979,555],{}," map with one shared ",[539,982,647],{},", still loads. Kraft reads its ",[539,985,647],{}," as every provider's:",[587,988,990],{"className":589,"code":989,"filename":591,"language":592,"meta":593,"style":593},"profiles:\n  fast:\n    effort: low\n    model: { claude: haiku }\n",[539,991,992,998,1004,1014],{"__ignoreMap":593},[597,993,994,996],{"class":599,"line":600},[597,995,604],{"class":603},[597,997,608],{"class":607},[597,999,1000,1002],{"class":599,"line":611},[597,1001,749],{"class":603},[597,1003,608],{"class":607},[597,1005,1006,1009,1011],{"class":599,"line":619},[597,1007,1008],{"class":603},"    effort",[597,1010,577],{"class":607},[597,1012,1013],{"class":641},"low\n",[597,1015,1016,1019,1021,1023,1025,1027],{"class":599,"line":627},[597,1017,1018],{"class":603},"    model",[597,1020,633],{"class":607},[597,1022,820],{"class":603},[597,1024,577],{"class":607},[597,1026,772],{"class":641},[597,1028,655],{"class":607},[843,1030,1032],{"id":1031},"select-an-agent-profile-in-a-task","Select an agent profile in a task",[526,1034,1035,1036,1038,1039,556,1041,1043],{},"A task takes one route: ",[539,1037,551],{},", or its own ",[539,1040,555],{},[539,1042,559],{},". It cannot set both.",[526,1045,1046,1047,1050,1051,1053,1054,556,1056,1058,1059,1061,1062,1064,1065,585],{},"Through ",[539,1048,1049],{},"extends",", the nearer layer's route wins whole. A task that sets ",[539,1052,551],{}," drops the ",[539,1055,636],{},[539,1057,647],{}," it inherits. A task that sets ",[539,1060,555],{}," or ",[539,1063,559],{}," drops the inherited ",[539,1066,825],{},[843,1068,1070],{"id":1069},"precedence-and-when-an-agent-profile-is-read","Precedence and when an agent profile is read",[526,1072,1073,1074,556,1076,1078,1079,1082,1083,1086],{},"An agent profile ranks where the task's own ",[539,1075,636],{},[539,1077,647],{}," would. The node override, the item override and escalation rank above it. The repo's ",[539,1080,1081],{},"models:"," and the harness profile's ",[539,1084,1085],{},"defaults:"," rank below it.",[526,1088,1089,1090,1093,1094,1098,1099,1102,1103,1105,1106,1108],{},"The task's agent profile ",[530,1091,1092],{},"name"," is frozen with the chain at ",[533,1095,1097],{"href":1096},"\u002Fconcepts\u002Fvocabulary#intake","intake",". The agent profile's ",[530,1100,1101],{},"body"," is read from ",[539,1104,326],{}," at every launch, so editing ",[539,1107,541],{}," changes every later launch that selects it, including on items already running.",[971,1110,1112],{"id":1111},"agent-profiles-from-an-add-on","Agent profiles from an add-on",[526,1114,1115,1116,1120,1121,1124,1125,1128,1129,1132,1133,1135,1136,556,1139,1142],{},"A ",[533,1117,1119],{"href":1118},"\u002Fconcepts\u002Fvocabulary#add-on","Kraft add-on"," may ship agent profiles in its ",[539,1122,1123],{},"profiles.yaml",". Each is named ",[539,1126,1127],{},"\u003Cnamespace>:\u003Cname>",", such as ",[539,1130,1131],{},"release:careful",", and a task or a ",[539,1134,948],{}," entry selects it by that name. ",[539,1137,1138],{},"GET \u002Fapi\u002Fharnesses\u002Fprofiles",[539,1140,1141],{},"kraft admin harnesses"," list them beside your own. They are read-only.",[526,1144,1145,1146,1148,1149,585],{},"An add-on's agent profile is not read live. A work item reads it from the add-on version its chain was built with, until the item ends, so an update to the add-on changes no item already filed. An agent profile in your own ",[539,1147,326],{}," is still read at every launch. See ",[533,1150,1152],{"href":1151},"\u002Freference\u002Fconfiguration\u002Faddons#what-a-work-item-pins","What a work item pins",[526,1154,1155,1156,1158,1159,585],{},"An agent profile id in ",[539,1157,326],{}," never contains ",[539,1160,1161],{},":",[843,1163,1165],{"id":1164},"validation","Validation",[526,1167,1168],{},"Kraft checks each pairing of a task with its agent profile:",[1170,1171,1172,1176,1179],"ul",{},[1173,1174,1175],"li",{},"the agent profile exists;",[1173,1177,1178],{},"it names a model for the provider of the task's harness;",[1173,1180,1181],{},"that provider accepts the model and the effort.",[526,1183,1184],{},"A bad pairing is reported with the chain, task, agent profile, provider and harness:",[587,1186,1191],{"className":1187,"code":1189,"language":1190,"meta":593},[1188],"language-text","chain 'default' task 'implementation.main.implement': profile 'fast' has no model for provider 'codex' (harness 'codex')\n","text",[539,1192,1193],{"__ignoreMap":593},[597,1194,1189],{"className":1195},[599],[526,1197,1198],{},"Kraft reports it in these places:",[1170,1200,1201,1204,1209,1214],{},[1173,1202,1203],{},"Settings › Harnesses;",[1173,1205,1206,1208],{},[539,1207,1141],{},";",[1173,1210,1211,1208],{},[539,1212,1213],{},"kraft admin templates lint",[1173,1215,1216,1219],{},[539,1217,1218],{},"kraft admin doctor",", as a failing check.",[526,1221,1222],{},"Kraft refuses a harness save that would cause one. At launch, a task with a bad pairing stops and waits for you with the same text. Kraft never substitutes another model.",[843,1224,1226],{"id":1225},"shipped-agent-profiles","Shipped agent profiles",[526,1228,1229,1230,1232,1233,1236,1237,1240,1241,1244,1245,1248,1249,1251,1252,1254],{},"The shipped ",[539,1231,326],{}," has the three tiers above. The shipped library puts ",[539,1234,1235],{},"implementer",", the three ",[539,1238,1239],{},"repair_*"," tasks and ",[539,1242,1243],{},"strict_judge"," on ",[539,1246,1247],{},"profile: strong"," (",[539,1250,709],{}," at ",[539,1253,652],{}," effort).",[526,1256,1257,1258,1260,1261,1263],{},"An install seeded before agent profiles existed keeps its own files. ",[539,1259,1218],{}," lists the missing ",[539,1262,566],{}," section under what the install is missing.",[843,1265,1267],{"id":1266},"related","Related",[1170,1269,1270,1279,1289],{},[1173,1271,1272,1274,1275,1278],{},[533,1273,428],{"href":429},": the ",[539,1276,1277],{},"fallback:"," list an agent profile may carry.",[1173,1280,1281,1285,1286,1288],{},[533,1282,1283],{"href":327},[539,1284,326],{},": every ",[539,1287,326],{}," key.",[1173,1290,1291,1293],{},[533,1292,123],{"href":124},": add a provider to a tier before moving a task.",[1295,1296,1297],"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 .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":593,"searchDepth":611,"depth":611,"links":1299},[1300,1303,1304,1308,1309,1310],{"id":845,"depth":611,"text":846,"children":1301},[1302],{"id":973,"depth":619,"text":974},{"id":1031,"depth":611,"text":1032},{"id":1069,"depth":611,"text":1070,"children":1305},[1306],{"id":1111,"depth":619,"text":1307},"Agent profiles from an add-​on",{"id":1164,"depth":611,"text":1165},{"id":1225,"depth":611,"text":1226},{"id":1266,"depth":611,"text":1267},"Named model tiers a task selects with profile: instead of model and effort.","md",null,{},true,{"title":420,"description":1311},"pHzzdvz3BexoDchVDnt8DRxL6Jqj-xPnj7A6r7cwMts",[1319,1321],{"title":416,"path":417,"stem":418,"description":1320,"children":-1},"The permission mode each harness runs in when no one can answer a prompt, and where its tool calls go.",{"title":424,"path":425,"stem":426,"description":1322,"children":-1},"The YAML file that describes one harness: the capabilities it declares, argv fragments, constraints, and allowlists.",1791801176686]