Merge pull request #1479 from securityguy/fix/claude-cli-error-surfacing

fix(claude_cli): surface stdout in error when CLI exits non-zero
This commit is contained in:
Mauro 2026-03-17 22:16:42 +01:00 committed by GitHub
commit 74f2a1513e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -50,10 +50,18 @@ func (p *ClaudeCliProvider) Chat(
cmd.Stderr = &stderr cmd.Stderr = &stderr
if err := cmd.Run(); err != nil { if err := cmd.Run(); err != nil {
if stderrStr := stderr.String(); stderrStr != "" { stderrStr := strings.TrimSpace(stderr.String())
stdoutStr := strings.TrimSpace(stdout.String())
switch {
case stderrStr != "" && stdoutStr != "":
return nil, fmt.Errorf("claude cli error: %w\nstderr: %s\nstdout: %s", err, stderrStr, stdoutStr)
case stderrStr != "":
return nil, fmt.Errorf("claude cli error: %s", stderrStr) return nil, fmt.Errorf("claude cli error: %s", stderrStr)
case stdoutStr != "":
return nil, fmt.Errorf("claude cli error: %w\noutput: %s", err, stdoutStr)
default:
return nil, fmt.Errorf("claude cli error: %w", err)
} }
return nil, fmt.Errorf("claude cli error: %w", err)
} }
return p.parseClaudeCliResponse(stdout.String()) return p.parseClaudeCliResponse(stdout.String())