Repository navigation
Releases: gusnips/cc-proxy
Releases · gusnips/cc-proxy
Release list
v0.1.52
v0.1.51
- On Windows, cc-proxy now keeps its config under
%APPDATA%\cc-proxyand
its state under%LOCALAPPDATA%\cc-proxy, as the docs say. It had been
using~/.configthere. A config folder already at~/.config/cc-proxy
stays in use until%APPDATA%\cc-proxyexists, so existing logins keep
working. On macOS the config folder is always~/.config/cc-proxy, even
whenXDG_CONFIG_HOMEis set. cc-proxy servewaits up to 30 seconds for the proxy to answer, up from
15, so a busy machine doesn't kill a start that would have worked. A
timeout now says what happened and what to try.cc-proxy modelsno longer says "0 cursor model aliases". It shows that
cursor:<model>takes any model Cursor offers.- New provider: GitHub Copilot. Run
cc-proxy copilot auth login, approve the
code on GitHub, then start Claude Code withcc-proxy claude --model copilot/gpt-5.5.cc-proxy modelslists the models your account can use,
and every one starts withcopilot/. cc-proxy marks a turn the agent
continues after a tool result asagent, so Copilot bills a premium
request only when you start a turn. - A Copilot context overflow ("prompt token count of … exceeds the limit")
now reaches Claude Code as "prompt is too long", so it compacts. cc-proxy setupwalks you through a first run. You pick a provider, sign
in (or paste an API key), pick the main model and the fast model, and
choose whether to add the shell hook. At the end it tells you what to run.
For GLM and OpenCode Go it checks the key first: a key the provider
refuses isn't saved, and a provider that can't be reached doesn't stop
you.- The monitor has a Providers overlay on
p. For each provider it shows
whether cc-proxy has a sign-in or an API key, and for Codex, Kimi and
OpenCode Go how much of the plan is used. It looks again once a minute. cc-proxy codex auth loginnow opens the sign-in page in your browser.
cc-proxy glm auth loginno longer shows the key as you paste it.
v0.1.50
- Commands look better in a terminal.
serve,stop,restart,reload
andstatusprint a small card with the cc-proxy face, which shows whether
the proxy runs, sleeps or needs a look. While a command waits, the face
looks around until it's done. Errors print in red with their cause.
Piped output,NO_COLOR=1andTERM=dumbget the same words as plain
text. cc-proxy statusalso shows how long the proxy has run and whether plain
claudegoes through it.- The plain text of the lifecycle commands changed: the first line names
cc-proxy and the details follow on their own lines (cc-proxy started,
then the address and pid), instead ofproxy started (pid …). cc-proxy usagedraws a bar for each window in a terminal. It turns
yellow at 70% used and red at 90%.- The monitor's header shows the face too. It talks while requests stream,
looks unsure for 10 seconds after a failed request, and blinks now and
then so you can tell the dashboard is live. Beside it are four minutes of
output tokens and the live tokens per second. A request that just
finished glows for three seconds, every provider has its own color, and
each empty panel says what shows up there.
v0.1.49
- Kimi now signs in at
auth.kimi.aiand callsapi.kimi.ai, where Kimi
moved. Both hosts share one sign-in, so an existing login keeps working
with no newcc-proxy kimi auth login.kimi.oauthHostand
kimi.baseUrlstill override them. cc-proxy shell installmakes plainclaudego through cc-proxy. It adds
one line to~/.zshrc,~/.bashrcor~/.bash_profile, or a function
file for fish. After that,cc-proxy offandcc-proxy onswitch every
terminal at once, andclaude --resume <id>keeps working. The line sets
no environment variables, so other programs never see the proxy.
cc-proxy shell uninstallremoves it.cc-proxy claudestarts Claude Code on the proxy. It starts the proxy
first if it isn't running, then passes every argument toclaude, so
--resume,--worktree,-pand a pasted resume command work as usual.
The proxy's address goes in a--settingsflag for that session, so no
settings file changes. Choose the model it starts on with
cc-proxy config set claude.model <id>, and the background model with
claude.fastModel.- The serve banner and the monitor's setup panel now point to
cc-proxy claude. Their variable lists useANTHROPIC_DEFAULT_HAIKU_MODEL,
which replacedANTHROPIC_SMALL_FAST_MODELin Claude Code, and add
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1. cc-proxy usageshows how much of your Codex, Kimi and OpenCode Go plans
you have used, and when each limit resets. Name one provider to see only
that one:cc-proxy usage kimi. Add--jsonfor scripts.cc-proxy opencode usagemoved tocc-proxy usage opencode. The old
command is gone. With--json, OpenCode Go's reply now sits under an
opencodekey.cc-proxy modelsno longer lists five Codex models that ChatGPT
accounts can't use: gpt-5.2, gpt-5.3-codex, gpt-5.3-codex-spark, gpt-5.4
and gpt-5.4-mini. The backend answers each with a 400. On the OpenAI
routes they now fail at once with the list of models that work.- GLM and OpenCode Go's Anthropic models (MiniMax, Qwen) now send Claude
Code only whole stream events. When an upstream read ended halfway through
an event and an error came next, the error was stuck onto the half event,
so Claude Code could read neither, and text from the same read was lost. - OpenCode Go's GPT, Grok and Muse Spark models now pass on what failed when
the upstream fails mid-answer. A rate limit used to reach Claude Code as a
generic "stream is invalid" error, without the upstream's message, and the
text that came just before it was dropped. - Cursor now tells a spent quota from a short rate limit. Both arrive as a
429, so Claude Code kept retrying a spent quota, which a few seconds of
waiting can't fix. A spent quota now comes back withx-should-retry: false,
which stops the retries, whether Cursor reports it as an HTTP error or at
the end of its answer. - A Cursor 429 now passes on Cursor's reason and its own
retry-after.
Before, Claude Code got "Cursor upstream error" and a 5-second wait that
Cursor never sent. - A finished answer no longer fails when an upstream read ends halfway
through what comes after the end of the answer, such asdata: [DONE]or
OpenCode Go's closing metadata. This affected Kimi, GLM and OpenCode Go.
Claude Code got an error instead of the answer it had already been sent.
v0.1.48
What's Changed
- fix(providers): port providerkit's failure-handling lessons by @gusnips in #3
- fix(glm): stream replies, and fail a body that breaks off instead of returning it empty by @gusnips in #4
- fix(cursor): send tool results back to Cursor and fail streams that stop early by @gusnips in #5
- refactor(kimi): stream through the shared chat translator by @gusnips in #6
Full Changelog: v0.1.47...v0.1.48
v0.1.47
- Codex streams that drop mid-response now recover more safely. HTTP streams
retry a partial tool call only if no tool call has reached Claude Code yet.
A WebSocket stream reconnects only while it has sent thinking and nothing
else. Recovery stops after 3 retries or 60 seconds from the first failure,
whichever comes first. A request that Claude Code cancels is never retried. - A Codex quota snapshot now returns a 429 only when the stream closes before
the response starts. Snapshots covered by credits, and snapshots on streams
that already started, no longer end the request. gpt-6-astra-ultrafastrequests Codex'sultrafastservice tier. On other
models,-ultrafastfalls back topriority. Stacked suffixes such as
-fast-ultrafastare rejected.autoReviewEffort/CCP_AUTO_REVIEW_EFFORTsets the reasoning effort for
Codex auto-review requests only. Normal requests keep their own effort.- Grok hosted web search sends
allowed_domainsorblocked_domains(up to
five) and an approximateuser_locationas Grok's native search filters.
Install or upgrade with cc-proxy update, Homebrew (brew upgrade cc-proxy), or the archives below. Each archive has a matching .sha256 file.