launch: default Claude Code to client-side auto checks (#18596)

This commit is contained in:
Parth Sareen 2026-09-23 15:20:45 -07:00 • committed by GitHub
parent b9cd4b1efb
commit 01c0fbfd35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 58 additions and 0 deletions

View file

@ -76,6 +76,12 @@ func (c *Claude) envVars(model string) []string {
"CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1",
}
// Ollama does not provide Anthropic's server-side auto-mode checks.
// Use Claude Code's client classifier by default, preserving explicit settings.
if _, ok := os.LookupEnv("CLAUDE_CODE_AUTO_MODE_SERVER"); !ok {
env = append(env, "CLAUDE_CODE_AUTO_MODE_SERVER=0")
}
env = append(env, c.modelEnvVars(model)...)
return env
}

View file

@ -375,6 +375,58 @@ func TestClaudeEnvVars(t *testing.T) {
}
}
func TestClaudeRunAutoModeServer(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("uses a POSIX shell fake binary")
}
for _, model := range []string{"llama3.2", "glm-5:cloud"} {
for _, tt := range []struct {
name string
value string
unset bool
want string
}{
{name: "default", unset: true, want: "0"},
{name: "disabled", value: "0", want: "0"},
{name: "enabled", value: "1", want: "1"},
{name: "empty", value: "", want: ""},
} {
t.Run(model+"/"+tt.name, func(t *testing.T) {
t.Setenv("CLAUDE_CODE_AUTO_MODE_SERVER", tt.value)
if tt.unset {
if err := os.Unsetenv("CLAUDE_CODE_AUTO_MODE_SERVER"); err != nil {
t.Fatal(err)
}
}
dir := t.TempDir()
output := filepath.Join(dir, "env-and-args")
t.Setenv("PATH", dir)
t.Setenv("CLAUDE_LAUNCH_TEST_OUTPUT", output)
script := `#!/bin/sh
printf '%s\n' "${CLAUDE_CODE_AUTO_MODE_SERVER-unset}" "$ANTHROPIC_DEFAULT_SONNET_MODEL" "$@" > "$CLAUDE_LAUNCH_TEST_OUTPUT"
`
if err := os.WriteFile(filepath.Join(dir, "claude"), []byte(script), 0o755); err != nil {
t.Fatal(err)
}
if err := (&Claude{}).Run(model, nil, []string{"--permission-mode", "auto"}); err != nil {
t.Fatal(err)
}
got, err := os.ReadFile(output)
if err != nil {
t.Fatal(err)
}
want := strings.Join([]string{tt.want, model, "--model", model, "--permission-mode", "auto", ""}, "\n")
if string(got) != want {
t.Fatalf("child environment and arguments = %q, want %q", got, want)
}
})
}
}
}
func TestClaudeModelEnvVars(t *testing.T) {
c := &Claude{}