diff --git a/internal/providers/claude_cli_session.go b/internal/providers/claude_cli_session.go index 047e8718..c042d663 100644 --- a/internal/providers/claude_cli_session.go +++ b/internal/providers/claude_cli_session.go @@ -272,7 +272,8 @@ func ResetCLISession(baseWorkDir, sessionKey string) { } } -// filterCLIEnv removes CLAUDE* env vars to prevent nested session conflicts. +// filterCLIEnv removes CLAUDE* env vars to prevent nested session conflicts, +// but preserves CLAUDE_CODE_OAUTH_TOKEN for authentication. func filterCLIEnv(environ []string) []string { var filtered []string for _, e := range environ { @@ -280,8 +281,9 @@ func filterCLIEnv(environ []string) []string { if before, _, ok := strings.Cut(e, "="); ok { key = before } - // Filter out variables that could cause nested CLI conflicts - if strings.HasPrefix(key, "CLAUDE") { + // Filter out variables that could cause nested CLI conflicts, + // but preserve auth token needed by the subprocess. + if strings.HasPrefix(key, "CLAUDE") && key != "CLAUDE_CODE_OAUTH_TOKEN" { continue } filtered = append(filtered, e)