Claude Code

コミットメッセージに Claude-Session という行が付いていた

チームメンバーのコミットを眺めていたら、末尾に見慣れない行がありました。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XXXXXXXXXXXXXXXXXXXXXXXX

1行目の Co-Authored-By は以前からある共同作成者の表記で、どのモデルが書いたかを示すだけです。2行目の Claude-Session は、そのコミットを作った Claude Code のセッション(会話)への直リンクです。開けば、どんな指示でどう調べてこの変更に至ったかを、会話ごと遡って読めます。

結論から言えば、この行が付くのはクラウド上で動いた Claude Code のセッションだけで、リンクは作成者本人が共有設定を変えないと他人には開けません。以下は Claude Code 2.1系、2026年9月時点の挙動です。

Claude-Session が付く条件

ターミナルで普通に Claude Code を使ってコミットしても、この行は付きません。付くのは次のいずれかで作ったコミットです。

  • ウェブ版の claude.ai/code で始めたセッション
  • ターミナルから claude --cloud でクラウドに投げたセッション
  • Remote Control でローカルのセッションを claude.ai 側から操作していたとき

公式ドキュメントでは Claude Code 2.1.179 以降の挙動とされています。プルリクエストを作った場合は、本文にもセッションの URL が1行で入ります。

つまり、この行が付いたコミットを見たら「この人はクラウドセッションで作業している」と読めます。逆に、自分のローカルの Claude Code の会話が知らないうちに他人から見える状態になる、ということはありません。会話ログはローカルの ~/.claude/projects/ 以下に保存されるだけです。

リンクを開いても見られない理由

同じ組織のアカウントでログインしていても、他のメンバーが作ったセッションの URL は既定では開けません。「Session not found」のような表示になります。セッションは組織単位ではなく作成者単位で管理されていて、可視性の既定が Private だからです。

可視性の選択肢はプランで違います。

プラン 可視性の選択肢 Team / Public の意味
Team・Enterprise Private / Team 同じ claude.ai 組織のメンバーに見える
Pro・Max Private / Public claude.ai にログインしている誰でも見える

Team プランでは、見る側のアカウントに紐づく GitHub アカウントがそのリポジトリを読めることも、既定で条件になります。同じ組織にいてもリポジトリ権限がなければ開けません。Pro・Max の Public はこの確認が既定では働かないので、共有前にセッションの中に認証情報やクライアントのコードが写っていないかを見ておく必要があります。

claude –cloud の使い方

前提条件

  • ターミナルの Claude Code が claude.ai アカウントでログインしていること。API キー認証では使えません。/login で切り替えられます
  • 組織の管理設定でクラウドセッションが許可されていること。Team プランでは Owner が管理画面の Claude Code の項目で切り替えます
  • GitHub との接続。ウェブ版の初回設定で Claude GitHub App を許可するか、ターミナルで /web-setup を実行して gh の認証を同期します。Team プランでは /web-setup は管理側で「Quick web setup」を有効にしないと表示されません

基本の流れ

クラウド側はローカルの作業ツリーではなく、リモートの現在ブランチを clone します。手元にしかないコミットがあれば先に push しておきます。

git push
claude --cloud "app/Customize 配下の購入フロー拡張が 4.3 系で動くか影響範囲を洗い出して"

これでクラウド上の VM がリポジトリを clone してタスクを進めます。ローカルのターミナルは解放されるので、そのまま別の作業ができます。進捗はターミナルで /tasks を打つか、claude.ai/code か Claude のモバイルアプリで開けば見られます。途中で質問を返してきたときは、後から答えれば続きから動きます。

追加の指示を送る

走っているセッションに1行だけ指示を足すコマンドがあります。返事は待たずに終了します。

claude -p "変更箇所ごとにテストも足して" --cloud session_01XXXXXXXXXXXXXXXXXXXXXXXX

セッション ID は claude.ai/code の一覧か、コミットに付いた Claude-Session の URL から取れます。URL をそのまま渡しても通ります。

結果を手元に戻す

claude --teleport session_01XXXXXXXXXXXXXXXXXXXXXXXX

クラウド側のブランチを fetch して checkout し、会話履歴ごとローカルのターミナルに引き継ぎます。同じリポジトリの checkout 上で、作業ツリーがクリーンな状態で実行する必要があります。引き継いだ後の作業はローカルだけに残り、クラウド側には反映されません。

便利なシーン

