@@ -48,6 +48,16 @@ const (
4848// claudeTokenURL is a var (not const) so tests can point it at a local server.
4949var claudeTokenURL = "https://platform.claude.com/v1/oauth/token"
5050
51+ // oauthHTTPClient deliberately ignores HTTP_PROXY/HTTPS_PROXY/ALL_PROXY.
52+ // OAuth callback/token/profile traffic should not be routed through user API proxies.
53+ var oauthHTTPClient = & http.Client {Transport : oauthDirectTransport ()}
54+
55+ func oauthDirectTransport () * http.Transport {
56+ transport := http .DefaultTransport .(* http.Transport ).Clone ()
57+ transport .Proxy = nil
58+ return transport
59+ }
60+
5161type LoginResult struct {
5262 OK bool `json:"ok"`
5363 LoggedIn bool `json:"loggedIn,omitempty"`
@@ -388,7 +398,7 @@ func enrichClaudeProfile(ctx context.Context, creds *tokenCredentials) error {
388398 }
389399 req .Header .Set ("Authorization" , "Bearer " + creds .Access )
390400 req .Header .Set ("Accept" , "application/json" )
391- resp , err := http . DefaultClient .Do (req )
401+ resp , err := oauthHTTPClient .Do (req )
392402 if err != nil {
393403 return err
394404 }
@@ -452,7 +462,7 @@ func postForm(ctx context.Context, rawURL string, form url.Values, dest any) err
452462}
453463
454464func doJSON (req * http.Request , dest any , label string ) error {
455- resp , err := http . DefaultClient .Do (req )
465+ resp , err := oauthHTTPClient .Do (req )
456466 if err != nil {
457467 return err
458468 }
0 commit comments