Skip to content

Releases: wmostert76/codexswitch

CodexSwitch v26.10.05.0943

Choose a tag to compare

@github-actions github-actions released this 05 Oct 07:45

Removed

  • Removed all Claude Code support: the Clients pane, the claude launcher and
    settings merge, the Claude Messages proxy routes (/claude/...), the Python
    and Go Claude translators and the codexswitch-claude-token helper.
    CodexSwitch works with the Codex CLI only again.
  • Removed the Microsoft Foundry provider, which only existed to serve Claude
    Code. Use the Azure provider instead. A Foundry entry that was saved in the
    credential vault is left untouched.
  • codexswitch use and codexswitch run no longer take a codex|claude
    client argument: use codexswitch use PROVIDER MODEL [REASONING] and
    codexswitch run [ARGS...]. The obsolete client key is dropped from the
    switch state on the next activation.

Fixed

  • Malformed, oversized or unrelated proxy health responses now report unhealthy
    instead of crashing status and activation.
  • The Go proxy rejects null, multiple and trailing JSON request bodies and
    returns HTTP 413 for oversized requests.
  • Forwarded SSE responses flush incrementally; truncated upstream responses
    abort the downstream connection. Retry-After and request IDs are preserved.

Changed

  • Added GPT-6 Sol and GPT-5.6 Terra to the native OpenAI fallback model list,
    keeping both selectable when Codex cannot refresh its live catalog.
  • Read the native Codex model catalog from the active Codex home so account-
    available models such as GPT-6 Sol appear in Commander.
  • Upgraded Textual to the 8.2 series and cryptography to the 50.0 series,
    verified with the backend, vault and headless Commander test suite.

CodexSwitch v26.9.01.1039

Choose a tag to compare

@github-actions github-actions released this 01 Sep 08:42

Fixed

  • Proxy-backed provider activation now starts and verifies the unified proxy,
    so a subsequent plain codex command no longer reconnects repeatedly to an
    unused loopback port. Startup uses bounded health polling and verifies the
    responding implementation instead of trusting any HTTP 200 on port 14555.
  • Configuration and switch-state writes now use atomic replacement, preventing
    interrupted writes from leaving truncated TOML or JSON. Status explicitly
    marks a removed native OpenAI model as invalid instead of presenting stale
    state as healthy.
  • Fixed those atomic writes on native Windows by syncing the still-writable
    temporary file instead of reopening it read-only. Selecting an account or
    applying a provider no longer fails with [Errno 9] Bad file descriptor.
  • Go upstream requests now inherit client cancellation, credential helpers have
    a bounded timeout, malformed SSE is reported, and server input/header limits
    are explicit.

Changed

  • CI now formats, race-tests, vets and builds the active Go proxy in addition to
    the Python matrix. A development requirements file makes the documented local
    pytest workflow reproducible.
  • CI now also runs the Python and Commander test suite on native Windows so
    Windows-only file-descriptor and path-escaping regressions are caught.

CodexSwitch v26.7.18.1946

Choose a tag to compare

@github-actions github-actions released this 18 Jul 17:51

Fixed

  • Limited the startup git ls-remote update check to ten seconds. Commander
    now continues to the TUI with a warning when the configured Git remote is
    unreachable instead of hanging indefinitely before startup.

CodexSwitch v26.7.18.1816

Choose a tag to compare

@github-actions github-actions released this 18 Jul 16:20

Fixed

  • Corrected the timestamp release format to include the day. Releases now use
    JJ.M.DD.HHMM in local 24-hour time; this release is 26.7.18.1816 for
    18 July 2026 at 18:16 CEST.
  • Version comparison remains compatible with historical SemVer tags and the
    superseded three-part JJ.MM.HHMM release.

CodexSwitch v26.07.1800

Choose a tag to compare

@github-actions github-actions released this 18 Jul 16:09

Added

  • Replaced the active Python compatibility-proxy process with an in-repository,
    statically linked Go implementation. It retains the existing port and routes
    for OpenAI OAuth, Azure OpenAI, OpenCode Go, OpenRouter and Claude Messages,
    while Commander, account management and the Textual TUI remain in Python.
  • The installer now detects Go, builds cmd/codexswitch-proxy reproducibly and
    installs the binary as codex-provider-proxy. A narrow credential helper
    preserves access to local and remote encrypted vault entries without placing
    provider secrets in the Go process arguments, logs or configuration.
  • Added Go-native coverage for unified health, Claude tool/image translation,
    long identifiers, thinking state, cached usage, namespace/custom tools,
    Responses SSE collection, complete Codex model metadata and an end-to-end
    Claude-to-Azure round trip.