ローカルの Claude Code と何が違うのかと言えば、自分の端末を占有しないことと、会話が URL で共有できることの2点です。この2点が効く場面を挙げます。

  • 退勤前に投げて翌朝レビューする。依存パッケージの更新、Deprecated になった API の置き換え、lint の一括修正のような、時間はかかるが判断は少ない作業に向きます。端末を閉じてもセッションは続きます
  • 複数タスクを並列に走らせるclaude --cloud を3回打てば3つのセッションが独立して動きます。テストの修正、ドキュメントの更新、ロガーの差し替えを同時に進めて /tasks でまとめて見る、という使い方です。ただしレート制限は通常の利用と共通なので、並列にした分だけ消費は増えます
  • 設計は手元で、実行はクラウドで。ローカルをプランモード(claude --permission-mode plan)で起こして方針だけ詰め、計画を Markdown でコミットして push し、実行はクラウドに任せます。長い実装中に自分の端末が塞がりません
  • 外出中にスマホから様子を見る。モバイルアプリで途中経過を読み、質問に答えたり方針を変えたりできます
  • レビューで「なぜこの変更か」を会話ごと確認する。Claude-Session のリンクを開けば、コミットメッセージに書き切れなかった調査過程や、途中で却下された案まで読めます。プルリクエストの説明を書く手間が減り、レビュアーは判断の根拠を直接確かめられます

受託開発で使うなら、EC-CUBE のバージョンアップ影響調査が典型です。app/Customizeapp/Plugin を対象に、変更対象のサービスクラスや Twig の継承関係、purchaseFlow の差し込み箇所を洗い出す作業をクラウドに投げ、出てきたセッションを Team 可視性にしてレビュー担当に URL で渡します。調査結果のテキストだけを Backlog に貼るより、どのファイルをどう読んでその結論になったかが残るので、見積もりの根拠として使えます。Laravel でマイグレーションとモデルと FormRequest の影響範囲を出す作業や、WordPress でフックの使用箇所を横断して調べる作業も同じ型に乗ります。

セッションを他のメンバーに見せる手順

  1. claude.ai/code を開き、左のサイドバーから該当のセッションを開きます
  2. セッションタイトル横のメニューから共有の設定を開き、可視性を Private から Team に切り替えます
  3. セッションの URL をそのまま相手に渡します。コミットに付いている Claude-Session の URL と同じものです

見る側には、開いた時点の最新状態が読み取り専用で表示されます。リアルタイムには更新されないので、続きを見せたいときは再読み込みしてもらいます。共有者の表示名は相手に見えます。名前を出したくない場合や、Pro・Max でもリポジトリ権限の確認を必須にしたい場合は、claude.ai の Settings の Claude Code の項目にある Sharing settings で変えられます。

注意点と判断基準

  • GitHub 以外のリポジトリでは片道になる。Backlog の Git のように GitHub に無いリポジトリでも、ローカルのリポジトリをまとめてアップロードする方式で claude --cloud は動きます。ただし結果をリモートに push し戻せません。差分は claude.ai/code の画面で見るか、手で写すことになります。GitHub 連携のあるリポジトリでだけ往復が成立する、と考えておくのが安全です
  • Claude-Session を付けたくない場合。設定の attribution.sessionUrlfalse にすると、コミットのトレーラーとプルリクエスト本文のリンクが消えます(Claude Code 2.1.182 以降)。ただし Co-Authored-By を無効にしても Claude-Session だけ残る、という不具合報告が GitHub の Issue に複数あります。バージョンによって挙動が揺れているので、非公開にしたい案件では実際のコミットを一度確かめてください
  • クライアントのリポジトリで使うときの判断。クラウドセッションではリポジトリの内容が Anthropic 管理の VM に clone されます。Team・Enterprise プランなら学習には使われず保持期間は30日ですが、それで足りるかどうかは契約次第です。開示範囲に制約がある案件はローカルで、自社案件や OSS はクラウドで、と最初に線を引いておくと迷いません
  • 共有は自分で切り替えたときだけ起きる。他人のコミットに Claude-Session が付いていたからといって、自分の会話が見られているわけではありません。逆に、Team に切り替えたセッションは組織の全員が読めるので、共有する前に中身を一度見返す習慣は必要です

クラウドセッションの権限モードは、ローカルと同じ選択肢から画面のドロップダウンで選びます。自動モードの挙動と deny ルールの効き方は別記事にまとめています。今回のきっかけになったコミットに書かれていた Opus 5 の 1M コンテキストについてはこちらを参照してください。