From fe163eca30c7202d1156a024d3bc90967c26b511 Mon Sep 17 00:00:00 2001 From: viettranx Date: Tue, 31 Mar 2026 08:19:58 +0700 Subject: [PATCH] fix(claude-cli): preserve CLAUDE_CODE_OAUTH_TOKEN in env filter filterCLIEnv was stripping all CLAUDE* env vars including the OAuth token needed for CLI subprocess authentication. Closes #541 --- internal/providers/claude_cli_session.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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)