Skip to content

v6.9.0

Choose a tag to compare

@ndycode ndycode released this 17 Jul 13:36
· 302 commits to main since this release

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=true previews any mutation; format="json" gives structured output with stable IDs redacted unless includeSensitive=true.
  • Config writes are atomic and serialized (in-process queue + cross-process file lock via the new proper-lockfile dependency), 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 accountPoolModegeneral, preferred, or general-fallback — and configuredAccountPoolSize, so a fallback out of a configured pool is visible instead of silent.


Contributed by @lubshad.