[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"docs-page:\u002Fdocs\u002Fharnesses-and-models":3,"docs-navigation-links":357},{"id":4,"title":5,"body":6,"description":349,"extension":350,"meta":351,"navigation":352,"path":353,"seo":354,"stem":355,"__hash__":356},"docs\u002Fdocs\u002Fharnesses-and-models.md","Harnesses and models",{"type":7,"value":8,"toc":341},"minimark",[9,22,27,92,95,103,107,117,161,164,170,174,181,224,227,277,288,301,306,317,323,326,330,337],[10,11,12,13,17,18,21],"p",{},"The ",[14,15,16],"code",{},"harness"," selects the coding-agent runtime. The ",[14,19,20],{},"model"," selects an allowed\nmodel for that harness. Both fields are required when creating a chat and are\ninherited on later turns.",[23,24,26],"h2",{"id":25},"codex","Codex",[28,29,34],"pre",{"className":30,"code":31,"language":32,"meta":33,"style":33},"language-json shiki shiki-themes github-dark","{\n  \"harness\": \"codex\",\n  \"model\": \"gpt-5.5\",\n  \"provider_api_key\": \"sk-proj-...\"\n}\n","json","",[14,35,36,45,62,75,86],{"__ignoreMap":33},[37,38,41],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"s95oV","{\n",[37,46,48,52,55,59],{"class":39,"line":47},2,[37,49,51],{"class":50},"sDLfK","  \"harness\"",[37,53,54],{"class":43},": ",[37,56,58],{"class":57},"sU2Wk","\"codex\"",[37,60,61],{"class":43},",\n",[37,63,65,68,70,73],{"class":39,"line":64},3,[37,66,67],{"class":50},"  \"model\"",[37,69,54],{"class":43},[37,71,72],{"class":57},"\"gpt-5.5\"",[37,74,61],{"class":43},[37,76,78,81,83],{"class":39,"line":77},4,[37,79,80],{"class":50},"  \"provider_api_key\"",[37,82,54],{"class":43},[37,84,85],{"class":57},"\"sk-proj-...\"\n",[37,87,89],{"class":39,"line":88},5,[37,90,91],{"class":43},"}\n",[10,93,94],{},"Codex accepts a bare OpenAI model identifier and requires an OpenAI key.\nCurrently accepted families include:",[28,96,101],{"className":97,"code":99,"language":100,"meta":33},[98],"language-text","gpt-5\ngpt-5-codex\ngpt-5-mini\ngpt-5-nano\ngpt-5-pro\ngpt-5.1\ngpt-5.1-codex\ngpt-5.1-codex-max\ngpt-5.1-codex-mini\ngpt-5.2\ngpt-5.2-codex\ngpt-5.2-pro\ngpt-5.3-codex\ngpt-5.4\ngpt-5.4-mini\ngpt-5.4-nano\ngpt-5.4-pro\ngpt-5.5\ngpt-5.5-pro\ngpt-5.6-luna\ngpt-5.6-sol\ngpt-5.6-terra\n","text",[14,102,99],{"__ignoreMap":33},[23,104,106],{"id":105},"claude","Claude",[10,108,109,110,112,113,116],{},"The harness value is ",[14,111,105],{},", not ",[14,114,115],{},"claude-code",":",[28,118,120],{"className":30,"code":119,"language":32,"meta":33,"style":33},"{\n  \"harness\": \"claude\",\n  \"model\": \"claude-opus-4-8\",\n  \"provider_api_key\": \"sk-ant-...\"\n}\n",[14,121,122,126,137,148,157],{"__ignoreMap":33},[37,123,124],{"class":39,"line":40},[37,125,44],{"class":43},[37,127,128,130,132,135],{"class":39,"line":47},[37,129,51],{"class":50},[37,131,54],{"class":43},[37,133,134],{"class":57},"\"claude\"",[37,136,61],{"class":43},[37,138,139,141,143,146],{"class":39,"line":64},[37,140,67],{"class":50},[37,142,54],{"class":43},[37,144,145],{"class":57},"\"claude-opus-4-8\"",[37,147,61],{"class":43},[37,149,150,152,154],{"class":39,"line":77},[37,151,80],{"class":50},[37,153,54],{"class":43},[37,155,156],{"class":57},"\"sk-ant-...\"\n",[37,158,159],{"class":39,"line":88},[37,160,91],{"class":43},[10,162,163],{},"Claude accepts a bare Anthropic model identifier and requires an Anthropic key:",[28,165,168],{"className":166,"code":167,"language":100,"meta":33},[98],"claude-fable-5\nclaude-haiku-4-5\nclaude-opus-4-1\nclaude-opus-4-5\nclaude-opus-4-6\nclaude-opus-4-7\nclaude-opus-4-8\nclaude-sonnet-4-5\nclaude-sonnet-4-6\nclaude-sonnet-5\n",[14,169,167],{"__ignoreMap":33},[23,171,173],{"id":172},"opencode","OpenCode",[10,175,176,177,180],{},"OpenCode uses a ",[14,178,179],{},"provider\u002Fmodel"," identifier:",[28,182,184],{"className":30,"code":183,"language":32,"meta":33,"style":33},"{\n  \"harness\": \"opencode\",\n  \"model\": \"openai\u002Fgpt-5.6-sol\",\n  \"provider_api_key\": \"sk-proj-...\"\n}\n",[14,185,186,190,201,212,220],{"__ignoreMap":33},[37,187,188],{"class":39,"line":40},[37,189,44],{"class":43},[37,191,192,194,196,199],{"class":39,"line":47},[37,193,51],{"class":50},[37,195,54],{"class":43},[37,197,198],{"class":57},"\"opencode\"",[37,200,61],{"class":43},[37,202,203,205,207,210],{"class":39,"line":64},[37,204,67],{"class":50},[37,206,54],{"class":43},[37,208,209],{"class":57},"\"openai\u002Fgpt-5.6-sol\"",[37,211,61],{"class":43},[37,213,214,216,218],{"class":39,"line":77},[37,215,80],{"class":50},[37,217,54],{"class":43},[37,219,85],{"class":57},[37,221,222],{"class":39,"line":88},[37,223,91],{"class":43},[10,225,226],{},"Supported prefixes are:",[228,229,230,243],"table",{},[231,232,233],"thead",{},[234,235,236,240],"tr",{},[237,238,239],"th",{},"Prefix",[237,241,242],{},"Provider key",[244,245,246,257,267],"tbody",{},[234,247,248,254],{},[249,250,251],"td",{},[14,252,253],{},"openai\u002F",[249,255,256],{},"OpenAI",[234,258,259,264],{},[249,260,261],{},[14,262,263],{},"anthropic\u002F",[249,265,266],{},"Anthropic",[234,268,269,274],{},[249,270,271],{},[14,272,273],{},"opencode\u002F",[249,275,276],{},"OpenCode Zen",[10,278,279,280,283,284,287],{},"OpenAI and Anthropic identifiers use the model catalogs shown above with their\nprefix added. Examples include ",[14,281,282],{},"anthropic\u002Fclaude-sonnet-4-5"," and\n",[14,285,286],{},"openai\u002Fgpt-5.5",".",[10,289,290,291,61,294,297,298,287],{},"OpenCode Zen includes models such as ",[14,292,293],{},"opencode\u002Fkimi-k2.6",[14,295,296],{},"opencode\u002Fminimax-m2.7",", and ",[14,299,300],{},"opencode\u002Fgemini-3.5-flash",[302,303,305],"h3",{"id":304},"free-zen-models","Free Zen models",[10,307,308,309,312,313,316],{},"Models in the Zen catalog whose identifier ends in ",[14,310,311],{},"-free"," can run without a\n",[14,314,315],{},"provider_api_key",". The current free identifiers include:",[28,318,321],{"className":319,"code":320,"language":100,"meta":33},[98],"opencode\u002Fdeepseek-v4-flash-free\nopencode\u002Flaguna-s-2.1-free\nopencode\u002Fmimo-v2.5-free\nopencode\u002Fnemotron-3-ultra-free\nopencode\u002Fnorth-mini-code-free\n",[14,322,320],{"__ignoreMap":33},[10,324,325],{},"Other Zen models require an OpenCode Zen key.",[23,327,329],{"id":328},"validation","Validation",[10,331,332,333,336],{},"Epho validates the harness\u002Fmodel pair before creating a chat. Unknown harnesses,\nmissing provider prefixes, and unsupported models return ",[14,334,335],{},"422",". The validation\nmessage includes the model identifiers currently accepted by that harness.",[338,339,340],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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);}",{"title":33,"searchDepth":47,"depth":47,"links":342},[343,344,345,348],{"id":25,"depth":47,"text":26},{"id":105,"depth":47,"text":106},{"id":172,"depth":47,"text":173,"children":346},[347],{"id":304,"depth":64,"text":305},{"id":328,"depth":47,"text":329},"Select Codex, Claude, or OpenCode and provide the correct model identifier.","md",{},true,"\u002Fdocs\u002Fharnesses-and-models",{"title":5,"description":349},"docs\u002Fharnesses-and-models","AakII6XzK4u6B2lrMDLbxAF21MUxfnpWbP5hO36oOO0",[358,361,364,367,370,373,374,377,380,383,386],{"path":359,"title":360},"\u002Fdocs","Overview",{"path":362,"title":363},"\u002Fdocs\u002Fauthentication","Authentication",{"path":365,"title":366},"\u002Fdocs\u002Fchats-and-turns","Chats and turns",{"path":368,"title":369},"\u002Fdocs\u002Ferrors","Errors and statuses",{"path":371,"title":372},"\u002Fdocs\u002Ffiles-and-repositories","Files and repositories",{"path":353,"title":5},{"path":375,"title":376},"\u002Fdocs\u002Fmcp-and-environment","MCP and environment",{"path":378,"title":379},"\u002Fdocs\u002Fquickstart","Quickstart",{"path":381,"title":382},"\u002Fdocs\u002Fresources-and-billing","Resources and billing",{"path":384,"title":385},"\u002Fdocs\u002Fresuming-chats","Resuming chats",{"path":387,"title":388},"\u002Fdocs\u002Frunning-agents","Running agents",1785310516453]