セッションの再開と管理
Claude Code のセッションを再開・名前付け・分岐・書き出しする方法と、再開時に何が復元されるか、トランスクリプトの保存場所と設定をまとめます。
セッションは、プロジェクトのディレクトリに結び付いた、保存された会話です。Claude Code は作業中ずっとローカルに保存するので、続きから再開する、別の方法を試すために分岐する、作業を切り替える、といったことができます。このページは CLI の話です。デスクトップアプリ・claude.ai/code・VS Code 拡張は、それぞれ別のセッション一覧を持ちます。
claude --continueで直近の会話を、claude --resumeで選んだ会話を再開できます/renameやこのページの方法で名前を付けると、名前で再開できます/branchで会話を分岐させ、元の会話を残したまま別の方向を試せます- 再開しても、モデル・エージェント・権限モード・ゴールなどは復元されますが、起動時のフラグの一部は渡し直しが要ります
- トランスクリプトは
~/.claude/projects/に JSONL で保存されます
会話を再開する#
会話は作業中にローカルのトランスクリプトファイルへ保存され続けるので、終了後や /clear の後にも戻れます。入口は次のとおりです。
| コマンド | 動作 |
|---|---|
claude --continue |
現在のディレクトリの直近の会話を開き直す |
claude --resume |
セッションピッカーを開く |
claude --resume <name> |
名前を付けたセッションを直接再開する |
claude --resume <transcript-path> |
その絶対パスにある .jsonl のトランスクリプトファイルの会話を再開する |
claude --from-pr <number> |
その pull request に結び付いたセッションに絞ったピッカーを開く |
/resume |
動いているセッションの中から、別の会話へ切り替える |
claude -p や Agent SDK で作ったセッションは、セッションピッカーと claude --continue に出ません。セッション ID を claude --resume <session-id> に渡せば再開できます。claude --continue は、最初のプロンプトが /loop だったセッションも飛ばします。claude -p --continue のときは、-p・SDK・/loop のセッションも含めます。
claude --continue は、終わったバックグラウンドセッションは開きますが、まだ動いているものは開きません(終わったバックグラウンドセッションを開くのは v2.1.257 以降)。直近の会話が、バックグラウンドへ移してまだ動いているものなら、Your most recent conversation is running in the background とそのセッションの ID を出して終了します。その場合は claude agents からアタッチするか、claude --resume で別のものを選びます。
claude --resume <session-id> は、どのディレクトリからでも実行できるので、別の場所で始まった、または /cd で移したセッションも再開できます。Claude Code は ID を次の順に探します。
- 現在のプロジェクトのディレクトリとその git worktree
- このマシンのほかのすべてのプロジェクト
ほかのプロジェクトを横断する検索は、その ID のメッセージ付きのトランスクリプトを持つプロジェクトがちょうど1つのときだけ解決するので、手で複製したものがあると、任意のコピーを再開せず見つからないと報告します。保存されたセッションが ID に一致しないときは No conversation found with session ID: <session-id> と出ます。v2.1.223 より前は、検索が現在のプロジェクトのディレクトリとその worktree で止まっていました。
まだ動いているバックグラウンドセッションを再開する#
claude --resume か /resume で再開する会話が、まだ動いているバックグラウンドセッションのものなら、Claude Code は動いているセッション自体を開きます。コマンドラインに --bg があるときは、再開ではなくバックグラウンドへの投入になります。v2.1.285 より前は、拒否して claude attach <id> で開くか、先に claude stop <id> で止めるよう案内していました。
- シェルから:
claude --resume <session>は、トランスクリプトを自分で読み込む代わりに、同じ端末でそのセッションへclaude attachします。claude --resume <session> "check the tests too"のようにコマンドラインでプロンプトを渡すと、まずそのセッションの次のターンとして送られ、Sent your prompt to the background session (<id>); opening it…と出てからアタッチします。端末で打ったclaude -p --resume <session> "prompt"も同じで、-pでも非対話にはなりません - セッションを開かないコマンドライン:入出力のパイプやリダイレクトがある、
--permission-mode・--model・--settingsのようにセッションを設定するフラグがある、--output-format json・--json-schemaのように出力を読むフラグがある、--max-turns・--max-budget-usdのように実行を制限・巻き戻すフラグがある。これらがあるとき、またはエージェントビューをオフにしているときは、何も送らず終了コード1で終わり、セッションがバックグラウンドで動いていることと、開くためのclaude attach <id>を出す(ID が分からなければclaude agentsで探すよう案内する)。代わりに会話の複製を再開するなら--fork-sessionを足す。自分のセッションで会話そのものを、フラグを適用して続けるなら、claude stop <id>してから同じコマンドを繰り返す /か!で始まるプロンプト、およびセッションが質問への回答を待っているときのプロンプトは送られない。どちらも、セッションを開かず、Your prompt was not sent to itと理由を出す- セッションの中から:
/resumeは現在の会話をバックグラウンドへ移し、この端末を動いているセッションにアタッチして、Opening "<title>", running in the background (<id>)と出す。空のプロンプトで ← を押すとエージェントビューへ戻り、離れた会話も一覧に出る。現在の会話をバックグラウンドへ移せないとき(すでにバックグラウンドセッションにアタッチ中、セッションの保存がオフ、など)は、代わりに実行するclaude attachコマンドを出す
再開で復元されるもの#
トランスクリプトから会話を読み込むと、会話とともに、そこに保存された状態が復元されます。
- 会話の履歴:ツール呼び出しと結果を含む全履歴。前のプロセスの終了時(クラッシュなど)に動いていたツールは、再開しても完了も再実行もされない。Claude には、結果が記録される前に切れた呼び出しとして見え、再実行の前に効果が出たかを確かめるよう指示される(
CLAUDE_CODE_RESUME_INTERRUPTED_TURNを設定したときは別)。v2.1.281 より前は、切れた呼び出しを会話から落とすか、中断したものとして Claude に見せていた - モデル:セッションは使っていたモデルで続く。モデルが廃止された、
availableModelsが許さない、起動時に--modelやANTHROPIC_MODEL系の環境変数で選んだ、Amazon Bedrock・Google Cloud の Agent Platform・Microsoft Foundry のようにプロバイダー固有のデプロイ ID を使う、のときは復元されない。解決の順序はモデル・effort・fast modeを参照 - エージェント:
--agentかagent設定で始めたセッションは、そのエージェントとして、ツールの制限とモデルを保って続く。再開時に--agentを渡すと別のものを選べる。エージェントは、セッションの元のディレクトリ(そのワークスペースを信頼している場合)と、再開するディレクトリの順に探すので、プロジェクト単位のエージェントも、別のディレクトリから再開して読み込まれる。どちらにも見つからないときは、既定のツールで再開し、エージェント名を示す警告が出る - 権限モード:
-pなしでclaude --continue・claude --resume <session-id>・名前が1つのセッションに一致するclaude --resume <name>で端末から再開すると、セッションの権限モードが復元される(例外は後述)。上書きするには--permission-modeか--dangerously-skip-permissionsを渡す - 有効なゴール:セッションの終了時に有効だったゴールは引き継がれる。ターン数・タイマー・トークン消費の基準はリセットされる
- 定期実行のタスク:期限が切れていないタスクは復元される。バックグラウンドの Bash と監視のタスクは復元されない
- バックグラウンドの作業:前のプロセスとともに終わったバックグラウンドのサブエージェント・バックグラウンドの Bash コマンド・ワークフローは、再開したトランスクリプトに、完了しなかったという注記で出る。その注記からはターンを始めず、Claude は次のプロンプトと一緒に読む
起動時のフラグがすべて復元されるわけではありません。セッションが --mcp-config・--settings・--plugin-dir・--fallback-model・--add-dir で追加したディレクトリに頼っていたなら、再開時に渡し直します。セッション中に /add-dir で足したディレクトリも復元されません(ただしセッションピッカーはそれを使ってセッションの場所を見つけます)。settings.json や settings.local.json などの標準の設定ファイルは起動時に読み直されるので、渡し直しは要りません。--system-prompt と --append-system-prompt についてはCLI のコマンドとフラグを参照してください。
再開時の権限モード#
再開したセッションが始まる権限モードは、再開の方法で変わります。トランスクリプトから会話を読み込む場合の話で、まだ動いているバックグラウンドセッションを開く場合は、そのセッションが持っている権限モードのままです。
- 端末:
-pなしのclaude --continue・claude --resume <session-id>・名前が1つに一致するclaude --resume <name>。表の例外を除き、セッションの権限モードを復元する。--permission-modeか--dangerously-skip-permissionsで上書きできる - 非対話:
claude -p --resumeかclaude -p --continue。新しいclaude -pが始まるのと同じ権限モードで始まる。ただしプランモードで終わったセッションは、後述の条件のもとで、プランモードで再開する - VS Code:拡張の会話パネル。表はプランモードで終わった会話だけを扱う
- 起動時のセッションピッカー:
claude --resumeだけ、claude --from-pr、または複数に一致する名前から開いたピッカーで選んだセッション。保存された権限モードは復元せず、同じコマンドラインから新しいセッションを始めるときの権限モードで始まる - セッション内の
/resume(引数の有無を問わず):保存された権限モードは復元せず、切り替えた先の会話は、現在のセッションの権限モードのまま続く
非対話と VS Code の経路でプランモードを復元するには v2.1.246 以降が必要です。
| 終了時のモード | 再開の方法 | 再開後の権限モード |
|---|---|---|
bypassPermissions |
端末 | 新しいセッションが始まるときの権限モード。もう一度権限をバイパスするには、起動時にフラグか、ユーザー・--settings・管理設定の permissions.defaultMode: "bypassPermissions" で有効にする |
plan |
端末 | 新しいセッションが始まるときの権限モード |
auto |
端末 | auto。アカウントがまだ auto mode の要件を満たしているときだけ |
| Manual | 端末 | 新しいセッションが組み込みの既定で auto mode から始まるなら Manual。設定ファイルの defaultMode が有効なときは、そのモードで始まる |
plan |
非対話(後述の条件を満たすとき) | プランモード |
| 任意のモード | 非対話(それ以外) | 新しい claude -p が始まるときの権限モード |
plan |
VS Code | プランモード(VS Code のページに例外がある) |
権限モードの意味は権限モードを参照してください。
claude -p --resume や claude -p --continue がプランモードで再開するのは、次の条件がすべて満たされたときだけです。
--permission-prompt-toolを渡し、--permission-prompts noneは渡していない(Claude Code が計画を承認のために示せる)--permission-modeも--dangerously-skip-permissionsも渡していない--fork-sessionを渡していない- チャネル経由で始めた実行ではない
要約から再開する#
Pro か Max プランで、約1時間より長く動いておらず100,000トークンを超えるセッションを再開すると、Claude Code は会話を復元したあと、最初のメッセージを送る前にダイアログを開きます。そのころにはセッションのプロンプトキャッシュが切れているので、ダイアログのどの選択肢でも、次のリクエストは全履歴を1回処理します。ダイアログは、会話のどこまでを以後のリクエストへ持ち越すかが違う3つの続け方を出します。
- Resume from summary:すぐ
/compactを実行する。全履歴に1回の要約リクエストを送り、履歴を要約・直近のやり取り・最近読んだ最大5つのファイルに置き換える。以後のリクエストは全履歴の代わりに要約を運ぶ - Resume full session as-is:会話をそのまま読み込む。最初のメッセージを送ると、全履歴を処理し直してキャッシュし直し、キャッシュが温かい間は以後のリクエストでキャッシュから読む
- Don't ask me again:全セッションを再開し、以後の再開ではダイアログを出さない
そのまま再開すると、会話のすべての詳細が残りますが、リクエストごとのコストは会話の大きさに比例します。要約から再開すると、以後のリクエストごとのコストは下がりますが、要約が落としたものは Claude のコンテキストから消えます。コストについてはコストを抑えるを参照してください。
セッションピッカーが探す範囲#
Claude Code はセッションをプロジェクトのディレクトリごとに保存します。ピッカーが既定で出すのは次のものです。
- 現在の worktree のセッション(バックグラウンドセッションを含み、一覧では
bgの印が付く) - 別の場所で始まり、
/add-dirで現在のディレクトリを加えたセッション
Ctrl+W でリポジトリのすべての worktree へ、Ctrl+A でこのマシンのすべてのプロジェクトへ広げられます。
最初のプロンプトが /loop コマンドだったセッションはピッカーに出ず、claude --continue も飛ばします。会話の途中で後から /loop を実行してもセッションは隠れません(v2.1.211 より前は、会話の早い段階で /loop を実行するとセッションが永久にピッカーから隠れた)。
/cd でセッションを移すと、新しいディレクトリのプロジェクトの保存先へ移り、以後はそのディレクトリのピッカーに出ます。v2.1.196 以降は、移したセッションは、クラッシュや強制終了のあとでも古いディレクトリのピッカーに戻りません。それより前の版では、古いパスにアンダースコアなどの特殊文字があると、正常でない終了のあとに古いディレクトリの一覧へ再び現れることがありました。
同じリポジトリの別の worktree のセッションを選ぶと、その場で再開します。そのセッションの worktree がもう無ければ、現在のディレクトリで再開します。無関係なプロジェクトのセッションを選ぶと、cd と再開のコマンドをクリップボードにコピーします(そのプロジェクトのディレクトリがもう無ければ、失敗する cd をコピーせず、現在のディレクトリで再開する)。
名前での再開は、現在のリポジトリとその worktree をまたいで解決します。どちらの形も、完全一致を探し、別の worktree にあっても直接再開します。
| コマンド | 完全一致 | あいまいな名前 |
|---|---|---|
claude --resume <name> |
直接再開 | 名前を検索語に入れた状態でセッションピッカーを開く |
/resume <name> |
直接再開 | エラーを報告する。引数なしの /resume でピッカーを開く |
セッションに名前を付ける#
わかりやすい名前を付けると、ピッカーで見つけやすくなり、名前で再開できます。複数の作業を並行しているときに特に役立ちます。
| タイミング | 名前の付け方 |
|---|---|
| 起動時 | claude -n auth-refactor |
| セッション中 | /rename auth-refactor。名前はプロンプトバーにも出る |
| セッションピッカーから | セッションを強調して Ctrl+R |
| プランの承認時 | プランモードでプランを承認すると、まだ名前を付けていなければ、プランに基づく生成タイトルが付く |
| claude.ai か Claude アプリから | Remote Control セッションの名前を変える。Claude Code が CLI でも同じ名前を適用する。v2.1.221 以降 |
| デスクトップアプリから | デスクトップアプリでセッションの名前を変える |
CLI の経路か claude.ai から名前を付けたセッションには、claude --resume <name> か /resume <name> で戻れます。デスクトップアプリのセッションは、デスクトップアプリで再開します。
同じマシンのほかの生きているセッションがすでに使っている名前で、対話セッションを始める・再開する、またはその名前へ改名すると、Claude Code は名前をすでに持つセッションに残し、自分のセッションを auth-refactor-graceful-unicorn のような2語の接尾辞つきの変形に変えて、通知します。自分で選びたいなら新しい名前で /rename を実行します(v2.1.232 より前は、両方が名前を保った)。次の3つの場合は重複を改名しないので、一覧に同じ名前のセッションが2つ見えることがあります。
- AI が生成したタイトルと既定の表示名は調べない
- バックグラウンドや
-pのセッションの起動時の--nameは調べない - 古い版の Claude Code のセッションは改名できない
名前を付けないセッションにも、Claude Code が付ける2つのラベルがあります。再開に使えるのは生成タイトルだけです。
- 既定の表示名:名前を付けない対話セッションには、始まるときに既定の表示名が付く(v2.1.196 以降)。作業ディレクトリ名と2文字の接尾辞の組み合わせで、
my-app-3fのような形。エージェントビューやclaude agents --jsonの出力のような、動いているセッションの一覧でセッションを示す。再開には使えず、claude --resumeや/resumeに渡しても見つからない。名前を付けるか、プランを承認すると、一覧でこの表示名が置き換わる - 生成タイトル:名前を付けないと、Claude Code が最初のプロンプトの短い要約を、小型で高速なモデル(通常は Haiku 級)へのバックグラウンドのリクエストで作る。シェルやスクリプトから直接始めた
claude -pの実行には付かない。プランを承認すると、タイトルはプランに基づくものに置き換わり、名前を付けても置き換わる。最初のプロンプトのタイトルは、セッションピッカーと、名前がないときのステータスラインのsession_nameフィールドに出る。プランのタイトルは同じ2か所と、既定の表示名の代わりに動いているセッションの一覧にも出る。どちらのタイトルもclaude --resumeと/resumeに渡せ、自分で付けた名前と同じに解決される
ステータスラインのフィールドはステータスラインを参照してください。
セッションピッカーを使う#
セッションの中で /resume を実行するか、引数なしの claude --resume で、対話のセッションピッカーが開きます。移動・検索・一覧の拡大には次のキーを使います。
| ショートカット | 動作 |
|---|---|
| ↑ / ↓ | セッションの間を移動 |
| → / ← | グループ化されたセッションを展開・折りたたみ |
| Enter | 強調中のセッションを再開 |
| Space | セッションの内容をプレビュー。貼り付けとして捕まえない端末では Ctrl+V も使える |
| Ctrl+R | 強調中のセッションの名前を変える |
| / か、Space 以外の表示できる文字 | 検索モードに入り、セッションを絞り込む。GitHub・GitHub Enterprise・GitLab・Bitbucket の pull request かマージリクエストの URL を貼ると、それを作ったセッションを見つけられる |
| Ctrl+A | このマシンのすべてのプロジェクトのセッションを表示。もう一度押すと現在のリポジトリに戻る |
| Ctrl+W | 現在のリポジトリのすべての worktree のセッションを表示。もう一度押すと現在の worktree に戻る。worktree が複数あるリポジトリでだけ出る |
| Ctrl+B | 現在の git ブランチのセッションに絞る。もう一度押すとすべてのブランチを表示 |
| Esc | セッションピッカーか検索モードを抜ける |
各行には、名前を付けていればその名前、なければ AI が生成したセッションタイトル・会話の要約・最初のプロンプトが出て、最後の活動からの経過時間・git ブランチ・ファイルサイズが並びます。Ctrl+A ですべてのプロジェクトへ広げると、各セッションのプロジェクトのパスも出ます。
/branch や --fork-session で作ったセッションは、それぞれ別のセッション ID を持ち、別の行として出ます。ピッカーが同じセッションに複数の項目を見つけると、1行にグループ化します。→ で展開します。
claude --resume のピッカーで選んだセッションを Claude Code が読み込めないと、Failed to resume the conversation と再試行のコマンドを出して、終了コード1で終わります。セッション内の /resume のピッカーからなら、失敗を報告し、現在の会話は動き続けます。
セッションを分岐させる#
分岐は、ここまでの会話の複製を作って、その中へ切り替え、元を残します。たどっていた道を失わずに、別の方法を試すのに使います。セッションの中から、名前を付けて /branch を実行します。
/branch try-streaming-approach
名前を省くと、会話の最初のプロンプトにちなんだ名前が付きます。v2.1.198 以降は、コンパクトの後でも同じです(それより前の版は、要約を飛ばして元の最初のプロンプトを探さず、Branched conversation という名前になった)。コマンドラインからは、--continue か --resume に --fork-session を組み合わせます。
claude --continue --fork-session
/branch の確認には、いま入っている新しい分岐と元の2つのセッション ID が出ます。元はディスク上で変わらず、セッションピッカーに残り、/resume <original-name> か ID を渡した /resume で戻れます。
/branch はトランスクリプトをコピーし、動いている Claude Code のプロセスをそちらへ書くよう切り替えます。そのため、分岐が引き継ぐものは次のとおりです。
| 状態 | /branch の後 |
|---|---|
| 会話の履歴 | /branch を実行した時点までが分岐へコピーされる |
| 「Allow for this session」の権限の許可 | 引き継がれる(分岐は同じプロセスで動くので、既存の許可がそのまま効く)。--fork-session で別のプロセスに分岐すると、新しいプロセスは許可なしで始まり、そこで承認し直す |
| 実行中のバックグラウンドのサブエージェントとバックグラウンドの Bash コマンド | 動き続ける。出力は元のセッションではなく、切り替えた先の新しい分岐に出る |
| Remote Control の接続 | つながったまま。セッションに接続した電話やブラウザは分岐へついてきて、そこで新しいメッセージを受け取り続ける |
フォークせずに同じセッションを2つの端末で再開すると、両方のメッセージが1つのトランスクリプトに入り混じります。1つのセッションの中でチェックポイントによる巻き戻しをするなら、チェックポイントと巻き戻しを参照してください。
セッションの中でコンテキストを管理する#
次のコマンドは、セッションを離れずに、コンテキストの窓の中身を制御します。
/clear:空のコンテキストで新しく始める。前の会話は保存され、/resumeで再開するか、同じ Claude Code のプロセスなら巻き戻しメニューの前のセッションの項目から戻せる。引数なしなら、新しい会話は--nameか/renameで付けた名前を保つが、AI が生成したタイトルは保たない。離れる会話に名前を付けるには、/clear release-prepのように名前を渡す(その場合、新しい会話は名前なしで始まる)/compact [instructions]:履歴を要約に置き換える。指示で要約の焦点を指定できる/context:いまコンテキストを占めているものを見せる
CLAUDE.md・スキル・ルールとのコンパクトの関わりはコンテキストとプロンプトキャッシュを、clear と compact の使い分けは上手に使うコツを参照してください。
書き出しと保存場所#
/export を実行すると、現在の会話をクリップボードへコピーするか、プレーンテキストのファイルとして保存するメニューが開きます。メッセージとツールの出力は読める文字で描かれます。ファイル名を渡すと、メニューを飛ばして、そのファイルへ直接書きます。
スクリプトから会話に触れる#
/export は人が読むための整形済みトランスクリプトを作ります。次の口は、スクリプトが解析するための構造化データを出します。スクリプトを動かす引き金で選びます。
- Claude を1回実行して結果を取る:
claude -pに--output-format jsonかstream-jsonを付け、非対話の実行の結果・セッション ID・使用量・コストを構造化 JSON で取る - 既存のセッションに質問する:セッション ID を
claude -p --resumeに渡して、要約の依頼などの追加のプロンプトを送り、構造化された応答を取る - セッションのイベントに反応する:フックとステータスラインのコマンドが入力として受け取る
transcript_pathフィールドを読む。SessionEndフックで、セッション終了時にトランスクリプトをアーカイブできる - TypeScript や Python のアプリに Claude を埋め込む:Agent SDK で、各メッセージをプログラムから受け取る
次の例は2つ目の口を使います。既存のセッションに追加のプロンプトを送り、答えを jq で読みます。
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'
各口の詳細はヘッドレス実行(-p)・フックのリファレンス・Agent SDK の基本を参照してください。
トランスクリプトの保存場所#
既定では、トランスクリプトは JSONL で ~/.claude/projects/<project>/<session-id>.jsonl に保存されます。<project> は、作業ディレクトリのパスの英数字以外を - に置き換えたものです。変換後の名前が200文字を超える作業ディレクトリでは、Claude Code が名前を200文字に切り、全パスのハッシュを付けて、ディレクトリ名がファイルシステムの制限に収まるようにします。
各行は、メッセージ・ツールの使用・メタデータの項目の JSON オブジェクトです。項目の形式は Claude Code の内部のもので版ごとに変わるので、これらのファイルを直接解析するスクリプトは、どのリリースでも壊れる可能性があります。セッションのデータを使うなら、/export か上のスクリプト向けの口を使います。場所・保持・書き込みの挙動は設定できます。
| したいこと | 設定 | 場所 |
|---|---|---|
保存先を ~/.claude から移す |
CLAUDE_CONFIG_DIR |
環境変数 |
<project> ディレクトリ名を自分で決める |
CLAUDE_CODE_PROJECT_DIR_NAME |
環境変数 |
| 30日の保持を変える | cleanupPeriodDays |
settings.json |
| Claude Desktop と Cowork のトランスクリプトの年齢の上限を決める | desktopSessionCleanupPeriodDays |
ユーザー設定・管理設定・--settings |
| すべてのモードでトランスクリプトの書き込みを抑える | CLAUDE_CODE_SKIP_PROMPT_HISTORY |
環境変数 |
-p や Agent SDK のセッションのトランスクリプトファイルが大きくなる上限を決める |
CLAUDE_CODE_TRANSCRIPT_LOCAL_GC |
環境変数 |
| 1回の非対話の実行で書き込みを抑える | --no-session-persistence |
claude -p の CLI フラグ |
環境変数は環境変数一覧、設定キーは設定キー一覧を参照してください。
セッションのデータを消す#
トランスクリプトは、保持の掃除の規則に従って期限が切れます。プロジェクトのトランスクリプトと関連する状態を早く消すには claude purge を実行します。バックグラウンドセッションを claude rm <id> で消しても、そのトランスクリプトはディスクに残り、claude --resume で使えます。保持の規則は.claude ディレクトリの中身を参照してください。
プロジェクトのディレクトリ名を自分で決める#
既定では、Claude Code は <project> の名前を作業ディレクトリのパス全体から作ります。名前を自分で決めるには、CLAUDE_CONFIG_DIR と並べて CLAUDE_CODE_PROJECT_DIR_NAME を設定します。そのセッションのトランスクリプトと自動メモリが、決めた名前の下に保存されます。Claude Code を埋め込み、セッションごとに別々の設定ディレクトリを与えるホストに向きます。v2.1.234 以降です。
次の起動は、テナント A のデータを /srv/tenant-a に置き、プロジェクトのディレクトリを work と名付けます。
CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude
トランスクリプトは作業ディレクトリに関係なく /srv/tenant-a/projects/work/ に、自動メモリは /srv/tenant-a/projects/work/memory/ に書かれます。設定するときの規則は3つです。
CLAUDE_CONFIG_DIRも設定する:名前は作業ディレクトリで変わらないので、既定の~/.claudeのままだと、全プロジェクトのトランスクリプトと自動メモリが1つのディレクトリに混ざる。CLAUDE_CONFIG_DIRがないと、CLAUDE_CODE_PROJECT_DIR_NAMEは無視される- 1〜64文字の英数字・ハイフン・アンダースコアを使う:
conのような Windows のデバイス名は使わない。それ以外の値は無視され、導出した名前が使われる claudeを起動するシェルの環境で設定する:起動時にその環境から1回だけ読むので、設定ファイルのenvブロックでは設定できない
設定ディレクトリのプロジェクトディレクトリに名前を付けたら、その名前で起動し続けます。同じ CLAUDE_CONFIG_DIR で CLAUDE_CODE_PROJECT_DIR_NAME なしに起動すると、導出した名前のディレクトリを再び読み書きします。決めた名前の下に保存されたセッションはディスクに残ります。セッションピッカーで Ctrl+A を押すと、その設定ディレクトリの下のすべてのプロジェクトディレクトリ(固定したものを含む)のセッションが一覧に出て、どう起動しても、claude --resume <session-id> は、どちらの名前の下に保存されたセッションでも見つけます。
並行作業に関わるページは、worktree で並行作業・非対話モードを参照してください。
公式ドキュメント(英語)
2026年10月5日時点の内容をもとに、日本語でまとめています。