一位开发者在anthropics/claude-code的GitHub仓库提了个issue:Claude Code在网页版和远程控制模式下生成的commit消息和PR描述,末尾会自动带上一段会话链接,格式类似https://claude.ai/code/session...。没有提示,没有授权弹窗,onboarding里也没提过这件事。开发者往往是在提交历史已经"脏"了之后才发现。他要求的很直接:把这行链接改成默认不加,用户主动开启才加(opt-in)。这个issue现在的状态是Closed,但页面上看不到指派人、看不到关联PR、也看不到任何维护者的说明。
Anthropic确实做了动作。在Claude Code v2.1.183里新增了一个配置项attribution.sessionUrl,专门用来"省略claude.ai会话链接"。听起来像是回应了诉求,但仔细看默认值——这个开关默认仍是true,也就是链接照样加,用户得自己动手关掉。issue要的是opt-in(默认不加),Anthropic给的是opt-out(默认加,能关)。这是两件不同的事,前者把决定权交给用户,后者把负担留给用户。issue被关闭,不代表这道题被解开。
关掉的是这一行,没关的是默认值
会话链接不是遥测,是写进历史的身份证
这个链接怎么来的,值得拆一下。远程/云端会话里有个环境变量CLAUDE_CODE_REMOTE_SESSION_ID,系统把它的前缀cse_换成session_,拼进https://claude.ai/code/路径,最后作为一个trailer写进commit和PR正文。这跟已有的attribution.commit、attribution.pr是三个独立开关——单纯清空commit文案不会把会话链接一起关掉,这一点很多用户不知道。
很多人把它当成"遥测"看待,以为跟DISABLE_TELEMETRY=1是一回事,其实完全是两套机制。遥测统计的是使用行为,关不关都不留痕迹在你的代码里。会话链接不一样,它是来源证明(provenance),一旦写进commit就永久嵌入了Git历史。Anthropic的文档里也提到,Pro/Max用户的会话可以设成Private或Public,公开的消费者会话可能被任何登录用户看到——问题是可见性设置能被后续修改,但commit历史里的链接一旦写下,不会跟着一起收紧。fork、镜像、CI日志各自留一份副本,想事后撤回基本不现实。官方文档自己也警告过,被分享的会话可能包含私有仓库代码和凭证信息。
- 风险.会话可见性可以事后调整,但已经写入公开仓库commit历史的链接不会跟着收紧,fork和镜像会让这份暴露长期存在。
同行怎么设计控制权
四家横向摆在一起,差别不在"有没有这个功能",而在"控制权停在哪一步"。Devin交给组织管理员,Copilot把它焊进已有的权限体系,Cursor干脆不让完整链接进commit正文。Claude Code是唯一一个默认开启、且把"关掉"这道手续留给终端用户自己去仓库配置文件里改的。
来源证明该问的第一句话是"谁看得到",不是"要不要记录"
想关掉,以及接下来该盯住什么
现实操作上,想关掉这个链接,要在仓库里提交一份.claude/settings.json,把attribution.sessionUrl设为false。这里有个容易踩的坑:Claude Code on the web场景下,只读取仓库内的配置文件,用户本地~/.claude/settings.json或.claude/settings.local.json统统不生效。换句话说,个人习惯设置没用,得把关闭指令提交进版本库,让团队所有人共享同一份规则。
对开源维护者和企业安全团队来说,这不是小事——公开仓库的PR和commit一旦带上会话链接,历史很难彻底清理。真正该盯的变量是,Anthropic会不会在后续版本里把默认值从true改成false,或者在写入前加一道预览确认。issue的关闭方式已经说明,现在还没到那一步。
