diff --git a/claude-proxy.sh b/claude-proxy.sh index aa81404..536777b 100755 --- a/claude-proxy.sh +++ b/claude-proxy.sh @@ -53,20 +53,39 @@ while [[ $# -gt 0 ]]; do esac done -# Build settings JSON that overrides the global settings.json env block. -# --settings MERGES with the global config, so we must explicitly override -# every env var that interferes: -# - ANTHROPIC_AUTH_TOKEN: global sets "dummy"; interactive (cli) mode uses -# this for auth, so it must be the real proxy token. -# - ANTHROPIC_CUSTOM_HEADERS: global injects Cloudflare gateway headers; -# cleared so they don't leak to the local proxy. -# - ANTHROPIC_BASE_URL: global points at Cloudflare gateway. -SETTINGS=$(cat </dev/null; then + SETTINGS=$(python3 -c ' +import json, sys +token = sys.argv[1] +model = sys.argv[2] +haiku = sys.argv[3] +print(json.dumps({ + "env": { + "ANTHROPIC_BASE_URL": "http://127.0.0.1:3050", + "ANTHROPIC_API_KEY": token, + "ANTHROPIC_AUTH_TOKEN": token, + "ANTHROPIC_CUSTOM_HEADERS": "", + "ANTHROPIC_MODEL": model, + "ANTHROPIC_DEFAULT_HAIKU_MODEL": haiku, + "ANTHROPIC_DEFAULT_SONNET_MODEL": model, + "ANTHROPIC_DEFAULT_OPUS_MODEL": model + }, + "model": model +})) +' "$PROXY_TOKEN" "$MODEL" "$HAIKU") +else + # Fallback: escape token for JSON (handles " and \) + ESCAPED_TOKEN="${PROXY_TOKEN//\\/\\\\}" + ESCAPED_TOKEN="${ESCAPED_TOKEN//\"/\\\"}" + SETTINGS=$(cat <