Fixed

  • Claude Code WebSearch through the OpenAI Responses bridge now maps
    Anthropic's server-side search schema to OpenAI's native web_search tool
    and converts search calls plus URL citations back into Claude server-tool
    streaming blocks. Live verification with gpt-5.6-sol returned real source
    URLs instead of Did 0 searches.
  • Empty optional pages arguments emitted by GPT for Claude's Read tool are
    now removed by the bridge, avoiding a needless validation failure before
    text and image reads.
  • Claude Read image results are now retained as high-detail Responses vision
    inputs instead of being discarded while translating the tool result. A live
    six-image matrix with gpt-5.6-sol passed a logo, photo, two labeled
    diagrams, an eight-panel orientation chart and exact 8x8 color-cell counts;
    a separate two-image task also identified both files correctly.
  • Claude/OpenAI protocol translation now preserves mixed content ordering,
    safely shortens overlong tool names and call IDs with deterministic reverse
    mapping, honors explicit auto/any/none/named tool choices and Claude's
    parallel-tool switch, and forwards web-search location hints.
  • OpenAI reasoning summaries and encrypted continuation state are now returned
    as Claude thinking blocks. Cached-token usage, terminal stop reasons and stop
    sequences are retained instead of being flattened to generic defaults.
  • Streaming Claude requests now translate OpenAI Responses SSE events directly
    to Claude SSE for thinking, text, function calls and native web search. The
    experimental ChatGPT OAuth transport forwards the upstream event stream
    instead of buffering the complete response first. Live Claude Code checks
    passed Bash, WebSearch and an image Read through the streaming route.
  • The Go OpenAI transport forces the downstream SSE content type when the
    ChatGPT Codex endpoint omits it, preventing Claude from treating a valid
    stream as plain text. OpenRouter's catalog is normalized to Codex's complete
    models schema instead of forwarding the provider-specific data envelope.
  • Live Go-proxy verification passed Claude Code tool calls on OpenAI, Azure and
    OpenRouter, image input and OpenAI WebSearch/thinking, plus a normal Codex CLI
    OpenRouter shell call. OpenCode Go returned its current insufficient-balance
    error correctly, so a paid completion could not be re-run in this session.
  • Revalidated tool results on Claude Code 2.1.212 rather than counting tool
    invocations: Read, Write, Edit, Bash, NotebookEdit, WebSearch, WebFetch,
    image reads, namespaced MCP and Agent passed. Claude Code 2.1.212 does not
    advertise standalone Glob or Grep tools in these sessions.

Changed

  • Releases now use the JJ.MM.HHMM version format with local 24-hour time;
    this release is 26.07.1800 for 18 July 2026 at 18:00 CEST.

CodexSwitch v1.8.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 19:22

Added

  • Added Claude Code as an alternative client for the existing provider, model
    and reasoning selection. Commander can now apply and launch either Codex or
    Claude with the same active configuration.
  • Added an Anthropic Messages compatibility route to the unified provider
    proxy for Azure OpenAI, OpenCode Go, OpenRouter and an explicitly
    experimental native OpenAI Codex OAuth route.
  • Added persistent, merge-safe Claude settings and an API-key helper that
    starts the loopback proxy on demand without storing provider credentials in
    Claude configuration.
  • Added Microsoft Foundry as a Claude-only provider using Claude Code's native,
    proxy-free Foundry integration. It supports Entra ID, vault-backed API keys
    and custom deployment names without writing keys to Claude settings.
  • Added proxy-free Claude Code routing for OpenRouter-hosted Anthropic models
    through OpenRouter's native Messages endpoint. Non-Anthropic OpenRouter
    models retain the compatibility proxy.

