PR !368(#424)第二轮 UX 评审发现(F2)。
当 --body-file/--notes-file/--description-file 指向的文件内容含当前 GC_TOKEN/GITCODE_TOKEN 值时,cmdutil.ReadTextFile 正确返回 ErrSecretDetected,但调用方将其包裹为 fmt.Errorf("failed to read file %s: %w", ...),导致错误消息类似:
--body-file
--notes-file
--description-file
GC_TOKEN
GITCODE_TOKEN
cmdutil.ReadTextFile
ErrSecretDetected
fmt.Errorf("failed to read file %s: %w", ...)
Error: failed to read file body.md: content contains secret: content contains the current GC_TOKEN value
文件实际已成功读取,只是内容因安全原因被拒绝。"failed to read file" 前缀误导用户/agent 以为是 IO 错误。
以下路径的 file 分支均有此问题:
getBody()
pr edit --body-file
milestone edit --description-file
release create --notes-file
release edit --notes-file
在包裹错误前检查 errors.Is(err, cmdutil.ErrSecretDetected),若是则不添加 "failed to read file" 前缀,直接返回原始安全错误。
errors.Is(err, cmdutil.ErrSecretDetected)
来源
PR !368(#424)第二轮 UX 评审发现(F2)。
问题
当
--body-file/--notes-file/--description-file指向的文件内容含当前GC_TOKEN/GITCODE_TOKEN值时,cmdutil.ReadTextFile正确返回ErrSecretDetected,但调用方将其包裹为fmt.Errorf("failed to read file %s: %w", ...),导致错误消息类似:文件实际已成功读取,只是内容因安全原因被拒绝。"failed to read file" 前缀误导用户/agent 以为是 IO 错误。
影响范围
以下路径的 file 分支均有此问题:
getBody()的--body-file分支pr edit --body-file(edit.go:145)milestone edit --description-file(edit.go:116)release create --notes-file(create.go:111)release edit --notes-file(edit.go:153)修复方向
在包裹错误前检查
errors.Is(err, cmdutil.ErrSecretDetected),若是则不添加 "failed to read file" 前缀,直接返回原始安全错误。