1. 提交记录里突然多了一个「合作者」
某天你git log一看,提交信息末尾多了一行Co-authored-by: Cursor <cursoragent@cursor.com>。代码是你自己敲的,注释里也没提过任何编辑器,这个署名到底从哪冒出来的?
先说结论:这不是 Git 自己加的,也不是你手滑写的。它来自 Cursor 编辑器内置的 Agent 功能——当它帮你生成或改写代码并触发提交时,会自动往 commit message 里追加一段 attribution(归属声明),把 Cursor 标记成 co-author。这个行为在 Cursor 里默认是开启的,所以很多人第一次遇到都会懵。
这个场景适合三类人:一是团队对提交历史有洁癖、要求 commit 干净可追溯的开发者;二是用 Cursor 做 Agent 编程、但不想让 AI 出现在贡献者列表里的人;三是同时用 Cursor + 统一 API 通道(比如 TaoToken)做多模型切换,想搞清楚「署名到底是谁加的、怎么彻底关掉」的人。
要关掉它,得从三个地方排查:Git 的本地/全局配置、Cursor 自己的设置项、以及你接入模型时用的统一 Key 通道配置。下面按顺序拆开讲,每一步都给可复制的配置和验证命令。
2. 先搞清楚署名是谁写进 commit 的
排查之前先定位来源,不然容易改错地方。Git 提交信息里的 co-author 只有两个可能来源:一是 Git 的commit.template或 hook 脚本,二是编辑器/工具在调用git commit时拼进去的。
用这条命令看最近一次提交的完整信息,包括所有 trailer:
git log -1 --pretty=full如果看到类似这样的输出,说明署名是作为 trailer 追加的:
commit 3f9a2c1... Author: yourname <you@example.com> Commit: yourname <you@example.com> feat: add login validation Co-authored-by: Cursor <cursoragent@cursor.com>接着确认是不是 Git 配置层面注入的。检查全局和本地的 commit 模板、以及有没有相关 hook:
git config --global --get commit.template git config --local --get commit.template ls .git/hooks/ | grep -E 'commit-msg|prepare-commit-msg'如果这几项都是空的,那基本可以确定署名来自 Cursor 编辑器本身,而不是 Git。这一步很关键——很多人一上来就改git config,结果发现没用,就是因为源头在编辑器。
3. TaoToken 统一 Key 通道的前置配置
在动 Cursor 设置之前,先把模型接入这条链路理顺,因为 Cursor 的 Agent 功能依赖你配置的模型通道。如果你用的是 TaoToken 这类统一 Key 服务,好处是一个 Key 能切多个模型,配置也集中,排查署名问题时不会和多个供应商的配置混在一起。
TaoToken 的定位是统一 API 通道:你拿一个 Key,就能在 Cursor、命令行工具、脚本里调用不同的大模型,不用为每个模型单独管一套凭证。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。
拿 Key 的路径是:进控制台 → 创建 API Key。控制台地址 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console ,Key 管理页 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys 。创建完把 Key 复制出来,后面在 Cursor 里填。
这里要提醒一句:Cursor 的模型配置和署名开关是两套独立设置。你换了 API 通道、换了模型,署名行为不会自动跟着变,还是得单独去关。所以先把通道配好,再去处理 attribution,顺序别搞反。
4. 可复制的 git config 与 settings.json 配置骨架
现在进入正题。关闭 co-author 署名分两块:Git 侧兜底 + Cursor 侧关开关。
4.1 Git 侧:清掉可能存在的模板和 trailer
先确保 Git 不会自己加东西。把 commit 模板清空,并检查是否有全局 trailer 配置:
# 清掉可能存在的 commit 模板 git config --global --unset commit.template # 检查是否有全局 trailer 注入(正常应该没有输出) git config --global --get-all trailer.co-authored-by # 如果有,删掉 git config --global --unset-all trailer.co-authored-by如果你希望团队统一规范,可以在项目里加一个commit-msghook 做兜底,自动过滤掉 Cursor 的署名。在.git/hooks/commit-msg写入:
#!/bin/sh # 过滤掉 Cursor 自动追加的 co-author 行 sed -i '/Co-authored-by: Cursor/d' "$1"然后给它执行权限:
chmod +x .git/hooks/commit-msg这个 hook 的好处是:不管署名从哪来,只要进了 commit message,提交前都会被清掉。适合团队里多人用不同编辑器的情况。
4.2 Cursor 侧:关掉 attribution 开关
真正管用的开关在 Cursor 设置里。打开设置(Cmd/Ctrl + ,),搜索attribution,或者在设置 JSON 里直接改。Cursor 的设置文件路径:
- macOS:
~/Library/Application Support/Cursor/User/settings.json - Windows:
%APPDATA%\Cursor\User\settings.json - Linux:
~/.config/Cursor/User/settings.json
在settings.json里加入或修改这两项:
{ "cursor.agents.attribution": false, "cursor.attribution.enabled": false }不同 Cursor 版本里这两个键名可能略有差异,核心是找到带attribution的开关,全部设为false。改完保存,重启 Cursor 让设置生效。
注意:Cursor 更新较频繁,设置项名称偶尔会变。如果搜不到
attribution,就在设置界面搜co-author或commit,找到「在提交中添加 AI 归属」之类的选项关掉即可。
4.3 顺手把 Agent 的自动提交行为也确认一下
有些版本的 Cursor 在 Agent 模式下会自动帮你 commit。如果你不希望它自动提交,可以在设置里关掉自动提交相关选项,或者养成手动git commit的习惯。这样署名问题从源头就少了一半。
5. 验证署名是否真的消失了
改完配置别急着信,用命令验证一遍。先做一次新提交,然后检查:
# 看最近一次提交的完整信息 git log -1 --pretty=full # 专门搜 co-author 关键字,没有输出就说明干净了 git log -1 --pretty=%B | grep -i "co-authored-by" # 批量检查最近 10 条提交有没有 Cursor 署名 git log -10 --pretty=%B | grep -i "cursor"如果grep没有任何输出,说明署名已经关掉。如果还有,按这个顺序复查:
一是确认 Cursor 设置真的保存了,重新打开settings.json看那两项是不是false;二是确认提交时用的是新配置,重启过 Cursor;三是检查有没有别的工具(比如某些 Git GUI)在注入署名。
对于已经提交、带着 Cursor 署名的历史记录,如果只是本地仓库、还没 push,可以用git rebase或git commit --amend改掉。已经 push 到远端的,改历史要谨慎,团队协作时最好别动,避免给别人造成冲突。
6. 常见报错与排查清单
改了 settings.json 但署名还在:八成是没重启 Cursor,或者改错了设置文件(比如改到了 Workspace 级而不是 User 级)。确认路径,重启后再试。
git log 里署名格式不一样:不同 Cursor 版本追加的 trailer 文案可能不同,有的是Co-authored-by: Cursor,有的是Co-authored-by: cursor-agent。用grep -i cursor模糊匹配更稳。
hook 没生效:检查.git/hooks/commit-msg有没有执行权限,Windows 下要注意换行符和 shell 环境。用git commit时如果 hook 报错,Git 会直接拒绝提交,看报错信息定位。
团队里别人还有署名:hook 是本地配置,不会自动同步。要么把 hook 纳入项目模板,要么在团队规范里说明,让每个人自己关 Cursor 设置。
换了 API 通道后署名又出现:这通常不是通道的问题,而是 Cursor 更新后设置被重置。重新检查attribution开关即可。
如果你在接入统一 Key 通道时遇到配置问题,比如模型调不通、Key 无效,可以对照接入文档排查:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc 。想先验证模型能不能正常对话,用模型对话页试一下:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model 。长期用 Cursor 做 Agent 编程、需要稳定多模型切换的,可以看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan 。
最后说个我自己的习惯:署名这事没有绝对对错。团队要求干净历史就关掉,个人项目想留个「AI 参与过」的痕迹也无妨。关键是知道它从哪来、怎么控制,而不是被它搞得一头雾水。把上面三步走一遍,你的 commit 就归你自己管了。