[FEATURE] Auto-generate short descriptive session titles (3-4 words) instead of first-line truncation

Resolved 💬 2 comments Opened Apr 9, 2026 by elevateduniverse Closed Apr 9, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

When I run multiple Claude Code sessions throughout the day, the session list becomes unnavigable because every session title is just a truncated fragment of the first message I typed. For example, a session where I debugged an auth middleware issue might show up as "Can you look at the auth mi..." — which is useless when I'm scanning 20+ sessions later trying to find it.

This is a real friction point for power users who maintain many concurrent sessions across different projects. The session list is the primary way to resume prior work, and right now it requires opening sessions blindly to remember what they were about.

The existing workarounds (/rename and --name) require manual effort every single time, which means they get skipped. The result is a session list full of indistinguishable truncated first-lines.

Proposed Solution

After the first assistant response in a new session, Claude Code should automatically generate a short descriptive title (3-4 words max) that summarizes the conversation topic, and apply it as the session name.

How it would work:

  1. User starts a new session and sends their first message
  2. Claude responds normally
  3. Immediately after that first exchange, Claude Code (at the system level, not the model) generates a concise 3-4 word title from the first user message + assistant response
  4. The session is automatically renamed to that title
  5. The session list now shows meaningful names like "Auth Middleware Debug", "React Form Validation", "Deploy Pipeline Fix" instead of truncated first-lines

Ideal behavior:

  • Titles should be 3-4 words max (never a full sentence)
  • - Should capture the topic/intent, not echo back the user's words verbatim
  • - - Should be generated at the system/client level (lightweight, not consuming model context)
  • - - - Should not override a manually set --name or /rename — if the user already named it, leave it alone
  • - - - - A settings flag like "autoNameSessions": true (default true) would let users opt out

Bonus: If the session topic shifts significantly mid-conversation, it would be nice (but not critical) if the title could update — though the first-exchange title alone would solve 90% of the problem.

Infrastructure that already exists:

  • The Stop hook already fires after each assistant response and receives session_id + transcript_path via stdin
  • - /rename already works mid-session
  • - - --name already works at startup
  • - - - The pieces are all there — it just needs to be wired together natively

Alternative Solutions

Currently using these workarounds, all of which have friction:

  1. /rename mid-session — Works, but requires me to remember to do it after every first message. I forget ~80% of the time, which defeats the purpose.
  1. claude -n "name" at startup — Forces me to name the session before I've even started working, when I often don't know what the session will be about yet.
  1. Shell alias that prompts for a name — Slightly better UX than --name, but still requires manual input and foresight about the session's topic before it begins.

None of these solve the core problem: the best time to name a session is after the first exchange, when both the question and the direction are clear — and that's exactly when it should happen automatically.

Priority

Critical - Blocking my work

Feature Category

CLI commands and flags

Use Case Example

Prior art: ChatGPT, Cursor, and most AI chat interfaces already auto-generate conversation titles after the first exchange. This is a solved UX pattern that Claude Code is missing.

Scale of impact: Power users running 10-30+ sessions/day are the most affected. The session list becomes essentially unusable for resuming prior work without manual naming discipline.

Implementation note: This could be done very cheaply with a Haiku-class model call on just the first user message (even before the response), or a simple keyword extraction heuristic. It doesn't need to be perfect — even a mediocre auto-title is vastly better than a truncated first line.

Additional Context

_No response_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