fix: route default launch through proxy (fixes cost tracking and auth override) - #9
Draft
aattaran wants to merge 4 commits into
Draft
fix: route default launch through proxy (fixes cost tracking and auth override)#9aattaran wants to merge 4 commits into
aattaran wants to merge 4 commits into
Conversation
…erride
Previously `deepclaude` set ANTHROPIC_BASE_URL directly to the upstream
backend, bypassing the local proxy entirely. This meant:
- `/_proxy/cost` always showed {"backends":{}, "total_cost":0}
- `/switch` had no effect in default mode
- Claude subscription OAuth tokens weren't intercepted, causing fallback to Anthropic
Now both bash and PowerShell scripts start the proxy on a dynamic port and
point ANTHROPIC_BASE_URL at it in all non-anthropic modes. The proxy replaces
auth headers in-flight so subscription tokens and API keys are both handled.
ANTHROPIC_API_KEY is set to the backend key so Claude Code starts cleanly.
Fixes #3
https://claude.ai/code/session_01FTqposuxzUQwueS9Zpa3ez
…0x → 110x ANTHROPIC_AUTH_TOKEN is Claude Code's OAuth subscription token, not the API key — scripts now set ANTHROPIC_API_KEY. Cache ratio corrected: $0.44 / $0.004 = 110x, not 120x. https://claude.ai/code/session_01FTqposuxzUQwueS9Zpa3ez
|
Any progress? |
g-roliveira
added a commit
to g-roliveira/deepclaude
that referenced
this pull request
Aug 6, 2026
…parity Summary of fixes and features applied from aattaran/deepclaude issues and PRs, plus original improvements: Model coverage (Issue aattaran#39): - Add claude-fable-5, claude-opus-5, claude-sonnet-5 to MODEL_REMAP - Tier-based _default fallback (fable/opus/sonnet/haiku) so new Claude models degrade predictably instead of silently routing to the wrong backend - Warning log when model is forwarded unmapped Proxy resilience (PR aattaran#18): - proxyRes error handler — upstream TCP reset mid-response no longer crashes the entire proxy process - proxyReq error after headers-sent: destroy response instead of injecting JSON into the SSE stream (which corrupted the parser) Thinking-block continuity (PR aattaran#24): - Drop top-level thinking/context_management on non-Anthropic routes instead of stripping all thinking blocks from history - Fixes DeepSeek 400: "content[].thinking must be passed back" Proxy in normal mode (PR aattaran#9): - Default launch now starts the proxy; cost tracking and live /switch work in all sessions, not just --remote - Use ANTHROPIC_API_KEY instead of ANTHROPIC_AUTH_TOKEN so subscription OAuth tokens are handled correctly Body size limit (PR aattaran#7): - 50 MB cap on /v1/messages request body, returns 413 Forward unknown args to claude (Issue aattaran#25): - Bash: -- separator support for explicit passthrough - PowerShell: ValueFromRemainingArguments captures unknown flags PowerShell parity (PR aattaran#5, aattaran#8): - --switch/-s parameter with backend name normalization - try/finally ensures proxy cleanup on Ctrl+C/crash Model [1m] suffix: - All model names include [1m] token window hint so Claude Code doesn't assume 200k context and auto-compact prematurely Project documentation: - CLAUDE.md with architecture overview, proxy routing, SSE normalization, model remapping, and development conventions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
deepclaude(default mode) previously setANTHROPIC_BASE_URLdirectly to the upstream backend, bypassing the local proxy entirely:3200was only ever started in--remotemode — so/_proxy/costalways showed{"backends":{}, "total_cost":0}and/switchhad no effect in normal sessionsclaude login(Claude Max/Pro subscription), the OAuth token wasn't intercepted, causing requests to fall back to AnthropicBoth
deepclaude.shanddeepclaude.ps1now start the proxy on a dynamic port and pointANTHROPIC_BASE_URLat it in all non-anthropic modes. The proxy already replaces auth headers in-flight for model calls, so subscription OAuth tokens and API keys are both handled correctly.ANTHROPIC_API_KEYis set to the backend key so Claude Code starts cleanly regardless of login state.Closes #3
Test plan
deepclaude(no flags) — verify startup showsProxy on :XXXXandCost tracking: curl …curl http://127.0.0.1:PORT/_proxy/costshows non-zero tokens/costdeepclaude --switch dsstill works (proxy is in path)deepclaude --backend anthropicstill launches without proxydeepclaude --remotestill works unchangedhttps://claude.ai/code/session_01FTqposuxzUQwueS9Zpa3ez
Generated by Claude Code