Fixed

  • The experimental OpenAI OAuth transport now conforms to the ChatGPT Codex
    endpoint's required streaming-only, non-stored request format and rebuilds
    complete Responses output from SSE events. Live Claude Code verification
    passed with the Read, Write and Bash tools on the active OpenAI account.
  • Extended live OpenAI verification to Edit, Glob, Grep, WebSearch, WebFetch,
    NotebookEdit, image reads, multi-call tool responses and a local MCP echo
    server. Agent subcalls return correct results but can continue scheduling
    calls instead of terminating; TodoWrite is unavailable in Claude Code
    2.1.211 and is not advertised as supported.
  • Repeated the instrumented Claude/OpenAI tool matrix for gpt-5.5,
    gpt-5.4, gpt-5.4-mini and gpt-5.3-codex-spark. Every model passed
    Read, Write, Edit, Glob, Grep, Bash, WebSearch, WebFetch, NotebookEdit,
    image reads, a local MCP echo call and a bounded single Agent subcall.
  • Tested the current OpenRouter flagships through Claude Code:
    deepseek/deepseek-v4-pro, z-ai/glm-5.2 and qwen/qwen3.7-max passed the
    full built-in tool matrix, MCP and Agent. moonshotai/kimi-k3 passed text,
    Read, Write, Edit, Glob, Bash, web, image reads and Agent, but Grep,
    NotebookEdit and MCP timed out amid repeated upstream failures.
  • Verified moonshotai/kimi-k2.7-code as the more reliable Kimi fallback: it
    passed the complete built-in tool matrix, image reads, MCP and Agent in the
    same Claude Code/OpenRouter test setup where Kimi K3 remained partial.
  • Retried the complete Kimi K3 matrix from a clean Claude configuration; the
    run reached Read but OpenRouter rate-limited the continuation with HTTP 429
    after roughly 290 seconds. The retry is recorded as inconclusive rather than
    as a new tool-compatibility failure.
  • Verified anthropic/claude-sonnet-5 directly from Claude Code to OpenRouter
    with the local proxy stopped. Read, Write, Edit, Glob, Grep, Bash, web,
    NotebookEdit, image reads, MCP and Agent all passed through OpenRouter's
    Anthropic Messages endpoint.
  • Verified Claude Code end to end against Azure OpenAI gpt-5.6-sol: text,
    Read, Write, Edit, Glob, Grep, Bash, WebSearch, WebFetch, NotebookEdit, image
    reads, multi-tool tasks, a local MCP echo tool and a bounded Agent subcall
    all passed through the unified proxy.
  • Codex now connects directly to Azure OpenAI Responses v1 instead of routing
    through the local proxy. A command-backed vault helper supplies auth and a
    local Codex catalog prevents incompatible Azure /models refreshes. Live
    direct verification passed shell, file patching, web search and MCP tools.
  • Commander no longer starts the compatibility proxy during catalog loading;
    proxy-backed clients start it on demand immediately before launch.
  • Claude health probes and disconnected streaming clients are now handled
    without HTTP 501 responses or BrokenPipe tracebacks.
  • Claude compatibility routes now use only the configured apiKeyHelper for
    loopback authentication, avoiding Claude Code's conflicting-auth warning
    when ANTHROPIC_AUTH_TOKEN and apiKeyHelper were both configured.
  • Installation now stops a detached proxy launched through the installed
    symlink and preserves/replaces a legacy per-user launcher that would shadow
    the current checkout on PATH.
  • Claude launches now resolve npm's installed platform-native executable when
    the generated claude symlink points at the non-executable fallback script.

CodexSwitch v1.7.3

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:09

Fixed

  • Release updates on main no longer fetch a tag before pulling, fixing
    upgrades through a local or mirrored origin that has the release commit
    but not the tag created later by GitHub Actions. Detached checkouts fetch the
    release directly from canonical GitHub into an internal ref, avoiding both
    missing mirror tags and conflicts with local tags.

CodexSwitch v1.7.2

Choose a tag to compare

@github-actions github-actions released this 14 Jul 21:03

Changed

  • Linux now matches Windows by starting the unified provider proxy as a
    detached background process instead of a systemd service. Upgrades remove
    obsolete service units and the systemd-specific proxy management commands
    have been removed.

CodexSwitch v1.7.1

Choose a tag to compare

@github-actions github-actions released this 14 Jul 20:52

Fixed

  • Updates now fetch only the requested release tag and ignore unrelated
    historical tag conflicts, preventing a rewritten old tag from blocking both
    manual and automatic upgrades. Installer branch updates also skip tags.

Changed

  • Commander now starts the unified provider proxy when the TUI opens, so its
    health is ready before selecting or launching a non-native provider.

CodexSwitch v1.7.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 16:03

Changed

  • OpenRouter's Commander model list now marks all 23 free models tested through
    the native Codex CLI and unified Responses proxy: ! for basic shell-only
    compatibility, x for failed or unavailable Codex tooling and ~ for
    repeatedly rate-limited endpoints. The selected model's measured limitation
    is also shown in Model Details.