v6.9.0
Published to npm as oc-codex-multi-auth@6.9.0.
npm install -g oc-codex-multi-auth@6.9.0
Added
Model-specific account pools (#200)
A new modelAccountPools config field maps an effective model ID to a preferred set of accounts, so a model can be routed through the accounts entitled to it — e.g. pin gpt-5.6-sol to the accounts inside the Sol preview — instead of burning rotation attempts on accounts that will reject it.
{
"modelAccountPools": {
"gpt-5.6-sol": ["org-example-account-id"]
}
}- All three rotation strategies (
sticky,round-robin,hybrid) restrict selection to healthy, selectable accounts in the preferred pool while one is available; existing quota, cooldown, and token-health rules still apply within the pool. - If every preferred account is unavailable — disabled, unknown in this project, cooling down, or rate-limited — selection falls back transparently to the healthy general pool rather than failing the request.
- Model keys match case-insensitively against the effective model after request-model normalization; unmapped models and empty lists use the general pool directly.
- Pool references are stable account IDs, not indexes, so adding, removing, or reordering accounts never silently changes a model's routing.
codex-pool tool (#200)
The 24th codex-* tool manages those mappings with ordinary 1-based account numbers while resolving and persisting only stable IDs:
codex-pool
codex-pool action="set" model="gpt-5.6-sol" accounts=[7,8]
codex-pool action="add" model="gpt-5.6-sol" accounts=[9]
codex-pool action="remove" model="gpt-5.6-sol" accounts=[7]
codex-pool action="clear" model="gpt-5.6-sol"
dryRun=truepreviews any mutation;format="json"gives structured output with stable IDs redacted unlessincludeSensitive=true.- Config writes are atomic and serialized (in-process queue + cross-process file lock via the new
proper-lockfiledependency), preserve every unrelated raw config key, and refuse to replace malformed JSON or an invalid existing pool. - The plugin config is global while account storage is per-project by default, so references that don't resolve in the current project are reported but never automatically pruned.
- Restart OpenCode after an applied mutation.
Pool-mode routing diagnostics (#200)
codex-status, codex-dashboard, and codex-metrics (text and TUI views) now report accountPoolMode — general, preferred, or general-fallback — and configuredAccountPoolSize, so a fallback out of a configured pool is visible instead of silent.
Contributed by @lubshad.