[{"data":1,"prerenderedAt":718},["ShallowReactive",2],{"navigation_docs":3,"-reference-harnesses-agent-profiles":270,"-reference-harnesses-agent-profiles-surround":713},[4,28,51,110,243],{"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},"Troubleshooting and FAQ","\u002Fget-started\u002Ftroubleshooting","1.get-started\u002F3.troubleshooting",{"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},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F1.vocabulary",{"title":40,"path":41,"stem":42},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F2.how-a-work-item-runs",{"title":44,"path":45,"stem":46},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F3.caps-and-budgets",{"title":48,"path":49,"stem":50},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F4.permission-gate",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,62,66,70,74,78,82,86,90,94,98,102,106],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61},"Use Kraft from your agent","\u002Fguides\u002Fagent-integration","3.guides\u002F01.agent-integration",{"title":63,"path":64,"stem":65},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F02.kraft-lite",{"title":67,"path":68,"stem":69},"Remote access","\u002Fguides\u002Fremote-access","3.guides\u002F03.remote-access",{"title":71,"path":72,"stem":73},"Add or override a harness","\u002Fguides\u002Fadding-a-harness","3.guides\u002F04.adding-a-harness",{"title":75,"path":76,"stem":77},"Schedule or webhook work","\u002Fguides\u002Fschedule-and-webhook-work","3.guides\u002F05.schedule-and-webhook-work",{"title":79,"path":80,"stem":81},"Add a security review or a gate reviewer","\u002Fguides\u002Fadd-review-agents","3.guides\u002F06.add-review-agents",{"title":83,"path":84,"stem":85},"Kraft for VS Code","\u002Fguides\u002Fvscode","3.guides\u002F07.vscode",{"title":87,"path":88,"stem":89},"Reviewing a change","\u002Fguides\u002Freview-a-change","3.guides\u002F08.review-a-change",{"title":91,"path":92,"stem":93},"Write your own chain","\u002Fguides\u002Fwrite-your-own-chain","3.guides\u002F09.write-your-own-chain",{"title":95,"path":96,"stem":97},"Switch a harness","\u002Fguides\u002Fswitch-harness","3.guides\u002F10.switch-harness",{"title":99,"path":100,"stem":101},"Upgrade your templates","\u002Fguides\u002Fupgrading-templates","3.guides\u002F11.upgrading-templates",{"title":103,"path":104,"stem":105},"Operations","\u002Fguides\u002Foperations","3.guides\u002F12.operations",{"title":107,"path":108,"stem":109},"Worker Kit","\u002Fguides\u002Fworker-kit","3.guides\u002F13.worker-kit",{"title":111,"path":112,"stem":113,"children":114},"Reference","\u002Freference","4.reference",[115,117,139,183,201,205,227,231,235,239],{"title":10,"path":112,"stem":116},"4.reference\u002Findex",{"title":118,"path":119,"stem":120,"children":121},"CLI","\u002Freference\u002Fcli","4.reference\u002F1.cli\u002Findex",[122,123,127,131,135],{"title":10,"path":119,"stem":120},{"title":124,"path":125,"stem":126},"Item verbs","\u002Freference\u002Fcli\u002Fitem","4.reference\u002F1.cli\u002F2.item",{"title":128,"path":129,"stem":130},"View verbs","\u002Freference\u002Fcli\u002Fview","4.reference\u002F1.cli\u002F3.view",{"title":132,"path":133,"stem":134},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","4.reference\u002F1.cli\u002F4.repo",{"title":136,"path":137,"stem":138},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","4.reference\u002F1.cli\u002F5.admin",{"title":140,"path":141,"stem":142,"children":143},"Configuration","\u002Freference\u002Fconfiguration","4.reference\u002F2.configuration\u002Findex",[144,145,155,159,163,167,171,175,179],{"title":10,"path":141,"stem":142},{"title":146,"path":147,"stem":148,"children":149},"Repos","\u002Freference\u002Fconfiguration\u002Frepos","4.reference\u002F2.configuration\u002F2.repos\u002Findex",[150,151],{"title":10,"path":147,"stem":148},{"title":152,"path":153,"stem":154},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","4.reference\u002F2.configuration\u002F2.repos\u002F3.workspaces",{"title":156,"path":157,"stem":158},"Policy","\u002Freference\u002Fconfiguration\u002Fpolicy","4.reference\u002F2.configuration\u002F3.policy",{"title":160,"path":161,"stem":162},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","4.reference\u002F2.configuration\u002F4.library-and-chains",{"title":164,"path":165,"stem":166},"Harnesses file","\u002Freference\u002Fconfiguration\u002Fharnesses-file","4.reference\u002F2.configuration\u002F5.harnesses-file",{"title":168,"path":169,"stem":170},"Access","\u002Freference\u002Fconfiguration\u002Faccess","4.reference\u002F2.configuration\u002F6.access",{"title":172,"path":173,"stem":174},"Intake","\u002Freference\u002Fconfiguration\u002Fintake","4.reference\u002F2.configuration\u002F7.intake",{"title":176,"path":177,"stem":178},"Sandbox host","\u002Freference\u002Fconfiguration\u002Fsandbox","4.reference\u002F2.configuration\u002F8.sandbox",{"title":180,"path":181,"stem":182},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","4.reference\u002F2.configuration\u002F9.environment-variables",{"title":184,"path":185,"stem":186,"children":187},"Chain nodes","\u002Freference\u002Fchain-nodes","4.reference\u002F3.chain-nodes\u002Findex",[188,189,193,197],{"title":10,"path":185,"stem":186},{"title":190,"path":191,"stem":192},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","4.reference\u002F3.chain-nodes\u002F2.subprocess-tasks",{"title":194,"path":195,"stem":196},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","4.reference\u002F3.chain-nodes\u002F3.fix-loop",{"title":198,"path":199,"stem":200},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","4.reference\u002F3.chain-nodes\u002F4.result-file",{"title":202,"path":203,"stem":204},"Permission gate","\u002Freference\u002Fpermissions","4.reference\u002F4.permissions",{"title":206,"path":207,"stem":208,"children":209},"Agent harnesses","\u002Freference\u002Fharnesses","4.reference\u002F5.harnesses\u002Findex",[210,211,215,219,223],{"title":10,"path":207,"stem":208},{"title":212,"path":213,"stem":214},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","4.reference\u002F5.harnesses\u002F2.unattended-runs",{"title":216,"path":217,"stem":218},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","4.reference\u002F5.harnesses\u002F3.agent-profiles",{"title":220,"path":221,"stem":222},"Harness files","\u002Freference\u002Fharnesses\u002Fharness-files","4.reference\u002F5.harnesses\u002F4.harness-files",{"title":224,"path":225,"stem":226},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","4.reference\u002F5.harnesses\u002F5.fallback-and-escalation",{"title":228,"path":229,"stem":230},"Inbound triggers","\u002Freference\u002Ftriggers","4.reference\u002F6.triggers",{"title":232,"path":233,"stem":234},"HTTP API","\u002Freference\u002Fhttp-api","4.reference\u002F7.http-api",{"title":236,"path":237,"stem":238},"MCP tools","\u002Freference\u002Fmcp-tools","4.reference\u002F8.mcp-tools",{"title":240,"path":241,"stem":242},"Events","\u002Freference\u002Fevents","4.reference\u002F9.events",{"title":244,"path":245,"stem":246,"children":247},"Project","\u002Fproject","5.project",[248,250,254,258,262,266],{"title":10,"path":245,"stem":249},"5.project\u002Findex",{"title":251,"path":252,"stem":253},"Architecture","\u002Fproject\u002Farchitecture","5.project\u002F1.architecture",{"title":255,"path":256,"stem":257},"Contributing","\u002Fproject\u002Fcontributing","5.project\u002F2.contributing",{"title":259,"path":260,"stem":261},"Security","\u002Fproject\u002Fsecurity","5.project\u002F3.security",{"title":263,"path":264,"stem":265},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","5.project\u002F4.data-and-privacy",{"title":267,"path":268,"stem":269},"Status and support","\u002Fproject\u002Fstatus-and-support","5.project\u002F5.status-and-support",{"id":271,"title":216,"body":272,"description":706,"extension":707,"links":708,"meta":709,"navigation":710,"path":217,"seo":711,"stem":218,"__hash__":712},"docs\u002F4.reference\u002F5.harnesses\u002F3.agent-profiles.md",{"type":273,"value":274,"toc":704},"minimark",[275,318,481,552,649,664,700],[276,277,278,279,283,284,288,289,288,291,294,295,298,299,302,303,306,307,310,311,314,315,317],"p",{},"An ",[280,281,282],"strong",{},"agent profile"," is a named model tier (",[285,286,287],"code",{},"deep",", ",[285,290,280],{},[285,292,293],{},"fast",") that a\ntask selects with ",[285,296,297],{},"profile:"," instead of spelling out ",[285,300,301],{},"model:"," and ",[285,304,305],{},"effort:",".\nIt lives in ",[285,308,309],{},"harnesses.yaml"," under ",[285,312,313],{},"profiles:",", beside the harness profiles,\nand it doesn't depend on the harness: ",[285,316,287],{}," is the same tier on Claude Code or\nCodex, with the model id spelled per provider.",[319,320,325],"pre",{"className":321,"code":322,"language":323,"meta":324,"style":324},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# harnesses.yaml\nprofiles:\n  deep:\n    effort: high\n    model: { claude: opus, codex: gpt-5.6-sol }\n  strong:\n    effort: high\n    model: { claude: sonnet, codex: gpt-5.6-terra }\n  fast:\n    effort: low\n    model: { claude: haiku }\n","yaml","",[285,326,327,336,347,355,368,401,409,418,445,453,463],{"__ignoreMap":324},[328,329,332],"span",{"class":330,"line":331},"line",1,[328,333,335],{"class":334},"sHwdD","# harnesses.yaml\n",[328,337,339,343],{"class":330,"line":338},2,[328,340,342],{"class":341},"swJcz","profiles",[328,344,346],{"class":345},"sMK4o",":\n",[328,348,350,353],{"class":330,"line":349},3,[328,351,352],{"class":341},"  deep",[328,354,346],{"class":345},[328,356,358,361,364],{"class":330,"line":357},4,[328,359,360],{"class":341},"    effort",[328,362,363],{"class":345},":",[328,365,367],{"class":366},"sfazB"," high\n",[328,369,371,374,376,379,382,384,387,390,393,395,398],{"class":330,"line":370},5,[328,372,373],{"class":341},"    model",[328,375,363],{"class":345},[328,377,378],{"class":345}," {",[328,380,381],{"class":341}," claude",[328,383,363],{"class":345},[328,385,386],{"class":366}," opus",[328,388,389],{"class":345},",",[328,391,392],{"class":341}," codex",[328,394,363],{"class":345},[328,396,397],{"class":366}," gpt-5.6-sol",[328,399,400],{"class":345}," }\n",[328,402,404,407],{"class":330,"line":403},6,[328,405,406],{"class":341},"  strong",[328,408,346],{"class":345},[328,410,412,414,416],{"class":330,"line":411},7,[328,413,360],{"class":341},[328,415,363],{"class":345},[328,417,367],{"class":366},[328,419,421,423,425,427,429,431,434,436,438,440,443],{"class":330,"line":420},8,[328,422,373],{"class":341},[328,424,363],{"class":345},[328,426,378],{"class":345},[328,428,381],{"class":341},[328,430,363],{"class":345},[328,432,433],{"class":366}," sonnet",[328,435,389],{"class":345},[328,437,392],{"class":341},[328,439,363],{"class":345},[328,441,442],{"class":366}," gpt-5.6-terra",[328,444,400],{"class":345},[328,446,448,451],{"class":330,"line":447},9,[328,449,450],{"class":341},"  fast",[328,452,346],{"class":345},[328,454,456,458,460],{"class":330,"line":455},10,[328,457,360],{"class":341},[328,459,363],{"class":345},[328,461,462],{"class":366}," low\n",[328,464,466,468,470,472,474,476,479],{"class":330,"line":465},11,[328,467,373],{"class":341},[328,469,363],{"class":345},[328,471,378],{"class":345},[328,473,381],{"class":341},[328,475,363],{"class":345},[328,477,478],{"class":366}," haiku",[328,480,400],{"class":345},[319,482,484],{"className":321,"code":483,"language":323,"meta":324,"style":324},"# library.yaml\ntasks:\n  implementer: { kind: agent, harness: claude, profile: strong, prompt: \"...\" }\n",[285,485,486,491,498],{"__ignoreMap":324},[328,487,488],{"class":330,"line":331},[328,489,490],{"class":334},"# library.yaml\n",[328,492,493,496],{"class":330,"line":338},[328,494,495],{"class":341},"tasks",[328,497,346],{"class":345},[328,499,500,503,505,507,510,512,515,517,520,522,524,526,529,531,534,536,539,541,544,547,550],{"class":330,"line":349},[328,501,502],{"class":341},"  implementer",[328,504,363],{"class":345},[328,506,378],{"class":345},[328,508,509],{"class":341}," kind",[328,511,363],{"class":345},[328,513,514],{"class":366}," agent",[328,516,389],{"class":345},[328,518,519],{"class":341}," harness",[328,521,363],{"class":345},[328,523,381],{"class":366},[328,525,389],{"class":345},[328,527,528],{"class":341}," profile",[328,530,363],{"class":345},[328,532,533],{"class":366}," strong",[328,535,389],{"class":345},[328,537,538],{"class":341}," prompt",[328,540,363],{"class":345},[328,542,543],{"class":345}," \"",[328,545,546],{"class":366},"...",[328,548,549],{"class":345},"\"",[328,551,400],{"class":345},[553,554,555,573,576,611,626],"ul",{},[556,557,558,561,562,565,566,288,569,572],"li",{},[285,559,560],{},"model"," is keyed by ",[280,563,564],{},"provider"," id, not harness id. Two harnesses on one\nprovider (",[285,567,568],{},"claude-work",[285,570,571],{},"claude-personal",") share one spelling.",[556,574,575],{},"A profile may leave a provider out. It then can't run on a harness of that\nprovider. Only a task that actually pairs the two is refused, so a new\nprovider never breaks an existing profile. Kraft never guesses a model for\na provider the profile doesn't name.",[556,577,578,579,581,582,584,585,587,588,591,592,594,595,584,597,600,601,603,604,606,607,610],{},"A task takes one route: ",[285,580,297],{},", or its own ",[285,583,301],{},"\u002F",[285,586,305],{},". It can't\nset both. Through ",[285,589,590],{},"extends",", the nearer layer's route wins whole. A task that\nsets ",[285,593,297],{}," drops the ",[285,596,560],{},[285,598,599],{},"effort"," it inherits, and one that sets\n",[285,602,301],{}," or ",[285,605,305],{}," drops the inherited ",[285,608,609],{},"profile",".",[556,612,613,614,584,616,618,619,622,623,610],{},"The profile takes the rung the task's own ",[285,615,560],{},[285,617,599],{}," would. The node\noverride, the item override and escalation still beat it. It beats the\nrepo's ",[285,620,621],{},"models:"," and the harness's ",[285,624,625],{},"defaults:",[556,627,628,629,632,633,638,639,642,643,645,646,648],{},"The task's profile ",[280,630,631],{},"name"," is frozen with the chain at ",[634,635,637],"a",{"href":636},"\u002Fconcepts\u002Fvocabulary#intake","intake",". The profile's\n",[280,640,641],{},"body"," is read from ",[285,644,309],{}," at every launch, so editing ",[285,647,287],{},"\nchanges every later launch that selects it, including on items already\nrunning.",[276,650,651,652,655,656,659,660,663],{},"Kraft checks each pairing: the profile exists, names a model for the task's\nharness's provider, and that provider accepts the model and the effort. A bad\npairing is reported, naming the chain, task, profile, provider and harness\n(",[285,653,654],{},"chain 'default' task 'implementation.main.implement': profile 'fast' has no model for provider 'codex' (harness 'codex')","), on Settings → Harnesses and in\n",[285,657,658],{},"kraft admin harnesses",". It's also a failing ",[285,661,662],{},"kraft admin doctor"," check, and\nKraft refuses a harness save that would cause one. At launch, a task with a\nbad pairing stops for a human with the same text. No other model is\nsubstituted.",[276,665,666,667,669,670,673,674,677,678,681,682,685,686,689,690,693,694,696,697,699],{},"The shipped ",[285,668,309],{}," has the three tiers above. The shipped library\nputs ",[285,671,672],{},"implementer",", the three ",[285,675,676],{},"repair_*"," tasks and ",[285,679,680],{},"strict_judge"," on\n",[285,683,684],{},"profile: strong"," (",[285,687,688],{},"sonnet"," at ",[285,691,692],{},"high"," effort). An install seeded before profiles\nexisted keeps its own files. ",[285,695,662],{}," lists the missing ",[285,698,313],{},"\nsection under what the install is missing.",[701,702,703],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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":324,"searchDepth":338,"depth":338,"links":705},[],"Named model tiers a task selects with profile: instead of model and effort.","md",null,{},true,{"title":216,"description":706},"n6sSohabVsFLipe6gm5_K1Wgl5bGywSuOM6hDuaATmI",[714,716],{"title":212,"path":213,"stem":214,"description":715,"children":-1},"The permission mode each harness runs in when no one can answer a prompt.",{"title":220,"path":221,"stem":222,"description":717,"children":-1},"The YAML file that describes one harness: required fields, argv fragments, constraints, and allowlists.",1790824510407]