Generates 1–3 word session names from current branch activity.
Runs 700 ms after session load and session-rename.idleDelayMs (default 10 s) after turn end.
Cancels pending work when input, turn, or agent activity starts.
Requires meaningful branch activity:
user text plus assistant text or tool calls.
Uses current model through Pi model registry; skips when no model or API key
exists.
Preserves manual names.
Automatic renames stop after user-set or cleared names.
Refines only extension-generated names.
Cooldown grows with user turns:
1 turn early, then 2, then 5.
Records session-rename custom entries for auto-title revisions and user
locks.
Builds naming context from current name, initial user goals, recent summaries,
recent messages, and tool calls.
Normalizes generated names:
lowercase words, no punctuation, max 3 words.
Rejects generic one-word names, tiny edit-distance changes, and previous auto
names.
Shows temporary UI status while naming.
Manual command generation notifies on rename.
Settings
session-rename.idleDelayMs sets the idle delay in milliseconds between turn end and the naming pass.
Env var: PI_SESSION_RENAME_IDLE_DELAY_MS.
Default: 10000.
Valid range: integer from 0 to 2147483647.
Precedence: env, trusted project .pi/settings.json, user ~/.pi/agent/settings.json, default.
Project settings apply only when the project is trusted.
Settings files need a JSON number; numeric strings are accepted only from the env var.
Resolved once per session at session_start.
An invalid value shows one warning naming the source and uses the default 10000; it never falls through to a lower-priority source.
{ "session-rename": { "idleDelayMs": 5000 } }
Debug
Opt in through debug configuration.
Safe events: session.start, session.shutdown, name.generate.start, name.generate.finish, name.generate.error.
# session-rename
Automatic short session names for Pi.
## Install / load
Loaded through the root pi-ext package.
See [root README](../../README.md).
## Commands / tools / settings
- Command:
`/session-rename [name]`
- no args:
force a model pass to generate/refine the session name
- with args:
set the exact session name and lock it as user/manual
- Tools:
none
- Settings:
`session-rename.idleDelayMs`, see [Settings](#settings)
- Hooks:
`session_start`, `turn_end`, `turn_start`, `input`, `agent_start`,
`session_shutdown`
## Behavior
- Generates 1–3 word session names from current branch activity.
- Runs 700 ms after session load and `session-rename.idleDelayMs` (default 10 s) after turn end.
- Cancels pending work when input, turn, or agent activity starts.
- Requires meaningful branch activity:
user text plus assistant text or tool calls.
- Uses current model through Pi model registry; skips when no model or API key
exists.
- Preserves manual names.
Automatic renames stop after user-set or cleared names.
- Refines only extension-generated names.
- Cooldown grows with user turns:
1 turn early, then 2, then 5.
- Records `session-rename` custom entries for auto-title revisions and user
locks.
- Builds naming context from current name, initial user goals, recent summaries,
recent messages, and tool calls.
- Normalizes generated names:
lowercase words, no punctuation, max 3 words.
- Rejects generic one-word names, tiny edit-distance changes, and previous auto
names.
- Shows temporary UI status while naming.
Manual command generation notifies on rename.
## Settings
`session-rename.idleDelayMs` sets the idle delay in milliseconds between turn end and the naming pass.
Env var: `PI_SESSION_RENAME_IDLE_DELAY_MS`.
Default: `10000`.
Valid range: integer from `0` to `2147483647`.
Precedence: env, trusted project `.pi/settings.json`, user `~/.pi/agent/settings.json`, default.
Project settings apply only when the project is trusted.
Settings files need a JSON number; numeric strings are accepted only from the env var.
Resolved once per session at `session_start`.
An invalid value shows one warning naming the source and uses the default `10000`; it never falls through to a lower-priority source.
```json
{ "session-rename": { "idleDelayMs": 5000 } }
```
## Debug
Opt in through [debug configuration](../DEBUG.md).
Safe events: `session.start`, `session.shutdown`, `name.generate.start`, `name.generate.finish`, `name.generate.error`.