{"meta":{"version":"17.3.0","captured":"2026-08-13","grid":{"cols":164,"rows":73},"terminal":"Ghostty","schemaSha256":"d957d48cb5ce21d93b71ab2b848c747fffffd93401e6dbbe18b25da07594fb16","sourceRevision":"326d24bd40d9858e24e1036ae739c27c72eeb543","settingCount":333,"coverage":{"placed":308,"hidden":25},"official":false},"tabs":[{"id":"appearance","label":"Appearance","icon":"\ud83c\udfa8"},{"id":"model","label":"Model","icon":"\ud83e\udd16"},{"id":"interaction","label":"Interaction","icon":"\u2328"},{"id":"context","label":"Context","icon":"\ud83d\udccb"},{"id":"memory","label":"Memory","icon":"\ud83e\udde0"},{"id":"files","label":"Files","icon":"\ud83d\udcc1"},{"id":"shell","label":"Shell","icon":"\ud83d\udcbb"},{"id":"tools","label":"Tools","icon":"\ud83d\udd27"},{"id":"tasks","label":"Tasks","icon":"\ud83d\udce6"},{"id":"providers","label":"Providers","icon":"\ud83c\udf10"},{"id":"plugins","label":"Plugins","icon":"\ud83d\udce6"}],"groups":{"appearance":["Theme","Status Line","Display","Images"],"model":["Thinking","Sampling","Prompt","Retry & Fallback","Advisor","Prewalk","Vision"],"interaction":["Input","Approvals","Notifications","Speech","Collab","Magic Keywords","Startup & Updates","Power (macOS)","Agent","Git"],"context":["General","Compaction","Rules (TTSR)","Experimental"],"memory":["General","Auto-Learn","Mnemopi","Hindsight"],"files":["Editing","Reading","Read Summaries","LSP"],"shell":["Bash","Eval & Runtimes"],"tools":["Available Tools","Todos","Grep & Browser","Computer","GitHub","Output Limits","Execution","Discovery & MCP","Developer"],"tasks":["Modes","Subagents","Isolation","Commands & Skills"],"providers":["Services","Fireworks","Tiny Model","Protocol","Timeouts","Privacy"]},"shots":[{"variant":"default","variantLabel":"Shipped defaults","tab":"appearance","png":"default/appearance.png","webp":"default/appearance.webp","overlay":{},"width":2198,"height":1438,"cols":164,"rows":73,"cellH":0.020177,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.067102,"1":0.087279,"2":0.107455,"3":0.127632,"4":0.147808,"5":0.167985,"6":0.188162,"7":0.208338,"8":0.228515,"9":0.248691,"10":0.268868,"11":0.289044,"12":0.309221,"13":0.329398,"14":0.349574,"15":0.369751,"16":0.389927,"17":0.410104,"18":0.43028,"19":0.450457,"20":0.470633,"21":0.49081,"22":0.510987,"23":0.531163,"24":0.55134,"25":0.571516,"26":0.591693,"27":0.611869,"28":0.632046,"29":0.652222,"30":0.672399,"31":0.692576,"32":0.712752,"33":0.732929,"34":0.753105,"35":0.773282,"36":0.793458,"37":0.813635,"64":0.834063,"65":0.854239,"68":0.874435,"69":0.894612,"70":0.914788,"71":0.934965,"72":0.955141},"droppedRows":[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,66,67],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"model","png":"default/model.png","webp":"default/model.webp","overlay":{},"width":2198,"height":1583,"cols":164,"rows":73,"cellH":0.018328,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.060956,"1":0.079284,"2":0.097613,"3":0.115941,"4":0.134269,"5":0.152598,"6":0.170926,"7":0.189255,"8":0.207583,"9":0.225912,"10":0.24424,"11":0.262568,"12":0.280897,"13":0.299225,"14":0.317554,"15":0.335882,"16":0.354211,"17":0.372539,"18":0.390867,"19":0.409196,"20":0.427524,"21":0.445853,"22":0.464181,"23":0.482509,"24":0.500838,"25":0.519166,"26":0.537495,"27":0.555823,"28":0.574152,"29":0.59248,"30":0.610808,"31":0.629137,"32":0.647465,"33":0.665794,"34":0.684122,"35":0.702451,"36":0.720779,"37":0.739107,"38":0.757436,"39":0.775764,"40":0.794093,"41":0.812421,"42":0.830749,"43":0.849078,"44":0.867406,"67":0.885928,"68":0.904256,"70":0.922593,"71":0.940922,"72":0.95925},"droppedRows":[45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"interaction","png":"default/interaction.png","webp":"default/interaction.webp","overlay":{},"width":2198,"height":1844,"cols":164,"rows":73,"cellH":0.015734,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.052328,"1":0.068062,"2":0.083797,"3":0.099531,"4":0.115265,"5":0.130999,"6":0.146733,"7":0.162468,"8":0.178202,"9":0.193936,"10":0.20967,"11":0.225404,"12":0.241139,"13":0.256873,"14":0.272607,"15":0.288341,"16":0.304076,"17":0.31981,"18":0.335544,"19":0.351278,"20":0.367012,"21":0.382747,"22":0.398481,"23":0.414215,"24":0.429949,"25":0.445683,"26":0.461418,"27":0.477152,"28":0.492886,"29":0.50862,"30":0.524355,"31":0.540089,"32":0.555823,"33":0.571557,"34":0.587291,"35":0.603026,"36":0.61876,"37":0.634494,"38":0.650228,"39":0.665962,"40":0.681697,"41":0.697431,"42":0.713165,"43":0.728899,"44":0.744633,"45":0.760368,"46":0.776102,"47":0.791836,"48":0.80757,"49":0.823305,"50":0.839039,"51":0.854773,"52":0.870507,"53":0.886241,"67":0.902074,"68":0.917808,"70":0.933549,"71":0.949284,"72":0.965018},"droppedRows":[54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"context","png":"default/context.png","webp":"default/context.webp","overlay":{},"width":2198,"height":1235,"cols":164,"rows":73,"cellH":0.023493,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.078132,"1":0.101625,"2":0.125118,"3":0.148611,"4":0.172104,"5":0.195597,"6":0.21909,"7":0.242583,"8":0.266076,"9":0.289569,"10":0.313062,"11":0.336555,"12":0.360048,"13":0.383541,"14":0.407034,"15":0.430527,"16":0.45402,"17":0.477513,"18":0.501007,"19":0.5245,"20":0.547993,"21":0.571486,"22":0.594979,"23":0.618472,"24":0.641965,"25":0.665458,"26":0.688951,"27":0.712444,"28":0.735937,"29":0.75943,"30":0.782923,"31":0.806416,"32":0.829909,"67":0.853784,"68":0.877277,"70":0.900782,"71":0.924275,"72":0.947768},"droppedRows":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"memory","png":"default/memory.png","webp":"default/memory.webp","overlay":{},"width":2198,"height":510,"cols":164,"rows":73,"cellH":0.05689,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.189202,"1":0.246092,"2":0.302982,"3":0.359872,"4":0.416762,"5":0.473652,"6":0.530542,"7":0.587432,"67":0.645929,"68":0.702819,"70":0.759736,"71":0.816626,"72":0.873516},"droppedRows":[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"files","png":"default/files.png","webp":"default/files.webp","overlay":{},"width":2198,"height":1061,"cols":164,"rows":73,"cellH":0.027346,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.090945,"1":0.118291,"2":0.145637,"3":0.172983,"4":0.200329,"5":0.227674,"6":0.25502,"7":0.282366,"8":0.309712,"9":0.337058,"10":0.364403,"11":0.391749,"12":0.419095,"13":0.446441,"14":0.473787,"15":0.501132,"16":0.528478,"17":0.555824,"18":0.58317,"19":0.610515,"20":0.637861,"21":0.665207,"22":0.692553,"23":0.719899,"24":0.747244,"25":0.77459,"26":0.801936,"67":0.829805,"68":0.857151,"70":0.88451,"71":0.911856,"72":0.939202},"droppedRows":[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"shell","png":"default/shell.png","webp":"default/shell.webp","overlay":{},"width":2198,"height":858,"cols":164,"rows":73,"cellH":0.033816,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.112463,"1":0.146278,"2":0.180094,"3":0.21391,"4":0.247726,"5":0.281541,"6":0.315357,"7":0.349173,"8":0.382989,"9":0.416804,"10":0.45062,"11":0.484436,"12":0.518251,"13":0.552067,"14":0.585883,"15":0.619699,"16":0.653514,"17":0.68733,"18":0.721146,"19":0.754961,"67":0.789538,"68":0.823354,"70":0.857186,"71":0.891001,"72":0.924817},"droppedRows":[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"tools","png":"default/tools.png","webp":"default/tools.webp","overlay":{},"width":2198,"height":2163,"cols":164,"rows":73,"cellH":0.013414,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.044611,"1":0.058024,"2":0.071438,"3":0.084852,"4":0.098266,"5":0.111679,"6":0.125093,"7":0.138507,"8":0.151921,"9":0.165334,"10":0.178748,"11":0.192162,"12":0.205575,"13":0.218989,"14":0.232403,"15":0.245817,"16":0.25923,"17":0.272644,"18":0.286058,"19":0.299472,"20":0.312885,"21":0.326299,"22":0.339713,"23":0.353126,"24":0.36654,"25":0.379954,"26":0.393368,"27":0.406781,"28":0.420195,"29":0.433609,"30":0.447023,"31":0.460436,"32":0.47385,"33":0.487264,"34":0.500677,"35":0.514091,"36":0.527505,"37":0.540919,"38":0.554332,"39":0.567746,"40":0.58116,"41":0.594574,"42":0.607987,"43":0.621401,"44":0.634815,"45":0.648228,"46":0.661642,"47":0.675056,"48":0.68847,"49":0.701883,"50":0.715297,"51":0.728711,"52":0.742124,"53":0.755538,"54":0.768952,"55":0.782366,"56":0.795779,"57":0.809193,"58":0.822607,"59":0.836021,"60":0.849434,"61":0.862848,"62":0.876262,"63":0.889675,"64":0.903089,"67":0.916516,"68":0.929929,"70":0.94335,"71":0.956763,"72":0.970177},"droppedRows":[65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"tasks","png":"default/tasks.png","webp":"default/tasks.webp","overlay":{},"width":2198,"height":1264,"cols":164,"rows":73,"cellH":0.022954,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.076339,"1":0.099293,"2":0.122247,"3":0.145202,"4":0.168156,"5":0.19111,"6":0.214064,"7":0.237018,"8":0.259972,"9":0.282926,"10":0.30588,"11":0.328834,"12":0.351788,"13":0.374742,"14":0.397696,"15":0.42065,"16":0.443604,"17":0.466558,"18":0.489512,"19":0.512466,"20":0.53542,"21":0.558374,"22":0.581328,"23":0.604282,"24":0.627236,"25":0.65019,"26":0.673144,"27":0.696098,"28":0.719052,"29":0.742006,"30":0.76496,"31":0.787914,"32":0.810868,"33":0.833822,"67":0.857139,"68":0.880093,"70":0.903058,"71":0.926012,"72":0.948966},"droppedRows":[34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"providers","png":"default/providers.png","webp":"default/providers.webp","overlay":{},"width":2198,"height":1496,"cols":164,"rows":73,"cellH":0.019394,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.064501,"1":0.083895,"2":0.103289,"3":0.122684,"4":0.142078,"5":0.161472,"6":0.180867,"7":0.200261,"8":0.219655,"9":0.23905,"10":0.258444,"11":0.277838,"12":0.297232,"13":0.316627,"14":0.336021,"15":0.355415,"16":0.37481,"17":0.394204,"18":0.413598,"19":0.432993,"20":0.452387,"21":0.471781,"22":0.491176,"23":0.51057,"24":0.529964,"25":0.549358,"26":0.568753,"27":0.588147,"28":0.607541,"29":0.626936,"30":0.64633,"31":0.665724,"32":0.685119,"33":0.704513,"34":0.723907,"35":0.743302,"36":0.762696,"37":0.78209,"38":0.801485,"39":0.820879,"40":0.840273,"67":0.859909,"68":0.879303,"69":0.898697,"70":0.918092,"71":0.937486,"72":0.95688},"droppedRows":[41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66],"splitCol":23},{"variant":"default","variantLabel":"Shipped defaults","tab":"plugins","png":"default/plugins.png","webp":"default/plugins.webp","overlay":{},"width":2198,"height":539,"cols":164,"rows":73,"cellH":0.053829,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.179022,"1":0.232851,"2":0.286681,"3":0.34051,"4":0.394339,"5":0.448168,"6":0.501997,"7":0.555826,"8":0.609655,"9":0.663484,"10":0.717313,"70":0.772663,"71":0.826492,"72":0.880321},"droppedRows":[11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69],"splitCol":null},{"variant":"expanded","variantLabel":"Conditional settings revealed","tab":"model","png":"expanded/model.png","webp":"expanded/model.webp","overlay":{"advisor.enabled":true,"retry.usageAwareFallback":true,"defaultThinkingLevel":"auto","autolearn.enabled":true,"memory.backend":"mnemopi","features.unexpectedStopDetection":true},"width":2198,"height":1786,"cols":164,"rows":73,"cellH":0.016245,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.054027,"1":0.070273,"2":0.086518,"3":0.102763,"4":0.119008,"5":0.135253,"6":0.151499,"7":0.167744,"8":0.183989,"9":0.200234,"10":0.216479,"11":0.232724,"12":0.24897,"13":0.265215,"14":0.28146,"15":0.297705,"16":0.31395,"17":0.330196,"18":0.346441,"19":0.362686,"20":0.378931,"21":0.395176,"22":0.411421,"23":0.427667,"24":0.443912,"25":0.460157,"26":0.476402,"27":0.492647,"28":0.508892,"29":0.525138,"30":0.541383,"31":0.557628,"32":0.573873,"33":0.590118,"34":0.606364,"35":0.622609,"36":0.638854,"37":0.655099,"38":0.671344,"39":0.687589,"40":0.703835,"41":0.72008,"42":0.736325,"43":0.75257,"44":0.768815,"45":0.785061,"46":0.801306,"47":0.817551,"48":0.833796,"49":0.850041,"50":0.866286,"51":0.882532,"67":0.898893,"68":0.915139,"70":0.931392,"71":0.947637,"72":0.963882},"droppedRows":[52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"expanded","variantLabel":"Conditional settings revealed","tab":"memory","png":"expanded/memory.png","webp":"expanded/memory.webp","overlay":{"advisor.enabled":true,"retry.usageAwareFallback":true,"defaultThinkingLevel":"auto","autolearn.enabled":true,"memory.backend":"mnemopi","features.unexpectedStopDetection":true},"width":2198,"height":1090,"cols":164,"rows":73,"cellH":0.026618,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.088526,"1":0.115144,"2":0.141762,"3":0.16838,"4":0.194999,"5":0.221617,"6":0.248235,"7":0.274853,"8":0.301472,"9":0.32809,"10":0.354708,"11":0.381326,"12":0.407945,"13":0.434563,"14":0.461181,"15":0.487799,"16":0.514418,"17":0.541036,"18":0.567654,"19":0.594272,"20":0.620891,"21":0.647509,"22":0.674127,"23":0.700745,"24":0.727364,"25":0.753982,"26":0.7806,"27":0.807218,"67":0.834334,"68":0.860952,"70":0.887583,"71":0.914201,"72":0.940819},"droppedRows":[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23},{"variant":"expanded","variantLabel":"Conditional settings revealed","tab":"providers","png":"expanded/providers.png","webp":"expanded/providers.webp","overlay":{"advisor.enabled":true,"retry.usageAwareFallback":true,"defaultThinkingLevel":"auto","autolearn.enabled":true,"memory.backend":"mnemopi","features.unexpectedStopDetection":true},"width":2198,"height":1496,"cols":164,"rows":73,"cellH":0.019394,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.064501,"1":0.083895,"2":0.103289,"3":0.122684,"4":0.142078,"5":0.161472,"6":0.180867,"7":0.200261,"8":0.219655,"9":0.23905,"10":0.258444,"11":0.277838,"12":0.297232,"13":0.316627,"14":0.336021,"15":0.355415,"16":0.37481,"17":0.394204,"18":0.413598,"19":0.432993,"20":0.452387,"21":0.471781,"22":0.491176,"23":0.51057,"24":0.529964,"25":0.549358,"26":0.568753,"27":0.588147,"28":0.607541,"29":0.626936,"30":0.64633,"31":0.665724,"32":0.685119,"33":0.704513,"34":0.723907,"35":0.743302,"36":0.762696,"37":0.78209,"38":0.801485,"39":0.820879,"40":0.840273,"67":0.859909,"68":0.879303,"69":0.898697,"70":0.918092,"71":0.937486,"72":0.95688},"droppedRows":[41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66],"splitCol":23},{"variant":"hindsight","variantLabel":"Hindsight memory backend","tab":"memory","png":"hindsight/memory.png","webp":"hindsight/memory.webp","overlay":{"memory.backend":"hindsight"},"width":2198,"height":800,"cols":164,"rows":73,"cellH":0.036267,"cellW":0.005878,"gridLeft":0.017743,"rowTop":{"0":0.120616,"1":0.156884,"2":0.193151,"3":0.229418,"4":0.265686,"5":0.301953,"6":0.33822,"7":0.374488,"8":0.410755,"9":0.447023,"10":0.48329,"11":0.519557,"12":0.555825,"13":0.592092,"14":0.628359,"15":0.664627,"16":0.700894,"17":0.737161,"67":0.77428,"68":0.810547,"70":0.846832,"71":0.883099,"72":0.919366},"droppedRows":[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,69],"splitCol":23}],"settings":[{"path":"theme.dark","tab":"appearance","group":"Theme","label":"Dark Theme","description":"Theme used when the terminal has a dark background","type":"string","default":"titanium","values":null,"options":null,"runtimeOptions":true,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Theme selected when OMP detects a dark terminal background. The runtime theme registry supplies the choices.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":4,"value":"titanium"}}},{"path":"theme.light","tab":"appearance","group":"Theme","label":"Light Theme","description":"Theme used when the terminal has a light background","type":"string","default":"light","values":null,"options":null,"runtimeOptions":true,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Theme selected when OMP detects a light terminal background.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":5,"value":"light"}}},{"path":"symbolPreset","tab":"appearance","group":"Theme","label":"Symbol Preset","description":"Glyph set for icons and symbols (Unicode, Nerd Font, or ASCII)","type":"enum","default":"unicode","values":["unicode","nerd","ascii"],"options":[{"value":"unicode","label":"Unicode","description":"Standard symbols (default)"},{"value":"nerd","label":"Nerd Font","description":"Requires Nerd Font"},{"value":"ascii","label":"ASCII","description":"Maximum compatibility"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects the glyph vocabulary used across the TUI. Nerd Font mode uses private-use glyphs and therefore depends on the terminal font.","impacts":["compatibility","ergonomics"],"guidance":{"level":"consider","value":"nerd","why":"Fine as long as your terminal font has Nerd Font glyphs."},"shown":{"default":{"row":6,"value":"unicode"}}},{"path":"colorBlindMode","tab":"appearance","group":"Theme","label":"Color-Blind Mode","description":"Use blue instead of green for diff additions","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Replaces green-centric positive/diff-addition cues with a blue-oriented palette so state is not encoded only by red/green contrast.","impacts":["accessibility"],"guidance":null,"shown":{"default":{"row":7,"value":"false"}}},{"path":"statusLine.preset","tab":"appearance","group":"Status Line","label":"Status Line Preset","description":"Pre-built status line configurations","type":"enum","default":"default","values":["default","minimal","compact","full","nerd","ascii","custom"],"options":[{"value":"default","label":"Default","description":"Model, path, git, context, tokens, cost"},{"value":"minimal","label":"Minimal","description":"Path and git only"},{"value":"compact","label":"Compact","description":"Model, git, cost, context"},{"value":"full","label":"Full","description":"All segments including time"},{"value":"nerd","label":"Nerd","description":"Maximum info with Nerd Font icons"},{"value":"ascii","label":"ASCII","description":"No special characters"},{"value":"custom","label":"Custom","description":"User-defined segments"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Loads a predefined ordered set of status-line segments. Custom permits explicit segment arrays in config.","impacts":["observability","ergonomics"],"guidance":{"level":"consider","value":"nerd","why":"A good high-information preset for an agent-heavy workflow."},"shown":{"default":{"row":9,"value":"default"}}},{"path":"statusLine.separator","tab":"appearance","group":"Status Line","label":"Status Line Separator","description":"Style of separators between segments","type":"enum","default":"powerline-thin","values":["powerline","powerline-thin","slash","pipe","block","none","ascii"],"options":[{"value":"powerline","label":"Powerline","description":"Solid arrows (Nerd Font)"},{"value":"powerline-thin","label":"Thin chevron","description":"Thin arrows (Nerd Font)"},{"value":"slash","label":"Slash","description":"Forward slashes"},{"value":"pipe","label":"Pipe","description":"Vertical pipes"},{"value":"block","label":"Block","description":"Solid blocks"},{"value":"none","label":"None","description":"Space only"},{"value":"ascii","label":"ASCII","description":"Greater-than signs"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls the glyph drawn between status-line segments; powerline variants rely on compatible glyph rendering.","impacts":["compatibility","ergonomics"],"guidance":null,"shown":{"default":{"row":10,"value":"powerline-thin"}}},{"path":"statusLine.sessionAccent","tab":"appearance","group":"Status Line","label":"Session Accent","description":"Use the session name color for the editor border and status line gap","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Derives an accent from the session identity so parallel OMP sessions are visually distinguishable.","impacts":["observability"],"guidance":null,"shown":{"default":{"row":11,"value":"true"}}},{"path":"statusLine.transparent","tab":"appearance","group":"Status Line","label":"Transparent Status Line","description":"Use the terminal's default background for the status line instead of the theme's `statusLineBg`. Powerline end caps are dropped because they need a contrasting fill to bridge into the surrounding terminal.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Removes the filled status-line background and end caps; this is visual only and does not change status data.","impacts":["ergonomics"],"guidance":{"level":"consider","value":"true","why":"Purely aesthetic; no operational downside beyond reduced visual separation."},"shown":{"default":{"row":12,"value":"false"}}},{"path":"statusLine.compactThinkingLevel","tab":"appearance","group":"Status Line","label":"Compact Thinking Level","description":"Show the thinking level as a single icon on the model name instead of a separate ` \u00b7 <level>` suffix.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Abbreviates the displayed reasoning-effort label to save horizontal space.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":13,"value":"false"}}},{"path":"statusLine.showHookStatus","tab":"appearance","group":"Status Line","label":"Show Hook Status","description":"Display hook status messages below the status line","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Shows whether extension hooks are currently active/running so invisible automation remains observable.","impacts":["observability","reliability"],"guidance":null,"shown":{"default":{"row":14,"value":"true"}}},{"path":"terminal.showProgress","tab":"appearance","group":"Display","label":"Native Terminal Progress","description":"Emit OSC 9;4 indeterminate progress while the agent or context maintenance is running","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Emits terminal-native progress notifications (OSC 9;4) while a turn is running. Unsupported terminals ignore the sequence.","impacts":["observability","compatibility"],"guidance":{"level":"consider","value":"true","why":"Useful background-tab signal when the terminal supports OSC 9;4."},"shown":{"default":{"row":16,"value":"false"}}},{"path":"tui.textSizing","tab":"appearance","group":"Display","label":"Large Headings (Kitty)","description":"Render Markdown H1 headings at 2x scale using Kitty's OSC 66 text-sizing protocol. Only takes effect on Kitty terminals; ignored everywhere else. Off by default.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses Kitty OSC 66 text-sizing escapes for larger headings. Other terminals may ignore or misrender them.","impacts":["compatibility","ergonomics"],"guidance":null,"shown":{"default":{"row":17,"value":"false"}}},{"path":"tui.renderMermaid","tab":"appearance","group":"Display","label":"Render Mermaid Diagrams","description":"Render Mermaid fenced code blocks as ASCII diagrams","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Converts Mermaid fenced blocks into terminal-friendly diagrams instead of leaving only source text.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":18,"value":"true"}}},{"path":"tui.codexResetFireworks","tab":"appearance","group":"Display","label":"Codex Reset Fireworks","description":"Celebrate unscheduled Codex weekly usage resets and newly banked saved resets with a top-third fireworks overlay that remains until Escape","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Shows a celebratory terminal animation when a saved Codex rate-limit reset is redeemed.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":19,"value":"false"}}},{"path":"tui.titleState","tab":"appearance","group":"Display","label":"Terminal Title Run State","description":"Show the agent run state in the terminal title's separator \u2014 an animated spinner while working (a static ':' on Windows), '>' when it's your turn, '!' when the agent is waiting on you","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Updates the terminal/window title with OMP run state so a background tab exposes idle/running/attention state.","impacts":["observability"],"guidance":null,"shown":{"default":{"row":20,"value":"true"}}},{"path":"tui.hyperlinks","tab":"appearance","group":"Display","label":"Terminal Hyperlinks","description":"Wrap paths and URLs in OSC 8 hyperlinks for terminal-native click-to-open (auto: detect support; off: never; always: unconditional)","type":"enum","default":"auto","values":["off","auto","always"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Controls OSC 8 hyperlinks. Auto enables them only when terminal capability detection says they are safe.","impacts":["compatibility","ergonomics"],"guidance":null,"shown":{"default":{"row":21,"value":"auto"}}},{"path":"tui.tight","tab":"appearance","group":"Display","label":"Tight Layout","description":"Remove the 1-character horizontal padding from the left and right of the terminal output","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Reduces vertical padding between rendered blocks, increasing information density.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":22,"value":"false"}}},{"path":"tui.scrollbackRebuild","tab":"appearance","group":"Display","label":"Rewrite Scrollback","description":"Erase and replay terminal scrollback when a block's final form replaces its live preview. When off (default), stale preview copies remain in history and the final content is appended below.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows the TUI to rebuild prior terminal rows when layout changes. It can improve continuity but may fight terminal-native scrollback semantics.","impacts":["compatibility","reliability"],"guidance":null,"shown":{"default":{"row":23,"value":"false"}}},{"path":"display.shimmer","tab":"appearance","group":"Display","label":"Shimmer","description":"Animation style for working/loading messages","type":"enum","default":"classic","values":["classic","kitt","disabled"],"options":[{"value":"classic","label":"Classic","description":"Soft cosine wave sweeping across the text"},{"value":"kitt","label":"KITT Scanner","description":"Knight Rider 1982 red light bouncing left-right"},{"value":"disabled","label":"Disabled","description":"No animation; static muted text"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects the animated waiting indicator or disables it. KITT is a scanning-light variant.","impacts":["ergonomics"],"guidance":{"level":"consider","value":"kitt","why":"Purely aesthetic."},"shown":{"default":{"row":24,"value":"classic"}}},{"path":"display.smoothStreaming","tab":"appearance","group":"Display","label":"Smooth Streaming","description":"Reveal assistant text and streamed tool input smoothly while chunks arrive","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Buffers/coalesces streamed text into smoother visual updates rather than repainting every provider chunk immediately.","impacts":["ergonomics","latency"],"guidance":null,"shown":{"default":{"row":25,"value":"true"}}},{"path":"display.hideToolActivity","tab":"appearance","group":"Display","label":"Hide Tool Activity","description":"Hide model-initiated tool calls and results from the transcript","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Suppresses live tool-call activity from the transcript; tool execution still occurs.","impacts":["o","b","s","e","r","v","a","b","i","l","i","t","y"],"guidance":null,"shown":{"default":{"row":26,"value":"false"}}},{"path":"display.showTokenUsage","tab":"appearance","group":"Display","label":"Show Token Usage","description":"Show per-turn token usage on assistant messages","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Displays per-turn token counts to make context growth and spend visible while working.","impacts":["observability","cost"],"guidance":{"level":"consider","value":"true","why":"Good cost/context visibility."},"shown":{"default":{"row":27,"value":"false"}}},{"path":"display.cacheMissMarker","tab":"appearance","group":"Display","label":"Cache Miss Marker","description":"Show a divider above an assistant turn whose request lost (missed) the prompt cache","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Marks requests that missed provider prompt/prefix caching so cache-breaking context changes are visible.","impacts":["observability","cost","latency"],"guidance":{"level":"consider","value":"true","why":"Good signal for prompt-cache regressions."},"shown":{"default":{"row":28,"value":"false"}}},{"path":"display.collapseCompacted","tab":"appearance","group":"Display","label":"Collapse Compacted History","description":"Collapse pre-compaction history behind the summary divider on the live transcript; disable to keep the full transcript inline with dividers at each compaction point","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Visually folds transcript ranges superseded by compaction while retaining the session-tree record.","impacts":["ergonomics","context"],"guidance":null,"shown":{"default":{"row":29,"value":"true"}}},{"path":"showHardwareCursor","tab":"appearance","group":"Display","label":"Show Hardware Cursor","description":"Show terminal cursor for IME support","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses the terminal\u2019s native cursor for the prompt instead of only a software-rendered cursor.","impacts":["compatibility","accessibility"],"guidance":null,"shown":{"default":{"row":30,"value":"true"}}},{"path":"tui.imeSafeCursor","tab":"appearance","group":"Display","label":"IME-Safe Prompt Layout","description":"Move the prompt's bottom border to a separate row so macOS IME preedit cannot displace it","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses a prompt/cursor layout designed to cooperate with input-method editors for CJK and other composed text.","impacts":["accessibility","compatibility"],"guidance":null,"shown":{"default":{"row":31,"value":"false"}}},{"path":"task.showResolvedModelBadge","tab":"appearance","group":"Display","label":"Show Resolved Model Badge","description":"Display the actual model ID used by each subagent in the task widget status line","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Shows the concrete model chosen after task role, fallback, and provider resolution.","impacts":["observability","reliability"],"guidance":{"level":"consider","value":"true","why":"Good observability when roles, fallback chains, and provider aliases are involved."},"shown":{"default":{"row":32,"value":"false"}}},{"path":"terminal.showImages","tab":"appearance","group":"Images","label":"Show Inline Images","description":"Render images inline in the terminal","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"hasImageProtocol","ordered":false,"widget":"boolean","mechanics":"Renders supported image outputs inline when the terminal exposes a compatible image protocol.","impacts":["ergonomics","privacy"],"guidance":null,"shown":{"default":{"row":34,"value":"true"}}},{"path":"images.autoResize","tab":"appearance","group":"Images","label":"Auto-Resize Images","description":"Resize large images to 2000x2000 max for better model compatibility","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Downscales large images before inline rendering, with an implementation cap around 2000\u00d72000.","impacts":["performance","ergonomics"],"guidance":null,"shown":{"default":{"row":35,"value":"true"}}},{"path":"images.blockImages","tab":"appearance","group":"Images","label":"Block Images","description":"Prevent images from being sent to LLM providers","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Prevents image display/processing in the session, useful for text-only or sensitive-data profiles.","impacts":["privacy","safety"],"guidance":{"level":"consider","value":"true in strict work overlay","why":"Avoids accidental image processing/rendering when screenshots may contain client data."},"shown":{"default":{"row":36,"value":"false"}}},{"path":"defaultThinkingLevel","tab":"model","group":"Thinking","label":"Thinking Level","description":"Reasoning depth for thinking-capable models","type":"enum","default":"high","values":["minimal","low","medium","high","xhigh","max","auto"],"options":[{"value":"auto","label":"auto","description":"Auto-detect per prompt"},{"value":"minimal","label":"min","description":"Very brief reasoning (~1k tokens)"},{"value":"low","label":"low","description":"Light reasoning (~2k tokens)"},{"value":"medium","label":"medium","description":"Moderate reasoning (~8k tokens)"},{"value":"high","label":"high","description":"Deep reasoning (~16k tokens)"},{"value":"xhigh","label":"xhigh","description":"Extended reasoning (~32k tokens)"},{"value":"max","label":"max","description":"Maximum reasoning the model supports"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Sets the default reasoning-effort tier passed through OMP\u2019s model metadata. Auto delegates effort selection to the configured auto-thinking path.","impacts":["quality","cost","latency"],"guidance":{"level":"consider","value":"auto or medium globally","why":"High is good for hard tasks but adds latency/cost to routine edits. Escalate per turn with ultrathink."},"shown":{"default":{"row":4,"value":"high"},"expanded":{"row":4,"value":"auto"}}},{"path":"hideThinkingBlock","tab":"model","group":"Thinking","label":"Hide Thinking Blocks","description":"Hide thinking blocks in assistant responses","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Suppresses rendered reasoning blocks in the TUI while leaving model execution behavior unchanged.","impacts":["privacy","ergonomics"],"guidance":null,"shown":{"default":{"row":5,"value":"false"},"expanded":{"row":5,"value":"false"}}},{"path":"proseOnlyThinking","tab":"model","group":"Thinking","label":"Prose Only Thinking","description":"Omit code blocks from thinking summaries and replace them with an ellipsis","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Keeps reasoning output text-oriented and discourages tool-call syntax or structured artifacts inside the reasoning channel.","impacts":["reliability","compatibility"],"guidance":null,"shown":{"default":{"row":6,"value":"true"},"expanded":{"row":6,"value":"true"}}},{"path":"omitThinking","tab":"model","group":"Thinking","label":"Omit Thinking summaries","description":"Instruct upstream providers to completely omit thinking summaries from responses (where supported)","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Requests that supported providers omit returned reasoning content entirely. This can reduce transcript exposure but also removes debugging signal.","impacts":["privacy","observability"],"guidance":null,"shown":{"default":{"row":7,"value":"false"},"expanded":{"row":7,"value":"false"}}},{"path":"externalThinking","tab":"model","group":"Thinking","label":"External Thinking","description":"Private scratchpad; not shown to user. Disables supported GPT, Claude, and Gemini reasoning","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses OMP\u2019s private scratchpad path instead of provider-native reasoning where supported; enabling it can disable native reasoning behavior.","impacts":["privacy","quality","compatibility"],"guidance":null,"shown":{"default":{"row":8,"value":"false"},"expanded":{"row":8,"value":"false"}}},{"path":"model.loopGuard.enabled","tab":"model","group":"Thinking","label":"Loop Guard","description":"Enable automatic stream loop detection for model reasoning and prose","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Detects repetitive assistant behavior and intervenes before a model burns turns repeating itself.","impacts":["reliability","cost"],"guidance":null,"shown":{"default":{"row":9,"value":"true"},"expanded":{"row":9,"value":"true"}}},{"path":"model.loopGuard.checkAssistantContent","tab":"model","group":"Thinking","label":"Loop Guard Scan Prose","description":"Apply loop guard to assistant prose messages in addition to thinking logs","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Includes assistant prose in loop detection, not only tool-call structure.","impacts":["reliability","cost"],"guidance":null,"shown":{"default":{"row":10,"value":"true"},"expanded":{"row":10,"value":"true"}}},{"path":"model.loopGuard.toolCallReminder","tab":"model","group":"Thinking","label":"Loop Guard Tool-Call Reminder","description":"When a Gemini reasoning stream emits many consecutive planning headers without calling a tool, interrupt it and inject a reminder to issue a tool call (requires Loop Guard)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Adds a corrective reminder when a model appears to plan indefinitely without issuing the required tool call.","impacts":["r","e","l","i","a","b","i","l","i","t","y"],"guidance":null,"shown":{"default":{"row":11,"value":"true"},"expanded":{"row":11,"value":"true"}}},{"path":"model.toolCallLoopGuard.enabled","tab":"model","group":"Thinking","label":"Tool-Call Loop Guard","description":"Detect consecutive identical tool calls across turns and inject a corrective steer","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Detects repeated calls with effectively identical tool names/arguments and halts or nudges the loop.","impacts":["reliability","cost","safety"],"guidance":null,"shown":{"default":{"row":12,"value":"true"},"expanded":{"row":12,"value":"true"}}},{"path":"providers.autoThinkingModel","tab":"model","group":"Thinking","label":"Auto Thinking Model","description":"Difficulty classifier for the `auto` thinking level: online (the TINY role from /models, else smol) by default, or a local on-device model","type":"enum","default":"online","values":["online","qwen3-1.7b","llama3.2:3b","gemma-3-1b","qwen2.5-1.5b","lfm2-1.2b"],"options":[{"value":"online","label":"Online (TINY role, else @smol)","description":"Classify prompt difficulty online with the TINY role model (set one in /models) or @smol; no local download or on-device inference."},{"value":"qwen3-1.7b","label":"Qwen3 1.7B","description":"Disabled for local inference: onnxruntime-node cannot run this ONNX export's RotaryEmbedding cache updates."},{"value":"llama3.2:3b","label":"Llama 3.2 3B","description":"Larger Llama 3.2 option for local memory/classifier tasks; higher quality potential at higher disk/RAM/latency cost."},{"value":"gemma-3-1b","label":"Gemma 3 1B","description":"Best consolidation/dedup; lighter footprint, but leaks small talk during extraction."},{"value":"qwen2.5-1.5b","label":"Qwen2.5 1.5B","description":"Best extraction granularity (atomic facts); weaker consolidation."},{"value":"lfm2-1.2b","label":"LFM2 1.2B","description":"Fastest load; solid all-rounder, slightly noisier extraction labels."}],"runtimeOptions":false,"secret":false,"condition":"autoThinkingActive","ordered":false,"widget":"submenu","mechanics":"Selects the small classifier/model used to choose reasoning effort when Default Thinking Level is Auto.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"expanded":{"row":13,"value":"online"}}},{"path":"providers.autoThinkingMaxEffort","tab":"model","group":"Thinking","label":"Auto Thinking Ceiling","description":"Highest effort the `auto` classifier may resolve. `xhigh` keeps the classifier one tier below the top, so only an explicit `ultrathink` reaches `max`; `max` lets a turn the classifier judges exceptional bill the top tier on models that expose it.","type":"enum","default":"xhigh","values":["xhigh","max"],"options":[{"value":"xhigh","label":"xhigh","description":"Classifier stops at xhigh (default)"},{"value":"max","label":"max","description":"Classifier may resolve max where the model supports it"}],"runtimeOptions":false,"secret":false,"condition":"autoThinkingActive","ordered":false,"widget":"submenu","mechanics":"Caps the effort tier that automatic thinking selection may choose.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"expanded":{"row":14,"value":"xhigh"}}},{"path":"model.toolCallLoopGuard.threshold","tab":"model","group":"Thinking","label":"Tool-Call Loop Threshold","description":"Consecutive identical tool calls required before the corrective steer is injected","type":"number","default":5,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Number of repeated equivalent tool calls tolerated before the guard trips.","impacts":["reliability","cost"],"guidance":null,"shown":{}},{"path":"model.toolCallLoopGuard.exemptTools","tab":"model","group":"Thinking","label":"Tool-Call Loop Exempt Tools","description":"Tool names that may repeat consecutively without triggering the cross-turn loop guard","type":"array","default":["hub"],"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Ordered/list setting for tools allowed to repeat without triggering the tool-call loop guard; hub is exempt by default because polling is legitimate.","impacts":["reliability"],"guidance":null,"shown":{}},{"path":"temperature","tab":"model","group":"Sampling","label":"Temperature","description":"Sampling temperature (0 = deterministic, 1 = creative, -1 = provider default)","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Default","description":"Use provider default"},{"value":"0","label":"0","description":"Deterministic"},{"value":"0.2","label":"0.2","description":"Focused"},{"value":"0.5","label":"0.5","description":"Balanced"},{"value":"0.7","label":"0.7","description":"Creative"},{"value":"1","label":"1","description":"Maximum variety"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Sampling temperature. -1 means leave the parameter unset and use the provider/model default.","impacts":["quality","reliability"],"guidance":{"level":"keep","value":"-1/provider default","why":"Do not tune sampling globally without a controlled eval."},"shown":{"default":{"row":14,"value":"-1"},"expanded":{"row":16,"value":"-1"}}},{"path":"topP","tab":"model","group":"Sampling","label":"Top P","description":"Nucleus sampling cutoff (0-1, -1 = provider default)","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Default","description":"Use provider default"},{"value":"0.1","label":"0.1","description":"Very focused"},{"value":"0.3","label":"0.3","description":"Focused"},{"value":"0.5","label":"0.5","description":"Balanced"},{"value":"0.9","label":"0.9","description":"Broad"},{"value":"1","label":"1","description":"No nucleus filtering"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Nucleus-sampling cutoff. -1 delegates to the provider default. Avoid tuning it simultaneously with temperature unless benchmarking.","impacts":["quality","reliability"],"guidance":{"level":"keep","value":"-1/provider default","why":"Changing multiple sampling parameters at once makes quality regressions hard to attribute."},"shown":{"default":{"row":15,"value":"-1"},"expanded":{"row":17,"value":"-1"}}},{"path":"topK","tab":"model","group":"Sampling","label":"Top K","description":"Sample from top-K tokens (-1 = provider default)","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Default","description":"Use provider default"},{"value":"1","label":"1","description":"Greedy top token"},{"value":"20","label":"20","description":"Focused"},{"value":"40","label":"40","description":"Balanced"},{"value":"100","label":"100","description":"Broad"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Restricts sampling to the top K candidates where supported; -1 leaves it unset.","impacts":["quality","compatibility"],"guidance":null,"shown":{"default":{"row":16,"value":"-1"},"expanded":{"row":18,"value":"-1"}}},{"path":"minP","tab":"model","group":"Sampling","label":"Min P","description":"Minimum probability threshold (0-1, -1 = provider default)","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Default","description":"Use provider default"},{"value":"0.01","label":"0.01","description":"Very permissive"},{"value":"0.05","label":"0.05","description":"Balanced"},{"value":"0.1","label":"0.1","description":"Strict"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Minimum-probability sampling filter where supported; -1 leaves it unset.","impacts":["quality","compatibility"],"guidance":null,"shown":{"default":{"row":17,"value":"-1"},"expanded":{"row":19,"value":"-1"}}},{"path":"presencePenalty","tab":"model","group":"Sampling","label":"Presence Penalty","description":"Penalty for introducing already-present tokens (-1 = provider default)","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Default","description":"Use provider default"},{"value":"0","label":"0","description":"No penalty"},{"value":"0.5","label":"0.5","description":"Mild novelty"},{"value":"1","label":"1","description":"Encourage novelty"},{"value":"2","label":"2","description":"Strong novelty"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Provider-compatible novelty penalty. -1 uses the model\u2019s default behavior.","impacts":["quality","compatibility"],"guidance":null,"shown":{"default":{"row":18,"value":"-1"},"expanded":{"row":20,"value":"-1"}}},{"path":"repetitionPenalty","tab":"model","group":"Sampling","label":"Repetition Penalty","description":"Penalty for repeated tokens (-1 = provider default)","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Default","description":"Use provider default"},{"value":"0.8","label":"0.8","description":"Allow repetition"},{"value":"1","label":"1","description":"No penalty"},{"value":"1.1","label":"1.1","description":"Mild penalty"},{"value":"1.2","label":"1.2","description":"Balanced"},{"value":"1.5","label":"1.5","description":"Strong penalty"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Provider-compatible repetition penalty. -1 uses the model\u2019s default behavior.","impacts":["quality","compatibility"],"guidance":null,"shown":{"default":{"row":19,"value":"-1"},"expanded":{"row":21,"value":"-1"}}},{"path":"textVerbosity","tab":"model","group":"Sampling","label":"Text Verbosity","description":"OpenAI Responses and Codex response verbosity (low, medium, or high)","type":"enum","default":"medium","values":["low","medium","high"],"options":[{"value":"low","label":"Low","description":"Prefer concise responses"},{"value":"medium","label":"Medium","description":"Balance brevity and detail (default)"},{"value":"high","label":"High","description":"Prefer detailed responses"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"OpenAI Responses/Codex output verbosity hint; unsupported providers ignore it.","impacts":["cost","latency","ergonomics"],"guidance":null,"shown":{"default":{"row":20,"value":"medium"},"expanded":{"row":22,"value":"medium"}}},{"path":"tier.openai","tab":"model","group":"Sampling","label":"Service Tier \u2014 OpenAI","description":"Processing tier for OpenAI / OpenAI-Codex requests, and OpenAI-family models routed via OpenRouter (none = omit). Sent as `service_tier`.","type":"enum","default":"none","values":["none","auto","default","flex","scale","priority"],"options":[{"value":"none","label":"None","description":"Omit service_tier (standard processing)"},{"value":"auto","label":"Auto","description":"Provider default tier selection"},{"value":"default","label":"Default","description":"Standard priority processing"},{"value":"flex","label":"Flex","description":"Lower cost, higher latency when available"},{"value":"scale","label":"Scale","description":"Scale Tier credits when available"},{"value":"priority","label":"Priority","description":"Faster, higher cost (premium request)"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Optional provider service-tier override. None means do not force a tier.","impacts":["cost","latency"],"guidance":null,"shown":{"default":{"row":21,"value":"none"},"expanded":{"row":23,"value":"none"}}},{"path":"tier.anthropic","tab":"model","group":"Sampling","label":"Service Tier \u2014 Anthropic","description":"Processing tier for Claude requests. `priority` realizes fast mode (`speed: \"fast\"`) on supported direct Anthropic models; ignored on Bedrock/Vertex Claude and via OpenRouter.","type":"enum","default":"none","values":["none","priority"],"options":[{"value":"none","label":"None","description":"Standard processing"},{"value":"priority","label":"Priority","description":"Fast mode (`speed: \"fast\"`) on supported direct Claude models; ignored on Bedrock/Vertex"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Optional Anthropic service-tier override. None means no explicit tier.","impacts":["cost","latency"],"guidance":null,"shown":{"default":{"row":22,"value":"none"},"expanded":{"row":24,"value":"none"}}},{"path":"tier.google","tab":"model","group":"Sampling","label":"Service Tier \u2014 Google","description":"Processing tier for Gemini (Google AI Studio + Vertex) requests, and Google-family models routed via OpenRouter (none = omit). Sent as the top-level `serviceTier` field.","type":"enum","default":"none","values":["none","flex","priority"],"options":[{"value":"none","label":"None","description":"Standard processing"},{"value":"flex","label":"Flex","description":"Lower cost, higher latency (Gemini API + Vertex)"},{"value":"priority","label":"Priority","description":"Faster, higher reliability (Gemini API + Vertex)"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Optional Google service-tier override. None means no explicit tier.","impacts":["cost","latency"],"guidance":null,"shown":{"default":{"row":23,"value":"none"},"expanded":{"row":25,"value":"none"}}},{"path":"tier.subagent","tab":"model","group":"Sampling","label":"Service Tier \u2014 Subagent","description":"Service Tier for spawned task/eval subagents. Inherit = match the main agent's live per-family tiers (tracks /fast); pick a value to apply it to whichever family the subagent's model belongs to.","type":"enum","default":"inherit","values":["inherit","none","auto","default","flex","scale","priority"],"options":[{"value":"inherit","label":"Inherit","description":"Match the main agent's live per-family tiers"},{"value":"none","label":"None","description":"Standard processing"},{"value":"auto","label":"Auto","description":"Provider default tier selection (OpenAI family)"},{"value":"default","label":"Default","description":"Standard priority processing (OpenAI family)"},{"value":"flex","label":"Flex","description":"Flexible capacity tier (OpenAI/Google families)"},{"value":"scale","label":"Scale","description":"Scale Tier credits (OpenAI family)"},{"value":"priority","label":"Priority","description":"Priority on every supported family of the spawned model"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls whether subagent requests inherit the main request\u2019s service tier or use an explicit tier.","impacts":["cost","latency"],"guidance":null,"shown":{"default":{"row":24,"value":"inherit"},"expanded":{"row":26,"value":"inherit"}}},{"path":"tier.advisor","tab":"model","group":"Sampling","label":"Service Tier \u2014 Advisor","description":"Service Tier for the advisor model. None = standard processing; Inherit = match the main agent's live per-family tiers; pick a value to apply it to the advisor model's family.","type":"enum","default":"none","values":["inherit","none","auto","default","flex","scale","priority"],"options":[{"value":"inherit","label":"Inherit","description":"Match the main agent's live per-family tiers"},{"value":"none","label":"None","description":"Standard processing"},{"value":"auto","label":"Auto","description":"Provider default tier selection (OpenAI family)"},{"value":"default","label":"Default","description":"Standard priority processing (OpenAI family)"},{"value":"flex","label":"Flex","description":"Flexible capacity tier (OpenAI/Google families)"},{"value":"scale","label":"Scale","description":"Scale Tier credits (OpenAI family)"},{"value":"priority","label":"Priority","description":"Priority on every supported family of the spawned model"}],"runtimeOptions":false,"secret":false,"condition":"advisorEnabled","ordered":false,"widget":"submenu","mechanics":"Optional service-tier override for the advisor model\u2019s requests.","impacts":["cost","latency"],"guidance":null,"shown":{"expanded":{"row":27,"value":"none"}}},{"path":"modelRoleStorage","tab":"model","group":"Prompt","label":"Model Role Storage","description":"Where model selector role assignments are saved","type":"enum","default":"global","values":["global","project"],"options":[{"value":"global","label":"Global","description":"Save role models in the active profile config (current behavior)"},{"value":"project","label":"Per-project","description":"Save project role models in .omp/config.yml; missing project roles use global defaults"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Determines whether default/smol/slow/plan/advisor role assignments persist globally or under the current project\u2019s .omp/config.yml.","impacts":["reliability","privacy"],"guidance":{"level":"change","value":"project","why":"Prevents model-role choices for one repo from silently changing routing in unrelated work."},"shown":{"default":{"row":26,"value":"global"},"expanded":{"row":29,"value":"global"}}},{"path":"inlineToolDescriptors","tab":"model","group":"Prompt","label":"Inline Tool Descriptors","description":"Render full tool descriptors in the system prompt and strip top-level/nested descriptions from provider tool schemas so descriptor text is sent once. Auto enables this for Gemini models and disables it otherwise","type":"enum","default":"auto","values":["auto","on","off"],"options":[{"value":"auto","label":"Auto","description":"Inline descriptors for Gemini models; keep them in tool schemas otherwise"},{"value":"on","label":"On","description":"Always inline descriptors in the system prompt"},{"value":"off","label":"Off","description":"Keep descriptors in provider tool schemas only"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls whether tool schemas/descriptions are inlined into the prompt instead of relying on native tool APIs. Auto uses provider-specific compatibility rules.","impacts":["context","compatibility","cost"],"guidance":null,"shown":{"default":{"row":27,"value":"auto"},"expanded":{"row":30,"value":"auto"}}},{"path":"includeModelInPrompt","tab":"model","group":"Prompt","label":"Include Model in Prompt","description":"Surface the active model identifier in the system prompt so the agent knows which model it is","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Adds the resolved model identity to the system context so the agent can reason about its capabilities and quirks.","impacts":["context","reliability"],"guidance":null,"shown":{"default":{"row":28,"value":"true"},"expanded":{"row":31,"value":"true"}}},{"path":"includeWorkspaceTree","tab":"model","group":"Prompt","label":"Include Workspace Tree","description":"Render the workspace directory tree in the system prompt. WARNING: This can bust prompt caching across sessions when files are modified.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Injects a workspace tree into the prompt. It can help navigation but consumes tokens and changes frequently, reducing prefix-cache hits.","impacts":["context","cost","latency"],"guidance":{"level":"keep","value":"false","why":"Frequent tree churn is a prompt-cache killer and usually duplicates glob/search tools."},"shown":{"default":{"row":29,"value":"false"},"expanded":{"row":32,"value":"false"}}},{"path":"personality","tab":"model","group":"Prompt","label":"Personality","description":"Communication style rendered into the system prompt's personality block","type":"enum","default":"default","values":["default","friendly","pragmatic","none"],"options":[{"value":"default","label":"Default","description":"Terse, evidence-first engineer; dense, action-oriented replies"},{"value":"friendly","label":"Friendly","description":"Warm, encouraging collaborator focused on momentum and morale"},{"value":"pragmatic","label":"Pragmatic","description":"Direct, efficient engineer focused on clarity and rigor"},{"value":"none","label":"None","description":"Omit the personality block entirely"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Applies a built-in conversational style layer without changing tool policy. None removes the personality layer.","impacts":["ergonomics","context"],"guidance":null,"shown":{"default":{"row":30,"value":"default"},"expanded":{"row":33,"value":"default"}}},{"path":"retry.maxRetries","tab":"model","group":"Retry & Fallback","label":"Retry Attempts","description":"Maximum retry attempts on API errors","type":"number","default":10,"values":null,"options":[{"value":"1","label":"1 retry","description":null},{"value":"2","label":"2 retries","description":null},{"value":"3","label":"3 retries","description":null},{"value":"5","label":"5 retries","description":null},{"value":"10","label":"10 retries","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum automatic retry attempts for retryable provider failures before surfacing an error or exhausting fallback logic.","impacts":["reliability","cost","latency"],"guidance":null,"shown":{"default":{"row":32,"value":"10"},"expanded":{"row":35,"value":"10"}}},{"path":"retry.modelFallback","tab":"model","group":"Retry & Fallback","label":"Retry Model Fallback","description":"Allow retry recovery to switch to configured fallback models","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows OMP to move through configured/default fallback models when the selected model cannot complete the request.","impacts":["reliability","cost"],"guidance":null,"shown":{"default":{"row":33,"value":"true"},"expanded":{"row":36,"value":"true"}}},{"path":"retry.usageAwareFallback","tab":"model","group":"Retry & Fallback","label":"Usage-Aware Fallback","description":"Use reliable coding-plan quota reports to prefer same-provider accounts, then configured fallback models, before a hard usage limit. Ordinary configured API keys are excluded.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses observed provider/account quota state when choosing fallback routes instead of waiting for hard exhaustion.","impacts":["reliability","cost","latency"],"guidance":{"level":"consider","value":"true","why":"Useful when you rotate paid providers/accounts and want graceful quota-aware routing."},"shown":{"default":{"row":34,"value":"false"},"expanded":{"row":37,"value":"true"}}},{"path":"retry.fallbackChains","tab":"model","group":"Retry & Fallback","label":"Retry Fallback Chains","description":"JSON object mapping model roles, model selectors (\"provider/model-id\"), or provider wildcards (\"provider/*\") to ordered fallback selectors, e.g. {\"default\":[\"openai/gpt-4o-mini\"],\"google-antigravity/*\":[\"google/*\",\"google-vertex/*\"]}. Model-oriented keys apply whenever that model/provider is active, regardless of role; a \"provider/*\" entry keeps the failing model's id and swaps the provider. An id-prefixed wildcard (\"openrouter/google/*\") re-prefixes the failing model's bare id (google-antigravity/gemini-x -> openrouter/google/gemini-x) and, used as a key, matches only that provider's ids under the prefix.","type":"record","default":{},"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Explicit mapping from a model/role to an ordered sequence of fallback model IDs.","impacts":["reliability","cost"],"guidance":null,"shown":{"default":{"row":35,"value":"{}"},"expanded":{"row":40,"value":"{}"}}},{"path":"retry.fallbackRevertPolicy","tab":"model","group":"Retry & Fallback","label":"Fallback Revert Policy","description":"When to return to the primary model after a fallback","type":"enum","default":"cooldown-expiry","values":["cooldown-expiry","never"],"options":[{"value":"cooldown-expiry","label":"Cooldown expiry","description":"Return to the primary model after its suppression window ends"},{"value":"never","label":"Never","description":"Stay on the fallback model until manually changed"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls when a temporarily failed route becomes eligible again.","impacts":["r","e","l","i","a","b","i","l","i","t","y"],"guidance":null,"shown":{"default":{"row":36,"value":"cooldown-expiry"},"expanded":{"row":41,"value":"cooldown-expiry"}}},{"path":"providers.anthropic.serverSideFallback","tab":"model","group":"Retry & Fallback","label":"Anthropic Server-Side Fallback (Fable 5)","description":"When a Claude Fable 5 / Mythos 5 request is blocked by Anthropic's safety classifier, retry it on Claude Opus 4.8 server-side (Anthropic `server-side-fallback-2026-06-01` beta). Opt-in \u2014 leaving this off preserves the pre-fallback behavior for every request.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Opt-in provider-side fallback for specific Anthropic-routed model families when a safety classifier blocks the primary route.","impacts":["reliability","quality","privacy"],"guidance":null,"shown":{"default":{"row":37,"value":"false"},"expanded":{"row":42,"value":"false"}}},{"path":"retry.usageReservePct","tab":"model","group":"Retry & Fallback","label":"Reserve Margin","description":"Treat a coding-plan model as near its limit below this remaining percentage. Unknown or unmapped usage keeps the primary model.","type":"number","default":10,"values":null,"options":[{"value":"5","label":"5%","description":"Act only when nearly exhausted"},{"value":"10","label":"10%","description":"Balanced safety margin"},{"value":"15","label":"15%","description":"Conservative"},{"value":"20","label":"20%","description":"Early protection"},{"value":"25","label":"25%","description":"Very conservative"}],"runtimeOptions":false,"secret":false,"condition":"usageAwareFallbackEnabled","ordered":false,"widget":"submenu","mechanics":"Percentage of a usage window reserved before usage-aware fallback treats the route as effectively unavailable.","impacts":["reliability","cost"],"guidance":{"level":"consider","value":"10\u201315","why":"Preserves enough headroom for urgent/manual turns instead of letting automation consume the last quota."},"shown":{"expanded":{"row":38,"value":"10"}}},{"path":"retry.usageReservePolicy","tab":"model","group":"Retry & Fallback","label":"Reserve Policy","description":"What to do when every same-provider coding-plan account is inside the reserve margin.","type":"enum","default":"confirm","values":["confirm","auto","fail-closed"],"options":[{"value":"confirm","label":"Confirm interactively","description":"Keep interactive sessions on the primary until confirmed; background agents auto-fallback"},{"value":"auto","label":"Auto-fallback","description":"Always select the next eligible configured fallback"},{"value":"fail-closed","label":"Fail closed","description":"Do not spend reserve quota or select a fallback"}],"runtimeOptions":false,"secret":false,"condition":"usageAwareFallbackEnabled","ordered":false,"widget":"submenu","mechanics":"Behavior when using the reserved capacity would be necessary. Confirm asks, auto proceeds, fail-closed refuses.","impacts":["safety","reliability"],"guidance":null,"shown":{"expanded":{"row":39,"value":"confirm"}}},{"path":"retry.maxDelayMs","tab":"model","group":"Retry & Fallback","label":"Max Retry Delay","description":"Maximum wait between retries, in ms. When the provider asks us to wait longer than this and no credential or model fallback succeeds, the request fails fast instead of sleeping (e.g. 3-hour Anthropic rate-limit windows).","type":"number","default":300000,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Upper bound on retry backoff delay in milliseconds.","impacts":["reliability","latency"],"guidance":null,"shown":{}},{"path":"advisor.enabled","tab":"model","group":"Advisor","label":"Enable Advisor","description":"Pair a second model (assigned to the 'advisor' role) that passively reviews each turn and injects notes.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Runs a second model assigned to the advisor role in parallel; it reviews turns and injects concerns or notes into the primary loop.","impacts":["quality","cost","latency"],"guidance":{"level":"consider","value":"enable per high-stakes review, not globally","why":"A second model can catch errors but roughly adds another review stream of cost and latency."},"shown":{"default":{"row":39,"value":"false"},"expanded":{"row":44,"value":"true"}}},{"path":"advisor.syncBacklog","tab":"model","group":"Advisor","label":"Advisor Sync Backlog","description":"Pause the main agent for up to 30 seconds if the advisor falls behind by this many turns. Off disables catch-up delays.","type":"enum","default":"off","values":["off","1","3","5"],"options":null,"runtimeOptions":false,"secret":false,"condition":"advisorEnabled","ordered":false,"widget":"enum","mechanics":"Pauses the primary agent for up to roughly 30 seconds when the advisor falls behind by the selected number of turns.","impacts":["quality","latency"],"guidance":null,"shown":{"expanded":{"row":45,"value":"off"}}},{"path":"advisor.immuneTurns","tab":"model","group":"Advisor","label":"Advisor Immune Turns","description":"After an advisor concern or blocker interrupts, route further concerns/blockers non-interruptingly for this many primary turns.","type":"number","default":3,"values":null,"options":[{"value":"0","label":"0 turns","description":"Allow every concern/blocker to interrupt."},{"value":"1","label":"1 turn","description":null},{"value":"2","label":"2 turns","description":null},{"value":"3","label":"3 turns","description":"Default."},{"value":"4","label":"4 turns","description":null},{"value":"5","label":"5 turns","description":null}],"runtimeOptions":false,"secret":false,"condition":"advisorEnabled","ordered":false,"widget":"submenu","mechanics":"After an advisor interruption, routes further concerns non-interruptingly for this many primary turns to avoid thrash.","impacts":["reliability","latency"],"guidance":null,"shown":{"expanded":{"row":46,"value":"3"}}},{"path":"prewalk.enabled","tab":"model","group":"Prewalk","label":"Enable Prewalk","description":"Start on the active model, then switch to a fast/cheap model (default the 'smol' role) at the first edit/write after the plan nudge's todo list exists \u2014 the strong model plans, commits the todos, and starts the implementation before handing off. Overridable per session with --prewalk / --no-prewalk.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Lets the strong active model plan, establish todos, and begin the first write/edit, then hands implementation to the fast/cheap smol role.","impacts":["cost","latency","quality"],"guidance":{"level":"consider","value":"enable per implementation-heavy repo","why":"Can cut cost by handing execution to smol, but quality variance is workload-dependent."},"shown":{"default":{"row":41,"value":"false"},"expanded":{"row":48,"value":"false"}}},{"path":"images.describeForTextModels","tab":"model","group":"Vision","label":"Describe Images for Text Models","description":"When an image is attached to a model without vision support, save it under local:// and inject a description from a vision-capable model instead of dropping it","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"When the active model lacks vision, uses an image-capable path to produce a textual description for the text-only model.","impacts":["cost","privacy","compatibility"],"guidance":null,"shown":{"default":{"row":43,"value":"true"},"expanded":{"row":50,"value":"true"}}},{"path":"steeringMode","tab":"interaction","group":"Input","label":"Steering Mode","description":"How to process queued messages while agent is working","type":"enum","default":"one-at-a-time","values":["all","one-at-a-time"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Controls how multiple steering messages queued during a turn are delivered to the model.","impacts":["reliability","ergonomics"],"guidance":null,"shown":{"default":{"row":4,"value":"one-at-a-time"}}},{"path":"followUpMode","tab":"interaction","group":"Input","label":"Follow-Up Mode","description":"How to drain follow-up messages after a turn completes","type":"enum","default":"one-at-a-time","values":["all","one-at-a-time"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Controls whether multiple queued follow-ups are injected together or one per turn.","impacts":["reliability","ergonomics"],"guidance":null,"shown":{"default":{"row":5,"value":"one-at-a-time"}}},{"path":"interruptMode","tab":"interaction","group":"Input","label":"Interrupt Mode","description":"When steering messages interrupt tool execution","type":"enum","default":"immediate","values":["immediate","wait"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Determines whether new steering input interrupts the current generation immediately or waits for a safe boundary.","impacts":["reliability","ergonomics"],"guidance":null,"shown":{"default":{"row":6,"value":"immediate"}}},{"path":"loop.mode","tab":"interaction","group":"Input","label":"Loop Mode","description":"What happens between /loop iterations before re-submitting the prompt","type":"enum","default":"prompt","values":["prompt","compact","reset"],"options":[{"value":"prompt","label":"Prompt","description":"Re-submit the prompt as a follow-up message (current behavior)"},{"value":"compact","label":"Compact","description":"Compact the session context, then re-submit the prompt"},{"value":"reset","label":"Reset","description":"Start a new session, then re-submit the prompt"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Behavior when an autonomous loop reaches its completion boundary: ask, compact, or reset.","impacts":["safety","context","ergonomics"],"guidance":null,"shown":{"default":{"row":7,"value":"prompt"}}},{"path":"doubleEscapeAction","tab":"interaction","group":"Input","label":"Double-Escape Action","description":"Action when pressing Escape twice with empty editor","type":"enum","default":"tree","values":["branch","tree","none"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Action triggered by double Escape in the interactive UI.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":8,"value":"tree"}}},{"path":"treeFilterMode","tab":"interaction","group":"Input","label":"Session Tree Filter","description":"Default filter mode when opening the session tree","type":"enum","default":"default","values":["default","no-tools","user-only","labeled-only","all"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Controls which entries appear in the session tree, from a concise default view to every internal/tool node.","impacts":["ergonomics","observability"],"guidance":null,"shown":{"default":{"row":9,"value":"default"}}},{"path":"autocompleteMaxVisible","tab":"interaction","group":"Input","label":"Autocomplete Items","description":"Max visible items in autocomplete dropdown (3-20)","type":"number","default":5,"values":null,"options":[{"value":"3","label":"3 items","description":null},{"value":"5","label":"5 items","description":null},{"value":"7","label":"7 items","description":null},{"value":"10","label":"10 items","description":null},{"value":"15","label":"15 items","description":null},{"value":"20","label":"20 items","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum number of autocomplete suggestions visible at once.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":10,"value":"5"}}},{"path":"emojiAutocomplete","tab":"interaction","group":"Input","label":"Emoji Autocomplete","description":"Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables colon-style emoji completion in the prompt editor.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":11,"value":"true"}}},{"path":"paste.largeMenuThreshold","tab":"interaction","group":"Input","label":"Large Paste Menu","description":"When a paste reaches this many lines, offer a menu to wrap it in a code block, wrap it in XML tags, or save it to a file. 0 disables the menu (large pastes still collapse to a [Paste] marker).","type":"number","default":100,"values":null,"options":[{"value":"0","label":"Off","description":null},{"value":"100","label":"100 lines","description":null},{"value":"250","label":"250 lines","description":null},{"value":"500","label":"500 lines","description":null},{"value":"1000","label":"1000 lines","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Character/line threshold at which OMP treats pasted input as large and offers special handling instead of blindly inserting it.","impacts":["safety","ergonomics"],"guidance":null,"shown":{"default":{"row":12,"value":"100"}}},{"path":"tools.approval","tab":"interaction","group":"Approvals","label":"Tool Approval Policies","description":"Per-tool approval policies. Set to 'allow' to auto-approve, 'prompt' to require confirmation, or 'deny' to block. Overrides are honored in every approval mode.","type":"record","default":{},"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Per-tool allow/prompt/deny overrides. For Bash, separate ordered command patterns can narrow the policy further.","impacts":["safety","automation"],"guidance":null,"shown":{"default":{"row":14,"value":"{}"}}},{"path":"tools.approvalMode","tab":"interaction","group":"Approvals","label":"Tool Approval","description":"Default approval behavior for tool calls. 'Always ask' auto-approves read-only tools only. 'Write' auto-approves read and workspace-write tools. 'Yolo' auto-approves all tiers; user policy may still prompt or block.","type":"enum","default":"yolo","values":["always-ask","write","yolo"],"options":[{"value":"always-ask","label":"Always ask","description":"Auto-approve read-only tools; require confirmation for write and exec tools."},{"value":"write","label":"Write","description":"Auto-approve read-only and write tools; require confirmation for exec tools such as bash, eval, browser, and task."},{"value":"yolo","label":"Yolo","description":"Auto-approve read, write, and exec tools. User policy can still require confirmation or block calls."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Global baseline policy: always-ask auto-approves reads only; write auto-approves reads/workspace writes; yolo auto-approves all tiers unless a narrower policy overrides it.","impacts":["safety","automation","privacy"],"guidance":{"level":"change","value":"write globally; always-ask for sensitive repos","why":"A stricter mode limits unintended writes in unfamiliar or sensitive repositories."},"shown":{"default":{"row":15,"value":"yolo"}}},{"path":"completion.notify","tab":"interaction","group":"Notifications","label":"Completion Notification","description":"Notify when the agent finishes a turn","type":"enum","default":"on","values":["on","off"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Sends an OS/terminal notification when a turn finishes.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":17,"value":"on"}}},{"path":"error.notify","tab":"interaction","group":"Notifications","label":"Error Notification","description":"Notify when the agent stops with an error","type":"enum","default":"off","values":["on","off"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Sends a notification when a turn errors.","impacts":["ergonomics","reliability"],"guidance":{"level":"consider","value":"on","why":"Background agent workflows benefit more from error notifications than completion-only notifications."},"shown":{"default":{"row":18,"value":"off"}}},{"path":"ask.timeout","tab":"interaction","group":"Notifications","label":"Ask Timeout","description":"Auto-select the recommended ask option after this many seconds (0 disables)","type":"number","default":0,"values":null,"options":[{"value":"0","label":"Disabled","description":null},{"value":"15","label":"15 seconds","description":null},{"value":"30","label":"30 seconds","description":null},{"value":"60","label":"60 seconds","description":null},{"value":"120","label":"120 seconds","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Seconds before an unanswered ask interaction times out; 0 waits indefinitely.","impacts":["safety","ergonomics"],"guidance":null,"shown":{"default":{"row":19,"value":"0"}}},{"path":"ask.notify","tab":"interaction","group":"Notifications","label":"Ask Notification","description":"Notify when the ask tool is waiting for input","type":"enum","default":"on","values":["on","off"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Notifies when the agent is blocked waiting for an answer.","impacts":["ergonomics","reliability"],"guidance":null,"shown":{"default":{"row":20,"value":"on"}}},{"path":"recap.enabled","tab":"interaction","group":"Notifications","label":"Idle Recap","description":"Generate a brief LLM recap of where things stand after the terminal has been idle","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"After prolonged idle time, sends an additional model request to summarize what is waiting or what changed.","impacts":["cost","privacy","ergonomics"],"guidance":{"level":"consider","value":"false in cost/privacy-sensitive profiles","why":"It creates an extra LLM request after idle time."},"shown":{"default":{"row":21,"value":"true"}}},{"path":"recap.idleSeconds","tab":"interaction","group":"Notifications","label":"Idle Recap Delay","description":"Seconds to wait while idle before showing the recap","type":"number","default":240,"values":null,"options":[{"value":"60","label":"1 minute","description":null},{"value":"120","label":"2 minutes","description":null},{"value":"240","label":"4 minutes","description":null},{"value":"300","label":"5 minutes","description":null},{"value":"600","label":"10 minutes","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Idle duration before the recap request is eligible.","impacts":["cost","ergonomics"],"guidance":null,"shown":{"default":{"row":22,"value":"240"}}},{"path":"stt.enabled","tab":"interaction","group":"Speech","label":"Speech-to-Text","description":"Enable speech-to-text input via microphone","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables local speech transcription for prompt input.","impacts":["ergonomics","privacy","performance"],"guidance":null,"shown":{"default":{"row":24,"value":"false"}}},{"path":"stt.modelName","tab":"interaction","group":"Speech","label":"Speech Model","description":"Local on-device speech model. Parakeet TDT v3 (sherpa-onnx) is the SoTA default; Whisper base/small/large-v3-turbo tiers (transformers.js) trade size for multilingual coverage. Downloaded on first use.","type":"enum","default":"parakeet","values":["fast","balanced","turbo","parakeet"],"options":[{"value":"fast","label":"Fast (Whisper base)","description":"Whisper base, multilingual. Smallest + fastest; lowest accuracy. Best for low-resource machines."},{"value":"balanced","label":"Balanced (Whisper small)","description":"Whisper small, multilingual. More accurate than Fast, still light on CPU/RAM."},{"value":"turbo","label":"Turbo (Whisper large-v3)","description":"Whisper large-v3-turbo, 99 languages. Widest language coverage; large download, slower."},{"value":"parakeet","label":"Parakeet TDT v3 (SoTA)","description":"NVIDIA Parakeet TDT 0.6B v3, 25 languages. Open ASR Leaderboard leader \u2014 best accuracy and far fastest decoding. Default."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects the local speech-recognition model package.","impacts":["quality","performance","storage"],"guidance":null,"shown":{"default":{"row":25,"value":"parakeet"}}},{"path":"stt.submitTrigger","tab":"interaction","group":"Speech","label":"Speech-to-Text Submit Trigger","description":"Choose when speech dictation automatically submits: Never, Release (2+ words), Release with complete sentence, or When I Say Submit.","type":"enum","default":"never","values":["never","release","release-complete","say-submit"],"options":[{"value":"never","label":"Never","description":"Never automatically submit; insert dictation and remain in editor."},{"value":"release","label":"Release","description":"Submit on release if the utterance has 2+ words to avoid accidental sends."},{"value":"release-complete","label":"Release with complete sentence","description":"Submit on release if the utterance ends with sentence-terminal punctuation (. ? ! etc.)."},{"value":"say-submit","label":"When I Say Submit","description":"Submit if the utterance ends with a word containing 'submit' (strips that word before submitting)."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls whether releasing/finishing speech automatically submits the transcribed prompt or only inserts text.","impacts":["safety","ergonomics"],"guidance":null,"shown":{"default":{"row":26,"value":"never"}}},{"path":"collab.relayUrl","tab":"interaction","group":"Collab","label":"Relay URL","description":"Relay used by /collab (wss://host[:port])","type":"string","default":"wss://my.omp.sh","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"WebSocket/relay endpoint used for collaborative sessions.","impacts":["privacy","reliability"],"guidance":null,"shown":{"default":{"row":28,"value":"wss://my.omp.sh"}}},{"path":"collab.webUrl","tab":"interaction","group":"Collab","label":"Web UI URL","description":"Browser UI used by /collab links; empty derives from collab.relayUrl; explicit http:// is localhost-only","type":"string","default":"","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Optional web client/base URL used when opening collaboration links.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":29,"value":""}}},{"path":"collab.displayName","tab":"interaction","group":"Collab","label":"Display Name","description":"Name shown to other collab participants (default: OS username)","type":"string","default":"","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Human-readable participant name announced to collaborators.","impacts":["privacy","ergonomics"],"guidance":null,"shown":{"default":{"row":30,"value":""}}},{"path":"share.serverUrl","tab":"interaction","group":"Collab","label":"Share Server","description":"Share viewer/upload base used by /share (encrypted blob upload + viewer; links are <base>/<id>#<key>)","type":"string","default":"https://my.omp.sh/s","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Endpoint used to publish shared session artifacts.","impacts":["privacy","reliability"],"guidance":null,"shown":{"default":{"row":31,"value":"https://my.omp.sh/s"}}},{"path":"share.store","tab":"interaction","group":"Collab","label":"Share Store","description":"Where /share uploads the encrypted session blob","type":"enum","default":"blob","values":["blob","gist"],"options":[{"value":"blob","label":"Encrypted Blob","description":"Upload to the share server (no GitHub account needed; avoids gist API rate limits)"},{"value":"gist","label":"GitHub Gist","description":"Push to a secret gist (needs authenticated gh), falling back to the share server"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Backend used for shared artifacts.","impacts":["privacy","reliability"],"guidance":null,"shown":{"default":{"row":32,"value":"blob"}}},{"path":"share.redactSecrets","tab":"interaction","group":"Collab","label":"Share Secret Redaction","description":"Run the secret obfuscator over /share snapshots before upload (uses the secrets.* config)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Runs configured/credential-pattern redaction before a share payload is uploaded. It is not a substitute for client-data review.","impacts":["privacy","safety"],"guidance":{"level":"keep","value":"true","why":"Do not weaken this. Still review for ordinary confidential data before sharing."},"shown":{"default":{"row":33,"value":"true"}}},{"path":"magicKeywords.enabled","tab":"interaction","group":"Magic Keywords","label":"Magic Keywords","description":"Enable hidden notices for standalone ultrathink, orchestrate, and workflowz keywords","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Master switch for prompt words that activate specialized per-turn behavior.","impacts":["automation","context"],"guidance":null,"shown":{"default":{"row":35,"value":"true"}}},{"path":"magicKeywords.ultrathink","tab":"interaction","group":"Magic Keywords","label":"Ultrathink Keyword","description":"Let standalone ultrathink request maximum automatic thinking and append its hidden notice","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the ultrathink trigger, which requests unusually high reasoning effort for the current turn.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"default":{"row":36,"value":"true"}}},{"path":"magicKeywords.orchestrate","tab":"interaction","group":"Magic Keywords","label":"Orchestrate Keyword","description":"Let standalone orchestrate append its hidden multi-agent orchestration notice","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables prompt-triggered multi-agent orchestration behavior.","impacts":["automation","cost"],"guidance":null,"shown":{"default":{"row":37,"value":"true"}}},{"path":"magicKeywords.workflow","tab":"interaction","group":"Magic Keywords","label":"Workflow Keyword","description":"Let standalone workflowz append its hidden eval workflow notice","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables workflow-oriented prompt behavior and structured execution.","impacts":["automation","context"],"guidance":null,"shown":{"default":{"row":38,"value":"true"}}},{"path":"autoResume","tab":"interaction","group":"Startup & Updates","label":"Auto Resume","description":"Automatically resume the most recent session in the current directory","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Automatically opens the most recent session associated with the current working directory at startup.","impacts":["ergonomics","context","privacy"],"guidance":{"level":"consider","value":"true only with one-directory/one-engagement discipline","why":"Fast when directory identity is reliable; risky when folders are reused across workstreams."},"shown":{"default":{"row":40,"value":"false"}}},{"path":"startup.quiet","tab":"interaction","group":"Startup & Updates","label":"Quiet Startup","description":"Skip welcome screen and startup status messages","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Suppresses startup chrome such as banners and informational notices.","impacts":["ergonomics"],"guidance":{"level":"consider","value":"true","why":"Removes nonessential startup noise for a high-frequency CLI workflow."},"shown":{"default":{"row":41,"value":"false"}}},{"path":"startup.showSplash","tab":"interaction","group":"Startup & Updates","label":"Show Startup Splash","description":"Show the full animated setup splash on normal interactive startup without rerunning setup. Quiet Startup still suppresses it.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Shows the full startup animation without rerunning setup. Quiet Startup still suppresses it.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":42,"value":"false"}}},{"path":"startup.setupWizard","tab":"interaction","group":"Startup & Updates","label":"Setup Wizard","description":"Show newly added onboarding steps once per setup version","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows first-run setup assistance when required state is missing.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":43,"value":"true"}}},{"path":"startup.checkUpdate","tab":"interaction","group":"Startup & Updates","label":"Check for Updates","description":"Check for omp updates on startup","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Checks whether a newer OMP build is available during startup.","impacts":["security","ergonomics"],"guidance":null,"shown":{"default":{"row":44,"value":"true"}}},{"path":"marketplace.autoUpdate","tab":"interaction","group":"Startup & Updates","label":"Marketplace Auto-Update","description":"Check for plugin updates on startup","type":"enum","default":"notify","values":["off","notify","auto"],"options":[{"value":"off","label":"Off","description":"Don't check for plugin updates"},{"value":"notify","label":"Notify","description":"Check on startup and notify when updates are available"},{"value":"auto","label":"Auto","description":"Check on startup and auto-install updates"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls whether marketplace packages/extensions are only reported or automatically updated.","impacts":["security","reliability"],"guidance":{"level":"keep","value":"notify","why":"Automatic extension changes reduce reproducibility; notification is the sensible middle ground."},"shown":{"default":{"row":45,"value":"notify"}}},{"path":"startup.changelogMode","tab":"interaction","group":"Startup & Updates","label":"Startup Changelog","description":"Choose whether update notes start as a summary, full details, or stay hidden","type":"enum","default":"summary","values":["summary","expanded","hidden"],"options":[{"value":"summary","label":"Summary","description":"Show release and change counts with a /changelog hint"},{"value":"expanded","label":"Expanded","description":"Show the recent release notes in full"},{"value":"hidden","label":"Hidden","description":"Do not show release notes on startup"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls how much release-note content is shown after an update.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":46,"value":"summary"}}},{"path":"power.sleepPrevention","tab":"interaction","group":"Power (macOS)","label":"Sleep Prevention","description":"Prevent macOS sleep during active sessions. Each level is cumulative \u2014 it adds the flags of all lower levels.","type":"enum","default":"idle","values":["off","idle","display","system"],"options":[{"value":"off","label":"Off","description":"Do not prevent any sleep"},{"value":"idle","label":"Prevent Idle Sleep","description":"Keep the system awake while a session is open (caffeinate -i)"},{"value":"display","label":"Prevent Display Sleep","description":"Also keep the display from idle-sleeping (caffeinate -i -d)"},{"value":"system","label":"Prevent System Sleep","description":"Also block all system sleep on AC and declare the user active (caffeinate -i -d -s -u)"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Uses cumulative macOS caffeinate assertions: idle keeps the machine awake; display also prevents display sleep; system adds stronger AC/system assertions.","impacts":["reliability","battery"],"guidance":null,"shown":{"default":{"row":48,"value":"idle"}}},{"path":"features.unexpectedStopDetection","tab":"interaction","group":"Agent","label":"Detect unexpected stops","description":"Use a small model to detect when the assistant says it will continue but stops without tool calls; automatically prompt it to continue.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses a small model to detect when the assistant promises to continue but ends the turn without doing so, then triggers recovery.","impacts":["reliability","cost","latency"],"guidance":{"level":"consider","value":"true for long autonomous runs","why":"Adds a small classifier call but directly targets a common agent failure mode."},"shown":{"default":{"row":50,"value":"false"}}},{"path":"git.enabled","tab":"interaction","group":"Git","label":"Enable Git Integration","description":"Show git branch, status, and PR information in the TUI and watch repository metadata.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Watches repository metadata and exposes branch/status/PR information to the TUI and agent.","impacts":["observability","performance"],"guidance":null,"shown":{"default":{"row":52,"value":"true"}}},{"path":"contextPromotion.enabled","tab":"context","group":"General","label":"Auto-Promote Context","description":"Promote to a larger-context model on context overflow instead of compacting","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Promotes selected durable context across turns/sessions instead of relying only on the raw transcript.","impacts":["context","privacy","cost"],"guidance":null,"shown":{"default":{"row":4,"value":"false"}}},{"path":"branchSummary.enabled","tab":"context","group":"General","label":"Branch Summaries","description":"Prompt to summarize when leaving a branch","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Generates summaries for branches in the session tree so returning to alternate branches requires less replay.","impacts":["cost","context","ergonomics"],"guidance":null,"shown":{"default":{"row":5,"value":"false"}}},{"path":"workspace.additionalDirectories","tab":"context","group":"General","label":"Additional Workspace Dirs","description":"Extra workspace directories added to every session as additional roots (multi-root workspace). Managed live via /add-dir and /remove-dir. Paths resolve relative to cwd; absolute paths recommended. The agent is told these roots exist and can read/grep/glob them.","type":"array","default":[],"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Adds explicit directories to the workspace boundary/context discovery beyond the current directory.","impacts":["privacy","context","safety"],"guidance":null,"shown":{}},{"path":"compaction.enabled","tab":"context","group":"Compaction","label":"Auto-Compact","description":"Automatically compact context when it gets too large","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows OMP to replace older transcript state with a compacted representation before the model context overflows.","impacts":["context","reliability","cost"],"guidance":null,"shown":{"default":{"row":7,"value":"true"}}},{"path":"compaction.midTurnEnabled","tab":"context","group":"Compaction","label":"Mid-Turn Compaction","description":"Check thresholds at safe mid-turn tool-loop boundaries before the next provider request","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows recovery compaction while a turn is still executing when tool output or model usage crosses the context limit.","impacts":["context","reliability","latency"],"guidance":null,"shown":{"default":{"row":8,"value":"true"}}},{"path":"compaction.strategy","tab":"context","group":"Compaction","label":"Compaction Strategy","description":"Choose in-place context-full maintenance, auto-handoff, surgical shake (drop heavy content), snapcompact (archive history as dense images), or disable auto maintenance (off)","type":"enum","default":"snapcompact","values":["context-full","handoff","shake","snapcompact","off"],"options":[{"value":"context-full","label":"Context-full","description":"Summarize in-place and keep the current session"},{"value":"handoff","label":"Handoff","description":"Generate handoff and continue in a new session"},{"value":"shake","label":"Shake","description":"Drop heavy content (tool results + large blocks) in place; recover via artifact"},{"value":"snapcompact","label":"Snapcompact","description":"Archive history onto dense bitmap images the model reads back; no LLM call"},{"value":"off","label":"Off","description":"Disable automatic context maintenance (same behavior as Auto-compact off)"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects the algorithm: full-context summary, handoff, shake, SnapCompact, or off.","impacts":["context","quality","latency"],"guidance":null,"shown":{"default":{"row":9,"value":"snapcompact"}}},{"path":"compaction.thresholdPercent","tab":"context","group":"Compaction","label":"Compaction Threshold","description":"Percent threshold for context maintenance; set to Default to use legacy reserve-based behavior","type":"number","default":-1,"values":null,"options":[{"value":"default","label":"Default","description":"Legacy reserve-based threshold"},{"value":"10","label":"10%","description":"Extremely early maintenance"},{"value":"20","label":"20%","description":"Very early maintenance"},{"value":"30","label":"30%","description":"Early maintenance"},{"value":"40","label":"40%","description":"Moderately early maintenance"},{"value":"50","label":"50%","description":"Halfway point"},{"value":"60","label":"60%","description":"Moderate context usage"},{"value":"70","label":"70%","description":"Balanced"},{"value":"75","label":"75%","description":"Slightly aggressive"},{"value":"80","label":"80%","description":"Typical threshold"},{"value":"85","label":"85%","description":"Aggressive context usage"},{"value":"90","label":"90%","description":"Very aggressive"},{"value":"95","label":"95%","description":"Near context limit"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Legacy percentage trigger; -1 delegates to strategy/provider defaults.","impacts":["context","reliability"],"guidance":null,"shown":{"default":{"row":10,"value":"default"}}},{"path":"compaction.thresholdTokens","tab":"context","group":"Compaction","label":"Compaction Token Limit","description":"Fixed token limit for context maintenance; overrides percentage if set","type":"number","default":-1,"values":null,"options":[{"value":"default","label":"Default","description":"Use percentage-based threshold"},{"value":"25000","label":"25K tokens","description":"Quarter of a 200K window"},{"value":"50000","label":"50K tokens","description":"Half of a 200K window"},{"value":"100000","label":"100K tokens","description":"Half of a 200K window"},{"value":"150000","label":"150K tokens","description":"Three-quarters of a 200K window"},{"value":"200000","label":"200K tokens","description":"Full standard context window"},{"value":"300000","label":"300K tokens","description":"Large context window"},{"value":"500000","label":"500K tokens","description":"Very large context window"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Absolute token trigger; -1 delegates to defaults.","impacts":["context","reliability"],"guidance":null,"shown":{"default":{"row":11,"value":"default"}}},{"path":"compaction.handoffSaveToDisk","tab":"context","group":"Compaction","label":"Save Handoff Docs","description":"Save generated handoff documents to markdown files for the auto-handoff flow","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Persists handoff artifacts to disk instead of keeping them only in session state.","impacts":["privacy","reliability"],"guidance":null,"shown":{"default":{"row":12,"value":"false"}}},{"path":"compaction.remoteEnabled","tab":"context","group":"Compaction","label":"Remote Compaction","description":"Use remote compaction endpoints when available instead of local summarization","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows a configured remote compaction service/path to process compaction requests. The exact data path depends on endpoint/provider configuration.","impacts":["privacy","latency","reliability"],"guidance":{"level":"consider","value":"false in sensitive-work overlay","why":"Medium confidence: whether data leaves the machine depends on the configured remote endpoint/path."},"shown":{"default":{"row":13,"value":"true"}}},{"path":"compaction.remoteStreamingV2Enabled","tab":"context","group":"Compaction","label":"Remote Compaction V2","description":"Use Responses streaming compaction for compatible remote compaction models","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses the newer streaming protocol for remote compaction responses.","impacts":["reliability","latency","compatibility"],"guidance":null,"shown":{"default":{"row":14,"value":"true"}}},{"path":"compaction.idleEnabled","tab":"context","group":"Compaction","label":"Idle Compaction","description":"Compact context while idle when token count exceeds threshold","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Compacts very large sessions after an idle period rather than waiting for the next foreground turn.","impacts":["context","cost","latency"],"guidance":null,"shown":{"default":{"row":15,"value":"false"}}},{"path":"compaction.idleThresholdTokens","tab":"context","group":"Compaction","label":"Idle Compaction Threshold","description":"Token count above which idle compaction triggers","type":"number","default":200000,"values":null,"options":[{"value":"100000","label":"100K tokens","description":null},{"value":"200000","label":"200K tokens","description":null},{"value":"300000","label":"300K tokens","description":null},{"value":"400000","label":"400K tokens","description":null},{"value":"500000","label":"500K tokens","description":null},{"value":"600000","label":"600K tokens","description":null},{"value":"700000","label":"700K tokens","description":null},{"value":"800000","label":"800K tokens","description":null},{"value":"900000","label":"900K tokens","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Minimum estimated session tokens before idle compaction is considered.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":16,"value":"200000"}}},{"path":"compaction.idleTimeoutSeconds","tab":"context","group":"Compaction","label":"Idle Compaction Delay","description":"Seconds to wait while idle before compacting","type":"number","default":300,"values":null,"options":[{"value":"60","label":"1 minute","description":null},{"value":"120","label":"2 minutes","description":null},{"value":"300","label":"5 minutes","description":null},{"value":"600","label":"10 minutes","description":null},{"value":"1800","label":"30 minutes","description":null},{"value":"3600","label":"1 hour","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Idle duration before an eligible background compaction starts.","impacts":["cost","latency"],"guidance":null,"shown":{"default":{"row":17,"value":"300"}}},{"path":"compaction.supersedeReads","tab":"context","group":"Compaction","label":"Supersede Stale Reads","description":"Prune older read results when the same file is read again (cache-aware, runs every turn)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Drops older read-tool payloads when later reads make them redundant, preserving the most useful current evidence.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":18,"value":"true"}}},{"path":"compaction.dropUseless","tab":"context","group":"Compaction","label":"Elide Uneventful Results","description":"Prune tool results flagged contextually useless (no matches, timed-out waits) once consumed (cache-aware)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Removes transcript entries classified as low-value for future reasoning during compaction.","impacts":["context","quality","cost"],"guidance":null,"shown":{"default":{"row":19,"value":"true"}}},{"path":"ttsr.enabled","tab":"context","group":"Rules (TTSR)","label":"TTSR","description":"Interrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables turn-time system rules that inject corrective guidance when matching behaviors occur.","impacts":["reliability","context"],"guidance":null,"shown":{"default":{"row":21,"value":"true"}}},{"path":"ttsr.contextMode","tab":"context","group":"Rules (TTSR)","label":"TTSR Context Mode","description":"What to do with partial output when TTSR triggers","type":"enum","default":"discard","values":["discard","keep"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Controls whether injected rule text stays in future context or is discarded after the turn.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":22,"value":"discard"}}},{"path":"ttsr.interruptMode","tab":"context","group":"Rules (TTSR)","label":"TTSR Interrupt Mode","description":"When to interrupt mid-stream vs inject warning after completion","type":"enum","default":"always","values":["never","prose-only","tool-only","always"],"options":[{"value":"always","label":"always","description":"Interrupt on prose and tool streams"},{"value":"prose-only","label":"prose-only","description":"Interrupt only on reply/thinking matches"},{"value":"tool-only","label":"tool-only","description":"Interrupt only on tool-call argument matches"},{"value":"never","label":"never","description":"Never interrupt; inject warning after completion"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Defines which in-progress output types may be interrupted by a rule.","impacts":["reliability","ergonomics"],"guidance":null,"shown":{"default":{"row":23,"value":"always"}}},{"path":"ttsr.repeatMode","tab":"context","group":"Rules (TTSR)","label":"TTSR Repeat Mode","description":"How rules can repeat: once per session or after a message gap","type":"enum","default":"once","values":["once","after-gap"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Controls whether a rule fires only once or may repeat after a turn gap.","impacts":["context","reliability"],"guidance":null,"shown":{"default":{"row":24,"value":"once"}}},{"path":"ttsr.repeatGap","tab":"context","group":"Rules (TTSR)","label":"TTSR Repeat Gap","description":"Messages before a rule can trigger again","type":"number","default":10,"values":null,"options":[{"value":"5","label":"5 messages","description":null},{"value":"10","label":"10 messages","description":null},{"value":"15","label":"15 messages","description":null},{"value":"20","label":"20 messages","description":null},{"value":"30","label":"30 messages","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Minimum turn gap before a repeatable TTSR rule may fire again.","impacts":["context","reliability"],"guidance":null,"shown":{"default":{"row":25,"value":"10"}}},{"path":"ttsr.builtinRules","tab":"context","group":"Rules (TTSR)","label":"Built-in Rules","description":"Load the default rules shipped with the agent (override individually with ttsr.disabledRules)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Loads OMP\u2019s shipped corrective rule set.","impacts":["r","e","l","i","a","b","i","l","i","t","y"],"guidance":null,"shown":{"default":{"row":26,"value":"true"}}},{"path":"ttsr.disabledRules","tab":"context","group":"Rules (TTSR)","label":"Disabled Rules","description":"Rule names to ignore entirely (applies to bundled defaults and your own rules)","type":"array","default":[],"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"List of built-in rule IDs to suppress.","impacts":["reliability","customization"],"guidance":null,"shown":{}},{"path":"snapcompact.systemPrompt","tab":"context","group":"Experimental","label":"Snapcompact System Prompt","description":"Experimental: render selected system prompt text as dense PNG image(s) and attach to the first user message (vision models only). Saves tokens; loses prompt caching for imaged text.","type":"enum","default":"none","values":["none","agents-md","all"],"options":[{"value":"none","label":"None","description":"Keep the system prompt as text."},{"value":"agents-md","label":"AGENTS.md","description":"Only move loaded context-file instructions to images, when that saves tokens."},{"value":"all","label":"All","description":"Move the full system prompt to images, when that saves tokens."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls whether SnapCompact includes AGENTS.md or the entire system prompt in the compacted representation.","impacts":["context","quality","cost"],"guidance":null,"shown":{"default":{"row":28,"value":"none"}}},{"path":"snapcompact.toolResults","tab":"context","group":"Experimental","label":"Snapcompact Tool Results","description":"Experimental: render large historical tool results as dense PNG image(s) instead of text (vision models only). Saves tokens on accumulated read/search output.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows SnapCompact to preserve/shape tool-result material beyond its normal selection behavior.","impacts":["context","quality","cost"],"guidance":null,"shown":{"default":{"row":29,"value":"false"}}},{"path":"tools.format","tab":"context","group":"Experimental","label":"Tool Calling Mode","description":"Controls how tools are exposed to the model. Auto uses provider-native tool calls unless the selected model is marked as not supporting them, then falls back to the GLM owned dialect. Native forces provider-native tools; the other values force the named owned dialect. Applies on session start.","type":"enum","default":"auto","values":["auto","native","glm","hermes","kimi","xml","anthropic","deepseek","harmony","qwen3","gemini","gemma","minimax"],"options":[{"value":"auto","label":"Auto","description":"Use native tool calls unless the model is known not to support them."},{"value":"native","label":"Native","description":"Use provider-native tool calls."},{"value":"glm","label":"GLM","description":"Use GLM-style in-band tool calls."},{"value":"hermes","label":"Hermes","description":"Use Hermes-style in-band tool calls."},{"value":"kimi","label":"Kimi","description":"Use Kimi-style in-band tool calls."},{"value":"xml","label":"XML","description":"Use generic XML in-band tool calls."},{"value":"anthropic","label":"Anthropic","description":"Use Anthropic-style in-band tool calls."},{"value":"deepseek","label":"DeepSeek","description":"Use DeepSeek-style in-band tool calls."},{"value":"harmony","label":"Harmony","description":"Use Harmony-style in-band tool calls."},{"value":"qwen3","label":"Qwen3","description":"Use the Qwen3 owned dialect."},{"value":"gemini","label":"Gemini","description":"Use the Gemini owned dialect."},{"value":"gemma","label":"Gemma","description":"Use the Gemma owned dialect."},{"value":"minimax","label":"MiniMax","description":"Use the MiniMax owned dialect."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects the tool-call protocol/serialization dialect. Auto chooses a provider/model-compatible format.","impacts":["compatibility","reliability"],"guidance":null,"shown":{"default":{"row":30,"value":"auto"}}},{"path":"snapcompact.shape","tab":"context","group":"Experimental","label":"Snapcompact Shape","description":"Frame shape snapcompact prints text with (compaction archive and inline imaging). Auto picks a shape tuned for the current model.","type":"enum","default":"auto","values":["auto","8x8r-bw","8x8r-sent","8x8u-bw","8x8u-sent","6x6u-bw","6x6u-sent","5x8-bw","5x8-sent","6x12-dim","8x13-bw","8on16-bw","8on22-bw","11on16-bw","silver16-bw","doc-8on16-bw","doc-8on16-sent","doc-8on16-sent-dim"],"options":[{"value":"auto","label":"Auto","description":"Picks a shape tuned for the current model, falling back to its provider family."},{"value":"8x8r-bw","label":"8x8 repeated, black","description":"unscii square cell, black ink, every line printed twice with the copy on a pale highlight band."},{"value":"8x8r-sent","label":"8x8 repeated, sentence hues","description":"Repeated grid with ink cycling six hues at sentence boundaries."},{"value":"8x8u-bw","label":"8x8, black","description":"Plain unscii square cell, single-printed lines, black ink."},{"value":"8x8u-sent","label":"8x8, sentence hues","description":"Plain unscii square cell with sentence-hue ink."},{"value":"6x6u-bw","label":"6x6 dense, black","description":"unscii squeezed to 6x6 \u2014 densest readable cell, fewest frames \u2014 in black ink."},{"value":"6x6u-sent","label":"6x6 dense, sentence hues","description":"Densest cell with sentence-hue ink."},{"value":"5x8-bw","label":"5x8 legacy, black","description":"Original X.org 5x8 glyphs on the 2576px frame, black ink."},{"value":"5x8-sent","label":"5x8 legacy, sentence hues","description":"The original snapcompact shape (pre-shape-table sessions rendered this)."},{"value":"6x12-dim","label":"6x12, dimmed stopwords","description":"X.org 6x12 glyphs, black ink, function words dimmed gray."},{"value":"8x13-bw","label":"8x13, black","description":"X.org 8x13 glyphs, black ink."},{"value":"8on16-bw","label":"8x13 on 16px pitch, black","description":"8x13 glyphs on an 8x16 cell (extra leading), black ink."},{"value":"8on22-bw","label":"8x13 on 22px pitch (leading), black","description":"8x13 glyphs on an 8x22 cell \u2014 extra line spacing so rows don't crowd. Default for OpenAI/Google."},{"value":"11on16-bw","label":"8x13 on 11px advance (tracking), black","description":"8x13 glyphs on an 11x16 cell \u2014 extra letter spacing so characters don't merge. Default for Anthropic."},{"value":"silver16-bw","label":"Silver 16, CJK","description":"Embedded Silver TrueType font on a 16px grid for CJK and other non-Latin text."},{"value":"doc-8on16-bw","label":"Doc 8on16, black","description":"Two word-wrapped newspaper columns of 8x13 glyphs on a 16px pitch, black ink."},{"value":"doc-8on16-sent","label":"Doc 8on16, sentence hues","description":"Two-column doc layout with sentence-hue ink."},{"value":"doc-8on16-sent-dim","label":"Doc 8on16, sentence hues + dimmed stopwords","description":"Two-column doc layout, sentence-hue ink, function words dimmed gray."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects a SnapCompact shape variant; Auto lets OMP choose based on the session/provider.","impacts":["context","quality","latency"],"guidance":null,"shown":{"default":{"row":31,"value":"auto"}}},{"path":"memory.backend","tab":"memory","group":"General","label":"Memory Backend","description":"Off, local summary pipeline, Mnemopi SQLite, or Hindsight remote memory","type":"enum","default":"off","values":["off","local","hindsight","mnemopi"],"options":[{"value":"off","label":"Off","description":"No memory subsystem runs"},{"value":"local","label":"Local","description":"Local rollout summarisation pipeline (memory_summary.md)"},{"value":"hindsight","label":"Hindsight","description":"Vectorize Hindsight remote memory service"},{"value":"mnemopi","label":"Mnemopi","description":"Local SQLite recall/retain backend with optional embeddings"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects durable memory: disabled, OMP local memory, Hindsight service, or Mnemopi.","impacts":["privacy","context","cost"],"guidance":{"level":"keep","value":"off globally; mnemopi only in personal/project profile","why":"Durable memory is valuable, but global memory and client work are a bad default combination."},"shown":{"default":{"row":4,"value":"off"},"expanded":{"row":4,"value":"mnemopi"},"hindsight":{"row":4,"value":"hindsight"}}},{"path":"providers.memoryModel","tab":"memory","group":"General","label":"Memory Model","description":"Mnemopi LLM for fact extraction + consolidation: online (the TINY role from /models, else smol/remote) by default, or a local on-device model","type":"enum","default":"online","values":["online","qwen3-1.7b","llama3.2:3b","gemma-3-1b","qwen2.5-1.5b","lfm2-1.2b"],"options":[{"value":"online","label":"Online (TINY role, else @smol)","description":"Use the online model: the TINY role from /models when set, otherwise @smol. No local model download or on-device inference."},{"value":"qwen3-1.7b","label":"Qwen3 1.7B","description":"Disabled for local inference: onnxruntime-node cannot run this ONNX export's RotaryEmbedding cache updates."},{"value":"llama3.2:3b","label":"Llama 3.2 3B","description":"Larger Llama 3.2 option for local memory/classifier tasks; higher quality potential at higher disk/RAM/latency cost."},{"value":"gemma-3-1b","label":"Gemma 3 1B","description":"Best consolidation/dedup; lighter footprint, but leaks small talk during extraction."},{"value":"qwen2.5-1.5b","label":"Qwen2.5 1.5B","description":"Best extraction granularity (atomic facts); weaker consolidation."},{"value":"lfm2-1.2b","label":"LFM2 1.2B","description":"Fastest load; solid all-rounder, slightly noisier extraction labels."}],"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"submenu","mechanics":"Small model used for memory extraction/selection when the chosen backend requires LLM assistance.","impacts":["cost","latency","privacy"],"guidance":null,"shown":{"expanded":{"row":5,"value":"online"}}},{"path":"autolearn.enabled","tab":"memory","group":"Auto-Learn","label":"Auto-Learn (experimental)","description":"After the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Automatically extracts potentially reusable lessons from completed work into the configured memory backend.","impacts":["privacy","context","cost"],"guidance":{"level":"keep","value":"false globally","why":"Automatic retention is a privacy boundary, not just a convenience switch."},"shown":{"default":{"row":6,"value":"false"},"expanded":{"row":7,"value":"true"},"hindsight":{"row":6,"value":"false"}}},{"path":"autolearn.autoContinue","tab":"memory","group":"Auto-Learn","label":"Auto-run capture at stop","description":"When on, auto-run one private capture turn at stop (uses extra tokens). When off, only standing auto-learn guidance remains.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"autolearnActive","ordered":false,"widget":"boolean","mechanics":"Runs an additional private capture turn automatically instead of waiting for explicit continuation after learning.","impacts":["privacy","cost","latency"],"guidance":null,"shown":{"expanded":{"row":8,"value":"false"}}},{"path":"mnemopi.dbPath","tab":"memory","group":"Mnemopi","label":"Mnemopi DB Path","description":"Optional SQLite DB path. Defaults to the agent memories directory.","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"Filesystem path for the Mnemopi store. Unset uses the backend default.","impacts":["privacy","storage"],"guidance":null,"shown":{"expanded":{"row":10,"value":""}}},{"path":"mnemopi.bank","tab":"memory","group":"Mnemopi","label":"Mnemopi Bank","description":"Optional shared bank base name. Per-project modes derive project-local banks from it.","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"Explicit memory bank/namespace name.","impacts":["privacy","context"],"guidance":null,"shown":{"expanded":{"row":11,"value":""}}},{"path":"mnemopi.scoping","tab":"memory","group":"Mnemopi","label":"Mnemopi Scoping","description":"global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = project-local writes plus global recall visibility","type":"enum","default":"per-project","values":["global","per-project","per-project-tagged"],"options":[{"value":"global","label":"Global","description":"One shared Mnemopi bank for every project"},{"value":"per-project","label":"Per project","description":"Project-local Mnemopi bank per cwd basename"},{"value":"per-project-tagged","label":"Per project (tagged)","description":"Write to a project-local bank but merge project + shared recall results"}],"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"submenu","mechanics":"Controls whether memories share one global namespace or are separated/tagged by project.","impacts":["privacy","context"],"guidance":null,"shown":{"expanded":{"row":12,"value":"per-project"}}},{"path":"mnemopi.embeddingVariant","tab":"memory","group":"Mnemopi","label":"Embedding variant","description":"Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start.","type":"enum","default":"en","values":["en","multilingual"],"options":[{"value":"en","label":"English (bge-base-en-v1.5)","description":"BAAI/bge-base-en-v1.5 (768d), English-only"},{"value":"multilingual","label":"Multilingual (multilingual-e5-large)","description":"intfloat/multilingual-e5-large (1024d), cross-language recall"}],"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"submenu","mechanics":"Selects English-optimized or multilingual embedding behavior.","impacts":["quality","performance","storage"],"guidance":null,"shown":{"expanded":{"row":13,"value":"en"}}},{"path":"mnemopi.autoRecall","tab":"memory","group":"Mnemopi","label":"Mnemopi Auto Recall","description":"Recall local memories into the first turn of each session","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"boolean","mechanics":"Automatically queries memory and injects relevant items before turns.","impacts":["context","cost","privacy"],"guidance":null,"shown":{"expanded":{"row":14,"value":"true"}}},{"path":"mnemopi.autoRetain","tab":"memory","group":"Mnemopi","label":"Mnemopi Auto Retain","description":"Retain completed conversation turns into local Mnemopi memory","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"boolean","mechanics":"Automatically writes qualifying session information into memory.","impacts":["privacy","context"],"guidance":null,"shown":{"expanded":{"row":15,"value":"true"}}},{"path":"mnemopi.polyphonicRecall","tab":"memory","group":"Mnemopi","label":"Mnemopi Polyphonic Recall","description":"Enable 4-voice recall (vector, graph, fact, temporal) fused with reciprocal rank fusion","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"boolean","mechanics":"Uses multiple recall perspectives/queries and merges them, improving coverage at extra latency.","impacts":["quality","latency","cost"],"guidance":null,"shown":{"expanded":{"row":16,"value":"false"}}},{"path":"mnemopi.enhancedRecall","tab":"memory","group":"Mnemopi","label":"Mnemopi Enhanced Recall","description":"Enable the tiered query result cache for repeated and similar recall queries","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"boolean","mechanics":"Enables a heavier recall/reranking path for better relevance.","impacts":["quality","latency","cost"],"guidance":null,"shown":{"expanded":{"row":17,"value":"false"}}},{"path":"mnemopi.proactiveLinking","tab":"memory","group":"Mnemopi","label":"Mnemopi Proactive Linking","description":"Ingest new memories into the episodic graph as they are stored, linking them to related entities and memories","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"boolean","mechanics":"Creates links between newly retained memories and related existing items.","impacts":["context","cost","latency"],"guidance":null,"shown":{"expanded":{"row":18,"value":"false"}}},{"path":"mnemopi.noEmbeddings","tab":"memory","group":"Mnemopi","label":"Mnemopi Disable Embeddings","description":"Force deterministic FTS-only recall instead of vector embeddings","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"boolean","mechanics":"Runs the backend without vector embeddings, trading semantic recall quality for simpler/local storage.","impacts":["quality","privacy","performance"],"guidance":null,"shown":{"expanded":{"row":19,"value":"false"}}},{"path":"mnemopi.embeddingModel","tab":"memory","group":"Mnemopi","label":"Mnemopi Embedding Model","description":"Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"Explicit embedding model identifier.","impacts":["quality","cost","privacy"],"guidance":null,"shown":{"expanded":{"row":20,"value":""}}},{"path":"mnemopi.embeddingApiUrl","tab":"memory","group":"Mnemopi","label":"Mnemopi Embedding API URL","description":"Optional OpenAI-compatible embedding endpoint passed to Mnemopi","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"OpenAI-compatible or backend-specific embedding endpoint.","impacts":["privacy","reliability"],"guidance":null,"shown":{"expanded":{"row":21,"value":""}}},{"path":"mnemopi.embeddingApiKey","tab":"memory","group":"Mnemopi","label":"Mnemopi Embedding API Key","description":"Optional embedding API key passed to Mnemopi","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":true,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"Credential used by the remote embedding endpoint; masked in normal settings output.","impacts":["privacy","security"],"guidance":null,"shown":{"expanded":{"row":22,"value":""}}},{"path":"mnemopi.llmMode","tab":"memory","group":"Mnemopi","label":"Mnemopi LLM Mode","description":"Use no LLM, the online tiny model (the TINY role from /models, else @smol), or a remote OpenAI-compatible endpoint","type":"enum","default":"smol","values":["none","smol","remote"],"options":[{"value":"none","label":"None","description":"Disable Mnemopi LLM-backed extraction"},{"value":"smol","label":"Online (tiny)","description":"Use the online tiny model (the TINY role from /models, else @smol)"},{"value":"remote","label":"Remote","description":"Use the Mnemopi remote LLM settings below"}],"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"submenu","mechanics":"Controls whether memory processing uses no LLM, the configured smol role, or a dedicated remote endpoint.","impacts":["cost","latency","privacy"],"guidance":null,"shown":{"expanded":{"row":23,"value":"smol"}}},{"path":"mnemopi.llmBaseUrl","tab":"memory","group":"Mnemopi","label":"Mnemopi LLM Base URL","description":"Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"Dedicated remote LLM endpoint for Mnemopi remote mode.","impacts":["privacy","reliability"],"guidance":null,"shown":{"expanded":{"row":24,"value":""}}},{"path":"mnemopi.llmApiKey","tab":"memory","group":"Mnemopi","label":"Mnemopi LLM API Key","description":"Optional LLM API key for Mnemopi remote mode","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":true,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"Credential for the Mnemopi remote LLM endpoint.","impacts":["privacy","security"],"guidance":null,"shown":{"expanded":{"row":25,"value":""}}},{"path":"mnemopi.llmModel","tab":"memory","group":"Mnemopi","label":"Mnemopi LLM Model","description":"Optional LLM model name for Mnemopi remote mode","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"mnemopiActive","ordered":false,"widget":"text","mechanics":"Model identifier sent to the Mnemopi remote LLM endpoint.","impacts":["quality","cost"],"guidance":null,"shown":{"expanded":{"row":26,"value":""}}},{"path":"hindsight.apiUrl","tab":"memory","group":"Hindsight","label":"Hindsight API URL","description":"Hindsight server URL (Cloud or self-hosted)","type":"string","default":"http://localhost:8888","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"text","mechanics":"Hindsight service endpoint. The default assumes a local service.","impacts":["privacy","reliability"],"guidance":null,"shown":{"hindsight":{"row":8,"value":"http://localhost:8888"}}},{"path":"hindsight.apiToken","tab":"memory","group":"Hindsight","label":"Hindsight API Token","description":"Bearer token for authenticated Hindsight servers","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":true,"condition":"hindsightActive","ordered":false,"widget":"text","mechanics":"Credential sent to the Hindsight service.","impacts":["privacy","security"],"guidance":null,"shown":{"hindsight":{"row":9,"value":""}}},{"path":"hindsight.bankId","tab":"memory","group":"Hindsight","label":"Hindsight Bank ID","description":"Memory bank identifier (default: project name)","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"text","mechanics":"Explicit Hindsight bank/namespace identifier.","impacts":["privacy","context"],"guidance":null,"shown":{"hindsight":{"row":10,"value":""}}},{"path":"hindsight.scoping","tab":"memory","group":"Hindsight","label":"Hindsight Scoping","description":"global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = shared bank with project tags so global + project memories merge on recall","type":"enum","default":"per-project-tagged","values":["global","per-project","per-project-tagged"],"options":[{"value":"global","label":"Global","description":"One shared bank \u2014 every project sees the same memories"},{"value":"per-project","label":"Per project","description":"Isolated bank per cwd basename \u2014 projects cannot see each other's memories"},{"value":"per-project-tagged","label":"Per project (tagged)","description":"Shared bank, retains tagged with project:<cwd>. Recall surfaces project + untagged global memories together"}],"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"submenu","mechanics":"Controls global versus project-specific memory isolation/tagging.","impacts":["privacy","context"],"guidance":null,"shown":{"hindsight":{"row":11,"value":"per-project-tagged"}}},{"path":"hindsight.autoRecall","tab":"memory","group":"Hindsight","label":"Hindsight Auto Recall","description":"Recall memories on the first turn of each session","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"boolean","mechanics":"Queries Hindsight automatically before relevant turns.","impacts":["context","privacy","latency"],"guidance":null,"shown":{"hindsight":{"row":12,"value":"true"}}},{"path":"hindsight.autoRetain","tab":"memory","group":"Hindsight","label":"Hindsight Auto Retain","description":"Retain transcript every N turns and at session boundaries","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"boolean","mechanics":"Sends eligible session material to Hindsight automatically.","impacts":["privacy","context"],"guidance":null,"shown":{"hindsight":{"row":13,"value":"true"}}},{"path":"hindsight.retainMode","tab":"memory","group":"Hindsight","label":"Hindsight Retain Mode","description":"full-session = upsert one document per session, last-turn = chunked","type":"enum","default":"full-session","values":["full-session","last-turn"],"options":[{"value":"full-session","label":"Full session","description":"Upsert one document per session (recommended)"},{"value":"last-turn","label":"Last turn","description":"Chunked retention sliced by turn boundaries"}],"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"submenu","mechanics":"Determines whether retention sends the full session or only the most recent turn.","impacts":["privacy","context","cost"],"guidance":null,"shown":{"hindsight":{"row":14,"value":"full-session"}}},{"path":"hindsight.mentalModelsEnabled","tab":"memory","group":"Hindsight","label":"Hindsight Mental Models","description":"Read curated reflect summaries (mental models) into developer instructions at boot. Loads existing models on the bank \u2014 does not write. Pair with hindsight.mentalModelAutoSeed to also auto-create the built-in seed set.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"boolean","mechanics":"Enables Hindsight\u2019s higher-level durable mental-model representations.","impacts":["context","quality","cost"],"guidance":null,"shown":{"hindsight":{"row":15,"value":"true"}}},{"path":"hindsight.mentalModelAutoSeed","tab":"memory","group":"Hindsight","label":"Hindsight Mental Model Auto-Seed","description":"At session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"hindsightActive","ordered":false,"widget":"boolean","mechanics":"Automatically creates initial mental-model structure when a bank lacks it.","impacts":["context","cost"],"guidance":null,"shown":{"hindsight":{"row":16,"value":"true"}}},{"path":"edit.mode","tab":"files","group":"Editing","label":"Edit Mode","description":"Select the edit tool variant (replace, patch, hashline, or apply_patch)","type":"enum","default":"hashline","values":["apply_patch","hashline","patch","replace"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Selects the edit protocol used by the model. Hashline anchors edits to hashed source lines to reduce drift.","impacts":["reliability","compatibility"],"guidance":null,"shown":{"default":{"row":4,"value":"hashline"}}},{"path":"edit.fuzzyMatch","tab":"files","group":"Editing","label":"Fuzzy Match","description":"Accept high-confidence fuzzy matches for whitespace differences","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows edits to match near-identical source when exact context has shifted.","impacts":["reliability","safety"],"guidance":null,"shown":{"default":{"row":5,"value":"true"}}},{"path":"edit.fuzzyThreshold","tab":"files","group":"Editing","label":"Fuzzy Match Threshold","description":"Similarity threshold (0-1) for accepting fuzzy matches","type":"number","default":0.95,"values":null,"options":[{"value":"0.85","label":"0.85","description":"Lenient"},{"value":"0.90","label":"0.90","description":"Moderate"},{"value":"0.95","label":"0.95","description":"Default"},{"value":"0.98","label":"0.98","description":"Strict"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Similarity threshold required before a fuzzy edit is accepted. Higher is safer but less tolerant.","impacts":["reliability","safety"],"guidance":null,"shown":{"default":{"row":6,"value":"0.95"}}},{"path":"edit.streamingAbort","tab":"files","group":"Editing","label":"Abort on Failed Preview","description":"Abort streaming edit tool calls when patch preview fails","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Stops the active model stream as soon as an in-stream edit cannot be applied.","impacts":["reliability","latency"],"guidance":null,"shown":{"default":{"row":7,"value":"false"}}},{"path":"edit.blockAutoGenerated","tab":"files","group":"Editing","label":"Block Auto-Generated Files","description":"Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Rejects edits to files detected as generated/minified/vendor output unless deliberately overridden.","impacts":["safety","reliability"],"guidance":null,"shown":{"default":{"row":8,"value":"true"}}},{"path":"edit.enforceSeenLines","tab":"files","group":"Editing","label":"Enforce Seen-Line Guard","description":"Reject edits anchored on lines a prior read/search never displayed in full","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Requires the model to have read the target lines before editing them, reducing blind edits at the cost of extra reads.","impacts":["safety","cost","latency"],"guidance":{"level":"consider","value":"true in strict work profile","why":"Forces read-before-write, improving auditability at the cost of more tool calls."},"shown":{"default":{"row":9,"value":"false"}}},{"path":"readLineNumbers","tab":"files","group":"Reading","label":"Line Numbers","description":"Prepend line numbers to read tool output by default","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Adds line numbers to read-tool output. Hashline mode may expose its own anchors separately.","impacts":["ergonomics","context"],"guidance":null,"shown":{"default":{"row":11,"value":"false"}}},{"path":"read.defaultLimit","tab":"files","group":"Reading","label":"Default Read Limit","description":"Default number of lines returned when agent calls read without a limit","type":"number","default":300,"values":null,"options":[{"value":"200","label":"200 lines","description":null},{"value":"300","label":"300 lines","description":null},{"value":"500","label":"500 lines","description":null},{"value":"1000","label":"1000 lines","description":null},{"value":"5000","label":"5000 lines","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Default maximum lines returned by a read call when the model does not specify a limit.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":12,"value":"300"}}},{"path":"read.renderMarkdown","tab":"files","group":"Reading","label":"Markdown Previews","description":"Render Markdown read results as formatted terminal Markdown previews instead of raw source","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Renders Markdown files for human display rather than showing only raw source structure.","impacts":["ergonomics","reliability"],"guidance":null,"shown":{"default":{"row":13,"value":"false"}}},{"path":"read.toolResultPreview","tab":"files","group":"Reading","label":"Inline Read Previews","description":"Render read tool results inline in the transcript instead of summary rows","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Shows a compact human preview of read payloads alongside the tool call.","impacts":["observability","ergonomics"],"guidance":null,"shown":{"default":{"row":14,"value":"false"}}},{"path":"read.summarize.enabled","tab":"files","group":"Read Summaries","label":"Read Summaries","description":"Return structural code summaries when read is called without an explicit selector","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Folds long code regions into structural summaries while retaining expandable source.","impacts":["context","cost","ergonomics"],"guidance":null,"shown":{"default":{"row":16,"value":"true"}}},{"path":"read.summarize.prose","tab":"files","group":"Read Summaries","label":"Prose Summaries","description":"Return structural summaries for Markdown and plain text reads","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Extends folding/summarization to prose-heavy documents rather than only source code.","impacts":["context","quality","cost"],"guidance":{"level":"consider","value":"true for long-report workflows","why":"Helpful for diligence reports and docs; still inspect raw source around quantitative claims."},"shown":{"default":{"row":17,"value":"false"}}},{"path":"read.summarize.minBodyLines","tab":"files","group":"Read Summaries","label":"Read Summary Body Lines","description":"Minimum multiline body or literal length before read summaries collapse it","type":"number","default":4,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Minimum body length before a code construct can be folded.","impacts":["ergonomics","context"],"guidance":null,"shown":{}},{"path":"read.summarize.minCommentLines","tab":"files","group":"Read Summaries","label":"Read Summary Comment Lines","description":"Minimum multiline block comment length before read summaries collapse it","type":"number","default":6,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Minimum comment-block length before folding.","impacts":["ergonomics","context"],"guidance":null,"shown":{}},{"path":"read.summarize.minTotalLines","tab":"files","group":"Read Summaries","label":"Read Summary Minimum File Length","description":"Files with fewer total lines are read verbatim instead of structurally summarized","type":"number","default":100,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Minimum overall file length before automatic read summaries activate.","impacts":["ergonomics","context"],"guidance":null,"shown":{}},{"path":"read.summarize.unfoldUntil","tab":"files","group":"Read Summaries","label":"Read Summary Unfold Target","description":"BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions.","type":"number","default":50,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Keeps the opening portion of a summarized file expanded for orientation.","impacts":["ergonomics","context"],"guidance":null,"shown":{}},{"path":"read.summarize.unfoldLimit","tab":"files","group":"Read Summaries","label":"Read Summary Unfold Ceiling","description":"Hard ceiling on summary size while BFS-unfolding. An unfold whose revealed lines would exceed this is skipped (that span stays folded) and unfolding continues with the remaining spans.","type":"number","default":100,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Maximum amount automatically unfolded around a requested region.","impacts":["context","cost"],"guidance":null,"shown":{}},{"path":"lsp.enabled","tab":"files","group":"LSP","label":"LSP","description":"Enable the lsp tool for code intelligence (definitions, references, diagnostics, rename)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables language-server integration for symbols, definitions, diagnostics, and formatting.","impacts":["quality","performance"],"guidance":null,"shown":{"default":{"row":19,"value":"true"}}},{"path":"lsp.lazy","tab":"files","group":"LSP","label":"Lazy LSP Startup","description":"Start language servers on first use (lsp tool or editing a matching file type) instead of at session startup","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Starts language servers only when a supported operation requires them.","impacts":["performance","latency"],"guidance":null,"shown":{"default":{"row":20,"value":"true"}}},{"path":"lsp.shared","tab":"files","group":"LSP","label":"Shared Language Servers","description":"Share one language server per project across omp instances via the daemon broker (falls back to private servers when unavailable)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows compatible OMP sessions to share language-server processes instead of spawning duplicates.","impacts":["performance","reliability"],"guidance":null,"shown":{"default":{"row":21,"value":"true"}}},{"path":"lsp.formatOnWrite","tab":"files","group":"LSP","label":"Format on Write","description":"Automatically format code files using LSP after writing","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Runs LSP formatting after file writes. This can create broad diffs if repository formatting is not deterministic.","impacts":["quality","safety","latency"],"guidance":null,"shown":{"default":{"row":22,"value":"false"}}},{"path":"lsp.diagnosticsOnWrite","tab":"files","group":"LSP","label":"Diagnostics on Write","description":"Return LSP diagnostics after writing code files","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Requests diagnostics after a write completes.","impacts":["quality","latency"],"guidance":null,"shown":{"default":{"row":23,"value":"true"}}},{"path":"lsp.diagnosticsOnEdit","tab":"files","group":"LSP","label":"Diagnostics on Edit","description":"Return LSP diagnostics after editing code files","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Requests diagnostics after each edit, giving faster feedback at higher server churn.","impacts":["quality","latency","performance"],"guidance":{"level":"consider","value":"true in smaller repos","why":"Fast feedback is useful; large monorepos may pay too much latency."},"shown":{"default":{"row":24,"value":"false"}}},{"path":"lsp.diagnosticsDeduplicate","tab":"files","group":"LSP","label":"Deduplicate Diagnostics","description":"Suppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Suppresses repeated identical diagnostics across successive LSP responses.","impacts":["ergonomics","performance"],"guidance":null,"shown":{"default":{"row":25,"value":"true"}}},{"path":"bash.enabled","tab":"shell","group":"Bash","label":"Bash","description":"Enable the bash tool for shell command execution","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the shell execution tool.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":4,"value":"true"}}},{"path":"bash.autoBackground.enabled","tab":"shell","group":"Bash","label":"Bash Auto-Background","description":"Automatically background long-running bash commands and deliver the result later","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Moves commands that exceed the background threshold into managed hub processes instead of blocking the foreground turn.","impacts":["automation","reliability"],"guidance":{"level":"consider","value":"true if you run dev servers/watchers","why":"Keeps long processes managed and observable across agent turns."},"shown":{"default":{"row":5,"value":"false"}}},{"path":"bashInterceptor.enabled","tab":"shell","group":"Bash","label":"Bash Interceptor","description":"Block shell commands that have dedicated tools","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Redirects shell patterns such as cat/grep/find/sed, file redirection, services, and watchers toward structured OMP tools when available.","impacts":["safety","reliability","automation"],"guidance":{"level":"consider","value":"true","why":"Routes common shell work to structured tools with better previews and controls; shell purists may find it intrusive."},"shown":{"default":{"row":6,"value":"false"}}},{"path":"bash.direnv","tab":"shell","group":"Bash","label":"direnv Auto-Load","description":"Auto-load a repo's direnv/devenv `.envrc` into the bash session so devenv tools and env vars are present without manual `direnv exec`. Honors direnv's allow list: an `.envrc` you haven't `direnv allow`ed is never executed","type":"enum","default":"auto","values":["auto","off"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Auto integrates direnv when available, or disables it. Project .envrc can execute code, so trust the repository first.","impacts":["safety","automation","compatibility"],"guidance":null,"shown":{"default":{"row":7,"value":"auto"}}},{"path":"shellMinimizer.enabled","tab":"shell","group":"Bash","label":"Shell Minimizer","description":"Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Compresses noisy command output into a model-oriented representation while retaining important failures and summaries.","impacts":["context","cost","reliability"],"guidance":null,"shown":{"default":{"row":8,"value":"true"}}},{"path":"shellMinimizer.sourceOutlineLevel","tab":"shell","group":"Bash","label":"Shell Minimizer Source Outline","description":"Source outline mode for cat/read of source files: default or aggressive","type":"enum","default":"default","values":["default","aggressive"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Controls how aggressively source-like shell output is structurally summarized.","impacts":["context","quality"],"guidance":null,"shown":{"default":{"row":9,"value":"default"}}},{"path":"bash.patterns","tab":"shell","group":"Bash","label":"Bash Approval Patterns","description":"Ordered bash command approval rules. Each item has match and approval fields; only '*' wildcards are supported.","type":"array","default":[],"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Ordered command-glob rules; first match wins. Deny/prompt rules inspect compound-command segments, while allow rules must match the whole command.","impacts":["safety","automation"],"guidance":null,"shown":{}},{"path":"bash.direnvLoadTimeoutMs","tab":"shell","group":"Bash","label":"direnv Load Timeout (ms)","description":"Max wait for the first `direnv export` (a cold devenv shell can be slow); on timeout the session runs without the direnv env","type":"number","default":30000,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Maximum time allowed for direnv environment resolution.","impacts":["reliability","latency"],"guidance":null,"shown":{}},{"path":"eval.py","tab":"shell","group":"Eval & Runtimes","label":"Python Eval Backend","description":"Allow the eval tool to dispatch Python cells to the IPython kernel","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the persistent/isolated Python evaluation tool backend. PI_PY can override it per process.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":11,"value":"true"}}},{"path":"eval.js","tab":"shell","group":"Eval & Runtimes","label":"JavaScript Eval Backend","description":"Allow the eval tool to dispatch JavaScript cells to the in-process runtime","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the JavaScript evaluation backend. PI_JS can override it per process.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":12,"value":"true"}}},{"path":"eval.rb","tab":"shell","group":"Eval & Runtimes","label":"Ruby Eval Backend","description":"Allow the eval tool to dispatch Ruby cells to the persistent Ruby kernel","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the Ruby evaluation backend.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":13,"value":"false"}}},{"path":"eval.jl","tab":"shell","group":"Eval & Runtimes","label":"Julia Eval Backend","description":"Allow the eval tool to dispatch Julia cells to the persistent Julia kernel","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the Julia evaluation backend.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":14,"value":"false"}}},{"path":"python.kernelMode","tab":"shell","group":"Eval & Runtimes","label":"Python Kernel Mode","description":"Keep the IPython kernel alive across eval calls or start fresh each time","type":"enum","default":"session","values":["session","per-call"],"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"enum","mechanics":"Session reuses state across eval calls; per-call starts a clean interpreter each time.","impacts":["reliability","performance","privacy"],"guidance":null,"shown":{"default":{"row":15,"value":"session"}}},{"path":"python.interpreter","tab":"shell","group":"Eval & Runtimes","label":"Python Interpreter","description":"Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.","type":"string","default":"","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Explicit Python executable/path used by eval. Unset uses discovery/default.","impacts":["compatibility","reliability"],"guidance":null,"shown":{"default":{"row":16,"value":""}}},{"path":"ruby.interpreter","tab":"shell","group":"Eval & Runtimes","label":"Ruby Interpreter","description":"Optional path to an exact Ruby executable. When set, automatic Ruby runtime discovery is skipped.","type":"string","default":"","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Explicit Ruby executable/path.","impacts":["compatibility"],"guidance":null,"shown":{"default":{"row":17,"value":""}}},{"path":"julia.interpreter","tab":"shell","group":"Eval & Runtimes","label":"Julia Interpreter","description":"Optional path to an exact Julia executable. When set, automatic Julia runtime discovery is skipped.","type":"string","default":"","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Explicit Julia executable/path.","impacts":["compatibility"],"guidance":null,"shown":{"default":{"row":18,"value":""}}},{"path":"todo.enabled","tab":"tools","group":"Available Tools","label":"Todos","description":"Enable the todo tool for task tracking","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the structured todo-list tool.","impacts":["automation","context"],"guidance":null,"shown":{"default":{"row":4,"value":"true"}}},{"path":"glob.enabled","tab":"tools","group":"Available Tools","label":"Glob","description":"Enable the glob tool for glob-based file lookup","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables repository-aware path matching.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":5,"value":"true"}}},{"path":"grep.enabled","tab":"tools","group":"Available Tools","label":"Grep","description":"Enable the grep tool for regex content search","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables structured content search that respects repository ignore rules.","impacts":["automation","context"],"guidance":null,"shown":{"default":{"row":6,"value":"true"}}},{"path":"astGrep.enabled","tab":"tools","group":"Available Tools","label":"AST Grep","description":"Enable the ast_grep tool for structural AST search","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables syntax-aware structural search through ast-grep.","impacts":["quality","performance"],"guidance":null,"shown":{"default":{"row":7,"value":"false"}}},{"path":"astEdit.enabled","tab":"tools","group":"Available Tools","label":"AST Edit","description":"Enable the ast_edit tool for structural AST rewrites","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables syntax-aware edit operations for supported languages.","impacts":["quality","safety"],"guidance":null,"shown":{"default":{"row":8,"value":"true"}}},{"path":"debug.enabled","tab":"tools","group":"Available Tools","label":"Debug","description":"Enable the debug tool for DAP-based debugging","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables debugger-oriented tooling and resources.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":9,"value":"true"}}},{"path":"launch.enabled","tab":"tools","group":"Available Tools","label":"Launch","description":"Enable the launch tool for supervising shared long-running project processes","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables application/process launch helpers.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":10,"value":"true"}}},{"path":"speechgen.enabled","tab":"tools","group":"Available Tools","label":"Speech Generation","description":"Enable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables speech-generation tooling.","impacts":["cost","privacy"],"guidance":null,"shown":{"default":{"row":11,"value":"false"}}},{"path":"generate_image.enabled","tab":"tools","group":"Available Tools","label":"Generate Image","description":"Enable the generate_image tool (text-to-image generation and editing). Exposed as an xd:// device when tools.xdev is on.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables image-generation tooling when a provider is configured.","impacts":["cost","privacy"],"guidance":{"level":"keep","value":"false unless needed","why":"Avoids unnecessary provider/tool surface in a coding profile."},"shown":{"default":{"row":12,"value":"false"}}},{"path":"inspect_image.mode","tab":"tools","group":"Available Tools","label":"Inspect Image","description":"Controls the inspect_image tool, which delegates image understanding to a vision-capable model. 'auto' exposes it only when the active model lacks native image input; 'on' always exposes it; 'off' never does.","type":"enum","default":"auto","values":["auto","on","off"],"options":[{"value":"auto","label":"Auto (only for models without vision)","description":null},{"value":"on","label":"On","description":null},{"value":"off","label":"Off","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Auto exposes image inspection when the selected model/provider path supports it.","impacts":["privacy","compatibility","cost"],"guidance":null,"shown":{"default":{"row":13,"value":"auto"}}},{"path":"computer.enabled","tab":"tools","group":"Available Tools","label":"Computer","description":"Enable the scriptable host-desktop control tool (screenshots, input, accessibility)","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables screenshot/mouse/keyboard computer-control tooling.","impacts":["safety","privacy","automation"],"guidance":{"level":"keep","value":"false until explicitly needed","why":"Computer control has a larger blast radius than structured tools."},"shown":{"default":{"row":14,"value":"false"}}},{"path":"checkpoint.enabled","tab":"tools","group":"Available Tools","label":"Checkpoint/Rewind","description":"Enable the checkpoint and rewind tools for context checkpointing","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables explicit filesystem/repository checkpoint operations for rollback.","impacts":["reliability","storage"],"guidance":null,"shown":{"default":{"row":15,"value":"false"}}},{"path":"fetch.enabled","tab":"tools","group":"Available Tools","label":"Read URLs","description":"Allow the read tool to fetch and process URLs","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables URL fetch/read tooling.","impacts":["privacy","automation"],"guidance":null,"shown":{"default":{"row":16,"value":"true"}}},{"path":"vault.enabled","tab":"tools","group":"Available Tools","label":"Obsidian Vault","description":"Enable the vault:// internal URL for reading and editing Obsidian vault content via the Obsidian CLI. When disabled, vault:// resolution is refused and the vault:// entry is omitted from the system prompt.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables secret/vault resource tooling when configured.","impacts":["security","privacy"],"guidance":null,"shown":{"default":{"row":17,"value":"false"}}},{"path":"github.enabled","tab":"tools","group":"Available Tools","label":"GitHub CLI","description":"Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows)","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables GitHub-specific issue, PR, and repository tooling.","impacts":["privacy","automation"],"guidance":null,"shown":{"default":{"row":18,"value":"false"}}},{"path":"web_search.enabled","tab":"tools","group":"Available Tools","label":"Web Search","description":"Enable the web_search tool for live web results","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables live web-search tooling.","impacts":["privacy","cost","automation"],"guidance":null,"shown":{"default":{"row":19,"value":"true"}}},{"path":"security.enabled","tab":"tools","group":"Available Tools","label":"Security","description":"Enable OMP-native security scan planning, execution, and the read-only security:// resource namespace","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables OMP-native security scan planning/execution and the read-only security:// resource namespace.","impacts":["security","performance"],"guidance":{"level":"consider","value":"true for unfamiliar repos","why":"Adds native scan workflows; expect extra runtime and output."},"shown":{"default":{"row":20,"value":"false"}}},{"path":"ask.enabled","tab":"tools","group":"Available Tools","label":"Ask","description":"Enable the ask tool for interactive user questions","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables structured interactive questions to the user.","impacts":["safety","ergonomics"],"guidance":null,"shown":{"default":{"row":21,"value":"true"}}},{"path":"browser.enabled","tab":"tools","group":"Available Tools","label":"Browser","description":"Enable the browser tool for scripted Chromium automation (puppeteer)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables scripted Chromium automation through the browser tool.","impacts":["privacy","safety","automation"],"guidance":null,"shown":{"default":{"row":22,"value":"true"}}},{"path":"todo.reminders","tab":"tools","group":"Todos","label":"Todo Reminders","description":"Remind the agent to complete todos before stopping","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Reminds the model about unfinished todos when it appears to stop early.","impacts":["reliability","context"],"guidance":null,"shown":{"default":{"row":24,"value":"true"}}},{"path":"todo.remindersMax","tab":"tools","group":"Todos","label":"Todo Reminder Limit","description":"Maximum number of todo reminders before giving up","type":"number","default":3,"values":null,"options":[{"value":"1","label":"1 reminder","description":null},{"value":"2","label":"2 reminders","description":null},{"value":"3","label":"3 reminders","description":null},{"value":"5","label":"5 reminders","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Caps repeated todo reminders to avoid infinite nag loops.","impacts":["reliability","cost"],"guidance":null,"shown":{"default":{"row":25,"value":"3"}}},{"path":"todo.eager","tab":"tools","group":"Todos","label":"Create Todos Automatically","description":"How strongly to push automatic todo-list creation after the first message","type":"enum","default":"default","values":["default","preferred","always"],"options":[{"value":"default","label":"Default","description":"Model decides; no automatic todo list"},{"value":"preferred","label":"Preferred","description":"Suggests a todo list on the first message (reminder, not forced)"},{"value":"always","label":"Always","description":"Forces a comprehensive todo list on the first message"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls how strongly OMP encourages todo creation before work.","impacts":["automation","context"],"guidance":null,"shown":{"default":{"row":26,"value":"default"}}},{"path":"tasks.todoClearDelay","tab":"tools","group":"Todos","label":"Todo Auto-Clear Delay","description":"Delay before completed or abandoned todos are removed from the todo widget","type":"number","default":60,"values":null,"options":[{"value":"0","label":"Instant","description":null},{"value":"60","label":"1 minute","description":"Default"},{"value":"300","label":"5 minutes","description":null},{"value":"900","label":"15 minutes","description":null},{"value":"1800","label":"30 minutes","description":null},{"value":"3600","label":"1 hour","description":null},{"value":"-1","label":"Never","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Seconds completed todos remain visible before being cleared from the UI.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":27,"value":"60"}}},{"path":"grep.contextBefore","tab":"tools","group":"Grep & Browser","label":"Grep Context Before","description":"Lines of context before each grep match","type":"number","default":1,"values":null,"options":[{"value":"0","label":"0 lines","description":null},{"value":"1","label":"1 line","description":null},{"value":"2","label":"2 lines","description":null},{"value":"3","label":"3 lines","description":null},{"value":"5","label":"5 lines","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Default lines shown before each grep match.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":29,"value":"1"}}},{"path":"grep.contextAfter","tab":"tools","group":"Grep & Browser","label":"Grep Context After","description":"Lines of context after each grep match","type":"number","default":3,"values":null,"options":[{"value":"0","label":"0 lines","description":null},{"value":"1","label":"1 line","description":null},{"value":"2","label":"2 lines","description":null},{"value":"3","label":"3 lines","description":null},{"value":"5","label":"5 lines","description":null},{"value":"10","label":"10 lines","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Default lines shown after each grep match.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":30,"value":"3"}}},{"path":"browser.cdpUrl","tab":"tools","group":"Grep & Browser","label":"Browser CDP URL","description":"Default HTTP CDP discovery endpoint (for example http://127.0.0.1:9222) to attach to instead of launching a browser. Explicit app.cdp_url or app.path on the tool call take precedence.","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"HTTP Chrome DevTools discovery endpoint used to attach to an existing browser instead of launching one.","impacts":["privacy","compatibility"],"guidance":null,"shown":{"default":{"row":31,"value":""}}},{"path":"browser.relay","tab":"tools","group":"Grep & Browser","label":"Browser Relay","description":"Drive your own Chrome tabs through the omp browser relay. Install the extension once (`omp browser-relay install`); the relay server auto-starts when the browser tool needs it. Takes precedence over Browser CDP URL; set PI_BROWSER_RELAY=0 or PI_BROWSER_RELAY=1 to override.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Drives the user\u2019s own Chrome tabs through the OMP browser-relay extension; it takes precedence over the CDP URL.","impacts":["privacy","safety","automation"],"guidance":null,"shown":{"default":{"row":32,"value":"false"}}},{"path":"browser.relayUrl","tab":"tools","group":"Grep & Browser","label":"Browser Relay URL","description":"omp browser relay endpoint (default http://127.0.0.1:9224).","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Relay server endpoint; the built-in default is localhost:9224.","impacts":["privacy","compatibility"],"guidance":null,"shown":{"default":{"row":33,"value":""}}},{"path":"browser.headless","tab":"tools","group":"Grep & Browser","label":"Headless Browser","description":"Launch browser in headless mode (disable to show browser UI)","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Launches automated Chromium without a visible window.","impacts":["ergonomics","performance"],"guidance":null,"shown":{"default":{"row":34,"value":"true"}}},{"path":"browser.cmux","tab":"tools","group":"Grep & Browser","label":"cmux Browser","description":"Use cmux WKWebView surfaces for browser automation when a cmux socket is available. Set PI_BROWSER_CMUX=0 or PI_BROWSER_CMUX=1 to override.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses cmux WKWebView surfaces when a compatible cmux socket is available.","impacts":["compatibility","performance"],"guidance":null,"shown":{"default":{"row":35,"value":"true"}}},{"path":"browser.screenshotDir","tab":"tools","group":"Grep & Browser","label":"Screenshot Directory","description":"Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Persistent destination for browser screenshots; unset uses temporary files.","impacts":["privacy","storage"],"guidance":null,"shown":{"default":{"row":36,"value":""}}},{"path":"computer.display","tab":"tools","group":"Computer","label":"Computer Display","description":"Composite all displays or select a native display id","type":"string","default":"all","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Display selector passed to computer-control tooling.","impacts":["privacy","automation"],"guidance":null,"shown":{"default":{"row":38,"value":"all"}}},{"path":"computer.maxWidth","tab":"tools","group":"Computer","label":"Computer Screenshot Width","description":"Maximum composite screenshot width in pixels","type":"number","default":3840,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Maximum captured/control surface width.","impacts":["performance","privacy"],"guidance":null,"shown":{}},{"path":"computer.maxHeight","tab":"tools","group":"Computer","label":"Computer Screenshot Height","description":"Maximum composite screenshot height in pixels","type":"number","default":2400,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Maximum captured/control surface height.","impacts":["performance","privacy"],"guidance":null,"shown":{}},{"path":"github.cache.enabled","tab":"tools","group":"GitHub","label":"GitHub View Cache","description":"Cache rendered issue/PR view output in ~/.omp/cache/github-cache.db so repeated reads are free","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Caches rendered issue/PR views in ~/.omp/cache/github-cache.db so repeated reads avoid API work.","impacts":["performance","privacy"],"guidance":null,"shown":{"default":{"row":40,"value":"true"}}},{"path":"github.cache.softTtlSec","tab":"tools","group":"GitHub","label":"GitHub Cache Soft TTL","description":"Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes)","type":"number","default":300,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Within this window cached issue/PR views are returned directly.","impacts":["performance","freshness"],"guidance":null,"shown":{}},{"path":"github.cache.hardTtlSec","tab":"tools","group":"GitHub","label":"GitHub Cache Hard TTL","description":"Past the soft TTL the cached row is returned and refreshed in the background; past the hard TTL it is dropped (seconds; default 7 days)","type":"number","default":604800,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"After soft TTL the cache serves stale-while-refresh; after hard TTL the row is discarded.","impacts":["performance","freshness"],"guidance":null,"shown":{}},{"path":"tools.artifactSpillThreshold","tab":"tools","group":"Output Limits","label":"Artifact Spill Threshold (KB)","description":"Tool output above this size is saved as an artifact; tail is kept inline","type":"number","default":50,"values":null,"options":[{"value":"1","label":"1 KB","description":"~250 tokens"},{"value":"2.5","label":"2.5 KB","description":"~625 tokens"},{"value":"5","label":"5 KB","description":"~1.25K tokens"},{"value":"10","label":"10 KB","description":"~2.5K tokens"},{"value":"20","label":"20 KB","description":"~5K tokens"},{"value":"30","label":"30 KB","description":"~7.5K tokens"},{"value":"50","label":"50 KB","description":"Default; ~12.5K tokens"},{"value":"75","label":"75 KB","description":"~19K tokens"},{"value":"100","label":"100 KB","description":"~25K tokens"},{"value":"200","label":"200 KB","description":"~50K tokens"},{"value":"500","label":"500 KB","description":"~125K tokens"},{"value":"1000","label":"1 MB","description":"~250K tokens"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Tool output larger than this threshold spills into an artifact/file rather than remaining fully inline.","impacts":["context","storage"],"guidance":null,"shown":{"default":{"row":42,"value":"50"}}},{"path":"tools.artifactTailBytes","tab":"tools","group":"Output Limits","label":"Artifact Tail Size (KB)","description":"Amount of tail content kept inline when output spills to artifact","type":"number","default":20,"values":null,"options":[{"value":"1","label":"1 KB","description":"~250 tokens"},{"value":"2.5","label":"2.5 KB","description":"~625 tokens"},{"value":"5","label":"5 KB","description":"~1.25K tokens"},{"value":"10","label":"10 KB","description":"~2.5K tokens"},{"value":"20","label":"20 KB","description":"Default; ~5K tokens"},{"value":"50","label":"50 KB","description":"~12.5K tokens"},{"value":"100","label":"100 KB","description":"~25K tokens"},{"value":"200","label":"200 KB","description":"~50K tokens"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Tail bytes retained inline when large output spills.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":43,"value":"20"}}},{"path":"tools.artifactHeadBytes","tab":"tools","group":"Output Limits","label":"Artifact Head Size (KB)","description":"Amount of head content kept inline alongside the tail when output spills to artifact (middle elision). 0 disables \u2014 keep tail only.","type":"number","default":20,"values":null,"options":[{"value":"0","label":"0 KB","description":"Disabled; tail-only truncation"},{"value":"1","label":"1 KB","description":"~250 tokens"},{"value":"2.5","label":"2.5 KB","description":"~625 tokens"},{"value":"5","label":"5 KB","description":"~1.25K tokens"},{"value":"10","label":"10 KB","description":"~2.5K tokens"},{"value":"20","label":"20 KB","description":"Default; ~5K tokens"},{"value":"50","label":"50 KB","description":"~12.5K tokens"},{"value":"100","label":"100 KB","description":"~25K tokens"},{"value":"200","label":"200 KB","description":"~50K tokens"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Head bytes retained inline when large output spills.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":44,"value":"20"}}},{"path":"tools.outputMaxColumns","tab":"tools","group":"Output Limits","label":"Output Column Cap","description":"Per-line byte cap for streaming tool outputs (bash, python, js eval) and `read`. Lines wider than this are ellipsis-truncated; remaining bytes up to the next newline are dropped. 0 disables.","type":"number","default":768,"values":null,"options":[{"value":"0","label":"Off","description":"No per-line cap"},{"value":"256","label":"256","description":"Tight"},{"value":"512","label":"512","description":null},{"value":"768","label":"768","description":"Default"},{"value":"1024","label":"1024","description":null},{"value":"2048","label":"2048","description":null},{"value":"4096","label":"4096","description":"Loose"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum rendered line width before output is clipped/wrapped/summarized.","impacts":["context","ergonomics"],"guidance":null,"shown":{"default":{"row":45,"value":"768"}}},{"path":"tools.artifactTailLines","tab":"tools","group":"Output Limits","label":"Artifact Tail Lines","description":"Maximum lines of tail content kept inline when output spills to artifact","type":"number","default":500,"values":null,"options":[{"value":"50","label":"50 lines","description":"~250 tokens"},{"value":"100","label":"100 lines","description":"~500 tokens"},{"value":"250","label":"250 lines","description":"~1.25K tokens"},{"value":"500","label":"500 lines","description":"Default; ~2.5K tokens"},{"value":"1000","label":"1000 lines","description":"~5K tokens"},{"value":"2000","label":"2000 lines","description":"~10K tokens"},{"value":"5000","label":"5000 lines","description":"~25K tokens"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum trailing lines retained in the inline spill preview.","impacts":["context","cost"],"guidance":null,"shown":{"default":{"row":46,"value":"500"}}},{"path":"inspect_image.timeoutMs","tab":"tools","group":"Execution","label":"Inspect Image Timeout","description":"Per-request timeout for the inspect_image vision-model call, in milliseconds. A stalled provider fails fast with a timeout error instead of blocking until manual abort. Set to 0 to disable the timeout.","type":"number","default":300000,"values":null,"options":[{"value":"0","label":"Disabled","description":null},{"value":"60000","label":"1 minute","description":null},{"value":"120000","label":"2 minutes","description":null},{"value":"180000","label":"3 minutes","description":null},{"value":"300000","label":"5 minutes","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum runtime for image inspection operations.","impacts":["reliability","latency"],"guidance":null,"shown":{"default":{"row":48,"value":"300000"}}},{"path":"tools.intentTracing","tab":"tools","group":"Execution","label":"Intent Tracing","description":"Ask the agent to describe the intent of each tool call before executing it","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Prompts the agent to state why it is making each tool call before execution.","impacts":["observability","safety","context"],"guidance":{"level":"keep","value":"true","why":"Important observability for semi-autonomous agents."},"shown":{"default":{"row":49,"value":"true"}}},{"path":"tools.abortOnFabricatedResult","tab":"tools","group":"Execution","label":"Abort On Fabricated Tool Result","description":"With in-band tool calls, stop the model immediately when it starts hallucinating a tool result mid-turn. Disable to let the model finish generating and discard the fabricated continuation instead.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Stops an in-band tool-call stream when the model begins hallucinating a tool result rather than waiting and discarding later text.","impacts":["reliability","safety"],"guidance":{"level":"keep","value":"true","why":"Failing fast on fabricated tool output is the correct safety default."},"shown":{"default":{"row":50,"value":"true"}}},{"path":"tools.maxTimeout","tab":"tools","group":"Execution","label":"Max Tool Timeout","description":"Maximum timeout in seconds the agent can set for any tool (0 = no limit)","type":"number","default":0,"values":null,"options":[{"value":"0","label":"No limit","description":null},{"value":"30","label":"30 seconds","description":null},{"value":"60","label":"60 seconds","description":null},{"value":"120","label":"120 seconds","description":null},{"value":"300","label":"5 minutes","description":null},{"value":"600","label":"10 minutes","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Upper bound on timeouts the model may request for any tool; 0 means no cap.","impacts":["safety","reliability"],"guidance":{"level":"consider","value":"600 in work profile","why":"A finite cap prevents accidental multi-hour tool waits while still allowing builds/tests."},"shown":{"default":{"row":51,"value":"0"}}},{"path":"async.enabled","tab":"tools","group":"Execution","label":"Async Execution","description":"Enable async bash commands and background task execution","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows eligible tool calls/processes to run asynchronously and be polled later.","impacts":["automation","reliability"],"guidance":null,"shown":{"default":{"row":52,"value":"true"}}},{"path":"async.pollWaitDuration","tab":"tools","group":"Execution","label":"Max Poll Time","description":"How long a `hub` wait watches background jobs before returning the current state. A fixed value waits that exact duration every time. `smart` adapts: it starts at 5s and lengthens with each back-to-back wait (up to 5m), then resets to 5s after about a minute without waiting.","type":"enum","default":"smart","values":["5s","10s","30s","1m","5m","smart"],"options":[{"value":"5s","label":"5 seconds","description":null},{"value":"10s","label":"10 seconds","description":null},{"value":"30s","label":"30 seconds","description":null},{"value":"1m","label":"1 minute","description":null},{"value":"5m","label":"5 minutes","description":null},{"value":"smart","label":"Smart","description":"Default \u2014 adaptive 5s\u21925m, resets when you stop polling"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls polling wait; Smart adapts from short waits up to several minutes.","impacts":["latency","cost"],"guidance":null,"shown":{"default":{"row":53,"value":"smart"}}},{"path":"irc.timeoutMs","tab":"tools","group":"Execution","label":"IRC Timeout","description":"Default timeout for hub message waits (and send await:true) in milliseconds; 0 disables the timeout","type":"number","default":120000,"values":null,"options":[{"value":"0","label":"Disabled","description":null},{"value":"30000","label":"30 seconds","description":null},{"value":"60000","label":"1 minute","description":null},{"value":"120000","label":"2 minutes","description":null},{"value":"300000","label":"5 minutes","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Timeout for IRC-style inter-agent/request coordination.","impacts":["reliability","latency"],"guidance":null,"shown":{"default":{"row":54,"value":"120000"}}},{"path":"tools.xdev","tab":"tools","group":"Discovery & MCP","label":"xd:// Tools","description":"Mount rarely-used (discoverable) tools under xd:// device URLs driven via read/write instead of shipping their schemas on every request. Sessions without a granted write tool skip mounting and expose every tool top-level. Disable to expose every enabled tool top-level.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables OMP\u2019s xd:// resource/device discovery layer.","impacts":["automation","context"],"guidance":null,"shown":{"default":{"row":56,"value":"true"}}},{"path":"tools.xdevDocs","tab":"tools","group":"Discovery & MCP","label":"xd:// Prompt Docs","description":"Choose which mounted-device docs and schemas are inlined in the system prompt. Built-ins keeps core tools inline while MCP and extension tools stay on-demand.","type":"enum","default":"builtins","values":["inline","builtins","catalog"],"options":[{"value":"inline","label":"All Devices","description":"Inline docs and schemas for every mounted device."},{"value":"builtins","label":"Built-ins Only","description":"Inline built-in docs; fetch MCP and extension docs on demand."},{"value":"catalog","label":"Catalog Only","description":"List every device; fetch all docs on demand."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls whether device documentation is inlined, limited to built-ins, or loaded from the catalog on demand.","impacts":["context","cost","compatibility"],"guidance":null,"shown":{"default":{"row":57,"value":"builtins"}}},{"path":"mcp.enableProjectConfig","tab":"tools","group":"Discovery & MCP","label":"MCP Project Config","description":"Load .mcp.json/mcp.json from project root","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows repository-discovered MCP configuration to register servers/tools for the current project.","impacts":["safety","privacy","automation"],"guidance":{"level":"change","value":"false in the work overlay","why":"An untrusted repo can otherwise contribute MCP servers/tools. Enable per trusted project."},"shown":{"default":{"row":58,"value":"true"}}},{"path":"mcp.renderMarkdownResults","tab":"tools","group":"Discovery & MCP","label":"MCP Markdown Results","description":"Render non-JSON MCP text results as Markdown in the transcript","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Renders Markdown-formatted MCP results for human display.","impacts":["e","r","g","o","n","o","m","i","c","s"],"guidance":null,"shown":{"default":{"row":59,"value":"true"}}},{"path":"mcp.notifications","tab":"tools","group":"Discovery & MCP","label":"MCP Update Injection","description":"Inject MCP resource updates into the agent conversation","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Surfaces MCP resource/server change notifications into the session.","impacts":["observability","context"],"guidance":null,"shown":{"default":{"row":60,"value":"false"}}},{"path":"tools.xdevInlineDevices","tab":"tools","group":"Discovery & MCP","label":"xd:// Inline Devices","description":"When xd:// Prompt Docs is Built-ins Only, inline dynamic devices whose names match these glob patterns (for example mcp__context_mode_*). Catalog Only ignores this setting.","type":"array","default":[],"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Explicit device IDs whose documentation is always inlined into the prompt.","impacts":["context","cost"],"guidance":null,"shown":{}},{"path":"mcp.notificationDebounceMs","tab":"tools","group":"Discovery & MCP","label":"MCP Notification Debounce","description":"Debounce window in milliseconds for MCP resource updates before injecting them into the conversation","type":"number","default":500,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Coalesces rapid MCP notifications before presenting them.","impacts":["performance","ergonomics"],"guidance":null,"shown":{}},{"path":"dev.autoqa","tab":"tools","group":"Developer","label":"Auto QA","description":"Automated tool issue reporting (xd://report_issue). On by default; the first report asks for consent, and denying it disables reporting until re-enabled explicitly","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables automated tool-issue reports. The first attempted report asks for consent; denial disables reporting until explicitly re-enabled.","impacts":["privacy","reliability"],"guidance":{"level":"change","value":"false in the work overlay","why":"Even with first-report consent, a strict client profile should not prepare outbound QA reports by default."},"shown":{"default":{"row":62,"value":"true"}}},{"path":"dev.autoqaPush.endpoint","tab":"tools","group":"Developer","label":"Auto QA Push Endpoint","description":"Full URL receiving Auto QA JSON reports (default https://qa.omp.sh/v1/grievances)","type":"string","default":"https://qa.omp.sh/v1/grievances","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Destination receiving Auto QA JSON reports.","impacts":["privacy","reliability"],"guidance":null,"shown":{"default":{"row":63,"value":"https://qa.omp.sh/v1/grievances"}}},{"path":"plan.enabled","tab":"tasks","group":"Modes","label":"Plan Mode","description":"Enable plan mode for read-only exploration and planning before execution","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the planning mode/role and plan-oriented workflow.","impacts":["automation","quality"],"guidance":null,"shown":{"default":{"row":4,"value":"true"}}},{"path":"plan.defaultOnStartup","tab":"tasks","group":"Modes","label":"Start in Plan Mode","description":"Automatically enter plan mode at the start of every new session","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":"planModeEnabled","ordered":false,"widget":"boolean","mechanics":"Starts new sessions in plan mode by default.","impacts":["ergonomics","quality"],"guidance":null,"shown":{"default":{"row":5,"value":"false"}}},{"path":"goal.enabled","tab":"tasks","group":"Modes","label":"Goal Mode","description":"Enable per-session goal mode and the hidden goal tool","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables persistent goal-loop behavior.","impacts":["automation","cost","safety"],"guidance":{"level":"consider","value":"keep on, but use deliberately","why":"Goal loops are powerful and can burn requests. Pair them with budgets and isolation."},"shown":{"default":{"row":6,"value":"true"}}},{"path":"goal.statusInFooter","tab":"tasks","group":"Modes","label":"Goal Status in Footer","description":"Show token budget alongside the goal indicator in the status line","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Shows goal-loop state in the footer/status area.","impacts":["o","b","s","e","r","v","a","b","i","l","i","t","y"],"guidance":null,"shown":{"default":{"row":7,"value":"true"}}},{"path":"title.refreshOnReplan","tab":"tasks","group":"Modes","label":"Refresh Title on Replan","description":"Refresh generated session titles after todo init replans unless the title was set by the user","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Regenerates the session title after a major replan.","impacts":["ergonomics","cost"],"guidance":null,"shown":{"default":{"row":8,"value":"true"}}},{"path":"goal.continuationModes","tab":"tasks","group":"Modes","label":"Goal Continuation Modes","description":"Run modes where active goals may auto-continue between turns","type":"array","default":["interactive"],"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Modes in which goal-loop continuation may run automatically.","impacts":["automation","safety"],"guidance":null,"shown":{}},{"path":"task.eager","tab":"tasks","group":"Subagents","label":"Prefer Task Delegation","description":"How strongly to push delegating work to subagents","type":"enum","default":"default","values":["default","preferred","always"],"options":[{"value":"default","label":"Default","description":"Model decides when to delegate"},{"value":"preferred","label":"Preferred","description":"Adds delegation guidance to the system prompt"},{"value":"always","label":"Always","description":"Prompt guidance plus a first-turn delegation reminder"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls how strongly the primary agent is encouraged to delegate work.","impacts":["automation","cost"],"guidance":null,"shown":{"default":{"row":10,"value":"default"}}},{"path":"task.batch","tab":"tasks","group":"Subagents","label":"Batch Task Calls","description":"Switch the task tool to its batch shape: one call carries { context, tasks[] } \u2014 one subagent per item, with an optional per-item agent (defaulting to the session spawn-policy agent), per-item isolation, and a required shared context prepended to every assignment. With async.enabled=true, each spawn runs as an independent background agent with the normal idle/parked lifecycle; otherwise the call blocks for merged results. Disable to restore the flat single-spawn schema.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Allows the task tool to launch multiple independent subagents in one batch.","impacts":["automation","cost","performance"],"guidance":null,"shown":{"default":{"row":11,"value":"true"}}},{"path":"task.enableEffort","tab":"tasks","group":"Subagents","label":"Per-Task Effort","description":"Expose the optional effort parameter on task spawns, allowing callers to override each subagent's thinking level","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Lets the primary agent specify a reasoning-effort level per subagent.","impacts":["cost","quality"],"guidance":null,"shown":{"default":{"row":12,"value":"false"}}},{"path":"task.maxConcurrency","tab":"tasks","group":"Subagents","label":"Max Concurrent Tasks","description":"Maximum number of subagents running concurrently","type":"number","default":32,"values":null,"options":[{"value":"0","label":"Unlimited","description":null},{"value":"1","label":"1 task","description":null},{"value":"2","label":"2 tasks","description":null},{"value":"4","label":"4 tasks","description":null},{"value":"8","label":"8 tasks","description":null},{"value":"16","label":"16 tasks","description":null},{"value":"32","label":"32 tasks","description":null},{"value":"64","label":"64 tasks","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Global cap on simultaneously running task/subagent requests.","impacts":["cost","reliability","performance"],"guidance":{"level":"change","value":"3\u20136 for typical local use","why":"Higher concurrency can overwhelm laptop resources, provider rate limits, and API budgets."},"shown":{"default":{"row":13,"value":"32"}}},{"path":"task.enableLsp","tab":"tasks","group":"Subagents","label":"LSP in Subagents","description":"Allow subagents spawned via the task tool to use the lsp tool. Off by default to keep subagents cheap; enable when LSP-aware delegation is worth the extra tokens.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Makes LSP tooling available inside subagent runtimes.","impacts":["quality","performance"],"guidance":null,"shown":{"default":{"row":14,"value":"false"}}},{"path":"task.maxRecursionDepth","tab":"tasks","group":"Subagents","label":"Max Task Recursion","description":"How many levels deep subagents can spawn their own subagents","type":"number","default":2,"values":null,"options":[{"value":"-1","label":"Unlimited","description":null},{"value":"0","label":"None","description":null},{"value":"1","label":"Single","description":null},{"value":"2","label":"Double","description":null},{"value":"3","label":"Triple","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum nested task\u2192subtask delegation depth.","impacts":["safety","cost","reliability"],"guidance":null,"shown":{"default":{"row":15,"value":"2"}}},{"path":"task.maxRuntimeMs","tab":"tasks","group":"Subagents","label":"Max Subagent Runtime","description":"Hard wall-clock limit per subagent (ms). 0 disables it. Defense-in-depth against provider-side stream hangs that escape the inference-layer watchdog; triggers a normal subagent abort with a 'timed out' reason.","type":"number","default":0,"values":null,"options":[{"value":"0","label":"Unlimited","description":"Default"},{"value":"300000","label":"5 minutes","description":null},{"value":"900000","label":"15 minutes","description":null},{"value":"1800000","label":"30 minutes","description":null},{"value":"3600000","label":"1 hour","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Hard runtime cap per subagent; 0 means unlimited.","impacts":["safety","reliability","cost"],"guidance":{"level":"consider","value":"30\u201360 minutes for work","why":"A nonzero cap prevents abandoned subagents from living indefinitely."},"shown":{"default":{"row":16,"value":"0"}}},{"path":"task.softRequestBudget","tab":"tasks","group":"Subagents","label":"Soft Subagent Request Budget","description":"Soft per-subagent request budget (assistant requests per run). Crossing it injects a wrap-up steering notice (see task.softRequestBudgetNotice); at 1.5x the budget the run is force-stopped and the agent must yield its partial findings. 0 disables the guard. Bundled scout/sonic agents cap out at a lower built-in budget, so a value below that cap still applies to them.","type":"number","default":200,"values":null,"options":[{"value":"0","label":"Disabled","description":null},{"value":"90","label":"90 requests","description":null},{"value":"150","label":"150 requests","description":null},{"value":"200","label":"200 requests","description":"Default"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Soft cap on model requests generated by a task tree before a warning is raised.","impacts":["cost","safety"],"guidance":{"level":"consider","value":"100\u2013200","why":"Keep a visible request ceiling for recursive orchestration."},"shown":{"default":{"row":17,"value":"200"}}},{"path":"task.softRequestBudgetNotice","tab":"tasks","group":"Subagents","label":"Soft Request Budget Notice","description":"Inject one steering notice when a subagent crosses its soft request budget, asking it to wrap up before the 1.5x forced-yield stop.","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Surfaces a warning when the soft task request budget is crossed.","impacts":["observability","cost"],"guidance":null,"shown":{"default":{"row":18,"value":"true"}}},{"path":"task.maxEffort","tab":"tasks","group":"Subagents","label":"Maximum Per-Spawn Effort","description":"Maximum reasoning effort allowed for the task tool's per-spawn effort hint. Lower values prevent callers from escalating subagents above this ceiling; the default preserves the model's full range.","type":"enum","default":"max","values":["minimal","low","medium","high","xhigh","max"],"options":[{"value":"minimal","label":"min","description":"Very brief reasoning (~1k tokens)"},{"value":"low","label":"low","description":"Light reasoning (~2k tokens)"},{"value":"medium","label":"medium","description":"Moderate reasoning (~8k tokens)"},{"value":"high","label":"high","description":"Deep reasoning (~16k tokens)"},{"value":"xhigh","label":"xhigh","description":"Extended reasoning (~32k tokens)"},{"value":"max","label":"max","description":"Maximum reasoning the model supports"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Caps reasoning effort a subagent may use.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"default":{"row":19,"value":"max"}}},{"path":"task.prewalk","tab":"tasks","group":"Subagents","label":"Generic Task Prewalk","description":"Arm prewalk for the bundled generic `task` subagent: it starts on its resolved model, plans and begins the implementation, then hands off to the 'smol' role at its first edit/write. Per-agent overrides (task.agentPrewalk, configured from the /agents hub) and user agent `prewalk` frontmatter apply regardless of this toggle.","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Applies the strong-model-then-smol handoff pattern to delegated tasks.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"default":{"row":20,"value":"false"}}},{"path":"task.agentIdleTtlMs","tab":"tasks","group":"Subagents","label":"Agent Idle TTL","description":"How long an idle subagent stays live in memory before being parked to disk (ms). Parked agents are revived automatically when messaged or resumed. 0 keeps idle agents live until exit.","type":"number","default":420000,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Idle time before a reusable subagent runtime is reclaimed.","impacts":["performance","cost"],"guidance":null,"shown":{}},{"path":"task.isolation.mode","tab":"tasks","group":"Isolation","label":"Isolation Mode","description":"Isolation backend for subagents. \"auto\" lets the native PAL pick the best available backend (CoW-aware filesystems, then overlayfs/ProjFS, then a git worktree / recursive-copy fallback).","type":"enum","default":"none","values":["none","auto","apfs","btrfs","zfs","reflink","overlayfs","projfs","block-clone","rcopy"],"options":[{"value":"none","label":"None","description":"No isolation"},{"value":"auto","label":"Auto","description":"Let the PAL pick the best available backend"},{"value":"apfs","label":"APFS","description":"macOS clonefile reflink (APFS)"},{"value":"btrfs","label":"btrfs","description":"btrfs subvolume snapshot"},{"value":"zfs","label":"ZFS","description":"ZFS snapshot + clone"},{"value":"reflink","label":"Reflink","description":"Linux FICLONE per-file reflink"},{"value":"overlayfs","label":"Overlayfs","description":"Linux kernel overlay (or fuse-overlayfs fallback)"},{"value":"projfs","label":"ProjFS","description":"Windows Projected File System"},{"value":"block-clone","label":"Block clone","description":"Windows FSCTL_DUPLICATE_EXTENTS_TO_FILE (NTFS/ReFS)"},{"value":"rcopy","label":"Recursive copy","description":"git worktree if available, otherwise recursive copy"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Creates an isolated working copy/snapshot for task agents. Auto selects a supported filesystem mechanism.","impacts":["safety","storage","performance"],"guidance":{"level":"consider","value":"auto","why":"Strong guardrail for parallel agent edits; the cost is extra disk and merge machinery."},"shown":{"default":{"row":22,"value":"none"}}},{"path":"task.isolation.apply","tab":"tasks","group":"Isolation","label":"Apply Isolated Changes","description":"Automatically apply successful isolated task changes to the parent checkout; disable to retain patch or branch artifacts","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Applies successful isolated-task changes back to the parent workspace.","impacts":["automation","safety"],"guidance":null,"shown":{"default":{"row":23,"value":"true"}}},{"path":"task.isolation.merge","tab":"tasks","group":"Isolation","label":"Isolation Merge Strategy","description":"How isolated task changes are integrated (patch apply or branch merge)","type":"enum","default":"patch","values":["patch","branch"],"options":[{"value":"patch","label":"Patch","description":"Combine diffs and git apply"},{"value":"branch","label":"Branch","description":"Commit per task, merge with --no-ff"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Returns changes as a patch or branch-oriented merge.","impacts":["reliability","ergonomics"],"guidance":null,"shown":{"default":{"row":24,"value":"patch"}}},{"path":"task.isolation.commits","tab":"tasks","group":"Isolation","label":"Isolation Commit Style","description":"Commit message style for nested repo changes (generic or AI-generated)","type":"enum","default":"generic","values":["generic","ai"],"options":[{"value":"generic","label":"Generic","description":"Static commit message"},{"value":"ai","label":"AI","description":"AI-generated commit message from diff"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls whether isolation commits use generic messages or AI-generated descriptions.","impacts":["privacy","cost","ergonomics"],"guidance":null,"shown":{"default":{"row":25,"value":"generic"}}},{"path":"worktree.base","tab":"tasks","group":"Isolation","label":"Worktree Base Directory","description":"Base directory for agent-managed worktrees \u2014 task-isolation copies, `github` PR checkouts, and `omp worktree` cleanup all live here. Unset uses ~/.omp/wt. Must be an absolute or ~-relative path; relative paths are ignored. The OMP_WORKTREE_DIR env var overrides this.","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Optional base directory for task worktrees/isolated copies.","impacts":["storage","performance"],"guidance":null,"shown":{"default":{"row":26,"value":""}}},{"path":"skills.enableSkillCommands","tab":"tasks","group":"Commands & Skills","label":"Skill Commands","description":"Register skills as /skill:name commands","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Exposes discovered skills as slash/interactive commands.","impacts":["automation","context","safety"],"guidance":{"level":"consider","value":"keep true; disable untrusted sources","why":"Skills are high leverage, but source discovery is part of the trust boundary."},"shown":{"default":{"row":28,"value":"true"}}},{"path":"commands.enableClaudeUser","tab":"tasks","group":"Commands & Skills","label":"Claude User Commands","description":"Load commands from ~/.claude/commands/","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Imports compatible user-level Claude command definitions.","impacts":["context","safety"],"guidance":null,"shown":{"default":{"row":29,"value":"true"}}},{"path":"commands.enableClaudeProject","tab":"tasks","group":"Commands & Skills","label":"Claude Project Commands","description":"Load commands from .claude/commands/","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Imports compatible project-level Claude command definitions.","impacts":["context","safety"],"guidance":{"level":"consider","value":"false in strict work profile unless needed","why":"Imported project commands are another instruction surface supplied by the repository."},"shown":{"default":{"row":30,"value":"true"}}},{"path":"commands.enableOpencodeUser","tab":"tasks","group":"Commands & Skills","label":"OpenCode User Commands","description":"Load commands from ~/.config/opencode/commands/","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Imports compatible user-level OpenCode command definitions.","impacts":["context","safety"],"guidance":null,"shown":{"default":{"row":31,"value":"true"}}},{"path":"commands.enableOpencodeProject","tab":"tasks","group":"Commands & Skills","label":"OpenCode Project Commands","description":"Load commands from .opencode/commands/","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Imports compatible project-level OpenCode command definitions.","impacts":["context","safety"],"guidance":{"level":"consider","value":"false in strict work profile unless needed","why":"Imported project commands are another instruction surface supplied by the repository."},"shown":{"default":{"row":32,"value":"true"}}},{"path":"providers.maxInFlightRequests","tab":"providers","group":"Services","label":"Max In-Flight Requests","description":"Maximum concurrent LLM requests per provider id (for example \"openai\" or \"anthropic\"), shared across local OMP processes with this config root. Omitted providers are unlimited.","type":"record","default":{},"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"providerLimits","mechanics":"Per-provider concurrency caps shared across local OMP processes using the same config root. Omitted providers are unlimited.","impacts":["cost","reliability","performance"],"guidance":{"level":"change","value":"2\u20134 per provider","why":"The default is unlimited. Combined with 32 subagents it can create 429 storms and spend spikes."},"shown":{"default":{"row":4,"value":"Unlimited"},"expanded":{"row":4,"value":"Unlimited"}}},{"path":"providers.webSearchOrder","tab":"providers","group":"Services","label":"Web Search Provider Order","description":"Prioritized providers for the web_search tool; unlisted providers retain their default order afterward","type":"array","default":[],"values":null,"options":[{"value":"perplexity","label":"Perplexity","description":"Uses auth when configured; explicit selection falls back to anonymous search"},{"value":"gemini","label":"Gemini","description":"Google Search grounding via Gemini (uses google-gemini-cli or google-antigravity OAuth)"},{"value":"anthropic","label":"Anthropic","description":"Claude's native web_search tool (uses Anthropic OAuth or ANTHROPIC_API_KEY)"},{"value":"codex","label":"OpenAI","description":"OpenAI's native web_search (uses ChatGPT OAuth via /login openai-codex)"},{"value":"xai","label":"xAI","description":"Grok web search via xAI Responses API (uses SuperGrok/X Premium+ OAuth via /login xai-oauth, or XAI_API_KEY)"},{"value":"zai","label":"Z.AI","description":"Calls Z.AI webSearchPrime MCP"},{"value":"exa","label":"Exa","description":"API via /login exa or EXA_API_KEY; explicit keyless fallback via MCP"},{"value":"tinyfish","label":"TinyFish","description":"Requires TINYFISH_API_KEY"},{"value":"jina","label":"Jina","description":"Requires JINA_API_KEY"},{"value":"kagi","label":"Kagi","description":"Requires KAGI_API_KEY and Kagi Search API beta access"},{"value":"tavily","label":"Tavily","description":"Requires TAVILY_API_KEY"},{"value":"firecrawl","label":"Firecrawl","description":"Uses Firecrawl API when FIRECRAWL_API_KEY is set; falls back to keyless mode"},{"value":"brave","label":"Brave","description":"Requires BRAVE_API_KEY"},{"value":"kimi","label":"Kimi","description":"Kimi Code search (requires a Kimi Code Console key via KIMI_SEARCH_API_KEY/MOONSHOT_SEARCH_API_KEY or /login kimi-code; not MOONSHOT_API_KEY)"},{"value":"parallel","label":"Parallel","description":"Requires PARALLEL_API_KEY"},{"value":"synthetic","label":"Synthetic","description":"Requires SYNTHETIC_API_KEY"},{"value":"searxng","label":"SearXNG","description":"Requires SEARXNG_ENDPOINT or searxng.endpoint"},{"value":"startpage","label":"Startpage","description":"Credential-free scrape of Startpage (Google-backed) results; may be bot-challenged"},{"value":"duckduckgo","label":"DuckDuckGo","description":"Credential-free best-effort fallback; may be bot-challenged on datacenter/shared-egress IPs"},{"value":"ecosia","label":"Ecosia","description":"Credential-free browser-backed scrape of Ecosia (Google-backed) results"},{"value":"google","label":"Google","description":"Credential-free browser-backed fallback; slower and may be bot-challenged"},{"value":"mojeek","label":"Mojeek","description":"Credential-free browser-backed scrape of Mojeek's independent index"},{"value":"public","label":"Public Web","description":"Queries every credential-free engine in parallel and consolidates deduplicated results"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":true,"widget":"multiselect","mechanics":"Ordered priority list for web-search backends. Empty uses built-in discovery/priority.","impacts":["reliability","privacy"],"guidance":null,"shown":{"default":{"row":5,"value":"default"},"expanded":{"row":5,"value":"default"}}},{"path":"providers.webSearchExclude","tab":"providers","group":"Services","label":"Excluded Web Search Providers","description":"Providers that web_search should never use, even as fallbacks","type":"array","default":[],"values":null,"options":[{"value":"perplexity","label":"Perplexity","description":"Uses auth when configured; explicit selection falls back to anonymous search"},{"value":"gemini","label":"Gemini","description":"Google Search grounding via Gemini (uses google-gemini-cli or google-antigravity OAuth)"},{"value":"anthropic","label":"Anthropic","description":"Claude's native web_search tool (uses Anthropic OAuth or ANTHROPIC_API_KEY)"},{"value":"codex","label":"OpenAI","description":"OpenAI's native web_search (uses ChatGPT OAuth via /login openai-codex)"},{"value":"xai","label":"xAI","description":"Grok web search via xAI Responses API (uses SuperGrok/X Premium+ OAuth via /login xai-oauth, or XAI_API_KEY)"},{"value":"zai","label":"Z.AI","description":"Calls Z.AI webSearchPrime MCP"},{"value":"exa","label":"Exa","description":"API via /login exa or EXA_API_KEY; explicit keyless fallback via MCP"},{"value":"tinyfish","label":"TinyFish","description":"Requires TINYFISH_API_KEY"},{"value":"jina","label":"Jina","description":"Requires JINA_API_KEY"},{"value":"kagi","label":"Kagi","description":"Requires KAGI_API_KEY and Kagi Search API beta access"},{"value":"tavily","label":"Tavily","description":"Requires TAVILY_API_KEY"},{"value":"firecrawl","label":"Firecrawl","description":"Uses Firecrawl API when FIRECRAWL_API_KEY is set; falls back to keyless mode"},{"value":"brave","label":"Brave","description":"Requires BRAVE_API_KEY"},{"value":"kimi","label":"Kimi","description":"Kimi Code search (requires a Kimi Code Console key via KIMI_SEARCH_API_KEY/MOONSHOT_SEARCH_API_KEY or /login kimi-code; not MOONSHOT_API_KEY)"},{"value":"parallel","label":"Parallel","description":"Requires PARALLEL_API_KEY"},{"value":"synthetic","label":"Synthetic","description":"Requires SYNTHETIC_API_KEY"},{"value":"searxng","label":"SearXNG","description":"Requires SEARXNG_ENDPOINT or searxng.endpoint"},{"value":"startpage","label":"Startpage","description":"Credential-free scrape of Startpage (Google-backed) results; may be bot-challenged"},{"value":"duckduckgo","label":"DuckDuckGo","description":"Credential-free best-effort fallback; may be bot-challenged on datacenter/shared-egress IPs"},{"value":"ecosia","label":"Ecosia","description":"Credential-free browser-backed scrape of Ecosia (Google-backed) results"},{"value":"google","label":"Google","description":"Credential-free browser-backed fallback; slower and may be bot-challenged"},{"value":"mojeek","label":"Mojeek","description":"Credential-free browser-backed scrape of Mojeek's independent index"},{"value":"public","label":"Public Web","description":"Queries every credential-free engine in parallel and consolidates deduplicated results"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"multiselect","mechanics":"Provider IDs that web search must not use.","impacts":["privacy","reliability"],"guidance":null,"shown":{"default":{"row":6,"value":"none"},"expanded":{"row":6,"value":"none"}}},{"path":"providers.webSearchTimeoutSeconds","tab":"providers","group":"Services","label":"Web Search Timeout","description":"Hard timeout for each provider's search transport before web_search advances to the next fallback, in seconds (maximum 300)","type":"number","default":60,"values":null,"options":[{"value":"30","label":"30 seconds","description":null},{"value":"60","label":"1 minute","description":null},{"value":"120","label":"2 minutes","description":null},{"value":"180","label":"3 minutes","description":null},{"value":"300","label":"5 minutes","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Timeout for web-search provider calls.","impacts":["reliability","latency"],"guidance":null,"shown":{"default":{"row":7,"value":"60"},"expanded":{"row":7,"value":"60"}}},{"path":"providers.webSearchGeminiModel","tab":"providers","group":"Services","label":"Gemini web_search model","description":"Model ID for Gemini Google Search grounding. Defaults to gemini-2.5-flash.","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Explicit Gemini model used by the Gemini web-search path.","impacts":["cost","quality"],"guidance":null,"shown":{"default":{"row":8,"value":""},"expanded":{"row":8,"value":""}}},{"path":"providers.antigravityEndpoint","tab":"providers","group":"Services","label":"Antigravity Endpoint Mode","description":"Endpoint routing strategy for google-antigravity providers (chat, search, image, discovery)","type":"enum","default":"auto","values":["auto","production","sandbox"],"options":[{"value":"auto","label":"Auto","description":"Try production endpoint, fail over to sandbox on 5xx/429"},{"value":"production","label":"Production Only","description":"Force production endpoint only"},{"value":"sandbox","label":"Sandbox Only","description":"Force sandbox endpoint only"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects production versus sandbox endpoint for the Antigravity provider.","impacts":["reliability","privacy"],"guidance":null,"shown":{"default":{"row":9,"value":"auto"},"expanded":{"row":9,"value":"auto"}}},{"path":"providers.imageOrder","tab":"providers","group":"Services","label":"Image Provider Order","description":"Prioritized providers for image generation; unlisted providers follow the active session provider and the built-in order","type":"array","default":[],"values":null,"options":[{"value":"openai","label":"OpenAI","description":"OPENAI_API_KEY (gpt-image-2) or active GPT model; falls back to a connected Codex subscription"},{"value":"openai-codex","label":"OpenAI Codex (ChatGPT)","description":"Uses a connected Codex / ChatGPT subscription \u2014 no OPENAI_API_KEY needed"},{"value":"antigravity","label":"Antigravity","description":"Requires google-antigravity OAuth"},{"value":"xai","label":"xAI Grok Imagine","description":"Requires xAI Grok OAuth or XAI_API_KEY"},{"value":"gemini","label":"Gemini","description":"Requires GEMINI_API_KEY"},{"value":"openrouter","label":"OpenRouter","description":"Requires OPENROUTER_API_KEY"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":true,"widget":"multiselect","mechanics":"Ordered priority list for image-generation/inspection providers.","impacts":["cost","privacy","reliability"],"guidance":null,"shown":{"default":{"row":10,"value":"default"},"expanded":{"row":10,"value":"default"}}},{"path":"live.voice","tab":"providers","group":"Services","label":"Live Voice","description":"Voice used by Codex-backed realtime voice sessions","type":"enum","default":"sol","values":["arbor","breeze","cove","ember","juniper","maple","sol","spruce","vale"],"options":[{"value":"arbor","label":"Arbor","description":null},{"value":"breeze","label":"Breeze","description":null},{"value":"cove","label":"Cove","description":null},{"value":"ember","label":"Ember","description":null},{"value":"juniper","label":"Juniper","description":null},{"value":"maple","label":"Maple","description":null},{"value":"sol","label":"Sol","description":null},{"value":"spruce","label":"Spruce","description":null},{"value":"vale","label":"Vale","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Voice used by live speech mode.","impacts":["ergonomics","privacy"],"guidance":null,"shown":{"default":{"row":11,"value":"sol"},"expanded":{"row":11,"value":"sol"}}},{"path":"providers.tts","tab":"providers","group":"Services","label":"Text-to-Speech Provider","description":"Backend for the tts tool: local on-device neural TTS (Kokoro-82M) or xAI Grok Voice","type":"enum","default":"auto","values":["auto","local","xai"],"options":[{"value":"auto","label":"Auto","description":"Prefer local on-device TTS; route .mp3 output to xAI when credentials exist"},{"value":"local","label":"Local","description":"On-device neural TTS (Kokoro-82M); output is WAV/PCM16"},{"value":"xai","label":"xAI Grok Voice","description":"Requires xAI Grok OAuth or XAI_API_KEY; MP3 or WAV"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects automatic, local, or xAI speech synthesis.","impacts":["privacy","cost","latency"],"guidance":null,"shown":{"default":{"row":12,"value":"auto"},"expanded":{"row":12,"value":"auto"}}},{"path":"tts.localModel","tab":"providers","group":"Services","label":"Local TTS Model","description":"On-device neural TTS model (Kokoro-82M) used by the local TTS backend","type":"enum","default":"kokoro","values":["kokoro"],"options":[{"value":"kokoro","label":"Kokoro-82M","description":"Kokoro-82M neural TTS \u2014 SoTA on-device quality, multi-voice, fully local"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Local text-to-speech model package.","impacts":["storage","performance","quality"],"guidance":null,"shown":{"default":{"row":13,"value":"kokoro"},"expanded":{"row":13,"value":"kokoro"}}},{"path":"tts.localVoice","tab":"providers","group":"Services","label":"Local TTS Voice","description":"Kokoro voice used by the local TTS backend (American/British, female/male)","type":"enum","default":"af_heart","values":["af_heart","af_bella","af_nicole","af_aoede","af_kore","af_sarah","am_michael","am_fenrir","am_puck","bf_emma","bm_george","bm_fable"],"options":[{"value":"af_heart","label":"Heart (American female)","description":null},{"value":"af_bella","label":"Bella (American female)","description":null},{"value":"af_nicole","label":"Nicole (American female)","description":null},{"value":"af_aoede","label":"Aoede (American female)","description":null},{"value":"af_kore","label":"Kore (American female)","description":null},{"value":"af_sarah","label":"Sarah (American female)","description":null},{"value":"am_michael","label":"Michael (American male)","description":null},{"value":"am_fenrir","label":"Fenrir (American male)","description":null},{"value":"am_puck","label":"Puck (American male)","description":null},{"value":"bf_emma","label":"Emma (British female)","description":null},{"value":"bm_george","label":"George (British male)","description":null},{"value":"bm_fable","label":"Fable (British male)","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Voice preset for the local TTS model.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":14,"value":"af_heart"},"expanded":{"row":14,"value":"af_heart"}}},{"path":"speech.enabled","tab":"providers","group":"Services","label":"Speech Vocalization","description":"Speak the assistant's output aloud through the speakers as it streams","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Reads eligible assistant output aloud.","impacts":["privacy","ergonomics"],"guidance":null,"shown":{"default":{"row":15,"value":"false"},"expanded":{"row":15,"value":"false"}}},{"path":"speech.mode","tab":"providers","group":"Services","label":"Speech Vocalization Mode","description":"What to speak: all = assistant messages + thinking; assistant = messages only; yield = only the final message at turn end","type":"enum","default":"assistant","values":["all","assistant","yield"],"options":[{"value":"all","label":"All (messages + thinking)","description":null},{"value":"assistant","label":"Assistant messages","description":null},{"value":"yield","label":"Final message only","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Chooses which output is spoken: all, assistant prose, or only explicit yield/final output.","impacts":["privacy","ergonomics"],"guidance":null,"shown":{"default":{"row":16,"value":"assistant"},"expanded":{"row":16,"value":"assistant"}}},{"path":"speech.enhanced","tab":"providers","group":"Services","label":"Enhanced Speech Rewriting","description":"Rewrite assistant output into natural spoken prose with the tiny/smol model before synthesis (describes code, drops links and markdown). Falls back to mechanical cleanup on failure","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Uses a more capable/heavier speech path when available.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"default":{"row":17,"value":"false"},"expanded":{"row":17,"value":"false"}}},{"path":"speech.voice","tab":"providers","group":"Services","label":"Speech Vocalization Voice","description":"Kokoro voice used when speaking the assistant's output aloud","type":"enum","default":"af_heart","values":["af_heart","af_bella","af_nicole","af_aoede","af_kore","af_sarah","am_michael","am_fenrir","am_puck","bf_emma","bm_george","bm_fable"],"options":[{"value":"af_heart","label":"Heart (American female)","description":null},{"value":"af_bella","label":"Bella (American female)","description":null},{"value":"af_nicole","label":"Nicole (American female)","description":null},{"value":"af_aoede","label":"Aoede (American female)","description":null},{"value":"af_kore","label":"Kore (American female)","description":null},{"value":"af_sarah","label":"Sarah (American female)","description":null},{"value":"am_michael","label":"Michael (American male)","description":null},{"value":"am_fenrir","label":"Fenrir (American male)","description":null},{"value":"am_puck","label":"Puck (American male)","description":null},{"value":"bf_emma","label":"Emma (British female)","description":null},{"value":"bm_george","label":"George (British male)","description":null},{"value":"bm_fable","label":"Fable (British male)","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Voice used for spoken responses.","impacts":["ergonomics"],"guidance":null,"shown":{"default":{"row":18,"value":"af_heart"},"expanded":{"row":18,"value":"af_heart"}}},{"path":"providers.fetch","tab":"providers","group":"Services","label":"Fetch Provider","description":"Reader backend priority for the fetch/read URL tool","type":"enum","default":"auto","values":["auto","native","trafilatura","lynx","parallel","jina"],"options":[{"value":"auto","label":"Auto","description":"Priority: native > trafilatura > lynx > parallel > jina"},{"value":"native","label":"Native","description":"In-process HTML\u2192Markdown converter (always available)"},{"value":"trafilatura","label":"Trafilatura","description":"Auto-installs via uv/pip"},{"value":"lynx","label":"Lynx","description":"Requires lynx system package"},{"value":"parallel","label":"Parallel","description":"Requires PARALLEL_API_KEY"},{"value":"jina","label":"Jina","description":"Uses r.jina.ai reader (JINA_API_KEY optional)"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Reader backend priority for URL fetch: native, Trafilatura, Lynx, Parallel, or Jina.","impacts":["privacy","reliability","latency"],"guidance":null,"shown":{"default":{"row":19,"value":"auto"},"expanded":{"row":19,"value":"auto"}}},{"path":"codexResets.autoRedeem","tab":"providers","group":"Services","label":"Codex Auto-Redeem Saved Resets","description":"Spend saved Codex rate-limit resets automatically: restore an account blocked by an exhausted 5h or weekly window when a turn is stuck and no other account can take over, and salvage credits that are about to expire. unset asks before the first spend, yes spends without prompting, and no disables both checks.","type":"enum","default":"unset","values":["unset","yes","no"],"options":[{"value":"unset","label":"Unset","description":"Check eligibility, then ask before spending the first saved reset."},{"value":"yes","label":"Yes","description":"Spend eligible saved resets without prompting."},{"value":"no","label":"No","description":"Do not run the saved-reset auto-redeem check."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls automatic spending of saved Codex rate-limit resets. Unset asks before the first spend; yes spends automatically; no disables.","impacts":["cost","automation","safety"],"guidance":null,"shown":{"default":{"row":20,"value":"unset"},"expanded":{"row":20,"value":"unset"}}},{"path":"exa.enabled","tab":"providers","group":"Services","label":"Exa","description":"Enable the Exa web search provider","type":"boolean","default":true,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Enables the Exa web-search provider.","impacts":["privacy","cost","reliability"],"guidance":null,"shown":{"default":{"row":21,"value":"true"},"expanded":{"row":21,"value":"true"}}},{"path":"searxng.endpoint","tab":"providers","group":"Services","label":"SearXNG Endpoint","description":"Base URL of a self-hosted SearXNG instance used for web search","type":"string","values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"text","mechanics":"Base URL of a self-hosted SearXNG instance.","impacts":["privacy","reliability"],"guidance":null,"shown":{"default":{"row":22,"value":""},"expanded":{"row":22,"value":""}}},{"path":"providers.ollama-cloud.maxConcurrency","tab":"providers","group":"Services","label":"Ollama Cloud Max Concurrency","description":"Maximum concurrent Ollama Cloud subagent runs per process; 0 disables the provider-specific limit","type":"number","default":3,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Maximum simultaneous requests to the Ollama Cloud provider.","impacts":["reliability","performance"],"guidance":null,"shown":{}},{"path":"codexResets.minBlockedMinutes","tab":"providers","group":"Services","label":"Codex Auto-Redeem Min Block","description":"Only auto-redeem when the natural unblock \u2014 the latest reset among the exhausted 5h/weekly windows \u2014 is at least this many minutes away (don't spend a scarce credit to save a short wait). Raise it (e.g. 360) to ignore 5h-only blocks.","type":"number","default":60,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Requires the natural unblock to be at least this many minutes away before spending a saved reset.","impacts":["cost","automation"],"guidance":null,"shown":{}},{"path":"codexResets.keepCredits","tab":"providers","group":"Services","label":"Codex Auto-Redeem Reserve","description":"Never auto-spend below this many saved resets (0 = the last credit may be spent automatically). Credits about to expire are exempt \u2014 a reserved credit that expires preserves nothing.","type":"number","default":0,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Number of saved resets that automatic redemption should preserve, except credits near expiry.","impacts":["cost","automation"],"guidance":{"level":"consider","value":"1 if saved resets are scarce","why":"Preserves one emergency reset instead of letting automation spend the final credit."},"shown":{}},{"path":"codexResets.salvageHorizonHours","tab":"providers","group":"Services","label":"Codex Reset Salvage Horizon","description":"Spend a saved Codex reset automatically when it would otherwise expire within this many hours and either chat window (5h or weekly) has meaningful usage to restore (0 disables expiry salvage).","type":"number","default":12,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Automatically salvages a saved reset that would expire within this many hours when a usage window can meaningfully be restored.","impacts":["cost","automation"],"guidance":null,"shown":{}},{"path":"exa.searchDelayMs","tab":"providers","group":"Services","label":"Exa Search Delay","description":"Minimum delay between Exa web search requests in milliseconds; set 0 to disable pacing","type":"number","default":1000,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":null,"mechanics":"Minimum pacing delay between Exa search requests.","impacts":["reliability","latency"],"guidance":null,"shown":{}},{"path":"providers.fireworksTier","tab":"providers","group":"Fireworks","label":"Fireworks Tier","description":"Serving path for Fireworks requests. Priority sends `service_tier: \"priority\"` for higher reliability during peak traffic at a higher price; Standard omits it. Fast (`-fast`) models ignore this \u2014 Fast is its own serving path.","type":"enum","default":"standard","values":["standard","priority"],"options":[{"value":"standard","label":"Standard","description":"Default serving path (no service_tier)"},{"value":"priority","label":"Priority","description":"Priority serving path: higher reliability, premium per-token pricing"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Selects standard or priority request routing for Fireworks.","impacts":["cost","latency"],"guidance":null,"shown":{"default":{"row":24,"value":"standard"},"expanded":{"row":24,"value":"standard"}}},{"path":"providers.tinyModel","tab":"providers","group":"Tiny Model","label":"Tiny Model","description":"Session-title model: online (the TINY role from /models, else @smol) by default, or a local on-device model","type":"enum","default":"online","values":["online","lfm2-350m","qwen3-0.6b","gemma-270m","qwen2.5-0.5b","lfm2-700m"],"options":[{"value":"online","label":"Online (TINY role, else @smol)","description":"Online title generation: the TINY model role (set one in /models) when assigned, otherwise the online fallback (commit role, then @smol). No local download or on-device inference."},{"value":"lfm2-350m","label":"LFM2 350M","description":"Recommended local model; best speed/quality balance, about 212 MB cached."},{"value":"qwen3-0.6b","label":"Qwen3 0.6B","description":"Most robust local option; slower first load, about 500 MB cached."},{"value":"gemma-270m","label":"Gemma 270M","description":"Smallest viable local option; lower quality, lowest cache footprint."},{"value":"qwen2.5-0.5b","label":"Qwen2.5 0.5B","description":"Balanced local fallback; moderate quality and cache footprint."},{"value":"lfm2-700m","label":"LFM2 700M","description":"Highest-quality local option; larger and slower than LFM2 350M."}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Small model used for lightweight OMP features such as classification/title/memory tasks.","impacts":["cost","latency","privacy"],"guidance":null,"shown":{"default":{"row":26,"value":"online"},"expanded":{"row":26,"value":"online"}}},{"path":"providers.tinyModelDevice","tab":"providers","group":"Tiny Model","label":"Tiny Model Device","description":"ONNX execution provider for local tiny models (titles + memory). Default uses CPU-only inference. The PI_TINY_DEVICE env var overrides this.","type":"enum","default":"default","values":["default","gpu","cpu","metal","webgpu","cuda","dml","coreml","auto","wasm","webnn","webnn-gpu","webnn-cpu","webnn-npu"],"options":[{"value":"default","label":"Default","description":"CPU-only inference"},{"value":"gpu","label":"GPU","description":"Accelerated provider (WebGPU/Metal, CUDA, or DirectML)"},{"value":"cpu","label":"CPU","description":"CPU-only inference"},{"value":"metal","label":"Metal","description":"WebGPU alias for Apple GPUs"},{"value":"webgpu","label":"WebGPU","description":"WebGPU/Metal backend"},{"value":"cuda","label":"CUDA","description":"NVIDIA CUDA (Linux x64)"},{"value":"dml","label":"DirectML","description":"DirectML backend (Windows)"},{"value":"coreml","label":"CoreML","description":"Apple CoreML (opt-in; can fail to load)"},{"value":"auto","label":"Auto","description":"Let ONNX Runtime choose a provider"},{"value":"wasm","label":"WASM","description":"WebAssembly backend"},{"value":"webnn","label":"WebNN","description":"WebNN backend"},{"value":"webnn-gpu","label":"WebNN GPU","description":"WebNN GPU device"},{"value":"webnn-cpu","label":"WebNN CPU","description":"WebNN CPU device"},{"value":"webnn-npu","label":"WebNN NPU","description":"WebNN NPU device"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"ONNX execution provider/device used by local tiny models. Environment PI_TINY_DEVICE can override it.","impacts":["performance","compatibility"],"guidance":null,"shown":{"default":{"row":27,"value":"default"},"expanded":{"row":27,"value":"default"}}},{"path":"providers.tinyModelDtype","tab":"providers","group":"Tiny Model","label":"Tiny Model Precision","description":"ONNX quantization/precision for local tiny models. Default uses each model's shipped dtype (q4); lower precision is faster, higher is more faithful. The PI_TINY_DTYPE env var overrides this.","type":"enum","default":"default","values":["default","q4","q4f16","q8","fp16","fp32","int8","uint8","bnb4","q2","q2f16","q1","q1f16","auto"],"options":[{"value":"default","label":"Default","description":"Each model's shipped dtype (currently q4)"},{"value":"q4","label":"q4","description":"4-bit weights; smallest and fastest"},{"value":"q4f16","label":"q4f16","description":"4-bit weights with fp16 activations"},{"value":"q8","label":"q8","description":"8-bit quantization"},{"value":"fp16","label":"fp16","description":"16-bit float; higher fidelity, larger"},{"value":"fp32","label":"fp32","description":"Full precision; largest and slowest"},{"value":"int8","label":"int8","description":"Signed 8-bit integer"},{"value":"uint8","label":"uint8","description":"Unsigned 8-bit integer"},{"value":"bnb4","label":"bnb4","description":"bitsandbytes 4-bit"},{"value":"q2","label":"q2","description":"2-bit weights"},{"value":"q2f16","label":"q2f16","description":"2-bit weights with fp16 activations"},{"value":"q1","label":"q1","description":"1-bit weights"},{"value":"q1f16","label":"q1f16","description":"1-bit weights with fp16 activations"},{"value":"auto","label":"Auto","description":"Let transformers.js choose per device"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"ONNX numeric precision/quantization used by local tiny models. Environment PI_TINY_DTYPE can override it.","impacts":["performance","quality","storage"],"guidance":null,"shown":{"default":{"row":28,"value":"default"},"expanded":{"row":28,"value":"default"}}},{"path":"providers.unexpectedStopModel","tab":"providers","group":"Tiny Model","label":"Unexpected Stop Model","description":"Classifier for unexpected-stop detection: online (the TINY role from /models, else smol) by default, or a local on-device model.","type":"enum","default":"online","values":["online","qwen3-1.7b","llama3.2:3b","gemma-3-1b","qwen2.5-1.5b","lfm2-1.2b"],"options":[{"value":"online","label":"Online (TINY role, else @smol)","description":"Use the online model: the TINY role from /models when set, otherwise @smol. No local model download or on-device inference."},{"value":"qwen3-1.7b","label":"Qwen3 1.7B","description":"Disabled for local inference: onnxruntime-node cannot run this ONNX export's RotaryEmbedding cache updates."},{"value":"llama3.2:3b","label":"Llama 3.2 3B","description":"Larger Llama 3.2 option for local memory/classifier tasks; higher quality potential at higher disk/RAM/latency cost."},{"value":"gemma-3-1b","label":"Gemma 3 1B","description":"Best consolidation/dedup; lighter footprint, but leaks small talk during extraction."},{"value":"qwen2.5-1.5b","label":"Qwen2.5 1.5B","description":"Best extraction granularity (atomic facts); weaker consolidation."},{"value":"lfm2-1.2b","label":"LFM2 1.2B","description":"Fastest load; solid all-rounder, slightly noisier extraction labels."}],"runtimeOptions":false,"secret":false,"condition":"unexpectedStopDetection","ordered":false,"widget":"submenu","mechanics":"Model used by Unexpected Stop Detection when that feature is enabled.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"default":{"row":29,"value":"online"},"expanded":{"row":29,"value":"online"}}},{"path":"providers.kimiApiFormat","tab":"providers","group":"Protocol","label":"Kimi API Format","description":"API format for Kimi Code provider (auto follows live model metadata)","type":"enum","default":"auto","values":["auto","openai","anthropic"],"options":[{"value":"auto","label":"Auto","description":"Use the model's server-declared protocol"},{"value":"openai","label":"OpenAI","description":"api.kimi.com"},{"value":"anthropic","label":"Anthropic","description":"api.moonshot.ai"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Chooses OpenAI- or Anthropic-compatible request formatting for Kimi endpoints.","impacts":["compatibility","reliability"],"guidance":null,"shown":{"default":{"row":31,"value":"auto"},"expanded":{"row":31,"value":"auto"}}},{"path":"providers.openaiWebsockets","tab":"providers","group":"Protocol","label":"OpenAI WebSockets","description":"Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)","type":"enum","default":"auto","values":["auto","off","on"],"options":[{"value":"auto","label":"Auto","description":"Use model/provider default websocket behavior"},{"value":"off","label":"Off","description":"Disable websockets for OpenAI Codex models"},{"value":"on","label":"On","description":"Force websockets for OpenAI Codex models"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Controls WebSocket streaming/transport for compatible OpenAI endpoints. Auto follows provider capability.","impacts":["latency","compatibility"],"guidance":null,"shown":{"default":{"row":32,"value":"auto"},"expanded":{"row":32,"value":"auto"}}},{"path":"providers.openrouterVariant","tab":"providers","group":"Protocol","label":"OpenRouter Routing","description":"Default routing-variant suffix appended to OpenRouter model IDs (overridden when the selector already names a variant)","type":"enum","default":"default","values":["default","nitro","floor","online","exacto"],"options":[{"value":"default","label":"Default","description":"No suffix; use OpenRouter's default routing"},{"value":"nitro","label":":nitro","description":"Prioritize throughput / lowest latency"},{"value":"floor","label":":floor","description":"Prioritize cheapest available provider"},{"value":"online","label":":online","description":"Enable OpenRouter's web-search plugin"},{"value":"exacto","label":":exacto","description":"Cherry-picked high-quality providers (only defined for select models)"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Appends a default routing suffix when the selected OpenRouter model ID does not already specify one.","impacts":["cost","latency","quality"],"guidance":null,"shown":{"default":{"row":33,"value":"default"},"expanded":{"row":33,"value":"default"}}},{"path":"provider.appendOnlyContext","tab":"providers","group":"Protocol","label":"Append-Only Context","description":"Cache system prompt + tool specs and keep an append-only message log so provider prefix caches (DeepSeek, Xiaomi/SGLang, Anthropic) hit at maximum rate. Auto enables for known prefix-cache providers.","type":"enum","default":"auto","values":["auto","on","off"],"options":[{"value":"auto","label":"Auto","description":"Enable for known prefix-cache providers (recommended)"},{"value":"on","label":"On","description":"Always enable append-only context"},{"value":"off","label":"Off","description":"Disable append-only context"}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Keeps system/tool prefixes stable and appends messages so provider prefix caches hit more consistently. Auto enables it for known prefix-cache providers.","impacts":["cost","latency","context"],"guidance":null,"shown":{"default":{"row":34,"value":"auto"},"expanded":{"row":34,"value":"auto"}}},{"path":"providers.streamFirstEventTimeoutSeconds","tab":"providers","group":"Timeouts","label":"Stream First Event Timeout","description":"Seconds to wait for the first model stream event; -1 uses provider/env defaults, 0 disables the watchdog","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Auto","description":"Use provider defaults and PI_* timeout env vars"},{"value":"0","label":"Off","description":"Disable first-event timeout"},{"value":"300","label":"5 minutes","description":null},{"value":"600","label":"10 minutes","description":null},{"value":"1800","label":"30 minutes","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum wait for the first provider stream event; -1 uses provider/env defaults and 0 disables the watchdog.","impacts":["reliability","latency"],"guidance":null,"shown":{"default":{"row":36,"value":"-1"},"expanded":{"row":36,"value":"-1"}}},{"path":"providers.streamIdleTimeoutSeconds","tab":"providers","group":"Timeouts","label":"Stream Idle Timeout","description":"Seconds a model stream may stay silent between events; -1 uses provider/env defaults, 0 disables the watchdog","type":"number","default":-1,"values":null,"options":[{"value":"-1","label":"Auto","description":"Use provider defaults and PI_* timeout env vars"},{"value":"0","label":"Off","description":"Disable idle timeout"},{"value":"300","label":"5 minutes","description":null},{"value":"600","label":"10 minutes","description":null},{"value":"1800","label":"30 minutes","description":null}],"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"submenu","mechanics":"Maximum silence between stream events; -1 uses defaults and 0 disables the watchdog.","impacts":["reliability","latency"],"guidance":null,"shown":{"default":{"row":37,"value":"-1"},"expanded":{"row":37,"value":"-1"}}},{"path":"secrets.enabled","tab":"providers","group":"Privacy","label":"Hide Secrets","description":"Obfuscate configured secrets and redact credential-shaped tokens before sending to AI providers","type":"boolean","default":false,"values":null,"options":null,"runtimeOptions":false,"secret":false,"condition":null,"ordered":false,"widget":"boolean","mechanics":"Obfuscates configured secrets and redacts credential-shaped tokens before provider transmission. It is a guardrail, not general-purpose DLP for client data.","impacts":["privacy","security"],"guidance":{"level":"change","value":"true","why":"Low-cost defense-in-depth before provider calls. Treat it as credential redaction, not client-data DLP."},"shown":{"default":{"row":39,"value":"false"},"expanded":{"row":39,"value":"false"}}}]}