Claude Code が、コミットメッセージや Pull Request の説明文の末尾に session URL を自動で入れている。これに対して、GitHub の issue では「最初から有効にするのではなく、使う側が明示的に選ぶ opt-in にすべきだ」という要望が出された。見た目の問題だけでなく、開発履歴に知らないリンクが残ることへの違和感が強く、AI 補助ツールの“署名”をどこまで自動で入れるべきか、という話にもつながるので取り上げる価値がある。
問題提起をしたのは GitHub 上の anthropics/claude-code リポジトリに立てられた feature request だ。タイトルは「Session URL appended to commit messages and PR descriptions by default — should be opt-in」で、Claude Code が生成したコミットメッセージと PR description の末尾に、毎回 session URL が自動付与される仕様をやめてほしい、という内容になっている。
投稿者の主張はかなりはっきりしている。いまの挙動では、たとえば https://claude.ai/code/session_... のようなリンクが、コミットや PR の本文の最後に入り続ける。しかも、オンボーディング時にその説明はなく、最初のコミットを作るまで気づかない。結果として、本人は意図していないのに git history が「汚される」形になる、と訴えている。
そこで提案されている解決策は、session URL の attribution を opt-in にすることだ。つまり、明示的に有効にした人だけが入れる設計に変えてほしいということだ。理想の UX としては、セットアップの途中で「コミットメッセージにこの Claude session へのリンクを含めますか」と一度だけ聞く形が挙げられている。自動で入れる前に、利用者に選ばせるべきだという考え方だ。
代替案も書かれている。完全な opt-in に変えなくても、少なくとも最初のコミット時に設定を目立つ形で出し、「今後は追加しない」選択を用意する案がある。また、session URL をやめて、既存の Co-Authored-By: Claude trailer だけで attribution を示す案もある。つまり、何らかの形で Claude の関与を示したい意図自体は否定しておらず、その方法をもっと控えめにしてほしい、という立場だ。
投稿者は、これは「中程度」の優先度だと置いている。実害としては、チームメイトや OSS のコントリビュータが PR や commit を見たときに、毎回 session URL が目につくこと。これがプロらしくなく見えるし、履歴の見通しも悪くなる。しかも、利用者本人はその追加を知らなかった、という点がいちばん問題だとしている。補足として .claude/settings.json の attribution.commit: "" で抑制できるが、設定が見つけにくいこと、さらに commit-msg の git hook で削れる場合もあるが remote や cloud 環境では確実に発火しないことが挙げられている。
この issue でいちばん引っかかったのは、機能そのものより「自動で入ることへの説明不足」だ。AI コーディング支援は、出力されたコードの正しさだけでなく、周辺のメタデータまで触る。コミットメッセージや PR description は、開発履歴の中でもかなり長く残る部類なので、そこに勝手に文字列が入ると、単なる利便性の追加では済まない。本人が承認していない“足跡”が残るからだ。
私なら、コード本文に補助が入ることより、こういう周辺情報の自動追加のほうを慎重に扱うと思う。なぜなら履歴はあとから消しにくいし、チームや監査、外部の貢献者の目にも触れる。便利さよりも「誰が、何を、どこまで自動化に許したのか」が見える設計のほうが、長期的には信頼を保ちやすいはずだ。
提案にあった代替案のうち、既存の Co-Authored-By: Claude trailer だけに寄せる、という発想は筋が通っていると感じる。あれは Git の履歴文化の中にすでにある表現で、少なくとも開発者には意味が伝わりやすい。一方で session URL は、リンク先を見に行かなければ何のためのURLか分からないうえ、説明なく入っていると広告やトラッキングのようにも見えうる。
ここで大事なのは、attribtion を消すか残すかではなく、どの粒度で残すかだと思う。名前だけで十分な場面は多いし、セッション単位のURLまで入れる必要は、少なくとも全ユーザー共通の既定値としては弱い。OSS では特に、貢献者が「自分の作業に何が付随するのか」を細かく選べるほうが望ましい。
.claude/settings.json に逃がせても、見つからなければ無いのと同じこの issue が面白いのは、機能が完全に消せないわけではない点だ。投稿者は .claude/settings.json の attribution.commit: "" で抑制できると認めているし、git hook で除去する手段もある。けれど、それが「完全に undiscovered」だと書かれているのが重要だ。設定ファイルの奥に隠れていて、しかも別の環境では hook が安定しないなら、実際のユーザー体験としては“オフにできない”に近い。
私はここに、AI ツールのUIでよく起きるズレを見た。開発者側は「設定は用意した」と考えるが、利用者側は「最初に聞かれていないなら、デフォルトとして強制された」と受け取る。特にコード生成やコミット生成のような機能では、デフォルト値がそのままプロダクトの思想になる。だから隠し設定で逃がすより、初回に明示的に選ばせる方が、結果として運用の摩擦は少ないはずだ。
この件は、Claude Code 固有の細かい要望で終わらないと思う。AI 開発支援は、コードを書くだけでなく、commit、PR、レビューコメント、説明文まで触れるようになってきた。すると、便利さの競争だけでは足りず、「どこに自動で痕跡を残すか」という礼儀の設計が必要になる。履歴に何かを足す行為は、実は生成よりも一段重い。消すのが難しいからだ。
だから私は、こうした attribution は opt-in を基本にしたほうがいいと思う。少なくとも、利用者が自分の環境に入れた最初の瞬間に「何が、どの範囲で、どこまで残るのか」を説明すべきだ。便利な機能ほど、黙って入れると反発が出る。逆に、選ばせてくれるツールは信頼されやすい。AI 支援が広がるほど、この差は大きくなるのではないか。