Claude Codeでセッションに名前をつけて管理する
Claude Codeのセッションに名前をつける5つの経路と、名前が重複・曖昧なときの挙動、名前をつけなかった場合に付く2種類の自動ラベルの違いを扱います。
claude --resumeのセッション一覧がどれも似た最初のプロンプトで埋まり、目的の作業に戻れない。複数のプロジェクトやタスクを並行すると起きがちな状況です。Claude Codeのセッションには名前をつけられ、名前をつけたセッションはclaude --resume <name>や/resume <name>で狙って呼び戻せます。
名前のつけ方は5通りあります。ただし名前は付ければ終わりではなく、重複したとき、複数のセッションに当てはまるとき、付けなかったときで挙動が分かれます。この記事はその分かれ目を、症状から逆引きできる順に並べます。
名前をつける5つの経路
| タイミング | 操作 |
|---|---|
| 起動時 | 操作claude -n auth-refactor |
| 会話中 | 操作/rename auth-refactor(プロンプトバーにも名前が表示される) |
| セッション一覧から | 操作セッションを選んでCtrl+R |
| planモードでの承認時 | 操作planモードでプランを承認すると、未命名の場合に限りプラン内容にもとづく自動タイトルが付く |
| claude.aiやClaude Appから | 操作Remote Controlセッションをリネームすると同じ名前がCLI側にも反映される(v2.1.221以降) |
claude -n auth-refactorデスクトップアプリも、並列セッション機能の一覧でセッションをリネームできます。
起動時のフラグは、v2.1.287のclaude --helpでは次のように表示されます。
-n, --name <name> Set a display name for this session (shown in the prompt box, /resume picker, and terminal title)名前の表示先は、プロンプトボックス、/resumeのピッカー、ターミナルのタイトルの3か所だと読み取れます。
/renameで入力できる名前の制約
/renameに渡す名前は、制御文字や不可視文字がスペースに置き換えられ、200文字で切り詰められます。この処理はclaude.aiやデスクトップアプリからのリネームにも同じように適用されます(v2.1.221以降)。不可視文字を取り除くと空になる名前は拒否され、次のメッセージが表示されます。
That name is empty once invisible characters are removed. Usage: /rename <name>コピーした文字列にゼロ幅文字が混ざっていたときは、このメッセージが出ます。
/renameは引数なしでも使えます。その場合は会話の履歴から名前を自動生成します。非対話モード(-p)でも使えます(v2.1.205以降)。
名前を呼んでも戻れないとき
名前をつけたはずなのにセッションに戻れないときの主な原因は3つです。名前が複数のセッションに当てはまっている、そもそも名前が付いていない、別のリポジトリから呼んでいる、のいずれかです。
同じ名前が複数あるとき
名前による解決は、現在のリポジトリとそのワークツリー全体にまたがって行われます。範囲の外にある別のリポジトリのセッションは、名前の解決対象に入りません。その場合はピッカーを開いてCtrl+Aで全プロジェクトを表示し、目的のセッションを探します。完全一致するセッションが1つなら、別のワークツリーにあってもそのまま再開します。完全一致するセッションが複数あるとき(曖昧な名前)は、入口によって動きが違います。
曖昧な名前を渡したときの動き
claude --resume 名前
セッションピッカーが開きます。渡した名前が検索語として入力済みの状態なので、候補を目で選べます。
/resume 名前
エラーになります。引数なしの/resumeを実行してピッカーを開き直します。
/resume側でエラーになるからといって名前が壊れているわけではなく、曖昧さの解決をピッカーに任せる仕様です。スクリプトからclaude --resume <name>を呼ぶ場合は、名前が一意でないとピッカーが開いて止まる点に注意が必要です。
名前の一意性は、権限モードの復元にも効きます。名前がセッション1つに一致するclaude --resume <name>(-pなし)では、セッションが終了時にいた権限モードが復元されます。複数に一致してピッカーが開いた場合と、セッション内の/resumeでは、保存された権限モードは復元されません。
名前が衝突したときの自動リネーム
対話セッションを起動・再開するとき、または/renameで付けた名前が、同じマシンで動いている別のライブセッションと重複した場合、Claude Codeは先に使っていたセッションに名前を残します。後から名乗った側はauth-refactor-graceful-unicornのような2語のサフィックス付きの名前に変わり、その旨が通知されます。
たとえばauth-refactorで動いているセッションがあるときに、別のワークツリーでclaude -n auth-refactorを実行すると、変わるのは後から起動した側だけです。自分で選び直したいときは、通知の直後に/renameで付け直します。v2.1.232より前は、両方のセッションが同じ名前のまま残っていました。
次の3ケースでは、重複していても自動リネームされません。そのため、一覧に同じ名前のセッションが2つ並ぶことがあります。
- AIが生成したタイトルとデフォルト表示名は、チェックの対象外です
- バックグラウンドセッションや
-pセッションを起動時に--nameで指定した場合は、チェックされません - 相手のセッションが古いバージョンのClaude Codeで動いている場合は、リネームできません
名前をつけなかったセッションに付く2種類の自動ラベル
名前を明示しなかったセッションにも、Claude Codeは2種類のラベルを割り当てます。見た目は似ていますが、呼び戻しに使えるのは片方だけです。
2つの自動ラベルの役割
デフォルト表示名
作業ディレクトリ名に2文字のサフィックスを足した形です(例: my-app-3f)。名前をつけていない対話セッションに自動で付きます(v2.1.196以降)。
使い道は、agent viewやclaude agents --jsonの出力で、動いているセッションを見分けることです。claude --resumeや/resumeに渡してもセッションは見つかりません。
生成タイトル
最初のプロンプトの要約で、小型・高速モデル(通常はHaiku系)がバックグラウンドのリクエストで生成します。シェルから直接実行したclaude -pには付きません。
セッションピッカーとステータスラインのsession_nameに表示され、名前と同じ方法で解決されます。planを承認すると、プランにもとづくタイトルに置き換わります。
名前をつけると、この2つはどちらも置き換わります。ピッカーの各行には、名前があれば名前、なければAI生成タイトル、会話の要約、最初のプロンプトの順に表示され、最終アクティビティからの経過時間、Gitブランチ、ファイルサイズが並びます。
つまずきやすいのは、claude agents --jsonの出力にあるデフォルト表示名をそのまま--resumeに渡す場面です。実機でv2.1.287のclaude agents --helpを見ると、--jsonは「対話セッションとバックグラウンドセッションの両方を配列で出力する」オプションです。この出力から拾った文字列がデフォルト表示名なら、--resumeには使えません。呼び戻したいセッションは、起動直後に--nameか/renameで名前を付けておきます。
名前を付けていないときの--continue
名前を付けるほどではない単発の作業なら、claude --continue(-c)でカレントディレクトリの直近の会話に戻れます。ただし対象には除外があります。claude -pやAgent SDKで作ったセッション、最初のプロンプトが/loopだったセッションは、--continueでもピッカーでも拾われません。-pで実行した直後の会話に戻りたいときは、セッションIDをclaude --resume <session-id>に渡します。claude -p --continueだけは、-p・SDK・/loopのセッションも対象に含めます。
--continueは、終了済みのバックグラウンドセッションも開けます(v2.1.257以降)。直近の会話がバックグラウンドでまだ動いているときは開かず、次のメッセージとセッションIDを出して終了します。
Your most recent conversation is running in the backgroundこの場合はclaude agentsから接続するか、claude --resumeで別のセッションを選びます。
/clearしたとき名前はどうなるか
/clearで会話をリセットしても、-nや/renameで設定した名前は新しい会話に引き継がれます。引き継がれないのは、名前をつけていないセッションのAI生成タイトルです。
リセット前の会話のほうに名前を残したいときは、/clear release-prepのように名前を引数で渡します。直前までの会話がその名前でピッカーに残り、新しく始まる会話は未命名になります。長い調査を/clearで区切るたびに、区切った前半へ名前を残す使い方ができます。以前のバージョンでは、/clearで名前がプロンプトバーから消える不具合がありました(名前自体は新しいセッションに保たれていました)。
タブのタイトルと名前の関係
Claude Codeは既定でターミナルのタブタイトルに、会話から生成したタイトルを表示します。/renameや--nameで名前をつけると、タブの表示はその名前に切り替わります。
タブには生成タイトルを残したいときは、settings.jsonでterminalTitleFromRenameをfalseにします。既定はtrueです。
{
"terminalTitleFromRename": false
}falseにしても、セッションの名前は有効なままです。タブの文字列が生成タイトルに戻るだけで、/resume <name>やピッカーでの名前検索には影響しません。タブのタイトル更新を止めたいなら、環境変数CLAUDE_CODE_DISABLE_TERMINAL_TITLEを1にします。
この変数は、セッションタイトルを生成するバックグラウンドの小型モデルへのリクエストも止めます。名前を付けていないセッションには、呼び戻しに使える生成タイトルが付かなくなります。この変数を使うなら、-nか/renameで名前を付けておく必要があります。
並行セッションが増えたときのピッカー操作
複数のワークツリーやプロジェクトで同時に作業していると、ピッカーの絞り込みが効いてきます。ピッカーは、セッション内で引数なしの/resumeを実行するか、シェルからclaude --resumeを実行すると開きます。
| キー | 動作 |
|---|---|
Ctrl+A | 動作全プロジェクトのセッションを表示(もう一度押すと現在のリポジトリに戻る) |
Ctrl+W | 動作現在のリポジトリの全ワークツリーを表示(複数ワークツリーを持つリポジトリでだけ表示) |
Ctrl+B | 動作現在のGitブランチのセッションに絞り込む |
Ctrl+R | 動作ハイライト中のセッションをリネーム |
Space | 動作セッション内容のプレビュー |
/またはSpace以外の印字可能文字 | 動作検索を開始 |
検索ボックスにはGitHub・GitHub Enterprise・GitLab・BitbucketのプルリクエストやマージリクエストのURLを貼り付けられ、そのPRを作ったセッションが見つかります。名前を付けていなくても、PRからセッションを逆引きできます。claude --from-pr <number>は、そのPRに紐づくセッションに絞ったピッカーを開きます。
同じディレクトリで複数のセッションを並べているときは、デフォルト表示名の作業ディレクトリ名部分がそろい、見分ける手がかりがサフィックスの2文字だけになります。ブランチ名や作業内容が分かる名前を/renameで付けておくと、この区別が一目で付きます。
トランスクリプトの保存先は名前と別物
セッションの名前と、トランスクリプトの保存先であるプロジェクトディレクトリの名前は、別の仕組みです。後者は既定で作業ディレクトリのパス全体から導かれます。CLAUDE_CONFIG_DIRと併せてCLAUDE_CODE_PROJECT_DIR_NAMEを設定すると、その名前に決められます(v2.1.234以降)。
Claude Codeを組み込んだホストがセッションごとに設定ディレクトリを分ける用途を想定した設定です。CLAUDE_CONFIG_DIRが未設定だとCLAUDE_CODE_PROJECT_DIR_NAMEは無視されます。設定ディレクトリを分けずに名前だけを固定すると、全プロジェクトの記録が1つのディレクトリに混ざってしまうためです。
まとめ
名前は-n・/rename・ピッカーのCtrl+Rのどれで付けても同じ効果です。戻れなくなる主な原因は、完全一致が複数あること、デフォルト表示名を呼び出しに使うこと、別のリポジトリから名前を呼ぶことの3つです。
同時に開くセッションが2つを超えたら、起動時に-nで名前を付けておく運用が、これらのつまずきを最も避けやすい選択肢です。