一、行为
Trae 在执行 Agent 的每条终端命令前都会注入:
export GIT_COMMITTER_NAME=‘trae-solo-agent’
export GIT_COMMITTER_EMAIL=‘solo-agent@trae.ai’
由于 git 的优先级是「环境变量 > user.name/user.email」,Agent 产生的每个 commit 的
committer 都被替换为 trae-solo-agent solo-agent@trae.ai,而 author 仍是用户本人。
二、后果
- GPG 签名失效。GitHub 验签要求 committer(或 tagger)邮箱属于签名 key 的身份且是
账号已验证邮箱(GitHub 文档:Using a verified email address in your GPG key)。
committer 被改成非 key 身份后,提交一律被判 bad_email,线上显示 Unverified。 - 用户无法自行修复。该邮箱不属于用户,无法加入 key;git 的 committer.name /
committer.email 配置也压不过环境变量;注入是逐条命令进行的,写进 shell rc 的
unset 会被紧随其后的 export 覆盖。 - git 历史被写入不实信息。"谁执行了这次提交"是版本库的元数据,committer 被替换
后,git log / blame / 签名审计看到的都不是真实操作者。
三、对设计与态度的意见
这不是功能缺失,而是把一个产品偏好强加给用户,且刻意不留出口:
- 未征得同意:用户从未选择让第三方改写自己仓库的身份元数据。
- 未提供开关:设置里没有相关项,文档(源代码管理、Rules)里也完全没有提及这个行为,
用户无法预期,也无法关闭,只能被动接受并自行在命令前 unset 来抵消。 - 与行业惯例相悖:Copilot、Claude Code 等工具标记 AI 参与时,用的是 commit message
尾注(如 Co-authored-by),既表达归属又不篡改提交身份,更不会破坏签名。Trae 选择
直接覆写 committer,代价全部由用户承担。 - 归因手段与用户利益冲突:想标记 AI 产出,完全可以不牺牲用户的签名可信度。
一个 IDE 不应在用户不知情、不可关闭的情况下改动版本库的身份字段。这不是"智能",
是越权。
四、诉求
- 立即停止注入 GIT_COMMITTER_NAME / GIT_COMMITTER_EMAIL,尊重仓库的 user.name /
user.email; - 若需归属 AI 参与,改用 Co-authored-by 尾注;
- 如坚持保留该行为,至少提供显式开关,并在文档中明确告知其对 GPG 签名的影响;
- 请在更新日志中说明,并对已受影响的用户给出修复建议。



