[{"data":1,"prerenderedAt":1038},["ShallowReactive",2],{"navigation_docs":3,"-guides-switch-harness":270,"-guides-switch-harness-surround":1033},[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":272,"body":273,"description":1026,"extension":1027,"links":1028,"meta":1029,"navigation":1030,"path":96,"seo":1031,"stem":97,"__hash__":1032},"docs\u002F3.guides\u002F10.switch-harness.md","Switch a task to another harness",{"type":274,"value":275,"toc":1015},"minimark",[276,285,293,298,335,339,359,442,467,503,507,510,541,544,562,572,663,676,691,695,701,729,737,741,748,782,792,796,807,832,837,841,867,871,886,919,933,937,976,1004,1011],[277,278,279,280,284],"p",{},"Every agent task Kraft ships runs on Claude Code. This guide moves tasks to\nanother agent CLI, which Kraft calls a ",[281,282,283],"a",{"href":207},"harness",". The\nexamples use Codex. The steps are the same for the other shipped harnesses.",[277,286,287,288,292],{},"The harness is a property of the task in your templates. There is no\nper-item harness switch: ",[289,290,291],"code",{},"kraft item set-overrides"," changes the model and\neffort only. To run one item on another harness, give it a chain that sets the\nharness, as in step 2.",[294,295,297],"h2",{"id":296},"before-you-start","Before you start",[299,300,301,314,328],"ul",{},[302,303,304,305,308,309,313],"li",{},"The CLI is installed, on the ",[289,306,307],{},"PATH"," of the shell that starts Kraft, and\nlogged in. A worker has nobody to answer a login prompt. For Amp, Cursor and\nAntigravity, see ",[281,310,312],{"href":311},"\u002Fguides\u002Fadding-a-harness#set-up-harness-credentials","Set up harness credentials",".",[302,315,316,317,320,321,324,325,327],{},"For Gemini models on an individual Google account, use ",[289,318,319],{},"antigravity",", not\n",[289,322,323],{},"gemini",": Gemini CLI stopped serving free, Google AI Pro and Ultra accounts\non 2026-06-18. ",[289,326,323],{}," still works with a Gemini API key or Gemini Code\nAssist.",[302,329,330,331,334],{},"Read the harness's row in the ",[281,332,333],{"href":207},"harness table",". It lists\nwhat that CLI cannot do.",[294,336,338],{"id":337},"_1-check-the-harness-profile","1. Check the harness profile",[277,340,341,342,346,347,350,351,354,355,358],{},"A task names a ",[343,344,345],"strong",{},"profile"," from ",[289,348,349],{},"$KRAFT_HOME\u002Ftemplates\u002Fharnesses.yaml",", not a\nCLI. The shipped file has two profiles, ",[289,352,353],{},"claude"," and ",[289,356,357],{},"codex",":",[360,361,366],"pre",{"className":362,"code":363,"language":364,"meta":365,"style":365},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","harnesses:\n  codex:\n    provider: codex\n    enabled: true\n    executable: codex\n    defaults:\n      effort: medium\n","yaml","",[289,367,368,381,389,401,413,423,431],{"__ignoreMap":365},[369,370,373,377],"span",{"class":371,"line":372},"line",1,[369,374,376],{"class":375},"swJcz","harnesses",[369,378,380],{"class":379},"sMK4o",":\n",[369,382,384,387],{"class":371,"line":383},2,[369,385,386],{"class":375},"  codex",[369,388,380],{"class":379},[369,390,392,395,397],{"class":371,"line":391},3,[369,393,394],{"class":375},"    provider",[369,396,358],{"class":379},[369,398,400],{"class":399},"sfazB"," codex\n",[369,402,404,407,409],{"class":371,"line":403},4,[369,405,406],{"class":375},"    enabled",[369,408,358],{"class":379},[369,410,412],{"class":411},"sfNiH"," true\n",[369,414,416,419,421],{"class":371,"line":415},5,[369,417,418],{"class":375},"    executable",[369,420,358],{"class":379},[369,422,400],{"class":399},[369,424,426,429],{"class":371,"line":425},6,[369,427,428],{"class":375},"    defaults",[369,430,380],{"class":379},[369,432,434,437,439],{"class":371,"line":433},7,[369,435,436],{"class":375},"      effort",[369,438,358],{"class":379},[369,440,441],{"class":399}," medium\n",[277,443,444,445,448,449,452,453,452,456,452,458,460,461,464,465,313],{},"For another shipped harness, add a profile the same way, with ",[289,446,447],{},"provider"," set\nto its id (",[289,450,451],{},"cursor",", ",[289,454,455],{},"opencode",[289,457,323],{},[289,459,319],{}," or ",[289,462,463],{},"amp","). See\n",[281,466,164],{"href":165},[277,468,469,470,473,474,477,478,354,480,483,484,487,488,490,491,494,495,498,499,502],{},"A task with ",[289,471,472],{},"profile: strong"," gets its model from the ",[289,475,476],{},"profiles:"," section of\nthe same file, keyed by provider. The shipped ",[289,479,343],{},[289,481,482],{},"deep"," tiers name a\nCodex model. ",[289,485,486],{},"fast"," does not, so a ",[289,489,486],{}," task on Codex cannot start: the item\nstops with ",[289,492,493],{},"profile 'fast' has no model for provider 'codex'",".\n",[289,496,497],{},"kraft admin templates lint"," does not catch this. Add the provider to a tier\nbefore you move a task that uses it. Amp takes no model,\nso a task on Amp sets ",[289,500,501],{},"effort:"," itself instead of a profile.",[294,504,506],{"id":505},"_2-pick-which-tasks-move","2. Pick which tasks move",[277,508,509],{},"List the tasks each profile runs:",[360,511,515],{"className":512,"code":513,"language":514,"meta":365,"style":365},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","kraft admin harnesses\nkraft admin harnesses claude\n","bash",[289,516,517,529],{"__ignoreMap":365},[369,518,519,523,526],{"class":371,"line":372},[369,520,522],{"class":521},"sBMFI","kraft",[369,524,525],{"class":399}," admin",[369,527,528],{"class":399}," harnesses\n",[369,530,531,533,535,538],{"class":371,"line":383},[369,532,522],{"class":521},[369,534,525],{"class":399},[369,536,537],{"class":399}," harnesses",[369,539,540],{"class":399}," claude\n",[277,542,543],{},"Then choose how far the change reaches.",[277,545,546,549,550,553,554,557,558,561],{},[343,547,548],{},"Every chain."," Change ",[289,551,552],{},"harness: claude"," to ",[289,555,556],{},"harness: codex"," on the tasks you\nwant to move in ",[289,559,560],{},"library.yaml",". Every chain that extends them follows.",[277,563,564,567,568,571],{},[343,565,566],{},"One chain."," Leave the library alone and override the task in the chain\nfile. A key set next to ",[289,569,570],{},"extends"," wins over the library's:",[360,573,575],{"className":362,"code":574,"language":364,"meta":365,"style":365},"# chains\u002Fcodex-impl.yaml\nid: codex-impl\nnodes:\n  - id: implementation\n    kind: exec\n    tasks:\n      - id: implement\n        extends: implementer\n        harness: codex\n",[289,576,577,583,593,600,613,623,630,642,653],{"__ignoreMap":365},[369,578,579],{"class":371,"line":372},[369,580,582],{"class":581},"sHwdD","# chains\u002Fcodex-impl.yaml\n",[369,584,585,588,590],{"class":371,"line":383},[369,586,587],{"class":375},"id",[369,589,358],{"class":379},[369,591,592],{"class":399}," codex-impl\n",[369,594,595,598],{"class":371,"line":391},[369,596,597],{"class":375},"nodes",[369,599,380],{"class":379},[369,601,602,605,608,610],{"class":371,"line":403},[369,603,604],{"class":379},"  -",[369,606,607],{"class":375}," id",[369,609,358],{"class":379},[369,611,612],{"class":399}," implementation\n",[369,614,615,618,620],{"class":371,"line":415},[369,616,617],{"class":375},"    kind",[369,619,358],{"class":379},[369,621,622],{"class":399}," exec\n",[369,624,625,628],{"class":371,"line":425},[369,626,627],{"class":375},"    tasks",[369,629,380],{"class":379},[369,631,632,635,637,639],{"class":371,"line":433},[369,633,634],{"class":379},"      -",[369,636,607],{"class":375},[369,638,358],{"class":379},[369,640,641],{"class":399}," implement\n",[369,643,645,648,650],{"class":371,"line":644},8,[369,646,647],{"class":375},"        extends",[369,649,358],{"class":379},[369,651,652],{"class":399}," implementer\n",[369,654,656,659,661],{"class":371,"line":655},9,[369,657,658],{"class":375},"        harness",[369,660,358],{"class":379},[369,662,400],{"class":399},[277,664,665,668,669,672,673,313],{},[343,666,667],{},"One item."," File it on a chain like that one, with\n",[289,670,671],{},"kraft item create \"title\" --chain codex-impl",", or switch an item that has not\nstarted with ",[289,674,675],{},"kraft item set-chain ID --template codex-impl",[277,677,678,679,682,683,686,687,690],{},"Kraft's own ",[289,680,681],{},"kraft:"," skills, such as ",[289,684,685],{},"kraft:code-review",", are sent to the agent\nin its instructions, so they work on any harness. A skill from another plugin\n(",[289,688,689],{},"plugin:skill",") needs that plugin installed for the new CLI. If it cannot\nload, the task stops and asks for it.",[294,692,694],{"id":693},"_3-allow-the-profile","3. Allow the profile",[277,696,697,698,313],{},"Skip this step if nothing in your policy sets ",[289,699,700],{},"allowed_harnesses",[277,702,703,705,706,709,710,713,714,717,718,721,722,725,726,728],{},[289,704,700],{}," can appear in ",[289,707,708],{},"policy.yaml"," under ",[289,711,712],{},"defaults:"," or\n",[289,715,716],{},"maxima:",", in a repo's ",[289,719,720],{},"policy:"," in ",[289,723,724],{},"repos.yaml",", or in a chain, node or task\n",[289,727,720],{},". When it is set, it must include the new profile. Otherwise Kraft\nrefuses the item when you file it:",[360,730,735],{"className":731,"code":733,"language":734,"meta":365},[732],"language-text","kraft 422: policy.allowed_harnesses: implementation.main.implement: harness 'codex' is not in its allowed_harnesses ['claude']\n","text",[289,736,733],{"__ignoreMap":365},[294,738,740],{"id":739},"_4-check-tool-lists","4. Check tool lists",[277,742,743,744,747],{},"An ",[289,745,746],{},"allowed_tools"," list in the task's policy can stop the new harness from\nlaunching:",[299,749,750,763,771],{},[302,751,752,354,754,756,757,460,759,762],{},[289,753,323],{},[289,755,319],{}," have no way to restrict tools, so they refuse to\nlaunch under any ",[289,758,746],{},[289,760,761],{},"deny_tools"," list.",[302,764,765,767,768,313],{},[289,766,357],{}," enforces the list through Kraft's permission hook, which never sees\nits web search. It refuses a list that leaves out ",[289,769,770],{},"WebSearch",[302,772,773,775,776,354,779,781],{},[289,774,451],{}," refuses a list that leaves out ",[289,777,778],{},"WebFetch",[289,780,770],{},", for the\nsame reason.",[277,783,784,785,789,790,313],{},"The refusal happens at launch. The item stops for you, and the stop reason\nnames the harness and the missing tools. Add the tools to the list, or keep\nthat task on Claude. See ",[281,786,788],{"href":787},"\u002Freference\u002Fconfiguration\u002Fpolicy#policy-fields","Policy fields","\nand the ",[281,791,202],{"href":203},[294,793,795],{"id":794},"_5-decide-where-escalation-runs","5. Decide where escalation runs",[277,797,798,799,801,802,721,805,358],{},"An escalation turn runs on ",[289,800,353],{}," unless policy says otherwise. To move it\ntoo, set ",[289,803,804],{},"escalation_harness",[289,806,708],{},[360,808,810],{"className":362,"code":809,"language":364,"meta":365,"style":365},"defaults:\n  escalation_harness: codex   # or `item`: the harness the item's last agent task ran on\n",[289,811,812,819],{"__ignoreMap":365},[369,813,814,817],{"class":371,"line":372},[369,815,816],{"class":375},"defaults",[369,818,380],{"class":379},[369,820,821,824,826,829],{"class":371,"line":383},[369,822,823],{"class":375},"  escalation_harness",[369,825,358],{"class":379},[369,827,828],{"class":399}," codex",[369,830,831],{"class":581},"   # or `item`: the harness the item's last agent task ran on\n",[277,833,834,835,313],{},"See ",[281,836,224],{"href":225},[294,838,840],{"id":839},"_6-load-it","6. Load it",[360,842,844],{"className":512,"code":843,"language":514,"meta":365,"style":365},"kraft admin templates lint\nkraft admin reload\n",[289,845,846,858],{"__ignoreMap":365},[369,847,848,850,852,855],{"class":371,"line":372},[369,849,522],{"class":521},[369,851,525],{"class":399},[369,853,854],{"class":399}," templates",[369,856,857],{"class":399}," lint\n",[369,859,860,862,864],{"class":371,"line":383},[369,861,522],{"class":521},[369,863,525],{"class":399},[369,865,866],{"class":399}," reload\n",[294,868,870],{"id":869},"cost-reporting-changes","Cost reporting changes",[277,872,873,874,877,878,881,882,885],{},"Codex, Cursor, Amp and Antigravity report tokens but no cost. Kraft estimates\nit from ",[289,875,876],{},"prices.json"," when it can price the model: Codex on the model it\nlaunched with, Amp and Antigravity on the model their log names (Antigravity\nnames one only when launched with a base model id, such as ",[289,879,880],{},"gemini-3.8-flash","\nwith ",[289,883,884],{},"effort"," set). Cursor, a Codex task that passes no\nmodel, and any model the table lacks can't be priced. For those:",[299,887,888,900,916],{},[302,889,890,452,893,354,896,899],{},[289,891,892],{},"budget.work_item_usd",[289,894,895],{},"budget.daily_usd",[289,897,898],{},"kraft item create --budget","\ncount their sessions as $0 and warn once on the item's timeline.",[302,901,902,903,906,907,911,912,915],{},"A per-scope ",[289,904,905],{},"budget_usd"," treats their spend as unknown and stops the next\nlaunch in that scope for you. No higher cap passes that stop; see\n",[281,908,910],{"href":909},"\u002Fconcepts\u002Fcaps-and-budgets#raising-a-cap-on-a-stuck-item","Raising a cap","\nfor ",[289,913,914],{},"budget_usd=none",", the way past it.",[302,917,918],{},"The board shows their tokens, with no dollar figure.",[277,920,921,924,925,928,929,313],{},[289,922,923],{},"kraft admin doctor"," warns about each such harness. Use ",[289,926,927],{},"token_budget"," to\nbound them. See\n",[281,930,932],{"href":931},"\u002Fconcepts\u002Fcaps-and-budgets#harnesses-that-report-no-cost","Harnesses that report no cost",[294,934,936],{"id":935},"verify","Verify",[360,938,940],{"className":512,"code":939,"language":514,"meta":365,"style":365},"kraft admin harnesses\nkraft admin templates show codex-impl --resolved\nkraft admin doctor\n",[289,941,942,950,967],{"__ignoreMap":365},[369,943,944,946,948],{"class":371,"line":372},[369,945,522],{"class":521},[369,947,525],{"class":399},[369,949,528],{"class":399},[369,951,952,954,956,958,961,964],{"class":371,"line":383},[369,953,522],{"class":521},[369,955,525],{"class":399},[369,957,854],{"class":399},[369,959,960],{"class":399}," show",[369,962,963],{"class":399}," codex-impl",[369,965,966],{"class":399}," --resolved\n",[369,968,969,971,973],{"class":371,"line":391},[369,970,522],{"class":521},[369,972,525],{"class":399},[369,974,975],{"class":399}," doctor\n",[299,977,978,984,993],{},[302,979,980,983],{},[289,981,982],{},"kraft admin harnesses"," lists the moved library tasks under the new profile.\nIt lists library tasks only, so a chain-level override does not appear there.",[302,985,986,989,990,992],{},[289,987,988],{},"show --resolved"," prints ",[289,991,556],{}," on each task you moved.",[302,994,995,997,998,1001,1002,313],{},[289,996,923],{}," has an ",[289,999,1000],{},"agent: codex"," row once a chain selects the\nprofile. It fails when the executable is not on ",[289,1003,307],{},[277,1005,1006,1007,1010],{},"File a small item on the chain. ",[289,1008,1009],{},"kraft view show ID"," shows its token count and\nno dollar figure once a Codex session has run.",[1012,1013,1014],"style",{},"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 pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}",{"title":365,"searchDepth":383,"depth":383,"links":1016},[1017,1018,1019,1020,1021,1022,1023,1024,1025],{"id":296,"depth":383,"text":297},{"id":337,"depth":383,"text":338},{"id":505,"depth":383,"text":506},{"id":693,"depth":383,"text":694},{"id":739,"depth":383,"text":740},{"id":794,"depth":383,"text":795},{"id":839,"depth":383,"text":840},{"id":869,"depth":383,"text":870},{"id":935,"depth":383,"text":936},"Run some or all of a chain's agent tasks on Codex, Cursor, OpenCode, Gemini, Antigravity or Amp instead of Claude Code, and what changes when you do.","md",null,{},{"title":95},{"title":272,"description":1026},"rZzLQbkKf1RrIsmw-SuFsyssuZLhahYjXMQ9Mykx2e4",[1034,1036],{"title":91,"path":92,"stem":93,"description":1035,"children":-1},"Add a lint node to a copy of the default chain, with an agent that fixes what lint reports, a time cap, and no way to skip it.",{"title":99,"path":100,"stem":101,"description":1037,"children":-1},"Pick up new shipped chains, library tasks and policy after a Kraft upgrade, without losing your own edits.",1790824506113]