Workaround for forcing Codex MultiAgent V1 on GPT-5.6 Sol and Terra A developer has published a workaround for forcing Codex MultiAgent V1 on GPT-5.6 Sol and Terra, addressing a regression where model metadata overrides local feature flags. The workaround involves modifying a local model-catalog snapshot to set multi_agent_version to 'v1', but warns that forcing V1 may disable Ultra's proactive delegation and other orchestration behaviors. The regression is tracked in openai/codex issue #31097. This guide explains how to use a local model-catalog override to force the Codex MultiAgent V1 tool surface for GPT-5.6 Sol and Terra. It addresses the following behavior: codex features list reports multi agent v2 = false , but new sessions still use V2. spawn agent exposes only task name , message , and fork turns .- V1 custom-agent, child-model, and reasoning-effort controls are unavailable. This workaround was verified on Windows with Codex CLI 0.144.5 . The underlying regression is tracked in openai/codex issue 31097 https://github.com/openai/codex/issues/31097 . This is a temporary workaround for the current model-catalog precedence behavior. It is not an officially guaranteed long-term configuration. Recheck whether it is necessary after upgrading Codex. Ultra compatibility warning:Sol and Terra advertise Ultra support and were originally assigned MultiAgentV2. Forcing V1 may disable or degrade Ultra's proactive delegation, coordination, steering, waiting, or result-collection behavior. An ordinary V1 spawn test does not establish that Ultra is safe or fully functional under this override. Some model-catalog records contain: "multi agent version": "v2" That model metadata can take precedence over: features multi agent = true multi agent v2 = false The workaround loads a local snapshot through model catalog json and changes the target models to multi agent version: "v1" . The original catalog associated Sol and Terra with both MultiAgentV2 and Ultra support. The official Subagents documentation https://learn.chatgpt.com/docs/agent-configuration/subagents states that Ultra can proactively delegate suitable work to subagents. This creates a plausible, but unconfirmed, dependency between Ultra orchestration and MultiAgentV2. Forcing V1 may therefore cause one or more of the following: - Proactive delegation may not start. - Child agents may be created with incomplete or unexpected settings. - Steering, waiting, interruption, or result collection may behave differently. - The runtime may expect V2 capabilities that are absent from the V1 tool schema. - Ultra may appear selectable while only part of its intended orchestration behavior works. Do not use a successful ordinary V1 spawn as proof of Ultra compatibility. If Ultra is operationally important, keep V2 enabled or test the workaround in an isolated profile before adopting it broadly. Run in PowerShell: codex --version codex features list | Select-String -Pattern '^multi agent\s|^multi agent v2\s' $catalog = codex debug models | ConvertFrom-Json $catalog.models | Where-Object { $ .slug -like 'gpt-5.6- ' } | Select-Object slug, multi agent version If Sol or Terra reports multi agent version as v2 , model metadata may be forcing the V2 tool surface. php $codexHome = Join-Path Environment ::GetFolderPath 'UserProfile' '.codex' $configFile = Join-Path $codexHome 'config.toml' $backupFile = Join-Path $codexHome "config.toml.backup-{0}" -f Get-Date -Format 'yyyyMMdd-HHmmss' Copy-Item -LiteralPath $configFile -Destination $backupFile Write-Host "Backup: $backupFile" Before running this script, ensure config.toml does not already define model catalog json . Otherwise, codex debug models may read an older local snapshot instead of the current upstream catalog. php $codexHome = Join-Path Environment ::GetFolderPath 'UserProfile' '.codex' $modelFile = Join-Path $codexHome 'models-v1.json' $catalog = codex debug models | ConvertFrom-Json $targets = @ 'gpt-5.6-sol', 'gpt-5.6-terra' foreach $model in $catalog.models { if $model.slug -in $targets { $model.multi agent version = 'v1' } } $missing = $targets | Where-Object { $ -notin $catalog.models.slug } if $missing { throw "Models missing from catalog: $ $missing -join ', ' " } $json = $catalog | ConvertTo-Json -Depth 100 $utf8WithoutBom = System.Text.UTF8Encoding ::new $false System.IO.File ::WriteAllText $modelFile, $json, $utf8WithoutBom Write-Host "Model catalog: $modelFile" The JSON must be UTF-8 without BOM. Some Windows PowerShell versions add a BOM when using Set-Content -Encoding utf8 , causing: failed to parse model catalog json ... expected value at line 1 column 1 The WriteAllText call above avoids that problem. If Luna is already V1, it does not need to be changed. To pin it explicitly, add gpt-5.6-luna to $targets . Open: C:\Users\