Repository navigation
Releases: wmostert76/codexswitch
Releases · wmostert76/codexswitch
Release list
CodexSwitch v26.10.05.0943
Removed
- Removed all Claude Code support: the Clients pane, the
claudelauncher and
settings merge, the Claude Messages proxy routes (/claude/...), the Python
and Go Claude translators and thecodexswitch-claude-tokenhelper.
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 useandcodexswitch runno longer take acodex|claude
client argument: usecodexswitch use PROVIDER MODEL [REASONING]and
codexswitch run [ARGS...]. The obsoleteclientkey 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
Fixed
- Proxy-backed provider activation now starts and verifies the unified proxy,
so a subsequent plaincodexcommand 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
Fixed
- Limited the startup
git ls-remoteupdate 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
Fixed
- Corrected the timestamp release format to include the day. Releases now use
JJ.M.DD.HHMMin local 24-hour time; this release is26.7.18.1816for
18 July 2026 at 18:16 CEST. - Version comparison remains compatible with historical SemVer tags and the
superseded three-partJJ.MM.HHMMrelease.
CodexSwitch v26.07.1800
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-proxyreproducibly and
installs the binary ascodex-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 nativeweb_searchtool
and converts search calls plus URL citations back into Claude server-tool
streaming blocks. Live verification withgpt-5.6-solreturned real source
URLs instead ofDid 0 searches. - Empty optional
pagesarguments 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 withgpt-5.6-solpassed 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 explicitauto/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
modelsschema instead of forwarding the provider-specificdataenvelope. - 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.HHMMversion format with local 24-hour time;
this release is26.07.1800for 18 July 2026 at 18:00 CEST.
CodexSwitch v1.8.0
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-miniandgpt-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.2andqwen/qwen3.7-maxpassed the
full built-in tool matrix, MCP and Agent.moonshotai/kimi-k3passed 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-codeas 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-5directly 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/modelsrefreshes. 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
apiKeyHelperfor
loopback authentication, avoiding Claude Code's conflicting-auth warning
whenANTHROPIC_AUTH_TOKENandapiKeyHelperwere 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 onPATH. - Claude launches now resolve npm's installed platform-native executable when
the generatedclaudesymlink points at the non-executable fallback script.
CodexSwitch v1.7.3
Fixed
- Release updates on
mainno longer fetch a tag before pulling, fixing
upgrades through a local or mirroredoriginthat 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
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
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
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,xfor failed or unavailable Codex tooling and~for
repeatedly rate-limited endpoints. The selected model's measured limitation
is also shown in Model Details.