Claude Code のセッション名を手動 rename せずに自動命名するようにしてみた

Claude Code のセッション名を手動 rename せずに自動命名するようにしてみた

2026.05.18

はじめに

データ事業本部の荒木です。

Claude Code を複数案件で並行運用していると、プロンプトバー右上に表示されるセッション名が (unnamed) のままになり、/resume でセッションを切り替えるときにどれがどれだか分からなくなることはありませんか。/rename で都度命名するのも手間なので、UserPromptSubmit フックで自動命名する仕組みにしました。本記事ではその方法を紹介します。

環境

  • OS: Windows 11 + WSL2 (Ubuntu)
  • Claude Code: フック (hookSpecificOutput.sessionTitle) が利用できるバージョン
  • シェル: bash
  • 依存コマンド: jq

本題

全体構成

UserPromptSubmit フックでスクリプトを呼び出し、入力 JSON の session_name が空のときだけ sessionTitle を返してセッション名を自動付与します。既に /rename で名前が付いている場合や --name で起動した場合は何もしません。

ユーザーがプロンプトを送信

UserPromptSubmit フック発火

auto-rename-session.sh

session_name が空? ── Yes → cwd と日時から sessionTitle を返す
                  └─ No  → 空 JSON を返して何もしない

Claude Code が画面右上のセッション名を更新

フックスクリプトの作成

~/.claude/scripts/auto-rename-session.sh を新規作成します。

私はセッション名をClaude Codeを実行した際のパスと実行タイムスタンプを自動命名するように実装しています。
複数ターミナルで作業しているときにどのリポジトリで実行していClaudeなのかを見分けれればよかったので、これで十分かなと思ってます。

#!/usr/bin/env bash
# Claude Code UserPromptSubmit フック: 未命名セッションに「cwd + 日時」で自動命名する
# 入力: JSON (stdin) — Claude Code から渡される。session_name / cwd を参照する
# 出力: sessionTitle を含む hookSpecificOutput JSON。既に命名済みなら空 JSON を返して何もしない

input=$(cat)

session_name=$(echo "$input" | jq -r '.session_name // empty')

# 既に名前が付いていれば触らない (/rename や --name を尊重)
if [ -n "$session_name" ] && [ "$session_name" != "null" ]; then
    echo '{}'
    exit 0
fi

cwd=$(echo "$input" | jq -r '.cwd // empty')
if [ -z "$cwd" ] || [ "$cwd" = "null" ]; then
    cwd="$PWD"
fi

stamp=$(date '+%Y-%m-%d %H:%M')
title="${cwd} ${stamp}"

jq -n --arg title "$title" '{
  hookSpecificOutput: {
    hookEventName: "UserPromptSubmit",
    sessionTitle: $title
  }
}'

ポイントは 2 つです。

  1. session_name がある場合は空 JSON {} を返して何もしない/rename で付けた名前や --name フラグで指定した名前を上書きしないようにしています。
  2. 戻り値の JSON は hookSpecificOutput.sessionTitle の形。Claude Code のフック仕様で、この形で返すとセッション名 (画面右上) と端末タブのタイトルが更新されます。

実行権限を付けておきます。

chmod +x ~/.claude/scripts/auto-rename-session.sh

settings.json への登録

~/.claude/settings.jsonhooks.UserPromptSubmit に上記スクリプトを登録します。

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash /home/<USER>/.claude/scripts/auto-rename-session.sh"
          }
        ]
      }
    ]
  }
}

JSON 構文に誤りがないことを確認します。

jq . ~/.claude/settings.json > /dev/null && echo "JSON OK"

動作確認

ターミナルからClaudeを立ち上げて確認してみます。

Claude Codeを立ち上げた際には、まだ命名されていません。

スクリーンショット 2026-05-18 150804

何かしらの指示をした後に、自動でセッション名が付与されます。

スクリーンショット 2026-05-18 150851

まとめ

  • UserPromptSubmit フックで hookSpecificOutput.sessionTitle を返すと、/rename を呼んだのと同じ効果でセッション名を更新できる
  • session_name が空のときだけ返すようにすれば、/rename--name で付けた名前は尊重される

複数案件を並行で扱うときに /resume の見分けやターミナルの見分けが格段に楽になります。
是非お試しください。

参照


生成AI活用はクラスメソッドにお任せ

過去に支援してきた生成AIの支援実績100+を元にホワイトペーパーを作成しました。御社が抱えている課題のうち、どれが解決できて、どのようなサービスが受けられるのか?4つのフェーズに分けてまとめています。どうぞお気軽にご覧ください。

生成AI資料イメージ

無料でダウンロードする

この記事をシェアする

関連記事